Skip to content

fix(logging,config): logging and config robustness (review batch 4) - #420

Merged
Maxaubert merged 1 commit into
mainfrom
fix/419-logging-config-robustness
Oct 10, 2026
Merged

Maxaubert merged 1 commit into
mainfrom
fix/419-logging-config-robustness

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #419. Batch 4 of the 2026-10-09 review, Low section.

Fixed

  • 68: rotation moves the base to a side name first (older generations stay intact if it is held), backs off when refused, and a failed log reopen is retried on the next write.
  • 69: a testlog.txt older than a day is ignored with a Warn log, enabling it logs at Warn, and the telemetry file stops at 64 MiB.
  • 70: SessionDiffers takes defaults for txSamplingMode, zoomEaseOutMs and lockApps from Config.
  • 71: IniWriteLock (named mutex) and UpdateIniKeys in profiles_io.h; Settings setConfig, the flyout flush and the engine pick use them.
  • 72: ParseConfig rejects NaN, inf, hex and trailing junk (default kept), strips a UTF-8 BOM, clampd maps NaN to the lower bound, trackGlideMs and txMaxStepPct are clamped.
  • 73 and 90: device names are reserved with any extension ("con.x", "NUL.txt"), and the 40 limit counts characters, in C++ and in profileName.js.
  • 74: per-process sentinel name with shared access, and ResolveIniPath is cached like ResolveLogDir.
  • 76: stale "render" comment fixed and the model special case dropped from SessionDiffers (the core default is hybrid).
  • 78: the diagnostics zip doubles U+2018-201B like the ASCII apostrophe.
  • 86: a failed ini write keeps the flyout's changes pending with the bounded retry.
  • 87: a still-pending flyout write is folded into the engine pick's locked write.
  • 89: InitTrayBlock resets the pacing ring (and the stale menuOpen flag).

Skipped / partial

  • 71 (partial): the tray profile switch and the Settings profile rename still do their own read-modify-write unlocked; they run on rarer, user-driven paths.
  • 72 (partial): only integer keys with a clear range (trackGlideMs, txMaxStepPct) gained clamps; the rest need per-key ranges decided by their owners.

Tests

  • build.bat test: [doctest] test cases: 604 | 604 passed | 0 failed, assertions: 97639 | 97639 passed | 0 failed
  • build.bat and build.bat config: both exit 0 (Wind.exe, WindTray.exe, WindConfig.exe built).
  • Playwright UI tests not run (batch 7 only); the profileName.js change is a two-line rule mirror.

No version bump: bumped at merge time.

🤖 Generated with Claude Code

https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu

The branch is main plus exactly the combined test build's state after this PR
(conflicts with the PRs merged before it resolved as tested), version 0.24.13.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
@Maxaubert
Maxaubert force-pushed the fix/419-logging-config-robustness branch from 4cc0f83 to 0de5e7a Compare October 10, 2026 02:28
@Maxaubert
Maxaubert merged commit 490558a into main Oct 10, 2026
1 check passed
@Maxaubert
Maxaubert deleted the fix/419-logging-config-robustness branch October 10, 2026 03:12
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.

Logging and config robustness (review 2026-10-09, batch 4)

1 participant