[WIP][#436] Integrate history endpoints - #492
Draft
Maurier wants to merge 13 commits into
Draft
Conversation
Start editing opens a chooser of the source's managed datastreams and their sessions: continue an in-progress session, start a new one over the selected time range, or create and delete managed datastreams. Managed datastreams are hidden from the catalog and reached through the chooser. Also adds inline processing-level creation, the session description captured at commit time, reuse of the source's loaded series as the working copy, clamping the session window to the source extent, and session resume that replays saved operations.
…eps nested relations
…-endpoints # Conflicts: # package-lock.json
Maurier
marked this pull request as draft
August 3, 2026 22:29
Plot a QC session's state at any operation as a separate, frozen line so it can be compared against the session being edited. Buttons sit on every operation row and on the "Data loaded" row, which plots the state the session started from. Snapshots ride in plottedDatastreams under the synthetic id snap:<sessionId>:<opIndex>, so legend rendering, colour assignment, visibility and reorder work unchanged. isSnapshotId guards the paths that would otherwise treat one as real: refreshGraphSeriesArray skips its fetch, releaseManagedDatastream drops them when the editor closes, and the share encoder keeps them out of ds in favour of its own snap key. The base is always the session chain's own window, never the plot's time range, because operations replay against array indices. Snapshots build on a detached ObservationRecord since the observation store hands back one shared instance per datastream and the replay mutates what it is given. Also fixes two pre-existing problems in the history panel that this work surfaced: - Reloading from a step restored the pre-replay entries wholesale, which put the old timings back over the ones the replay had just measured. Only the "Data loaded" row updated. The panel now keeps the replayed entries and appends only what the replay dropped. - hasUnsavedChanges compared entries by identity, so a replay while viewing a committed session read as pending edits and prompted "You have unsaved edits". A committed session cannot be edited, so both it and unsavedEditCount now short-circuit on isReadOnly.
Covers the feature in the user guide, the id convention, guards and detached-fetcher rule in the architecture doc, the axis behaviour in the plotting doc, and the two new store actions in the API reference.
The Data loaded row is step -1, so a session's starting state is now reachable the same way any operation is, and it carries the "Showing" chip when it is the step on screen. Its reload-from-server button moves to a cloud icon so the row no longer shows two identical glyphs doing different things: one replays the history to a step, the other refetches and drops the history.
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.
Integrates history and session management end to end.