Peter Steinberger
3e44b5f5dd
refactor(ui): split chat pane ( #113406 )
...
* refactor(ui): split chat pane
* refactor(ui): keep chat pane entrypoint local
2026-07-24 14:25:20 -07:00
Vincent Koc
c0c12da9f2
fix(qa): separate provider plans from runtime calls ( #113399 )
...
* fix(qa): separate provider plans from runtime calls
* fix(claws): keep profile limit outside env ratchet
* refactor(qa): remove obsolete capture comparators
* chore(release): leave notes to release workflow
2026-07-24 20:55:54 +00:00
Vincent Koc
663c4fba10
fix(sqlite): repair canonical indexes before database use ( #113390 )
...
* fix(sqlite): recover canonical indexes before open
* chore(sqlite): keep index contract types internal
* test(sqlite): keep unsafe index corruption fail closed
2026-07-25 04:18:06 +08:00
Peter Steinberger
9c2ae380bc
refactor(ui): split chat message rendering ( #113363 )
...
* refactor(ui): split chat message rendering
* refactor(ui): tighten chat message exports
2026-07-24 09:41:53 -07:00
Peter Steinberger
049a17860c
refactor(ui): split chat composer ( #113338 )
...
* refactor(ui): split chat composer
* refactor(ui): align composer split ownership
* test(ui): clarify custom combobox inventory
2026-07-24 08:11:54 -07:00
Peter Steinberger
6235ea55ac
refactor(codex): split command handlers ( #113335 )
...
* refactor(codex): split command handlers
* refactor(codex): keep helper types private
2026-07-24 07:29:44 -07:00
Peter Steinberger
4cd327e31f
refactor(agents): split subagent registry internals ( #113297 )
...
* refactor(agents): split subagent registry
* fix(agents): defer registry restore until exports initialize
2026-07-24 04:44:37 -07:00
Peter Steinberger
050475b9de
refactor(agents): split tool search internals ( #113296 )
2026-07-24 03:04:14 -07:00
Vincent Koc
e3636852ba
refactor(normalization): reuse trimmed list helpers ( #113295 )
2026-07-24 17:43:22 +08:00
Peter Steinberger
b233faa057
refactor(tasks): split task registry internals ( #113279 )
...
* refactor(tasks): split task registry internals
* test(tasks): align registry ownership boundary
2026-07-24 02:09:04 -07:00
Peter Steinberger
21f0cef5d5
refactor(matrix): split monitor handler pipeline ( #113269 )
...
* refactor(matrix): split monitor handler pipeline
* refactor(matrix): align extracted handler types
* refactor(matrix): make missing context explicit
* style(matrix): order extracted handler imports
2026-07-24 01:02:56 -07:00
Peter Steinberger
eac10a01d5
refactor(cli): split config command implementation ( #113248 )
...
* refactor(cli): split config command implementation
* refactor(cli): keep split helpers private
* style(cli): format private unset result
2026-07-24 00:27:00 -07:00
Peter Steinberger
a7d2f0bd68
refactor(memory-core): split short-term promotion ( #113223 )
2026-07-24 00:02:05 -07:00
Peter Steinberger
07e625dac3
refactor(telegram): split outbound send operations ( #113222 )
...
* refactor(telegram): split outbound send operations
* refactor(telegram): keep test handle in send barrel
2026-07-23 23:38:37 -07:00
Peter Steinberger
bb657eec93
refactor(config): retire redundant settings ( #113174 )
...
* refactor(config): retire redundant settings
* style: apply current formatter
* chore: update plugin sdk baseline
* fix: keep Codex tool caps context-aware
* chore: remove stale imports
* test: align WhatsApp QA debounce config
* fix(config): clean up retired config checks
* fix(ci): align config cleanup checks
2026-07-23 17:45:02 -07:00
joshavant
090bdab5b8
fix(ci): register iOS release script entries
2026-07-23 19:08:40 -05:00
Peter Steinberger
127b78142b
refactor(auto-reply): split config dispatch pipeline ( #113154 )
...
* refactor(auto-reply): split config dispatch pipeline
* refactor(auto-reply): keep phase result types private
2026-07-23 15:31:02 -07:00
Peter Steinberger
06776e707b
refactor(cron): split timer lifecycle ( #113141 )
2026-07-23 14:14:58 -07:00
Peter Steinberger
be815ae5c9
refactor(gateway): split session utilities ( #113118 )
...
* refactor(gateway): split session utilities
* fix(gateway): privatize thinking row projection
2026-07-23 12:26:10 -07:00
Peter Steinberger
13176b446a
refactor(plugins): split gateway startup planning ( #113129 )
2026-07-23 11:50:17 -07:00
Peter Steinberger
1f051da39d
refactor(browser): split Chrome MCP lifecycle ( #113114 )
2026-07-23 10:45:21 -07:00
Peter Steinberger
6f6c2acec3
refactor(infra): split outbound delivery services ( #113099 )
...
* refactor(infra): split outbound delivery services
* fix(infra): preserve outbound compatibility surface
2026-07-23 10:01:28 -07:00
Peter Steinberger
b09dd1fec9
refactor(auto-reply): split reply agent runner ( #113072 )
...
* refactor(auto-reply): split reply agent runner
* fix(auto-reply): keep split contracts acyclic
* fix(auto-reply): isolate result contracts
2026-07-23 09:58:29 -07:00
Peter Steinberger
c440ae3e86
refactor(sessions): collapse legacy JSON store ( #113075 )
...
* refactor(sessions): collapse legacy JSON store
* chore(sessions): ratchet legacy importer boundary
* fix(sessions): align cleanup checks
2026-07-23 09:36:48 -07:00
Peter Steinberger
dedf85a34d
refactor(ui): split chat-send.ts along ack/request/drain/lifecycle seams ( #113052 )
...
* refactor(ui): split chat-send.ts along ack/request/drain/lifecycle seams
chat-send.ts was ~2,330 lines under a grandfathered max-lines
suppression, mixing ack normalization, wire requests/routing, the
stored-outbox drain scheduler, retry/steer actions, and the send
lifecycle. Mechanical extraction into owned modules:
- chat-send-contract.ts absorbs ack normalization (it owns the ack shape)
- chat-send-request.ts: wire requests + session routing
- chat-outbox-drain.ts: drain lanes, retry timers, head reconciliation —
colocated with the outbox ownership boundary from the composer split
- chat-send-actions.ts / chat-send-queue-state.ts / chat-send-submit.ts:
retry/steer actions, queue-state helpers, submission routing
- chat-send.ts keeps the send lifecycle (719 lines); its max-lines
suppression and baseline entry are removed
No compatibility re-exports; cycles broken by hoisting ChatHost into the
contract module and injecting the drain's two lifecycle callbacks.
Closes #112742 .
* fix(ui): extract chat-send ack shapes into a leaf module to break the madge type cycle
2026-07-23 08:51:29 -07:00
Peter Steinberger
585eba56e3
refactor(infra): split exec approval services ( #113050 )
...
* refactor(infra): split exec approval services
* refactor(infra): keep approval token policy local
* fix(infra): preserve approval split bindings
* refactor(infra): clarify approval decision exports
* chore(plugin-sdk): refresh approval source links
* style(infra): mark approval type import
* refactor(infra): remove approval module cycles
* refactor(infra): keep socket normalization internal
* style(infra): remove stale approval type import
* refactor(infra): isolate approval type contracts
2026-07-23 08:51:19 -07:00
Peter Steinberger
9cbbac8fc8
refactor(plugins): prune retired compatibility tombstones ( #113025 )
...
* refactor(plugins): prune retired compat tombstones
* chore: shrink cleanup ratchets
* test(tooling): model flattened agent-core exports
* test(system-agent): isolate TUI catalog discovery
2026-07-23 07:30:35 -07:00
Peter Steinberger
5bd719fb9c
refactor(system-agent): split setup inference phases ( #113028 )
...
* refactor(system-agent): split setup inference phases
* fix(system-agent): preserve activation helper types
* fix(system-agent): keep read-only inference verification
* test(system-agent): track moved lint suppressions
2026-07-23 06:52:23 -07:00
Peter Steinberger
babf04ca0f
refactor(ui): split terminal panel into chrome renderers and a PTY controller ( #113020 )
2026-07-23 06:35:27 -07:00
Peter Steinberger
f3b4f9cfa2
refactor(ui): split browser panel into chrome renderers and a lifecycle controller ( #113017 )
...
* refactor(ui): split browser panel into chrome renderers and a lifecycle controller
* fix(ui): keep browser panel mode internal
* refactor(ui): clarify normalized browser panel request
2026-07-23 08:42:51 -04:00
Peter Steinberger
9ca500db98
refactor(ui): split config form into per-domain field renderers ( #113016 )
...
* refactor(ui): split config form into per-domain field renderers
* fix(ui): retain config search type consumer
2026-07-23 08:30:43 -04:00
Peter Steinberger
28971b4143
refactor(ui): split chat markdown renderer into cohesive modules ( #113015 )
...
* refactor(ui): split chat markdown renderer into cohesive modules
* refactor(ui): keep markdown streaming split type private
2026-07-23 08:07:23 -04:00
Peter Steinberger
6ef77d7c7e
refactor: expire July 24 plugin compat records ( #112944 )
2026-07-23 03:04:34 -04:00
Peter Steinberger
bac2bbd243
refactor(google-meet): split CLI modules ( #112937 )
...
* refactor(google-meet): split CLI modules
* test(google-meet): align CLI split routing
* refactor(google-meet): isolate CLI command contract
2026-07-23 03:00:34 -04:00
Jason (Json)
6504cf85f2
fix(ui): restore project hierarchy and session activity ( #112924 )
...
* fix(ui): restore catalog project type hierarchy
* feat(ui): show catalog session activity
* chore(ui): update startup budget baseline
* test(ui): isolate catalog activity coverage
2026-07-22 23:43:46 -06:00
Peter Steinberger
707343b726
fix(ci): rebase Control UI startup budget baseline onto CI-measured bytes
...
All four QA Smoke profiles fail on main since the #112880 ratchet landed:
startup JS gzip ~323,326-323,342 B vs baseline 322,526 + 512 B tolerance.
The overage comes from UI commits that landed after the baseline was
captured (#112859 #112866 #112853 #111861 ). Local macOS builds measure
~322,535 B; Linux CI is ~800 B larger, so the baseline must track the CI
measurement (max observed across profiles, run 29980596056).
2026-07-23 01:04:10 -04:00
Peter Steinberger
32014bd84f
refactor(google-meet): split plugin entry modules ( #112903 )
2026-07-23 01:03:51 -04:00
Peter Steinberger
b3e2af7eb2
refactor(scripts): remove orphaned secret provider proof ( #112875 )
2026-07-23 00:29:44 -04:00
Peter Steinberger
dfc88210be
refactor(google-meet): split Meet API client ( #112873 )
...
* refactor(google-meet): split Meet API client
* refactor(google-meet): keep internal API types private
2026-07-23 00:29:21 -04:00
Peter Steinberger
c11f175282
feat(ci): ratchet the Control UI startup JS budget against a committed baseline ( #112880 )
...
The startup JS gzip gate was a fixed ceiling that main drifted to within
1-3 KiB of, forcing repeated hand-bumps (315->317 KiB) and failing
feature PRs on drift they did not cause (#112649 burned two CI rounds).
check-control-ui-performance.mjs now also enforces a committed baseline
(config/control-ui-startup-budget-baseline.json) with a 512 B tolerance:
regressions beyond baseline+tolerance fail with an actionable message,
intentional increases become a reviewed one-line diff via
--update-baseline --reason, meaningfully lighter builds print a
lower-the-baseline hint, and a malformed/missing baseline fails closed.
The fixed ceiling stays as the cumulative-creep backstop.
Closes #112743 .
2026-07-23 00:19:36 -04:00
Peter Steinberger
099d6351b3
refactor(sessions): canonical lineage model — creation provenance, fork ancestry, generation chain, typed row contract ( #111861 )
...
* fix(sessions): preserve spawn/fork lineage across implicit daily/idle rollover
* refactor(sessions): canonical creation model with forkSource ancestry and generation chain
* feat(sessions): stamp creation provenance across all creation paths and emit created events
* refactor(gateway): lock lineage patching, split control from navigation, add typed session-row contract
* docs(gateway): document creation provenance stamping and lineage patch tightening
* fix(sessions): keep provenance proof-only on wire fallbacks and strip node-local lineage from cron continuations
* fix(gateway): never journal a created event for session adoption
* fix(gateway): keep post-create work on adoption while gating the created event
* fix(sessions): restore trusted ensure-main provenance and stamp navigation parent at spawn
* fix(sessions): allow parentSessionKey through the direct child spawn patch
* fix(ci): break type cycles, satisfy export scan, regenerate Swift protocol models
* refactor(sessions): replace createdBy with createdActor
* fix(protocol): export session row type
* fix(sessions): preserve proven creation provenance
* fix(sessions): close lineage creation gaps
* test(sessions): align atomic spawn lineage coverage
* test(sessions): widen transcript search reconcile wait
* fix(sessions): stamp reset-created rows
* test(sessions): keep reset provenance coverage focused
* fix(sessions): journal chat-created rows
* test(ci): anchor release skill reads to repo
* test(ci): avoid cached module paths
2026-07-22 22:54:31 -04:00
Peter Steinberger
8ef067a216
refactor(config): move Discord and Teams schemas to plugins ( #112812 )
...
* refactor(config): move Discord and Teams schemas to plugins
* refactor(discord): privatize config schema fragments
* style(discord): format private schema fragments
2026-07-22 21:02:12 -04:00
Peter Steinberger
62c148d7d0
refactor(e2e): remove stale proof scripts ( #112776 )
2026-07-22 15:31:36 -07:00
Peter Steinberger
4501da6123
refactor(speech-core): split TTS runtime ( #112768 )
...
* refactor(speech-core): split TTS runtime
* refactor(speech-core): keep helper types private
2026-07-22 14:48:00 -07:00
Peter Steinberger
2b405755b1
fix(plugins): refresh prepared provider metadata ( #112699 )
...
* fix(plugins): refresh prepared provider metadata
* test(agents): tolerate minimal metadata snapshots
* test(agents): cover snapshot endpoint precedence
2026-07-22 11:07:35 -07:00
Peter Steinberger
3c4a1ec905
refactor(agents): move CLI backend adapters from config DSL to registerCliBackend plugins (review request) ( #112539 )
...
* refactor(agents): move CLI backend adapters into plugins
* test(agents): register CLI backend fixtures through plugins
2026-07-22 00:25:29 -07:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Peter Steinberger
0f066eec81
feat(dashboard): plugin widget kinds — native WorkBoard card and mini-board widgets ( #112434 )
...
* feat(board): add plugin widget kinds
* feat(ui): render native Workboard widgets
* fix(dashboard): compose plugin widgets with current main
* chore: internalize widget-kind contribution types
* fix(ui): retry plugin widget renderer loads
* fix(ui): harden Workboard widget refresh lifecycle
* fix(ci): clear plugin widget landing gates
* fix(boards): migrate plugin widget storage
* fix(db): migrate unreleased board widget constraint
* fix(ui): retry failed Workboard widget loads
* fix(ui): keep stale widget refresh cleanup inert
* fix(ci): align plugin widget landing guards
2026-07-21 17:59:20 -07:00
Peter Steinberger
f0c43dcf72
feat(ui): format international phone numbers for display ( #112400 )
...
* feat(ui): format phone numbers for display
* ci: track normalization package exports in Knip
2026-07-21 17:10:25 -07:00
Vincent Koc
1d28128c20
chore(ci): audit dependency fingerprint exports ( #112190 )
2026-07-21 15:18:09 +08:00