Repository navigation
feat(jira): choose planning columns in the issue list - #28615
Conversation
574fc9b to
ba8787c
Compare
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 2 minutes. View limit details
📝 Walkthrough
Priority: ➖ Normal Merge Risk: 🟡 Moderate · up to
|
ba8787c to
ed65c61
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
59d39a3f-d581-4c7d-b5f8-5bb435e9c3a5
📒 Files selected for processing: 30
config/focus-setting-read-baseline.txtsrc/main/jira/issues.test.tssrc/main/jira/jira-agile-field-search.test.tssrc/main/jira/jira-agile-fields.test.tssrc/main/jira/jira-agile-fields.tssrc/main/jira/jira-issue-mapping.tssrc/main/jira/jira-issue-read.tssrc/main/jira/jira-issue-search.tssrc/main/jira/jira-search-abort.test.tssrc/renderer/src/assets/main.csssrc/renderer/src/components/jira-issue-sorter.tssrc/renderer/src/components/jira-list-columns-menu.tsxsrc/renderer/src/components/jira-list-columns.test.tssrc/renderer/src/components/jira-list-columns.tssrc/renderer/src/components/task-page-jira-grouping.test.tssrc/renderer/src/components/task-page-jira-issue-cells.tsxsrc/renderer/src/components/task-page-jira-issue-list.tsxsrc/renderer/src/components/task-page-jira-sort-controls.test.tsxsrc/renderer/src/components/task-page-jira-sort-controls.tsxsrc/renderer/src/components/task-page-jira-sorting.test.tssrc/renderer/src/components/task-page-jira-status-tone.tssrc/renderer/src/components/task-page/jira/Content.tsxsrc/renderer/src/components/use-task-page-jira-list-state.owner.test.tsxsrc/renderer/src/components/use-task-page-jira-list-state.tssrc/renderer/src/i18n/locales/en.jsonsrc/renderer/src/runtime/runtime-jira-client.tssrc/renderer/src/runtime/runtime-jira-priority-client.test.tssrc/renderer/src/runtime/runtime-jira-priority-client.tssrc/shared/jira-types.tstests/e2e/jira-panel-layout.spec.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.
Adapt the column picker and planning field mapping from #20994 to current Tasks components. Co-authored-by: Dagan <idan.d@imagen-ai.com>
3df22ad to
68a5de8
Compare
ELI5
Choose which Jira planning details appear in the issue list, so sprint planning needs fewer trips to Jira.
What Changed
The fixed Jira list now has a checkbox Columns menu. It keeps Key and Issue visible and adds optional Parent, Sprint, Points, Estimate, and Remaining columns. Choices are saved on this device. Selected columns can be sorted; hiding the sorted column selects Updated, or Key if Updated is hidden.
Priority sorting reads each site's scheme from the Jira source that owns the list, using its explicit source host or the page's captured account host. Switching the focused server cannot redirect those reads; responses from a previous owner are discarded, and an already loaded scheme is hidden immediately when the owner or account changes. The existing priority API remains available for older callers.
Rows and headings use one column registry and scroll horizontally together when the selected fields exceed the panel width. Titles retain at least 180px. Standard priorities use theme tokens for red, yellow, and blue. Sprint and points field IDs are discovered per site and credentials, shared by concurrent reads, and refreshed after ten minutes. They are requested in both list and detail reads. A failed or slow catalog request leaves the rest of the issue usable.
Adapted from #20994 by Dagan (@idan-dagan-imagenai), with original author credit in the commit trailer. The current Tasks components and state differ from that source branch, so the registry, picker, and mapping were adapted to the current APIs.
Why
The existing list hides the information needed to plan a sprint. A device-local menu follows the nearby Linear display preference pattern and keeps the default columns familiar. Discovering IDs avoids assuming every Jira site uses the same custom fields. Sharing discovery outside each search's queue slot avoids exhausting the request pool. Estimates use hours and minutes because Jira sites configure different working days and weeks.
Linked Issue
Fixes #20882.
This PR targets main after #28583 landed. The production clock fix is already on main.
Visual Proof
Hidden Electron renderer running the actual Tasks list components with synthetic Jira issues; both captures use a 1400px panel. The wider selected layout exposes a horizontal scrollbar instead of collapsing the issue title.
Before, default columns:
After, planning columns selected:
Testing
77 focused tests across eight suites passed. Coverage includes field discovery, cancellation, a hung catalog deadline, credential isolation, Server catalog paths and sprint values, numeric zero, detail hydration, more sites than queue slots, column persistence, malformed preferences, sorting, and the shared grid. Changed-code quality, focused oxlint, and dead-class checks pass. Hidden CDP checks exercise the actual list components and production state hook with synthetic data in both themes: Points changes row order, hiding it restores Updated sorting, and choices survive reload. At 780px the title is 180px and the identical row/header grids overflow to 1274px instead of collapsing it.
The routing follow-up passes 50 focused tests across five suites, including eight owner regressions that all fail against the unchanged hook. These cover captured accounts, explicit sources, local/direct-SSH IPC routes, unresolved owners, late results, and compatibility wrappers. Focused lint and changed-code quality pass with zero findings across the complete PR's 27 source/test files. The full focus-read gate passes at 1,116 reads after pruning only decreases. The priority transport retains its existing method, site argument, and 30-second timeout. No additional application or broad compiler run was launched for this follow-up.
tc:web, localization catalogs, and a fresh focused quality gate passed. The panel-width base (#28583) passed its hidden full-app regression. The follow-up full build andpnpm tcwere interrupted under the coordinator's resource policy when machine load reached 264 and RAM reached 127 GiB; the expanded two-test full-app regression is not yet run. CI and serialized broad validation must finish before merge.The final review corrections pass 58 tests across eight suites and all seven changed-quality scans with zero findings. New regressions fail against the preceding production source: stale completed priority maps, punctuation sprint names, repeated discovery failures, and the optional read deadline. A hidden styled Electron fixture exercised three production list rows, ascending and descending Points sorting, hiding the sort column, and a workspace action on an older-host issue with missing planning fields. Both zero and missing values remained distinct. Localization catalogs, extraction and coverage were checked. Source and host account tests use fixtures; live Jira and platform desktop proof remain outside this evidence.
Review
Low product risk after the review corrections; current-head compiler checks still required. Optional catalog discovery now owns at most 500ms of request time, with a one-minute failure cooldown and ten-minute success expiry. Server sprint names retain commas and brackets. Source-qualified priority snapshots prevent a previous account's completed scheme from sorting the next account's issues. The shared row/header template and minimum width reserve 104px for combined actions. Existing issue readers keep working with missing optional values.
Agent skill upstream boundary
Notes
Validated on macOS with hidden windows. Linux, Windows, SSH, and live Jira credentials were not exercised. Issue fields are additive and optional for mixed client/server versions; an older server produces blank planning values. There are no new RPC methods, Git commands, database changes, or platform-specific paths. The Parent value uses Jira's REST parent field. Server epic relationships exposed only through a separate Epic Link field are not represented; the UI does not promise that field. Unsupported or unavailable planning fields remain blank. Compact panels below 768px retain their existing row summary.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)