Add public-roadmap issues as a configurable, reviewable deduplication source for in-app reports. - Resolve roadmap settings across project, global, and tracking-repository fallbacks - Search and endorse matching open roadmap issues before filing duplicate reports - Expose and index roadmap controls with localized default descriptions Files changed: .changeset/fn-8310-public-roadmap-dedupe.md | 7 ++ docs/dashboard-guide.md | 2 +- docs/settings-reference.md | 4 +- .../core/src/__tests__/settings-parity.test.ts | 14 +++- packages/core/src/settings-schema.ts | 7 +- packages/core/src/types.ts | 13 +++- packages/dashboard/app/api/report.ts | 2 +- packages/dashboard/app/components/ReportModal.tsx | 18 ++--- .../dashboard/app/components/SettingsModal.tsx | 15 +++- .../app/components/__tests__/ReportModal.test.tsx | 12 ++-- .../__tests__/SettingsModal.general.test.tsx | 6 +- .../settings/__tests__/section-keys.test.ts | 5 +- .../app/components/settings/save-split.ts | 14 ++-- .../app/components/settings/section-keys.ts | 5 ++ .../settings/sections/GeneralSection.search.ts | 34 ++++++--- .../settings/sections/GeneralSection.tsx | 29 ++++++-- .../sections/SourceControlGlobalSection.search.ts | 27 +++++++ .../sections/SourceControlGlobalSection.tsx | 55 ++++++++++---- .../settings-default-descriptions.test.tsx | 4 +- .../src/__tests__/report-pipeline.test.ts | 73 ++++++++++++------- .../dashboard/src/__tests__/report-routes.test.ts | 23 +++--- packages/dashboard/src/report-pipeline.ts | 84 ++++++++++++++-------- .../dashboard/src/routes/register-report-routes.ts | 9 +-- packages/i18n/locales/en/app.json | 17 ++++- packages/i18n/locales/es/app.json | 17 ++++- packages/i18n/locales/fr/app.json | 17 ++++- packages/i18n/locales/ko/app.json | 17 ++++- packages/i18n/locales/zh-CN/app.json | 16 ++++- packages/i18n/locales/zh-TW/app.json | 16 ++++- 29 files changed, 409 insertions(+), 153 deletions(-) Fusion-Task-Id: FN-8310 Fusion-Task-Lineage: 0efa8d76-e849-4256-bdcd-e9d6dd612e41 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
80 lines
4.5 KiB
TypeScript
80 lines
4.5 KiB
TypeScript
/**
|
|
* Search entries for the Source Control · Global section.
|
|
*
|
|
* FNXC:SettingsSearch 2026-07-15-20:30:
|
|
* One entry per descriptor row the section renders, co-located so a setting and its index entry change in the same edit. Labels and help mirror the section's `t()` calls verbatim: the index matches on the copy operators actually read, so a paraphrase here would make search miss the words on screen.
|
|
* These rows carry the same `key`s as their project counterparts in SourceControlSection.search.ts — they are the same dual-scope settings at the other tier, and `sectionId` is what keeps them distinct (the index's uniqueness rule is per section+key). Their labels are the operator-facing discriminator: every one reads "Global …".
|
|
* The global default tracking repo is absent: TrackingRepoSelect is a bespoke widget with no descriptor `key`, so it has no `data-settings-key` anchor to scroll to. It stays reachable via the section's `searchableText` in SETTINGS_SECTIONS.
|
|
*/
|
|
import type { SettingsSearchEntry } from "../search/types";
|
|
|
|
export const sourceControlGlobalSearchEntries: SettingsSearchEntry[] = [
|
|
{
|
|
sectionId: "source-control-global",
|
|
key: "reportRoadmapDedupeEnabled",
|
|
labelKey: "settings.globalGeneral.reportRoadmapDedupeEnabled",
|
|
labelFallback: "Global public-roadmap deduplication",
|
|
helpKey: "settings.globalGeneral.reportRoadmapDedupeEnabledHelp",
|
|
helpFallback: "Fallback for projects that do not set a public-roadmap deduplication preference. No default — unset (projects default to enabled).",
|
|
keywords: ["roadmap", "dedup", "report", "fallback"],
|
|
},
|
|
{
|
|
sectionId: "source-control-global",
|
|
key: "reportRoadmapLabel",
|
|
labelKey: "settings.globalGeneral.reportRoadmapLabel",
|
|
labelFallback: "Global public roadmap label",
|
|
helpKey: "settings.globalGeneral.reportRoadmapLabelHelp",
|
|
helpFallback: "Fallback label for open public-roadmap issues when a project does not set one. No default — unset (projects default to roadmap).",
|
|
keywords: ["roadmap", "label", "report", "fallback"],
|
|
},
|
|
{
|
|
sectionId: "source-control-global",
|
|
key: "reportRoadmapRepo",
|
|
labelKey: "settings.globalGeneral.reportRoadmapRepo",
|
|
labelFallback: "Global public roadmap repository (optional)",
|
|
helpKey: "settings.globalGeneral.reportRoadmapRepoHelp",
|
|
helpFallback: "Fallback GitHub owner/repository for public-roadmap issues. When unset, uses the tracking repository. No default — unset.",
|
|
keywords: ["roadmap", "repository", "repo", "tracking", "fallback"],
|
|
},
|
|
{
|
|
sectionId: "source-control-global",
|
|
key: "gitlabInstanceUrl",
|
|
labelKey: "settings.globalGeneral.gitLabInstanceUrl",
|
|
labelFallback: "Global GitLab instance URL",
|
|
helpKey: "settings.globalGeneral.gitLabInstanceUrlHint",
|
|
helpFallback:
|
|
"Blank defaults to GitLab.com. Projects inherit this self-managed GitLab URL unless they set their own project value. No default — unset.",
|
|
keywords: ["self managed", "self-hosted", "fallback", "inherit"],
|
|
},
|
|
{
|
|
sectionId: "source-control-global",
|
|
key: "gitlabApiBaseUrl",
|
|
labelKey: "settings.globalGeneral.gitLabApiBaseUrlOptional",
|
|
labelFallback: "Global GitLab API base URL (optional / advanced)",
|
|
helpKey: "settings.globalGeneral.gitLabApiBaseUrlHint",
|
|
helpFallback:
|
|
"Blank derives <instance>/api/v4. Override only for self-managed GitLab API gateways that use a different absolute http:// or https:// URL. No default — unset.",
|
|
keywords: ["api v4", "gateway", "fallback", "self managed"],
|
|
},
|
|
{
|
|
sectionId: "source-control-global",
|
|
key: "gitlabAuthTokenType",
|
|
labelKey: "settings.globalGeneral.gitLabTokenType",
|
|
labelFallback: "Global GitLab token type",
|
|
helpKey: "settings.globalGeneral.gitLabTokenTypeHint",
|
|
helpFallback:
|
|
"No default — unset (the selector falls back to personal access token until you choose otherwise).",
|
|
keywords: ["personal access token", "project access token", "group access token", "pat"],
|
|
},
|
|
{
|
|
sectionId: "source-control-global",
|
|
key: "gitlabAuthToken",
|
|
labelKey: "settings.globalGeneral.gitLabAccessToken",
|
|
labelFallback: "Global GitLab access token",
|
|
helpKey: "settings.globalGeneral.gitLabAuthTokenHint",
|
|
helpFallback:
|
|
"Projects inherit this fallback only when they do not set a project GitLab token. Read-only operations need read_api or api; write actions need api; project/group tokens remain limited by resource membership. No default — unset.",
|
|
keywords: ["glpat", "private-token", "credentials", "secret", "fallback"],
|
|
},
|
|
];
|