Repository navigation
Save and reuse named Jira JQL filters on the execution host - #28600
Merged
Merged
Conversation
This was referenced Oct 14, 2026
nwparker
force-pushed
the
nwparker/jira-cloud-filters
branch
from
October 14, 2026 09:43
39669fc to
883d0ff
Compare
nwparker
force-pushed
the
nwparker/jira-saved-views
branch
from
October 14, 2026 10:02
787356d to
46c6cff
Compare
nwparker
force-pushed
the
nwparker/jira-cloud-filters
branch
from
October 14, 2026 10:11
44face1 to
ab347f9
Compare
nwparker
force-pushed
the
nwparker/jira-saved-views
branch
2 times, most recently
from
October 14, 2026 10:29
0749a04 to
84411c8
Compare
Contributor
|
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
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. Comment |
Adapt the named-filter workflow from #11151, preserving exact JQL and explicit save/update/rename/delete operations. Persist filters and their active selection through separate capability-gated UI methods so older SSH hosts never receive new fields inside strict taskResumeState. Co-authored-by: no-support <jwan0131@gmail.com>
nwparker
force-pushed
the
nwparker/jira-saved-views
branch
from
October 14, 2026 10:34
84411c8 to
bba51a7
Compare
8 of 9 tasks
9 tasks done
10 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ELI5
Save several Jira searches under names such as “My active work,” then pick one to run it again. Rename, edit, update, and delete them from the same menu. Orca remembers both the filters and your selection after restart.
What Changed
The Jira header now has a searchable Saved filters menu and an explicit edit form. Before, only one unnamed query was remembered. Saved queries now run as exact JQL through the existing search path and selected site; invalid JQL surfaces the existing Jira error without changing the saved text. Editing the search box leaves the stored filter unchanged until an explicit update.
Filters live in the Jira execution host’s persisted UI state. Reads and mutations take an explicit transport target from the selected source context, or the page’s captured account host when no context is selected. Unresolved owners never fall back to this computer, and an action retained from a previous host cannot write to the new host. Separate capability-gated read/mutation methods avoid adding keys to the strict
taskResumeStateschema. Mutations run against current host state, so two clients adding different filters do not erase each other. Failed saves retain the draft; late replies from a host that was left cannot replace the current selection. A committed owner lifetime also rejects an action retained across A → B → A host changes, uncommitted renders, and unmounts. Apply reports success only after the selected query was applied on that lifetime, so linked-workspace mode stays selected while application is pending, skipped, stale, or fails, and switches to the saved query only after successful application.Why
This adapts the focused named-filter workflow from #11151, by jiwonan / no-support, credited in the commit trailer. I also reviewed #13395, by Eugenio Valeiras. Its warning about older hosts rejecting unknown resume fields is valid, but device-local storage would not meet the requested remote persistence. Negotiated host UI methods preserve both requirements. Importing filters already saved on Jira itself remains separate from this issue’s named Orca-filter request.
Linked Issue
Fixes #11114
Refs #17686
The built-in Cloud query prerequisite #28579 is merged. This PR now targets main and contains only saved-filter work, including its composition with the landed linked-workspace controls from #28590. The existing-code clock correction tracked by #28593 is present in the refreshed main base.
Visual Proof
Synthetic Jira data, production filter controls and state hook, rendered through Playwright CDP in an Electron window created with
show: false. The window remained hidden and unfocused. The fixture persistence boundary is labeled; actual profile persistence is separately tested.Before:

After saving, explicitly renaming/updating, selecting, and reloading:

Testing
The refreshed branch is based on landed main
0c05e6d3, preserving CLI, Cloud, linked-workspace, authentication, and summary capabilities. Its remaining commits contain saved-filter work only. On macOS with background launch enabled and at most two workers, all 70 focused tests across ten files pass. A new regression fails against the prior source because an action retained across A → B → A still sends a mutation. Tests also cover suspended owner changes that never commit, unmount during apply, stale successes/errors, immediate duplicate-write refusal, checked apply results, strict request bounds, exact JQL, persistence, and older-host refusal.The linked-workspace consumer now exits that view only after a checked apply returns true. A new actual-header regression fails before that correction; pending, false/skipped/stale, and rejected applications keep the linked view. Existing linked reads retain their error and source fencing.
The complete changed-code gate passes for 29 source files with zero findings. The dedicated CI React Doctor runner passes with zero errors after moving lifetime activation into layout effects; its three nonblocking warnings cover existing component complexity, restoring an externally persisted selection, and a deliberate serialization test. Formatting, lint, anti-slop, focus-read, RPC catalog, runtime-English catalog, and localization extraction checks pass.
Earlier hidden Electron proof exercised save, explicit rename/update, apply, reload restoration, and delete; the screenshots above are preserved. Earlier actual-profile tests cover persistence after restart. The latest correction was verified with hook and contract tests. Standalone compiler validation is coordinated separately; exact-head CI is pending. No full/release build, real Jira, Linux, Windows, phone, or SSH server was exercised for this correction.
AI Disclosure
Review
Self-reviewed bounded input, duplicate-name refusal, host ownership, exact-query error handling, preserved preset flow, acknowledged remote writes, and stale-response fencing.
Agent skill upstream boundary
Notes
Merge risk: Low for the scoped change after the coordinated standalone compiler check; the fresh CI result is recorded separately and is not claimed green. This adds a new UI workflow and a persisted host-state field across IPC/RPC. Capability checks refuse unsupported hosts without touching their strict resume state; existing wire fields and stream frames are unchanged. Filters are bounded to 50 entries and 8 KiB UTF-8 JQL per entry. No credentials, command execution, Git provider behavior, shortcuts, or platform-specific paths changed. Folder workspaces and SSH use the existing row-less Jira source routing. Mobile routing is covered by contract tests; no real phone, Linux, Windows, or SSH server was exercised locally.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (focused checks above; full suite and packaging left to CI)