Feature/session file composer#656
Merged
Merged
Conversation
Session Snapshot, Session File Composer, and Rollover staleness rule enter the Sessions section; "options-only load" joins the Avoid list. The stale "Sessions & Persistence" block that redefined Session File as .lxj against the flagged-ambiguity resolution is replaced by a pointer to the canonical definitions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…t rig Ticket 1 of the Session File Composer effort (candidate 5, docs/specs/session-file-composer.md): the pure Core seam lands tested and unused. SessionSnapshot carries the first field slice (FollowTail, Encoding, LineCount); static SessionFileComposer maps it to/from PersistenceData (Compose/Decompose) and owns the Rollover staleness rule (IsStale). The test rig in LogExpert.Persister.Tests is the ticket's real payload: serialize-&-compare equality reusing the Columnizer/Encoding converters, fixture-completeness reflection guards (a new field left out of the fixtures fails immediately), forward and reverse trips with the spec's named exclusion list plus a temporary not-yet-mapped list that Ticket 2 shrinks to empty, purity pins, and the flagship disk-leg trip through real Persister I/O guarding the missing-converter class of bug. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review findings applied. The fixture-completeness guard now compares fixture values against a freshly-constructed baseline instead of CLR defaults: a fixture value equal to a property initializer (PersistenceData.FollowTail is true by construction) cannot prove a mapping exists — a dropped Compose line would leave the initializer standing and every trip would still pass. The PersistenceData fixture flips FollowTail to false accordingly, closing that blind spot for the reverse trip. Also: glossary wording in comments (Session File, Log Window — not "session" / "the control"), using-directive idiom in SessionSnapshot, test fields gathered in a Fields region, the ticket number dropped from the not-yet-mapped list's identifier, and the exclusion params simplified to one combined list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Comment on lines
+83
to
+86
| catch | ||
| { | ||
| // Ignore cleanup errors | ||
| } |
The TimeSpreadCalculator worker raises StartCalc/CalcDone from a thread-pool task; TimeSpreadingControl called BeginInvoke(Refresh) unguarded, which throws InvalidOperationException when the window was loaded but never displayed (background tab of a restored session, restored filter-pipe child) and crashed the process as an unhandled thread-pool exception. Pre-existing race, surfaced by session-restore smoke testing. Also replaces the pointless Invoke in PreferencesChanged with a direct Refresh: the method already runs on the UI thread, and Invoke shares the same no-handle crash vector.
…gExperts/LogExpert into feature/session-file-composer
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.
No description provided.