Repository navigation
Use one epoch viewer for Search and pinned protocols - #4
Merged
Merged
Conversation
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.
Search predicate and pinned protocol results assembled separate viewers, so layout and inclusion fixes did not reach both. Both adapters now render through EpochViewer, which owns the toolbar, filters, pane layout, epoch list, split tree, focused recording, inclusion control, metadata, and tree designer. A regression guard prevents the adapters and Search designer from assembling another viewer independently.
Both use the same local tag-filter control (All/Any, is/is not, cell/epoch/shared tags) and Clear filter action. Search filters preserve the base query and constrain preview, paging, trees, designer, and export consistently. Filtering errors retain a recovery action, and the designer reconnects resizing after refreshed data mounts.
Search results now have include/exclude controls across every tree presentation and the focused epoch. Excluded recordings remain visible; all three export destinations receive the same exact included membership. Local search choices do not modify another protocol’s curation. Exclusions are chunked within predicate limits, with depth and size checks before creating candidates.
There is one Export entry point per results viewer. Search offers direct export, update pinned protocol, and create pinned protocol through three visual cards; pinned datasets retain direct export. Tree controls remain on one row at normal and minimum pane widths, with compact icons where needed. Search and pinned views both expose Cell QC.
The shared tree designer now keeps branch navigation inside the designer and collapses columns without selecting a descendant. Completed layout edits are published immediately so rapid return navigation preserves reorders. Combined levels offer Separate, preserving component fields and enforcing the eight-level limit. Live checks in both contexts cover rapid reorder/return, combine/separate, branch collapse, explicit epoch inspection, flat paging, presets, pointer drag, and minimum-width resizing.
Designer selection stays in the editor until the explicit Inspect epochs/Back to epochs action. The single Back to epochs control sits at the top of the shared left designer pane, separated from Arrange tree by a divider; a render regression test verifies its unique placement. Navigation retains prior columns without dimming, blanking the view, or flashing a loading prompt; longer requests show a delayed notice. Horizontal wheel and Shift-wheel gestures scroll the column strip and are consumed at its boundaries, while vertical scrolling stays local. Compact preview revisions are paired with their saved split order during rapid layout edits. Live checks verify both contexts, full-window overflow scrolling in both directions, vertical containment, retained selection, explicit inspection, and rapid add/remove changes without stale errors. Original layouts and pane widths were restored.
Validation: frontend tests and production build passed; backend regression tests passed with native-only skips locally. Synthetic API tests verify exact direct/update/create membership and a 251-epoch exclusion case. Live browser checks cover inclusion (173 visible, 172 exported after one exclusion), filter zero matches and clearing, negative tag rules, shared designer and return navigation, one Export button, and minimum-width spacing. GitHub CI passed on final commit 9588df7: all frontend tests and production build, backend regressions, and Apple Silicon native lifecycle and folder transfer. Live browser and runtime-render checks verify the unique return control stays in the shared left pane in both contexts. Runtime render tests cover empty Search/pinned selections and shared scientific context; removing the empty-selection guard reproduces the original pinned-view crash.