nesquena-hermes
4111e097c8
Merge pull request #5813 from nesquena/release/stage-5773
...
Release: keep live reasoning on one renderer path (#5773 )
2026-07-08 20:16:18 -07:00
nesquena-hermes
45575f588a
Merge pull request #5812 from nesquena/release/stage-5770
...
Release: contain streaming code block layout (#5770 )
2026-07-08 20:12:05 -07:00
nesquena-hermes
862a121b24
Merge pull request #5811 from nesquena/release/stage-5721
...
Release: workspace switcher screen reader accessibility (#5721 )
2026-07-08 19:46:24 -07:00
nesquena-hermes
d6e6e91de4
Merge pull request #5810 from nesquena/release/stage-5729
...
Release: keep child streams from moving parent sidebar bucket (#5729 )
2026-07-08 19:40:04 -07:00
nesquena-hermes
522e90b5b8
Merge pull request #5809 from nesquena/release/stage-5786
...
Release: handle terminal output EventSource transport errors (#5786 )
2026-07-08 19:35:21 -07:00
nesquena-hermes
9765f0e45b
Merge pull request #5808 from nesquena/release/stage-5761
...
Release: refresh OpenCode Go static catalog (#5761 )
2026-07-08 18:28:43 -07:00
nesquena-hermes
f8f60d5fdd
Merge pull request #5807 from nesquena/release/stage-5782
...
Release: back off bg drain loop instead of silent tight-spin (#5782 )
2026-07-08 18:22:36 -07:00
nesquena-hermes
8e00277ce5
Merge pull request #5805 from nesquena/release/stage-5785
...
Release: frame passkey-login 200 with Content-Length (#5785 )
2026-07-08 18:10:07 -07:00
nesquena-hermes
9dacbe60de
Merge pull request #5804 from nesquena/release/stage-5787
...
Release: pair metering begin_session with end_session teardown (#5787 )
2026-07-08 17:55:24 -07:00
nesquena-hermes
4fc637d8d0
Merge pull request #5790 from nesquena/feat/update-channels
...
Release channels: stable / experimental self-updater
2026-07-08 17:12:50 -07:00
nesquena-hermes
3730a4a551
Merge pull request #5796 from nesquena/release/stage-5784
...
Release: evict run-journal writer-lock cache on journal delete (#5784 )
2026-07-08 14:23:09 -07:00
nesquena-hermes
6ab95bffa4
Merge pull request #5794 from nesquena/release/stage-5783
...
Release: serialize daemon-thread start under a lifecycle lock (#5783 )
2026-07-08 14:03:05 -07:00
nesquena-hermes
460f3eb47d
Merge pull request #5793 from nesquena/release/stage-5781
...
Release: sweep completion-dedup map by delivery lifecycle (#5781 )
2026-07-08 13:47:35 -07:00
nesquena-hermes
c008e4443a
Merge pull request #5791 from nesquena/release/stage-5780
...
Release: open state.db read-only for lineage reads + watcher (#5780 )
2026-07-08 13:22:57 -07:00
nesquena-hermes
16272dd646
Merge pull request #5777 from nesquena/release/stage-5772
...
Release: scope MCP list config reads to active profile (#5772 )
2026-07-08 09:23:22 -07:00
nesquena-hermes
07b9708cde
Merge pull request #5756 from nesquena/release/stage-5751
...
Release: non-virtualized transcript scroll jump-back (#5751 )
2026-07-07 14:27:32 -07:00
nesquena-hermes
923cadcb80
Merge pull request #5754 from nesquena/release/stage-5742
...
Release: desktop stale-snapshot scroll compensation (#5742 )
2026-07-07 13:19:28 -07:00
nesquena-hermes
57aa5be2ed
Merge pull request #5753 from nesquena/release/stage-5463-v2
...
Release: mirror WebUI usage counters to state.db (#5463 )
2026-07-07 13:12:06 -07:00
nesquena-hermes
1b58e4df47
Merge pull request #5750 from nesquena/release/stage-5744
...
Release: clear dead steer busy state (#5723 )
2026-07-07 09:45:35 -07:00
nesquena-hermes
c3ff9f41c7
Merge pull request #5741 from nesquena/release/stage-5738
...
Release: keep the composer above iPad keyboards (#5701 )
2026-07-06 22:20:06 -07:00
nesquena-hermes
021bc1280f
Merge pull request #5740 from nesquena/release/stage-5737
...
Release: drop empty tool_calls arrays before API send (#5737 )
2026-07-06 21:56:50 -07:00
nesquena-hermes
ad7d0abf44
Merge pull request #5736 from nesquena/release/stage-tlsflake
...
test(tls): drain full stdout for the TLS-fallback assertion (flake fix)
2026-07-06 21:14:27 -07:00
nesquena-hermes
b0c79fd4d3
Merge pull request #5735 from nesquena/release/stage-5567-resolver
...
Release: #5567 model-picker provider resolution fix
2026-07-06 20:56:50 -07:00
nesquena-hermes
1d8208026c
Merge pull request #5728 from nesquena/release/stage-5419
...
Release: auto-switch profiles for cross-profile session links (#5419 )
2026-07-06 19:39:22 -07:00
nesquena-hermes
243c0f698d
Merge pull request #5725 from nesquena/release/stage-5692
...
Release: Windows git subprocess console-window fix (#5692 )
2026-07-06 19:25:03 -07:00
nesquena-hermes
8fee7da3ee
Merge pull request #5724 from nesquena/release/stage-5717
...
Release: iteration-limit graceful summary (#5717 )
2026-07-06 18:48:36 -07:00
nesquena-hermes
c4a3d4f816
Merge pull request #5716 from nesquena/release/stage-5664
...
Release: preserve workspace file-tree scroll position (#5664 )
2026-07-06 16:29:05 -07:00
nesquena-hermes
5ecd248e92
Merge pull request #5708 from nesquena/release/stage-5688b
...
Release: self-update .git/index.lock recovery (#5688 )
2026-07-06 14:52:25 -07:00
nesquena-hermes
8d5d28903c
Merge pull request #5546 : add Czech (cs) locale support
...
Complete Czech locale (1642/1642 key parity, all function values, login screen, test guard). Rebased + translation-quality fixes by maintainer; original author @ostravajih. Gate: full suite + Codex SAFE TO SHIP.
2026-07-06 14:42:12 -07:00
nesquena-hermes
bb0439dcfa
Merge pull request #5707 from nesquena/fix/last-two-flakes
...
Fix the last 2 chronic local full-suite test-isolation flakes (test-only)
2026-07-06 14:24:13 -07:00
nesquena-hermes
ade6de5294
Merge pull request #5704 from nesquena/fix/5696-profiles-ttl
...
fix(#5696 ): revert profiles cache TTL to 4s (stale profile rows)
2026-07-06 13:44:17 -07:00
nesquena-hermes
116d81d3c8
Merge pull request #5703 from nesquena/release/stage-5696
...
Release: session-load latency fix (#5696 )
2026-07-06 13:36:48 -07:00
nesquena-hermes
e785264e4e
Merge pull request #5702 from nesquena/release/stage-flakefix
...
Fix chronic full-suite test-isolation flakes (hermes_cli __path__ poison, 8 tests)
2026-07-06 12:57:23 -07:00
nesquena-hermes
40ac0c6be2
Merge pull request #5697 from nesquena/release/stage-5674
...
Release: stabilize sidebar lineage grouping across live refreshes (#5674 )
2026-07-06 11:25:36 -07:00
nesquena-hermes
93b7ed90bf
Merge pull request #5695 from nesquena/release/stage-5672
...
Release: reserve real off-screen height for user rows (#5672 )
2026-07-06 11:13:56 -07:00
nesquena-hermes
c93672abee
Merge pull request #5694 from nesquena/release/stage-5666
...
Release: refuse stale-anchor scroll restore during streaming, Android (#5666 )
2026-07-06 10:56:52 -07:00
nesquena-hermes
cfc0ffe102
Merge pull request #5693 from nesquena/release/stage-5681
...
Release: restore unpinned reader after mid-stream scroll clamp (#5681 )
2026-07-06 10:45:24 -07:00
nesquena-hermes
501d7184ff
Merge pull request #5691 from nesquena/release/stage-5685
...
Release: stop pinned tail-follower mid-stream scroll jitter (#5685 )
2026-07-06 10:33:39 -07:00
nesquena-hermes
426f12ce51
Merge pull request #5690 from nesquena/release/stage-5673
...
Release: proxy-auth PWA caveat docs (#5673 )
2026-07-06 10:13:02 -07:00
nesquena-hermes
26a829c952
docs: weekly contributor tally refresh (20260706) ( #5689 )
2026-07-06 09:29:07 -07:00
nesquena-hermes
f80e641a9a
Merge pull request #5670 from nesquena/release/stage-5668
...
Release: shared layout-assertion test helpers (#5668 )
2026-07-05 23:19:11 -07:00
nesquena-hermes
79d3b5996d
Merge pull request #5669 from nesquena/release/stage-visible-2026-07-06
...
Release: visible-UI batch — mobile nav (#5605 ), mermaid mobile (#5560 ), steer upload scope (#5630 ), header font-scale (#5633 ), three-panel floor (#5594 )
2026-07-05 22:53:31 -07:00
nesquena-hermes
7721e530fb
fix( #5657 ): preserve workspace file-tree scroll position across re-render
...
renderFileTree() clears its scroll container with box.innerHTML='' and rebuilds
every row. Detaching the rows collapses scrollHeight, so the browser clamps
scrollTop to 0 — every folder expand/collapse, breadcrumb nav, refresh, and
hidden-files toggle that re-runs the renderer teleported the reader to the top of
a long tree, losing their place (the dominant interaction in the panel).
Fix: capture box.scrollTop before the innerHTML='' wipe and restore it after the
normal render tail (after _renderTreeItems repaints and the container is tall
again). A plain scrollTop restore is sufficient and correct here — expand/collapse
insert or remove rows BELOW the clicked disclosure, so the clicked row keeps its
offset from the top; no getBoundingClientRect anchor delta is needed (that's only
for the prepend-above case in the chat messages list). The reporter's data-path
anchor sketch is deliberately NOT used: _renderTreeItems rows carry no data-path,
so that selector would match nothing.
The two early-return paths (no-workspace hides the box; empty-dir has nothing to
scroll) are left untouched — they legitimately reset. The restore guards only the
normal render tail. loadDir's two-render sequence (initial + post-expanded-dirs
prefetch) is handled correctly: each renderFileTree() call independently captures
then restores its own pre-wipe scrollTop across the await.
Test: tests/test_issue5657_filetree_scroll_preserve.py — static guards that the
capture precedes the wipe and the restore follows _renderTreeItems (per the
maintainer test plan; drops the getBoundingClientRect anchor assertion since the
fix deliberately doesn't use it). Fail-without-fix verified; 355 workspace-tree
regression tests green.
Closes #5657 .
2026-07-06 04:36:13 +00:00
nesquena-hermes
3403870ef9
Merge pull request #5663 from nesquena/release/stage-phase1-2026-07-06
...
Release: Phase-1 batch — table whitespace (#5644 ), empty error-hint guard (#5653 ), Playwright CI (#5661 )
2026-07-05 21:17:40 -07:00
nesquena-hermes
90102892e0
Merge pull request #5662 from nesquena/review-5655
...
Release: compression-recovery card on reloaded sessions (#5655 )
2026-07-05 20:08:56 -07:00
nesquena-hermes and nesquena-hermes
9738ebb614
fix(tests): sync on subscriber count in multitab SSE test ( #5628 ) ( #5660 )
...
test_same_stream_in_two_tabs_receives_identical_token_sequence started both
SSE-handler threads then immediately put_nowait'd the tokens + stream_end
without waiting for both threads to subscribe. StreamChannel.put_nowait()
buffers events only while there are zero subscribers and clears that buffer
the moment the first subscriber attaches and broadcasts live — so producing
events in the window after tab A subscribes but before tab B does orphans
tab B (subscribes to a cleared buffer, never sees stream_end, hangs ->
thread.join timeout -> 'every tab should finish' fails). ~20% timing flake
on slow CI runners (3.11 shard-4).
Wait until len(stream._subscribers) == len(handlers) (bounded 5s) before
producing events, so delivery is deterministic regardless of thread-start
timing. Test-only; no production change (buffer-then-broadcast is correct for
the real reconnect case).
Verified: original flakes 2/30 under CPU contention; fixed 30/30.
Fixes #5628
Co-authored-by: nesquena-hermes <nesquena-hermes@users.noreply.github.com >
2026-07-05 19:52:16 -07:00
nesquena-hermes
7990b7412a
Merge pull request #5659 from nesquena/review-5645
...
Release: reload config cache on profile switch (#5645 , fixes #5619 )
2026-07-05 19:37:58 -07:00
nesquena-hermes
d5bd28b49a
Merge pull request #5656 from nesquena/review-5555
...
Release: fork read-only cron sessions into a new writable chat (#5555 )
2026-07-05 19:07:04 -07:00
nesquena-hermes
89b6ab5c34
Merge pull request #5654 from nesquena/review-5554
...
Release: redesign cron preset schedule builder — sentence UI (#5554 )
2026-07-05 18:40:07 -07:00
nesquena-hermes
8cdb4ea27b
Merge pull request #5652 from nesquena/review-5506
...
Release: restore prose-level fade for Transparent Stream (#5506 )
2026-07-05 17:35:47 -07:00
nesquena-hermes
de1ff837e3
Merge pull request #5650 from nesquena/review-5502
...
Release: reuse the rich model picker in Preferences (#5502 )
2026-07-05 16:26:14 -07:00
nesquena-hermes
2f3e42dc64
Merge pull request #5648 from nesquena/review-5548
...
Release: copyable workspace relative paths (#5548 )
2026-07-05 15:31:01 -07:00
nesquena-hermes
6d0ff92fa7
Merge pull request #5647 from nesquena/release/stage-tiny
...
Release: sidebar auto-refresh (#5632 ) + composer-divider fix (#5499 )
2026-07-05 14:48:29 -07:00
nesquena-hermes
1870f77839
Merge pull request #5646 from nesquena/ship-5538
...
Release: compression-recovery action — focused continuation on compression_exhausted (#5538 )
2026-07-05 14:19:03 -07:00
nesquena-hermes
9b18ea9f99
Merge pull request #5643 from nesquena/release/stage-i18n2
...
Release: complete 664 UI translations across 8 locales (#5535 )
2026-07-05 10:48:54 -07:00
nesquena-hermes
bb0d33d343
Merge pull request #5642 from nesquena/release/stage-mobile2
...
Release: fix live mobile scroll jump-back regression (#5638 , #5635 )
2026-07-05 10:36:12 -07:00
nesquena-hermes
866a25b253
Merge pull request #5640 from nesquena/release/stage-lr1
...
Release: low-risk docs+tests batch (#5536 , #5549 , #5537 , #5589 )
2026-07-05 10:24:13 -07:00
nesquena-hermes
8dc47b83c0
Merge pull request #5629 from nesquena/release/stage-5626
...
release #5626 : ignore inactive compacted state-db rows in context replay
2026-07-05 02:18:28 -07:00
nesquena-hermes
35464be634
Merge pull request #5627 from nesquena/fix/5588-auth-cache-isolation
...
fix(#5588 ): reset memoized password-hash cache around every test (isolation flake)
2026-07-05 01:53:12 -07:00
nesquena-hermes
c922f179f7
Merge pull request #5625 from nesquena/release/stage-5582
...
release #5582 : keep fork children out of compression stitch
2026-07-05 01:20:03 -07:00
nesquena-hermes
f1f4514799
Merge pull request #5623 from nesquena/release/stage-5459
...
release #5459 : include attachments in steer submissions
2026-07-05 00:24:21 -07:00
nesquena-hermes
abdf6c7ae3
Merge pull request #5620 from nesquena/fix/mobile-sidebar-header-icon-align
...
fix(ui): align mobile sidebar close/new-conversation header icons
2026-07-04 23:49:05 -07:00
nesquena-hermes
58e857ec95
Merge pull request #5617 from nesquena/release/stage-5602
...
release #5602 : iOS PWA session-switch instant sidebar close + race guard
2026-07-04 22:46:39 -07:00
nesquena-hermes
b0340a7b3e
Merge pull request #5616 from nesquena/release/stage-5611
...
release #5611 : opencode-go uses curated static model list (no probe 404s)
2026-07-04 22:18:12 -07:00
nesquena-hermes
0bbf7c3d37
Merge pull request #5615 from nesquena/release/stage-5505
...
release #5505 : improve session-list retry feedback
2026-07-04 22:01:28 -07:00
nesquena-hermes
bbcd6d19cd
Merge pull request #5613 from nesquena/release/stage-5539
...
release #5539 : increase approval card height cap on mobile
2026-07-04 21:25:57 -07:00
nesquena-hermes
035e84ae00
Merge pull request #5612 from nesquena/release/stage-5534
...
release #5534 : CORS preflight echoes only same-origin or allowlisted origins
2026-07-04 19:48:27 -07:00
nesquena-hermes
49a9560c45
Merge pull request #5610 from nesquena/release/stage-5584
...
release #5584 : skip clear-sentinel backups during recovery
2026-07-04 19:15:06 -07:00
nesquena-hermes
03b64ebeb1
Merge pull request #5609 from nesquena/release/stage-5573
...
release #5573 : guard viewport anchor key against lone surrogates
2026-07-04 19:09:34 -07:00
nesquena-hermes
daf5cc1bb0
Merge pull request #5607 from nesquena/release/stage-5593
...
release #5593 : keep active CLI sessions visible before final output
2026-07-04 18:33:40 -07:00
nesquena-hermes
73f77cb42a
Merge pull request #5606 from nesquena/release/stage-5592
...
release #5592 : preserve completed assistant replies during settle
2026-07-04 18:19:31 -07:00
nesquena-hermes
5eb081d30e
Merge pull request #5603 from nesquena/release/stage-5565
...
release #5565 : distinct Mermaid fullscreen toolbar icon
2026-07-04 18:10:58 -07:00
nesquena-hermes
1bbecb9f2c
Merge pull request #5600 from nesquena/release/stage-5559
...
release #5559 : classify credential-pool exhaustion with an actionable hint
2026-07-04 17:39:14 -07:00
nesquena-hermes
94e5778feb
Merge pull request #5599 from nesquena/release/stage-5579-r2
...
release #5578 : stop login next= param nesting / URL explosion
2026-07-04 17:27:27 -07:00
nesquena-hermes
1f68c8cfa5
Merge pull request #5596 from nesquena/release/stage-5577
...
release #5567 : context-local HERMES_HOME override for background workers
2026-07-04 16:55:18 -07:00
nesquena-hermes
73643f21b6
Merge pull request #5595 from nesquena/release/stage-5564
...
release #5564 : mint stable per-message ids for large-session fork alignment
2026-07-04 16:28:22 -07:00
nesquena-hermes
b504fe3057
Merge pull request #5591 from nesquena/release/stage-5562
...
release #5562 : refresh sidebar recency after missed session events
2026-07-04 15:38:58 -07:00
nesquena-hermes
2cc2eb2b3c
Merge pull request #5590 from nesquena/release/stage-5558
...
release #5558 : keep Transparent Stream final replies visible after settle
2026-07-04 15:23:21 -07:00
nesquena-hermes
f09d9bd446
Merge pull request #5586 from nesquena/release/stage-5541-r3
...
release #5541 : iOS PWA streaming freeze + SSE reconnect reliability
2026-07-04 15:06:02 -07:00
nesquena-hermes
56a133cc72
Merge pull request #5581 from nesquena/release/stage-5543-r3
...
release #5543 : fire-and-forget memory commit + drain-safe managed stop
2026-07-04 14:44:22 -07:00
nesquena-hermes
04717ad305
Merge pull request #5580 from nesquena/release/stage-5544-r3
...
release #5544 : re-pin auto-scroll at true bottom after scroll-to-bottom
2026-07-04 14:39:02 -07:00
nesquena-hermes
627c6a173c
Merge pull request #5576 from nesquena/release/stage-5563-r2
...
release #5563 : align forked context to display for large/compacted sessions
2026-07-04 14:15:49 -07:00
nesquena-hermes
4dfeb78bd0
Merge pull request #5574 from nesquena/release/stage-5532b
...
Release — clear-conversation P0 data-loss (#5532 , #5556 , #5553 )
2026-07-04 13:18:48 -07:00
nesquena-hermes
4154f949fb
Merge pull request #5569 from nesquena/fix/5542-debrittle-rfc-anchors
...
fix(#5542 ): de-brittle SSE-contract RFC anchors — cite by symbol, not line number
2026-07-04 12:54:58 -07:00
nesquena-hermes
4c89fcfaab
Merge pull request #5566 from nesquena/release/stage-5547
...
Release — Transparent Stream running-tool status (#5547 , #5523 )
2026-07-04 12:25:01 -07:00
nesquena-hermes
971629af4e
Merge pull request #5561 from nesquena/fix/suite-flakes
...
Fix the two chronic full-suite test flakes (nous_picker + service_tier)
2026-07-04 12:10:30 -07:00
nesquena-hermes
980e98dc7e
Merge pull request #5528 from nesquena/release/stage-5471
...
Release — composer draft-restore suppression, root-fixed (#5471 )
2026-07-04 01:55:23 -07:00
nesquena-hermes
edfccb9cd4
Merge pull request #5526 from nesquena/release/stage-5522
...
Release — Windows git.exe resolution for version/cache-busting (#5522 )
2026-07-04 01:19:58 -07:00
nesquena-hermes
72746342d3
Merge pull request #5524 from nesquena/release/stage-5456
...
Release — Transparent Stream churn reduction (#5456 , #5367 )
2026-07-04 01:04:38 -07:00
nesquena-hermes
2981f71181
Merge pull request #5521 from nesquena/release/stage-5511
...
Release — route user-defined providers: models (#5511 ), hardened
2026-07-04 00:42:19 -07:00
nesquena-hermes
8e26cc03d0
Merge pull request #5520 from nesquena/release/stage-p1
...
Release — session SSE contract RFC (#5513 , addresses #4812 )
2026-07-03 23:55:45 -07:00
nesquena-hermes
46b630db52
Merge pull request #5518 from nesquena/release/stage-5516
...
Release — transcript re-pin when composer grows (#5516 , closes #5514/#5515)
2026-07-03 23:20:18 -07:00
nesquena-hermes
259729bb0a
Merge pull request #5517 from nesquena/release/stage-5504
...
Release — deleted-session ghost fix (#5504 , closes #5498 )
2026-07-03 22:52:28 -07:00
nesquena-hermes
7e7e71f695
fix(chat): widen composer re-pin observer to #composerWrap (Fable #5516 finding)
...
Fable senior review (COMMENT, no blockers) + DRY nit:
- Widen the ResizeObserver from #msg to the whole #composerWrap so growth from the
attachment tray / selection chips (not just textarea rows) also re-pins a bottom-
pinned reader. Fable flagged tray/chip growth as a likely REMAINING #5515 trigger
— same viewport-shrink physics, now covered by the same guarded re-pin at one seam.
#composerWrap contains #msg, so the textarea path is still covered.
- DRY: _repinMessagesAfterComposerResize() now reuses _messageBottomDistance()
instead of re-implementing the bottom-distance expression inline.
Re-verified live (composer grow -> bottomDist stays 0) + 524 scroll/composer
regression tests green + 6 issue tests green.
2026-07-04 05:52:14 +00:00
nesquena-hermes
dde008748e
fix(chat): re-pin transcript to bottom when the composer grows ( #5514 , #5515 )
...
#5514 (deterministic): with the chat pinned to the bottom, growing the composer
past one row (multi-line typing, Shift+Enter, a multi-line / WisprFlow paste)
shrinks the flex:1 .messages viewport by the same delta. scrollTop is unchanged
but max-scrollTop rose by delta, so the reader is stranded delta-px above the
bottom — the transcript 'scrolls up one row per composer row.' autoResize()
resized the textarea and called updateSendBtn() but never re-pinned the transcript.
Reproduced live: composer 176px -> viewport shrank 745->613 -> transcript stranded
132px above bottom while _scrollPinned stayed true.
#5515 (intermittent 'random scroll up'): the same viewport-shrink from composer
growth via paths that don't route through input->autoResize (paste, draft restore,
programmatic value set, reflow) reads to the user as a random upward jump. Covered
by a ResizeObserver seam (below).
Fix: new _repinMessagesAfterComposerResize() (static/ui.js) re-pins to the bottom
ONLY when the reader is genuinely still pinned (honors _messageUserUnpinned /
_scrollPinned — never yanks a reader who scrolled away; verified live). Called from:
(a) autoResize() after the height write, and
(b) a ResizeObserver on the #msg textarea that re-pins on GROW only, catching
every composer height-change path (not just the typed-input seam).
Verified live on a 40-message seeded session: pinned reader stays at bottomDist=0
after a 4-line composer grow; an unpinned (scrolled-up) reader is NOT moved.
Tests: tests/test_issue5514_composer_grow_scroll_pin.py (3 static wiring + 3 node-vm
behavioral). 524 scroll/composer regression tests across 39 files still green.
NOTE on #5515 : this resolves the composer-growth cause (which the reporter's
WisprFlow-paste symptom points at). If a purely non-composer intermittent jump
persists, the remaining suspect is touch-device overflow-anchor:auto on content-
above height change — that path has no repro yet and is tracked as needinfo on
#5515 .
2026-07-04 05:41:33 +00:00
nesquena-hermes
43f989eaa5
Merge pull request #5509 from nesquena/release/stage-b2
...
Release — session-switch stray-pointerup guard (#5487 ) + IPv4-first extension gallery (#5458 )
2026-07-03 21:02:30 -07:00
nesquena-hermes
98a3b0718c
Merge pull request #5507 from nesquena/release/stage-5460
...
Release — replace cross-profile empty sessions on profile switch (#5460 )
2026-07-03 20:37:57 -07:00
nesquena-hermes
843e7748cc
Merge pull request #5503 from nesquena/release/stage-5496
...
Release — refresh dictation recognition.lang after locale change (#5496 )
2026-07-03 19:48:30 -07:00
nesquena-hermes
5e0d4d1e3d
Merge pull request #5495 from nesquena/release/stage-5480
...
Release — stale WebUI client recovery banner (#5480 )
2026-07-03 18:32:52 -07:00
nesquena-hermes
f38cf44569
Merge pull request #5492 from nesquena/release/stage-5452
...
Release — fit fullscreen Mermaid diagrams to the lightbox (#5452 )
2026-07-03 17:21:26 -07:00