Skip to content

Make existing Jira assignees searchable and add Assign to me - #28612

Merged
nwparker merged 9 commits into
mainfrom
nwparker/jira-issue-assignee
Oct 14, 2026
Merged

nwparker merged 9 commits into
mainfrom
nwparker/jira-issue-assignee

Conversation

@nwparker

@nwparker nwparker commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 2 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​294 $\color{#cf222e}{\Huge{\mathbf{−}}}$​8 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​286
Prod 7 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​168 $\color{#cf222e}{\Huge{\mathbf{−}}}$​81 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​87

ELI5

Assigning a Jira issue to yourself now takes one click. To assign someone else, type their name instead of scanning an unsorted list.

What Changed

The existing-issue preview now reuses the searchable user picker from issue creation. Results come from Jira's assignable-user search for this issue and site, with the signed-in account first and the remaining names alphabetically. The separate “Assign to me” action uses the selected source's site identity and disappears once the issue belongs to you.

The issue workspace passes its captured host to assignee metadata and searches, so the picker does not reread the default host. Source, account, site, and issue changes reset the picker, so a late search cannot leave candidates from another scope. Both assignment actions stop while any issue field is saving. User searches run when the picker opens; the old eagerly loaded list is removed.

Why

The old preview used a plain list even though Orca already had a searchable picker and site-aware account lookup. Reusing those keeps the creation and editing flows consistent and preserves their debounce and cancellation behavior. Current-user-first plus alphabetical order is deliberate and predictable without adding assignment-history tracking; recent/frequent ranking is not introduced.

Requested by Andy (@andyhorn) in #17052. No external source PR code copied. The merged creation-picker fixes #17456/#17532 addressed a different surface and supply the existing reusable components.

Linked Issue

Fixes #17052

Visual Proof

Earlier feature proof: the actual metadata components rendered in a hidden Electron window on macOS through Playwright CDP, with fixture Jira users and a simulated 350 ms save. These are fixture responses, not a live Jira account. Before and after use the same issue and viewport; the light-mode capture follows a successful search, assignment to Ada, and direct assignment to self.

The screenshots below predate the final composition with landed main. A subsequent full-Workspace proof passed 28 checks at c628b7f; the final lint extraction changes two source modules, so a fresh rendered run at the current head is pending.

Before:

Original assignee menu: unsorted users and no search or direct self action

After:

Searchable assignee menu with current user first and Assign to me beside it

Light mode after assigning to self:

Issue assigned to the current user; direct self action no longer appears

Fresh final-head visual checks after the action extraction:

Captured self-assignment source and sorted picker

Required transition comment reaches the mounted issue timeline

Testing

  • Earlier feature proof through hidden Electron/CDP on macOS: name search, assignment to another user, direct self assignment, self-action removal, and both themes, using fixture Jira data.
  • Final composed head dfc3c8410b4ee9b0680123ecd171643d2c24fe94: 133 tests pass across 14 suites, including assignee/self-account behavior, real Workspace mutation and rollback, transition/source ownership, request lifetime, runtime detail routing, and 33 file-open contract/routing checks.
  • Four new Workspace checks verify late replies after A→B→A, successful self-assignment with pending actions disabled, rejected candidate rollback with source/site/cache ownership, and unassignment surviving stale detail hydration.
  • Composition starts from landed main 8e6848174c2836d0919f18ff070631291413e264. The transition control/form, single comment/transition reader, mutation queue/subscriber, hydration merge, content, and detail transport remain byte-identical to main.
  • Changed-code quality: nine source files, seven scans, zero new findings. Focus-read ratchet: 1108 reads, unchanged from main. RPC catalog, English runtime catalog, localization catalogs, extraction, and coverage checks pass.
  • Earlier CI exposed two stale file facade metadata assertions: the fixture expected three openMobileFile parameters while the existing main implementation already accepts four, including optional position. Only that test fixture changes here; the failing assertions were reproduced before correction and the 33 file-open checks pass afterward.
  • Full-file lint found the issue workspace above its line limit. Its unchanged title/label handlers and memoized menu actions now live together in the existing workspace-actions module. Full-file Oxlint passes for both files; Workspace is 393 counted lines under the 400 limit, with no suppression or limit increase.
  • Final exact-head node/web typechecks pass. Fresh hidden Electron proof passes 41/41 checks (28 assignee/transition/comment checks and 13 title/label checks after extraction), with 35 stable source hashes and zero renderer errors. All ten screenshots inspected; owned proof processes stopped and temporary fixture removed.
  • Full-file lint passes for every changed source file. Two full-repository file-length violations remain in protocol-version and Jira IPC; both files are byte-identical to landed main and their separate board/image corrections are being verified. The generation/mobile lint repair is merged. A full packaging build has not been run locally for this PR.
  • No live Jira mutation or physical Linux/Windows/SSH check is claimed. Routing regressions use explicit remote owners and confirm source/site isolation.

Review

Merge risk: Low to medium. The issue-update API is unchanged; this replaces the assignee presentation and search timing. Jira still enforces assignment permissions and errors use the existing mutation path. Search now runs lazily and uses the existing 250 ms debounce. Other pending issue fields prevent assignment. The final branch is composed with the landed transition and optimistic-edit changes and preserves their shared mutation queue and comment/transition reader.

Agent skill upstream boundary

  • Not applicable; no upstream skill-installer source or artifacts copied.

Notes

Existing runtime routing sends status reads and assignable-user searches to the selected source's host/account, including SSH/runtime sources. Site identity is checked before offering self-assignment. No OS-specific APIs, paths, keyboard bindings, Git assumptions, RPC fields, stream opcodes, or file formats change. Folder workspaces use the same preview. Mobile data contracts are unaffected; this desktop preview control is not a mobile redesign. Existing localization keys and design primitives are reused.

Checklist

  • Small and focused
  • ELI5, before/after, mechanism, and choice explained
  • Before/after visual proof attached
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH, folder-workspace, mobile, and compatibility impact considered
  • Final focused tests, node/web typechecks, changed quality, changed full-file lint, and fresh rendered proof pass; full CI/packaging limits documented above

@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

📝 Walkthrough

The Jira issue workspace now uses a dedicated assignee control for candidate search, self-assignment, and unassignment. Tests cover assignment states and stale results across source changes. The runtime artifact facade test updates the expected openMobileFile arity to four.

Priority: ⬇️ Low

Severity of issue fixed: Low

Merge Risk: 🟡 Moderate · up to c628b

Shorten the workspace file to pass static analysis before merging. No separate assignee-behavior failure is established by the supplied evidence.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Out of Scope Changes check Warning The assignee implementation and its tests stay within #17052. The change to src/main/runtime/orca-runtime-files-artifact-facade.test.ts changes the expected openMobileFile fixture arity from 3 to … Remove the unrelated openMobileFile fixture correction from this pull request, or provide a concrete dependency showing that #17052 requires this file-open contract change.
Docstring Coverage Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 8 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 3 passed
Check name Status Explanation
Linked Issues check Passed Active directly linked issue #17052 requires a one-click self-assignment action and a searchable, deliberately ordered assignee list. The new JiraIssueAssigneeControl provides Assign to me, hides …
Title check Passed The title clearly and concisely describes the main changes: searchable Jira assignees and the Assign to me action.
Description check Passed The description follows the required template and documents the user impact, implementation, rationale, linked issue, visual proof, testing, risks, and platform considerations. It also clearly identif…
Full details: Out of Scope Changes check

Explanation

The assignee implementation and its tests stay within #17052. The change to src/main/runtime/orca-runtime-files-artifact-facade.test.ts changes the expected openMobileFile fixture arity from 3 to 4. The PR description states that this corrects an existing file-open test fixture, but this change has no demonstrated connection to Jira assignee search or self-assignment. The related updates in the other test files support the workspace and source-ownership behavior.

Full details: Docstring Coverage

Explanation

Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 8 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7182a35b-bec3-4717-9502-79a52b6bd4f2
📥 Commits

Reviewing files that changed from the base of the PR and between eb1ee8f and c628b7f.

📒 Files selected for processing: 9
  • src/main/runtime/orca-runtime-files-artifact-facade.test.ts
  • src/renderer/src/components/JiraIssueWorkspace.assignee-source.test.tsx
  • src/renderer/src/components/JiraIssueWorkspace.optimistic-edit.test.tsx
  • src/renderer/src/components/JiraIssueWorkspace.transition-source.test.tsx
  • src/renderer/src/components/JiraIssueWorkspace.tsx
  • src/renderer/src/components/jira-issue-assignee-control.test.tsx
  • src/renderer/src/components/jira-issue-assignee-control.tsx
  • src/renderer/src/components/jira-issue-workspace-chrome.tsx
  • src/renderer/src/i18n/en-runtime-required.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.

@nwparker
nwparker merged commit 8c5ac7a into main Oct 14, 2026
23 of 25 checks passed
smwbev added a commit to smwbev/orca that referenced this pull request Oct 15, 2026
288 commits landed on main between 9c113ed and 67fe1e1, and all six catalogs and en-runtime-required.json conflicted. They are taken from main and the prune is recomputed in one pass: 1,475 keys. Four Hermes keys left the set because stablyai#28877 deleted them from main, and two Jira keys joined it after stablyai#28590 and stablyai#28612 stopped reading them. en.json goes from 16,098 entries to 14,623; en-runtime-required.json keeps 558 of them.

stablyai#28669 deleted ko-ui-semantic-mistranslations.test.ts, technical-literal-catalog-values.test.ts and zh-technical-literal-mistranslations.test.ts from main. This branch only removed the entries of pruned keys from them, so the deletion is taken.
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.

[Feature]: Assign a Jira task to myself in one click, and make the assignee dropdown searchable and sorted

1 participant