Commit Graph
5395 Commits
Author SHA1 Message Date
nesquena-hermes d42147a73e test(#5013): cover table-element-anchored + cell-to-prose enhanced-table copy fallthrough
Adds the two remaining enhanced-table-copy boundary cases flagged as optional
coverage when #4994 (fixes #4945) shipped: a selection anchored on the <table>
node itself, and a selection that starts in a cell and ends in surrounding prose,
both must fall through to native copy. Test-only; the shipped guard already
handles both correctly (no production change needed).
2026-06-26 19:55:10 +00:00
nesquena-hermes a214dfea20 Release YO (v0.51.685): extract session-list cache to its own module (#5004, #1907)
Release YO (v0.51.685): extract session-list cache to its own module (#5004, #1907)
2026-06-26 11:49:25 -07:00
nesquena-hermesandrodboev b56f1aaca6 Release YO (v0.51.685): extract session-list cache to its own module (#5004, #1907)
Co-authored-by: rodboev <rodboev@users.noreply.github.com>
2026-06-26 18:46:30 +00:00
Rod Boev 6cb55b5df8 Keep session cache invalidation signals live across the routes extraction 2026-06-26 18:36:07 +00:00
Rod Boev 47485b3a82 Preserve route-level cache overrides after helper extraction 2026-06-26 18:36:07 +00:00
Rod Boev 1bffabbfec refactor(routes): extract session-list cache helpers from api/routes.py (#1907) 2026-06-26 18:36:07 +00:00
nesquena-hermes 56515f827a Release YN (v0.51.684): full-table-only enhanced-table copy sanitizer (#4994, fixes #4945)
Release YN (v0.51.684): full-table-only enhanced-table copy sanitizer (#4994, fixes #4945)
2026-06-26 11:14:16 -07:00
nesquena-hermesandrodboev 2f43a4c522 Release YN (v0.51.684): full-table-only enhanced-table copy sanitizer (#4994, fixes #4945)
Co-authored-by: rodboev <rodboev@users.noreply.github.com>
2026-06-26 18:11:18 +00:00
Rod Boev 9343c7ce6c ci(tests): retrigger blocked checks after unrelated cache-test miss (#4945) 2026-06-26 17:51:31 +00:00
Rod Boev 846e4f7495 test(#4945): exercise the full-table clipboard fallback 2026-06-26 17:51:31 +00:00
Rod Boev 285f6a2408 fix(#4945): keep prose and partial table copies native 2026-06-26 17:51:31 +00:00
Rod Boev 8c09c8dfde fix(#4945): keep native copy for cell sub-selections 2026-06-26 17:51:31 +00:00
Rod Boev 0256b98a3e fix(#4945): sanitize mixed table selections during native copy 2026-06-26 17:51:31 +00:00
Rod Boev c74b135b99 fix(#4945): preserve native copy fallback when clipboard data is missing 2026-06-26 17:51:31 +00:00
Rod Boev 63435e0523 fix(#4945): sanitize enhanced markdown table copy 2026-06-26 17:51:31 +00:00
nesquena-hermes cca7421743 Release YM (v0.51.683): pip-style agent-root discovery (#4998, fixes #4700)
Release YM (v0.51.683): pip-style agent-root discovery (#4998, fixes #4700)
2026-06-26 10:39:10 -07:00
nesquena-hermes 9ffb907951 Release YM (v0.51.683): pip-style agent-root discovery (#4998, fixes #4700) 2026-06-26 17:35:41 +00:00
Rod Boev 781223fa18 fix(agent): keep real checkouts ahead of pip-style lookalikes (#4700) 2026-06-26 17:15:03 +00:00
Rod Boev 998c88a7e1 test(#4700): tighten agent discovery regression wording 2026-06-26 17:15:03 +00:00
Rod Boev b4dadc9939 fix(#4700): recognize nested pip-style agent roots 2026-06-26 17:15:03 +00:00
Rod Boev b5d462812c fix(#4700): recognize pip-style agent roots for cron imports 2026-06-26 17:15:02 +00:00
nesquena-hermes 83fa82d4fe Release YL (v0.51.682): indexed compression-continuation lookup (#4991, fixes #4990)
Release YL (v0.51.682): indexed compression-continuation lookup (#4991, fixes #4990)
2026-06-26 09:44:24 -07:00
nesquena-hermes cf1c15bdcc Release YL (v0.51.682): indexed compression-continuation lookup (#4991, fixes #4990) 2026-06-26 16:40:55 +00:00
nesquena-hermesandfranksong2702 f8c4d50950 harden(#4991): session_id max() tiebreaker + membership-completeness doc (Opus gate findings)
Co-authored-by: franksong2702 <franksong2702@users.noreply.github.com>
2026-06-26 16:40:27 +00:00
Frank SongandPaperclip d68760b288 Prove continuation index completeness before trusting it
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-26 16:27:40 +00:00
Frank SongandPaperclip eda4c50cf5 Handle stale compression continuation index fallback
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-26 16:27:40 +00:00
Frank Song 0f87757a47 Use session index for compression continuations 2026-06-26 16:27:40 +00:00
nesquena-hermes 7763e92d09 Release YK (v0.51.681): Anthropic OAuth-token env detection parity (#4995, fixes #4770)
Release YK (v0.51.681): Anthropic OAuth-token env detection parity (#4995, fixes #4770)
2026-06-26 09:16:15 -07:00
nesquena-hermesandrodboev 287b84359e Release YK (v0.51.681): Anthropic OAuth-token env detection parity (#4995, fixes #4770)
Co-authored-by: rodboev <rodboev@users.noreply.github.com>
2026-06-26 16:12:46 +00:00
nesquena-hermes 903dabd29b fix(providers): strip Anthropic env values so whitespace-only OAuth tokens don't false-positive (#4995 gate finding) 2026-06-26 15:44:15 +00:00
Rod Boev f4c0064d16 test(providers): force Anthropic fallback tests past cached imports (#4770) 2026-06-26 15:34:59 +00:00
Rod Boev 06902d8038 fix(providers): detect Anthropic OAuth credentials in WebUI parity paths (#4770) 2026-06-26 15:34:59 +00:00
nesquena-hermes 60f6779e47 Release YJ (v0.51.680): explicit session-index rebuild thread ownership (#4993, #3894)
Release YJ (v0.51.680): explicit session-index rebuild thread ownership (#4993, #3894)
2026-06-26 08:30:10 -07:00
nesquena-hermes 877cdac3c6 Release YJ (v0.51.680): explicit session-index rebuild thread ownership (#4993, #3894) 2026-06-26 15:25:13 +00:00
Rod Boev f36a427872 fix(models): make session-index rebuild thread ownership explicit (#3894) 2026-06-26 15:13:41 +00:00
nesquena-hermes b9cea92fa1 Release YI (v0.51.679): parallelize fresh sidebar boot fetches (#4992, fixes #4759)
Release YI (v0.51.679): parallelize fresh sidebar boot fetches (#4992, fixes #4759)
2026-06-26 08:11:15 -07:00
nesquena-hermes 83fec56124 Release YI (v0.51.679): parallelize fresh sidebar boot fetches (#4992, fixes #4759) 2026-06-26 15:07:49 +00:00
Rod Boev c071da4f5d test(#4759): guard async harness extraction for sidebar refresh 2026-06-26 10:35:43 -04:00
Rod Boev 9cae66a1a0 test(#4759): keep sidebar harnesses aligned with helper extraction 2026-06-26 10:08:28 -04:00
Rod Boev 187931be8e perf(#4759): parallelize fresh sidebar boot fetches 2026-06-26 10:08:28 -04:00
nesquena-hermes 87acf25e98 Release YH (v0.51.678): suppress post-render scroll artifact across all intent modalities (#4970)
Release YH (v0.51.678): suppress post-render scroll artifact across all intent modalities (#4970)
2026-06-26 06:47:31 -07:00
nesquena-hermes a89c303912 Release YH (v0.51.678): suppress post-render scroll artifact across all intent modalities (#4970) 2026-06-26 13:44:39 +00:00
allenliang2022 e2ea0789b3 fix(chat): do not treat Space on transcript controls as scroll intent (#4970 review)
Maintainer/Codex found one narrow edge in the keyboard intent stamp: because the
listener runs capture-phase and accepts any focused descendant of #messages,
Space/Spacebar on an in-transcript control (tool-card toggles, copy buttons,
role buttons, links/tabs) stamped _lastMessageKeyScrollIntentMs before the
control handler could preventDefault/stopPropagation. That made a button
activation look like a scroll intent and could mask a legitimate post-render
artifact.

Fix by excluding Space/Spacebar when the event target or active element is an
interactive transcript control: button, a[href], select, summary, role=button,
role=tab, role=menuitem, or contenteditable. Keep PageUp/PageDown/arrows/Home/End
stamping unchanged, and keep the existing INPUT/TEXTAREA/contenteditable composer
exclusion.

Add a behavioral node-harness test: Space on a focused transcript button leaves
the key-scroll stamp at -Infinity (serialized null), while PageUp on the pane
still stamps 1234. test_4856 + test_4295 green (20 passed), node --check clean.
2026-06-26 13:29:14 +00:00
allenliang2022 6825bc03b4 fix(chat): record keyboard message-pane scroll as intent (#4970 greptile P1)
Keyboard scrolling of the message pane (PageUp/PageDown, Arrow keys, Space,
Home/End) fires a native scroll event with no wheel/touch/scrollbar/non-message
intent. Inside the 1400ms post-render artifact window the suppression branch
then returned before movedUp could unpin, so a keyboard scroll-up was swallowed
and live-follow snapped the reader back to the bottom.

- Add _lastMessageKeyScrollIntentMs + _recentMessageKeyScrollIntent(), stamped
  by a capture-phase keydown listener on the scroll keys, gated to when the
  message pane is the scroll target (focused/contains focus/hovered) and not an
  editable field (composer/input/contenteditable).
- Gate the post-render suppression on !_recentMessageKeyScrollIntent() (typeof
  guard keeps the #4295 node harness inert).
- Clear the stamp in both _resetScrollDirectionTracker() and
  _resetStreamScrollFollow() (same stale-state hygiene as the wheel stamp).

Tests: keyboard-scroll-inside-window-still-unpins behavioral regression (harness
extended with injected _recentMessageKeyScrollIntent), plus a source lock for the
helper/keydown-stamp/suppression-gate/both-resets. test_4856 + test_4295 green
(19 passed), node --check clean.
2026-06-26 13:29:14 +00:00
allenliang2022 67d9580825 fix(chat): reset wheel intent on session/stream resets + gate suppression on scrollbar drag (#4970 review)
Maintainer dual-gate found two stale-state leaks in the new
_lastMessageWheelIntentMs and one adjacent pre-existing gap; all three fixed:

MUST-FIX 1 — _resetScrollDirectionTracker() (session switch) did not clear
_lastMessageWheelIntentMs, so a gentle wheel in chat A left
_recentMessageWheelIntent() true into chat B's first post-render window,
under-suppressing the artifact and falsely unpinning. Now reset to -Infinity.

MUST-FIX 2 — _resetStreamScrollFollow() (fresh stream) had the same leak: a
gentle upward wheel within 1200ms of a new stream could silently disable live
follow. Now reset to -Infinity.

SHOULD-FIX 3 — the suppression branch ignored _scrollbarDragActive, so a manual
scrollbar-drag upward scroll inside the 1400ms window was swallowed. Gate the
branch on (typeof _scrollbarDragActive==='undefined' || !_scrollbarDragActive);
typeof guard keeps the #4295 node harness inert.

Tests: scrollbar-drag-inside-window-still-unpins behavioral regression (harness
extended with injected _scrollbarDragActive), plus source locks for both resets
and the scrollbar-drag gate. test_4856 + test_4295 green (17 passed),
node --check clean.
2026-06-26 13:29:14 +00:00
allenliang2022 2ce0e731ec fix(chat): scope post-render suppression to true no-intent artifacts (#4970 review)
Maintainer dual-gate (Codex) found the suppression could swallow a genuine
low-delta trackpad wheel scroll-up for ~1.4s after a render:
_recordNonMessageScrollIntent() only recorded message-pane wheel intent at
deltaY<-30, so a gentle deltaY:-5 left both intent helpers false and the
post-render branch returned before movedUp set _messageUserUnpinned.

- Track recent low-delta upward message-pane wheel intent separately
  (_lastMessageWheelIntentMs / _recentMessageWheelIntent), recorded for any
  upward wheel (deltaY<0). The decisive deltaY<-30 sticky-unpin is unchanged.
- Require !_recentMessageWheelIntent() before suppressing the artifact, so a
  real gentle scroll-up inside the window still unpins.
- Add behavioral node-harness regressions: gentle wheel inside the window
  unpins; no-intent artifact inside the window stays suppressed; outside the
  window unpins. Plus a source lock that low-delta intent is tracked.
2026-06-26 13:29:14 +00:00
allenliang2022 e102f4e0d9 fix(chat): guard post-render artifact suppression so #4295 harness passes
The new movedUp suppression branch called _recentMessageRenderArtifactWindow()
and the intent helpers in an unguarded position. The #4295 unit harness injects
the scroll-listener body via new Function() without those helpers, so the branch
threw ReferenceError on a movedUp sample and crashed the node subprocess.

Reorder the && chain with typeof-function guards first; production evaluates the
real helpers, the harness short-circuits before any call. Behavior unchanged.
2026-06-26 13:29:14 +00:00
allenliang2022 f9a952f085 fix(chat): suppress post-render scroll artifacts 2026-06-26 13:29:14 +00:00
nesquena-hermes ffef6fa4ec Release YG (v0.51.677): render cron run output as literal pre/code (#4977)
Release YG (v0.51.677): render cron run output as literal pre/code (#4977)
2026-06-26 05:11:28 -07:00
nesquena-hermes 5c0cda025a Release YG (v0.51.677): render cron run output as literal pre/code (#4977) 2026-06-26 12:08:01 +00:00