Skip to content

feat(jira): Browse Jira — manual project-first discovery surface (Slice 5)#79

Merged
f1uke merged 1 commit into
main-flukefrom
feature/jira-browse
Jul 12, 2026
Merged

feat(jira): Browse Jira — manual project-first discovery surface (Slice 5)#79
f1uke merged 1 commit into
main-flukefrom
feature/jira-browse

Conversation

@f1uke

@f1uke f1uke commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Slice 5 — Browse Jira (the last slice of the approved Jira build)

An entry point ◈ Browse Jira sits next to + New task. It opens a full-page surface (mockup 02) where you:

  1. Pick a Jira project first — a searchable dropdown of your real project list (GET /jira/projects), with a "Last used" chip; the pick is remembered across visits (localStorage ao.jira.lastProject).
  2. Search/pick a Story within that project — issues list live (GET /jira/search, project-scoped; lists recent issues with no text typed, narrows as you type). Client-side type filter chips (All / Story / Bug / Sub-task / Support).
  3. Create session ▷ — hands off to the existing New task modal pre-filled with the issue (mockup 03), creating a worker bound to jira:<KEY>.

Manual + read-only by design — nothing auto-imports onto the board; the one write is the create.

Reuse, not rebuild

Reuses the Slice-4 REST endpoints (GET /jira/search, GET /jira/projects) — no new backend, frontend only. api-drift is untouched.

Changes

  • useJiraProjects hook + mockJiraProjects; generalized useJiraSearch to fire when a project is scoped (empty text lists a project's issues) — the New-task/link pickers pass project="" so their 2-char gate is unchanged.
  • JiraProjectPicker — searchable dropdown, Last-used chip, remembers the pick.
  • BrowseJiraPage + un-nested route _shell.projects.$projectId_.jira (same trailing-_ pattern as project settings; regenerated routeTree.gen.ts).
  • NewTaskDialog gains an optional initialIssue (the Browse handoff).
  • ShellTopbar "Browse Jira" button (active state on the surface).

Deliberate scope trims (would need new backend / current-user)

  • Subtask expand rows under a Story — needs a non-session issue-detail-with-subtasks endpoint we don't have; the design note itself says subtasks are context-only. Omitted.
  • "Assigned to me" chip — needs current-user resolution the reused endpoints don't provide. Omitted rather than ship dead UI.

Verification

  • typecheck clean; full vitest 856 passed (+13 new across BrowseJiraPage / JiraProjectPicker / ShellTopbar / NewTaskDialog); prettier@3.9.5 clean.
  • All fixtures synthetic (DEMO-/ACME- keys, example.atlassian.net). Matches mockup 02.

Live behavior (project list, in-project search, create-from-Jira) needs a Jira API token and is covered by the attached smoke checklist.

🤖 Generated with Claude Code

…ce 5)

The last slice of the Jira build: a "Browse Jira" entry point next to
"+ New task" opens a full-page surface where you pick a Jira project first
(searchable dropdown of the real project list, remembers your last pick),
search/pick a Story within it, and "Create session" hands off to the
New-task modal pre-filled with the issue — creating a worker bound to its
key. Manual + read-only by design; nothing auto-imports onto the board.

Reuses the Slice-4 REST endpoints (GET /jira/search, GET /jira/projects) —
no new backend. Frontend only.

- useJiraProjects hook + mockJiraProjects; generalize useJiraSearch to fire
  when a project is scoped (lists a project's issues with no text typed),
  leaving the New-task/link pickers (project="") on the 2-char gate.
- JiraProjectPicker: searchable dropdown, "Last used" chip, remembers the
  pick via localStorage (ao.jira.lastProject).
- BrowseJiraPage + un-nested route _shell.projects.$projectId_/jira;
  client-side type filter chips; issue rows with Create session.
- NewTaskDialog gains an optional initialIssue (Browse handoff, mockup 03).
- ShellTopbar "Browse Jira" button (active on the surface).

Fixtures fully synthetic (DEMO-/ACME-, example.atlassian.net). Match mockup 02.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@f1uke f1uke merged commit 1237ca4 into main-fluke Jul 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant