Commit Graph

32463 Commits

Author SHA1 Message Date
David Metcalfe c06caad8f7 fix(desktop): preserve per-session chat scroll position
Rework per hermes-sweeper review (keep_open, salvageability=medium):

- Capture moves out of the render body into the session-switch layout-effect
  cleanup, so only committed switches persist state (no uncommitted render
  can write localStorage).
- Live state is fed by both scroll events and a ResizeObserver on the
  content element, so distance-from-bottom stays fresh under async
  relayout that changes height without a scroll event (the staleness gap
  #70478's own review threads flagged).
- State is distance-from-bottom (or sticky-bottom), not raw scrollTop:
  the render-budget backfill prepends older turns and main anchors by
  distance-from-bottom, so an absolute offset no longer identifies the
  same reading location after the height change.
- Restore integrates with main's hasGroups/settle/anchor lifecycle: the
  settle loop re-applies the remembered target, defers on a clamped offset
  (content still arriving), hands back locked only for sticky-bottom, and
  leaves mid-read sessions escaped at their offset.
- anchorBeforePrepend no longer records 0 mid-load, which would clobber a
  restored offset once the backfill lands; the settle loop owns the target
  every frame until settled.
- Storage is scoped per profile with the session.ts .profile.<encoded>
  key pattern (no cross-profile bleed, #67709 pattern) and LRU-capped at
  120 sessions per profile.
- Regression tests: state classification, target math, profile isolation,
  LRU eviction, corrupt/invalid payload handling.

Related to #45562 (partial; no automatic closure)

(cherry picked from commit 1d79bef93f63d7b190b471bf652b5109b4288a8e)
2026-09-07 06:14:35 -07:00
Teknium eb027a8802 fix(cli): preserve explicit dashboard update checks
Opt the two passive consumers into the config gate; retain default explicit checks and the existing dashboard caller contract.
2026-09-07 06:13:16 -07:00
Teknium 4dcdb5e896 fix(cli): allow pinned installs to disable passive update checks
Adapt the config-only portion of #104347; omit its environment flag and unrelated docs. Explicit update commands remain independent.

Co-authored-by: Rohith Pariki <rohithpariki@gmail.com>
2026-09-07 06:13:16 -07:00
Teknium 979767977e test: isolate updater fixtures from the live runtime fleet 2026-09-07 06:12:41 -07:00
Teknium 65f033a1a2 fix(execute-code): teach the working helper import contract
Slim adaptation of #83772 to the current schema and failure-hint table.
Generated helpers are module exports on every execution path, not globals.
Correct schema, recovery hints and CLI tip rather than injecting names or
changing the execution boundary. Two registry-driven invariants reproduce
both misleading instructions on main and execute the corrected guidance.

Additional tool fix discovered during campaign #104904.
Original diagnosis and correction: @yuzilongleif-collab (#83772).

Co-authored-by: yuzilongleif-collab <235949691+yuzilongleif-collab@users.noreply.github.com>
2026-09-07 06:12:24 -07:00
Teknium a275adefe2 fix(desktop): retain manual recovery scope through retries 2026-09-07 06:12:00 -07:00
Teknium 5f02693fe0 fix(desktop): reconnect only the active gateway route 2026-09-07 06:12:00 -07:00
Teknium 2bd6fe0dde fix(desktop): keep gateway reconnect available on open transports 2026-09-07 06:12:00 -07:00
Teknium c4cbd7a24f test: use real Slack session entries for reset removal 2026-09-07 06:10:54 -07:00
Teknium d79575cb89 fix(slack): preserve explicit suspension after timer removal 2026-09-07 06:10:54 -07:00
Teknium 68837c5641 test(sessions): preserve profile ownership checks after timer removal 2026-09-07 06:10:54 -07:00
Teknium 8ed86c05af test(sessions): exercise pressure eviction and recovery boundaries 2026-09-07 06:10:54 -07:00
Teknium 9c53128cc8 test(sessions): verify gateway status after timer removal 2026-09-07 06:10:54 -07:00
Teknium 23a4bd8f0c test(sessions): preserve live persistence and eviction controls 2026-09-07 06:10:54 -07:00
Teknium 34e512ae58 fix(sessions): remove remaining timer migration and guidance 2026-09-07 06:10:54 -07:00
Teknium f597c3161a test(gateway): retire automatic expiry contracts 2026-09-07 06:10:54 -07:00
Teknium 1481a0de96 docs(gateway): describe persistent sessions without reset timers 2026-09-07 06:10:54 -07:00
Teknium 1d5d059410 fix(gateway): stop time-triggered conversation rotation 2026-09-07 06:10:54 -07:00
Teknium 7798241eab fix: retain pending fleet restarts until supervisors recover
Discover systemd targets before stopping old processes, restart even when
there are no gateway PIDs, and require successful scope listings plus active
verification. Pending launchd recovery also retains failures for inaccessible
listings and installed jobs without supervision. Keep existing PID cleanup
intact but before recovery so it cannot kill freshly verified workers.

Slim redo informed by #104274, #104283, and #104285.

Co-authored-by: fangliquanflq <fangliquan@qq.com>
Co-authored-by: liuhao1024 <sunsky.lau@gmail.com>
2026-09-07 06:10:49 -07:00
Teknium 0d86694fa7 test(desktop): make MCP renderer relay regressions executable 2026-09-07 06:10:28 -07:00
Teknium f914c9b070 fix(mcp): enforce profile ownership throughout OAuth sessions 2026-09-07 06:10:28 -07:00
Teknium 6c0750e7b7 fix(desktop): cancel MCP auth when scoped Skills tabs leave their owner 2026-09-07 06:10:28 -07:00
Teknium a504202949 chore: credit MCP relay contributor 2026-09-07 06:10:28 -07:00
Teknium 09229312aa test(desktop): trim MCP relay coverage to ownership and cleanup invariants 2026-09-07 06:10:28 -07:00
Filipe Bezerra 5cf8d7451e fix(desktop): preserve explicit local MCP OAuth without callback bridge 2026-09-07 06:10:28 -07:00
Filipe Bezerra e3ba651b6d fix(desktop): relay MCP OAuth through client-local callbacks 2026-09-07 06:10:28 -07:00
Teknium f83ff89780 fix(desktop): reveal complete slash help across the window
Preserve producer descriptions without identity wrappers and size the existing themed tooltip to the viewport. Replace skipped and structural tests with two behavioral invariants. Native Electron before/after hover, click and keyboard verification passed; campaign suite validation remains queued.
2026-09-07 06:10:15 -07:00
Konstantin Khlopkov 00bb169d1b feat(desktop): full command description hover on slash autocomplete rows (#104729) 2026-09-07 06:10:15 -07:00
Teknium 02aa4b536f chore: retain updater contributor release attribution 2026-09-07 06:09:56 -07:00
Teknium a662f9d513 fix(desktop-update): discard failed profile allocation output 2026-09-07 06:09:56 -07:00
Teknium ca812ba3b5 fix(desktop-update): atomically claim the temporary browser profile
Use mktemp -d before launching the optional UI; skip UI if allocation fails. Native Chrome collision and allocation-failure probes preserve preexisting directories.
2026-09-07 06:09:56 -07:00
Teknium b3778dbfd6 test(desktop-update): leave self-test failure flag empty on success 2026-09-07 06:09:56 -07:00
Teknium 1bd7364d8e fix(desktop-update): clean only the captured shim profile
Track the path actually launched, preserving the no-UI case and unrelated profiles. Adapted the ownership approach from #104362.

Co-authored-by: liuhao1024 <sunsky.lau@gmail.com>
2026-09-07 06:09:56 -07:00
Rohith Pariki 97f74b8361 fix(desktop-update): clean up throwaway browser profile directory
Deletes the temporary --user-data-dir used by the update UI shim when the browser process is shut down, preventing ~100MB leaks per update. Fixes issue #104350.
2026-09-07 06:09:56 -07:00
Teknium d538f4e929 test: preserve themed badge contrast on light terminals 2026-09-07 06:08:37 -07:00
Pasquale Minervini 99fb18d00d test(cli): keep badge regression coverage minimal 2026-09-07 06:08:37 -07:00
Pasquale Minervini 85d25f3c29 fix(cli): preserve session-title badge contrast 2026-09-07 06:08:37 -07:00
Pasquale Minervini 2b9e421da7 fix(cli): make session-title badge skin-aware 2026-09-07 06:08:37 -07:00
Teknium cf1222482c test: publish credential-free fallback wire reproduction 2026-09-07 06:07:16 -07:00
Teknium 4270e9ad10 fix: distinguish callable Anthropic bearer sources from OAuth text 2026-09-07 06:07:16 -07:00
Teknium c573e62074 chore: credit callable fallback contributors 2026-09-07 06:07:16 -07:00
Teknium 11ca36edce docs: clarify fallback credential and cooldown behavior 2026-09-07 06:07:16 -07:00
Teknium 8c2f3082d8 fix: read only installed SDK credential providers at handoff
Independent review found auto-created mock attributes could replace static credentials. Read the SDK instance's stored provider without triggering attribute synthesis.

Co-authored-by: CloudWishOS <99405975+snipecoder@users.noreply.github.com>

Co-authored-by: BGwill-OUTLOOK <bgwillwork@outlook.com>
2026-09-07 06:07:16 -07:00
Teknium b4464f6fac fix: retain rotating credentials during fallback handoff
Adapt the callable-source diagnosis from snipecoder (#102244) and fallback slice from BGwill-OUTLOOK (#102721), without unrelated reasoning or override changes.

Co-authored-by: CloudWishOS <99405975+snipecoder@users.noreply.github.com>\nCo-authored-by: BGwill-OUTLOOK <bgwillwork@outlook.com>
2026-09-07 06:07:16 -07:00
Teknium d0081d9597 refactor: colocate fallback handoff with client lifecycle 2026-09-07 06:07:16 -07:00
Teknium 8db9f49cec fix(desktop): show failed project loads separately from empty sessions
Salvage #104301 error presentation and translations. Keep drill-in outcome local to its mounted scope, ignore stale responses, retain existing rows, and show retry even when cached lanes exist.

Co-authored-by: elvindu <dumanxiang@qq.com>
2026-09-07 06:07:00 -07:00
Teknium 1e65d6d861 test: distinguish completion capture from model metadata HTTP 2026-09-07 06:06:46 -07:00
Teknium a39067f67b test: clarify named-route parity wire evidence and held dialect scope 2026-09-07 06:06:46 -07:00
Teknium be633b23c4 test: handle localhost model metadata probe without fixture error 2026-09-07 06:06:46 -07:00
Teknium 5d4f76b50e test: preserve reusable localhost provider wire A/B probe 2026-09-07 06:06:46 -07:00