gsxdsm
a426e28781
FN-9165: Add optional JIRA workspace branch derivation
Add opt-in JIRA-backed workspace branch naming while preserving editable manual branch workflows.
- add scoped JIRA configuration, secret resolution, and documented inheritance
- expose a bounded JIRA issue client and branch-derivation API route
- add settings and task-form controls with recoverable errors and coverage
- derive sanitized branch names from configurable issue-key and summary templates
Files changed:
.changeset/fn-9165-jira-branch-name.md | 7 ++
docs/secrets.md | 4 +
docs/settings-reference.md | 18 ++++
docs/workspaces.md | 4 +
packages/core/src/__tests__/jira-config.test.ts | 6 ++
.../core/src/__tests__/settings-parity.test.ts | 12 +++
packages/core/src/config/settings-schema.ts | 14 +++
packages/core/src/index.ts | 2 +
packages/core/src/jira/index.ts | 1 +
packages/core/src/jira/jira-config.ts | 34 +++++++
packages/core/src/types/settings/settings-scope.ts | 16 ++++
.../app/__tests__/settings-save-split.test.ts | 43 +++++++++
.../dashboard/app/components/SettingsModal.tsx | 29 +++++-
packages/dashboard/app/components/TaskForm.tsx | 23 ++++-
.../app/components/__tests__/TaskForm.test.tsx | 31 +++++++
.../settings/__tests__/section-keys.test.ts | 2 +
.../app/components/settings/save-split.ts | 64 ++++++++++++-
.../app/components/settings/section-keys.ts | 1 +
.../sections/SourceControlGlobalSection.search.ts | 9 ++
.../sections/SourceControlGlobalSection.tsx | 20 ++++-
.../sections/SourceControlSection.search.ts | 9 ++
.../settings/sections/SourceControlSection.tsx | 12 +++
.../settings-default-descriptions.test.tsx | 7 ++
.../dashboard/src/__tests__/jira-client.test.ts | 58 ++++++++++++
.../src/__tests__/register-jira-routes.test.ts | 70 +++++++++++++++
packages/dashboard/src/jira-auth.ts | 18 ++++
packages/dashboard/src/jira.ts | 75 ++++++++++++++++
packages/dashboard/src/routes.ts | 2 +
packages/dashboard/src/routes/README.md | 100 +++++++++++----------
.../src/routes/create-api-routes-mount-sequence.ts | 2 +-
packages/dashboard/src/routes/register-jira.ts | 66 ++++++++++++++
packages/engine/src/index.ts | 2 +
.../worktree/__tests__/jira-branch-name.test.ts | 7 ++
packages/engine/src/worktree/jira-branch-name.ts | 6 ++
packages/i18n/locales/en/app.json | 23 +++++
35 files changed, 739 insertions(+), 58 deletions(-)
Fusion-Task-Id: FN-9165
Fusion-Task-Lineage: 88ab5fa3-f66e-421d-8139-5c3e8917348d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 22:44:46 -07:00
..
2026-08-19 22:44:46 -07:00
2026-07-16 14:08:43 -07:00
2026-08-18 22:11:22 -07:00
2026-08-19 22:44:46 -07:00
2026-08-20 03:57:23 +00:00
2026-08-09 09:14:56 -07:00
2026-08-13 16:39:11 -07:00
2026-08-15 14:40:55 -07:00
2026-08-20 03:55:38 +00:00
2026-08-20 03:55:38 +00:00
2026-07-26 12:01:19 -07:00
2026-07-26 12:01:19 -07:00
2026-08-20 03:57:23 +00:00
2026-07-13 13:58:35 -07:00
2026-08-09 13:33:16 -10:00
2026-07-26 13:15:36 -07:00
2026-07-19 18:45:27 -07:00
2026-08-18 17:55:31 -07:00
2026-08-14 12:59:23 -07:00
2026-07-22 18:46:46 -07:00
2026-08-20 03:57:23 +00:00
2026-08-20 03:55:39 +00:00
2026-07-17 12:00:26 -07:00
2026-07-13 19:07:58 -07:00
2026-07-03 21:45:20 -07:00
2026-06-05 03:56:29 -07:00
2026-06-15 02:30:41 -07:00
2026-06-05 03:41:54 -07:00
2026-07-02 15:00:40 -07:00
2026-07-09 19:58:03 -07:00
2026-08-09 04:37:47 -07:00
2026-07-19 18:59:36 -07:00
2026-07-26 12:01:19 -07:00
2026-07-13 23:16:36 -07:00
2026-07-26 13:15:36 -07:00
2026-07-15 10:07:20 -07:00
2026-07-15 19:29:02 -07:00
2026-06-30 00:03:37 -07:00
2026-07-30 12:03:07 -07:00
2026-06-10 10:34:36 -07:00
2026-07-30 12:03:07 -07:00
2026-08-15 15:33:40 -07:00
2026-08-01 06:09:04 -07:00
2026-08-20 03:57:23 +00:00
2026-08-09 09:14:56 -07:00
2026-07-02 19:01:09 -07:00
2026-08-01 10:45:13 -07:00
2026-07-30 12:03:07 -07:00
2026-08-01 04:08:57 -07:00
2026-07-02 11:38:34 -07:00
2026-07-30 12:03:07 -07:00
2026-08-01 06:09:04 -07:00
2026-07-30 12:03:07 -07:00
2026-08-01 03:19:00 -07:00
2026-07-15 21:58:46 -07:00
2026-07-13 23:16:36 -07:00
2026-07-09 19:58:03 -07:00
2026-07-07 22:04:55 -07:00
2026-07-18 13:18:08 -07:00
2026-07-17 13:31:42 -07:00
2026-08-14 21:55:49 -07:00
2026-07-13 19:07:58 -07:00
2026-07-26 12:01:19 -07:00
2026-08-09 08:31:26 -07:00
2026-08-09 08:31:26 -07:00
2026-08-19 22:44:46 -07:00
2026-08-19 22:44:46 -07:00
2026-08-13 16:48:01 -07:00
2026-07-30 12:03:07 -07:00
2026-07-26 12:01:19 -07:00
2026-07-24 22:32:49 -07:00
2026-08-16 08:32:46 -07:00
2026-08-16 08:32:46 -07:00
2026-08-19 21:01:56 -07:00
2026-08-11 19:00:44 -07:00
2026-08-09 06:51:22 -07:00
2026-07-14 22:16:16 -07:00
2026-07-19 15:45:45 -07:00
2026-07-14 08:18:52 -07:00
2026-07-14 22:16:16 -07:00
2026-07-30 12:03:07 -07:00
2026-08-20 03:57:23 +00:00
2026-07-26 12:01:19 -07:00
2026-08-19 21:42:29 -07:00
2026-06-28 01:17:22 -07:00
2026-06-16 15:08:24 -07:00
2026-08-01 06:09:04 -07:00
2026-07-23 17:27:59 -07:00
2026-08-03 09:04:45 -07:00
2026-07-31 13:23:20 -07:00
2026-08-18 18:05:15 -07:00
2026-07-18 10:55:50 -07:00
2026-07-19 20:42:05 -07:00
2026-07-18 14:23:14 -07:00
2026-07-18 17:06:34 -07:00
2026-08-08 22:55:38 -07:00
2026-07-14 22:13:30 -07:00
2026-08-11 05:45:36 -07:00
2026-08-19 22:44:46 -07:00
2026-07-26 12:01:19 -07:00
2026-07-17 12:00:26 -07:00
2026-08-20 03:55:38 +00:00
2026-08-09 09:14:56 -07:00
2026-07-15 10:38:04 -07:00
2026-08-19 21:01:56 -07:00
2026-07-24 22:32:49 -07:00
2026-08-09 13:22:32 -10:00
2026-07-30 12:03:07 -07:00
2026-08-15 13:39:24 -07:00
2026-08-18 19:52:36 -07:00
2026-08-18 19:52:36 -07:00
2026-07-10 23:42:10 -07:00
2026-07-13 19:07:58 -07:00
2026-08-14 12:59:23 -07:00
2026-08-01 08:52:08 -07:00
2026-07-26 12:01:19 -07:00