hh
421248b0ad
fix(ui): a stream that went quiet reconnects, the rail says so, the panel opens on the master
...
A phone that slept brings back an SSE socket that never errored and never
delivers: the panel read as live for hours while showing nothing new. Every
chunk now marks the connection alive and a watchdog drops the socket after
40s of silence - twice the server's keepalive - so the loop reconnects.
Each attempt gets its own controller, which is what lets the watchdog (and
a manual refresh) end one connection without ending the loop.
The connection is admitted in one dot beside the rail's search box, tapped
to reconnect at once rather than waiting out the backoff - the pill that
used to say this was dropped in the redesign and the panel had no way to
own up to being stale.
With nothing picked, the shell lands on the freshest open master instead of
a prompt to pick something: what a phone wants when the panel opens. An
explicit pick, and following the active note, still win.
2026-09-05 00:20:03 +02:00
hh
8019c76e53
fix(backends,conversations,telegram,ui): a background subagent reports back as its own turn
2026-09-04 20:23:33 +02:00
hh
2afd3bc3c1
chore(ui): drop an unused suppression
2026-09-02 05:17:51 +02:00
hh
5b851c11d4
perf(panel): cached info and history paint first, lazy markdown up the thread, background prefetch
2026-09-02 05:16:13 +02:00
hh
2d903c7c5f
fix(panel): thread scroller opts out of scroll anchoring
2026-09-02 05:08:51 +02:00
hh
ef7474f636
fix(panel): composer no longer doubles the status-bar inset
2026-09-02 05:00:35 +02:00
hh
fe1c894b93
fix(panel): column-reverse thread keeps the bottom, no island in the plugin
2026-09-02 04:58:48 +02:00
hh
2815956f5b
feat(ui): times on injects and every spoken message
2026-09-02 04:52:26 +02:00
hh
c46ba026ba
feat(api): limits read unifiedWindows, unknown seven-day windows labelled by model
2026-09-02 04:46:43 +02:00
hh
81d6560bf7
style(ui): flat menu sheets, digests folded with job runs, shorter spend caption
2026-09-02 04:43:04 +02:00
hh
f35980ba85
feat(ui): graph on d3-force with steady labels, quieter quota text, flat rail
2026-09-02 04:35:01 +02:00
hh
c6401f1114
feat(ui): interactive graph, strip context menus, days by activity, message times, limit status words
2026-09-02 04:24:15 +02:00
hh
025f2dbc3f
feat(ui,api): strip board redesign - island, rail by day, context view, server search, vault graph
2026-09-02 03:48:26 +02:00
hh
85b14e2c2f
feat(telegram): stop generation from the client, questions survive a restart, images reach the model inline, albums become one turn
2026-09-02 02:11:44 +02:00
hh
7a8ee0f200
feat(markdown): thinking blocks between hidden tool calls collapse to the first one
2026-09-02 01:44:02 +02:00
hh
2d34d488d7
docs(examples): compose for the minimal setup - postgres, real env, no phase notes
2026-09-02 01:28:51 +02:00
hh
0e07e8409d
refactor: no comments left - one-line module docstrings, contracts on public fields only; jobs/job.py; example config and README
2026-09-02 00:33:04 +02:00
hh
3915ab48f9
refactor(telegram): every user-facing string lives in TelegramTexts with English defaults
2026-09-02 00:16:38 +02:00
hh
9aaddbed75
refactor: split flat core into capability packages, layer the conversations service, English defaults for every model-facing text
2026-09-02 00:13:20 +02:00
hh
253bde1b11
fix(telegram,conversations): attachments by day with sweep in both modes, merge renames the topic, gone topics unbind, failures visible
2026-09-01 23:13:22 +02:00
hh
61b5bda31a
feat(telegram): block-level markdown to html, wikilinks, tables, quotes, fence-safe chunking
2026-09-01 23:13:21 +02:00
hh
e2d611dd81
feat(agents,claude_sdk): skill sets per conversation kind
2026-09-01 23:13:21 +02:00
hh
bac40ff268
feat(scheduler,conversations,api): cron and schedule in the gateway tz, job runs persisted
2026-09-01 23:13:17 +02:00
hh
39f2bc05d9
chore(deps): claude-agent-sdk 0.2.150 bundles cli 2.1.257
2026-09-01 22:00:41 +02:00
hh
76d6f81789
fix(mcp,redact,gateway_tools): mask credentials in tool results, names kept and values gone
2026-09-01 14:12:49 +00:00
hh
8f9ca2800c
fix(redact,cli): mask credentials in every log line, silence httpx request urls
2026-09-01 14:12:49 +00:00
hh
f9bf51badf
feat(envelope,conversations): recall hook under the user text, user_sink for the setup's reply log
2026-09-01 16:08:53 +02:00
hh
90063a7cfe
fix(storage,api): usage cost as per-turn delta of the sdk running total, backfill
2026-09-01 15:37:53 +02:00
hh
a8491330fa
feat(injects,conversations,scheduler,gateway_tools,api): wake priority, master and parent aliases, scheduled injects start a turn
2026-08-30 20:34:12 +02:00
hh
064379ca90
fix(cli): mask query tokens in uvicorn access log
2026-08-30 18:30:26 +02:00
hh
e90963a6c3
feat(auth): bootstrap token entries carry an optional scope
2026-08-30 18:25:48 +02:00
hh
064d855382
feat(auth): query-string token for headerless webhook senders
2026-08-30 18:10:00 +02:00
hh
5d67cfcc9e
fix(gateway_tools,conversations): say refused in user turns, the reply reaches the human itself
2026-08-30 02:26:35 +02:00
hh
b4853b9fd0
feat(scheduler): job dedupe flag for webhooks that must not collapse
2026-08-29 22:15:15 +02:00
hh
2d12391176
fix(ui): chat keeps the bottom pinned while async markdown lands
2026-08-29 19:26:45 +02:00
hh
60dc7db925
feat(ui,api,telegram): shared conversation panel for obsidian and /admin/panel, bind materializes a window, inbox survives link previews
2026-08-29 18:30:33 +02:00
hh
be114e6eaf
feat(injects,conversations): configurable inject header, urgent inject marks the turn it cut
2026-08-29 17:07:43 +02:00
hh
4a59c59bda
fix(claude_sdk,conversations,rotation): context size from the last api call, new-day text by rotation reason
2026-08-29 16:54:29 +02:00
hh
72639c4b90
feat(policy,claude_sdk,cli,config_loader): pretooluse policy rules per agent, tool call audit, sibling imports for config
2026-08-29 15:27:26 +02:00
hh
1786406b31
feat(distill,conversations,scheduler,api,ui): close deep chats with a distiller fork, digest and index, idle and weekly state jobs
2026-08-29 03:15:39 +02:00
hh
12728b2eb4
refactor(envelope): drop the reply counter and the injects line, keep time and vault changes
2026-08-29 02:38:39 +02:00
hh
bc4233977d
feat(scheduler,rotation,envelope,api,ui): pgqueuer jobs and deferred injects, master rotation with handout, vault envelope, jobs page
2026-08-29 02:29:05 +02:00
hh
fd69eae05d
feat(conversations): pre-SDK rows read from canonical messages, implied titles, markdown adopts them by first prompt
2026-08-29 01:44:05 +02:00
hh
d3a3e7b1f1
fix(markdown): a rewritten assistant reply reseeds the session instead of resuming it
2026-08-29 01:37:52 +02:00
hh
772db11c7f
fix(ui): sidebar footer in one row, no user name
2026-08-29 01:19:58 +02:00
hh
4fb020c788
fix(ui): thread header counts only queued items; label the live dot
2026-08-29 01:08:44 +02:00
hh
932a7a80af
feat: one gateway port with path-mounted frontends, markdown chat, collapsible sidebars
2026-08-29 00:49:06 +02:00
hh
3ca5843868
feat(ui,api): chat view with live tail and autoscroll, conversation rail with last message previews
2026-08-29 00:18:08 +02:00
hh
8ea4cea3ef
feat(ui): endpoint catalog with copyable urls on the now page
2026-08-28 22:30:11 +02:00
hh
b6c5a80326
chore(ui): beaver favicon from beaver-land and impeccable design sidecar
2026-08-28 22:20:36 +02:00