Skip to content

Feature/session file composer#656

Merged
Hirogen merged 11 commits into
Developmentfrom
feature/session-file-composer
Jul 13, 2026
Merged

Feature/session file composer#656
Hirogen merged 11 commits into
Developmentfrom
feature/session-file-composer

Conversation

@Hirogen

@Hirogen Hirogen commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

Hirogen and others added 7 commits July 11, 2026 19:28
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 thread src/LogExpert.UI/Controls/LogWindow/LogWindow.cs Fixed
Comment on lines +83 to +86
catch
{
// Ignore cleanup errors
}
Comment thread src/LogExpert.UI/Controls/LogWindow/LogWindow.cs Fixed
BRUNER Patrick and others added 4 commits July 13, 2026 12:36
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.
@Hirogen Hirogen merged commit 77880b1 into Development Jul 13, 2026
1 check passed
@Hirogen Hirogen deleted the feature/session-file-composer branch July 13, 2026 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant