hh
ba9d63667e
feat(auth): query-string token for headerless webhook senders
2026-08-30 18:10:00 +02:00
hh
d57f660a30
fix(gateway_tools,conversations): say refused in user turns, the reply reaches the human itself
2026-08-30 02:26:35 +02:00
hh
cc32307921
feat(scheduler): job dedupe flag for webhooks that must not collapse
2026-08-29 22:15:15 +02:00
hh
811035ba4f
fix(ui): chat keeps the bottom pinned while async markdown lands
2026-08-29 19:26:45 +02:00
hh
9efff6e814
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
a989d2909d
feat(injects,conversations): configurable inject header, urgent inject marks the turn it cut
2026-08-29 17:07:43 +02:00
hh
8d252f9867
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
2895e677c0
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
23cfb16228
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
ab9ce50b82
refactor(envelope): drop the reply counter and the injects line, keep time and vault changes
2026-08-29 02:38:39 +02:00
hh
662bdcdfda
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
0479d7cdda
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
0cc2c5291f
fix(markdown): a rewritten assistant reply reseeds the session instead of resuming it
2026-08-29 01:37:52 +02:00
hh
5cd18fa2d7
fix(ui): sidebar footer in one row, no user name
2026-08-29 01:19:58 +02:00
hh
e45e9960ed
fix(ui): thread header counts only queued items; label the live dot
2026-08-29 01:08:44 +02:00
hh
16b6bbddda
feat: one gateway port with path-mounted frontends, markdown chat, collapsible sidebars
2026-08-29 00:49:06 +02:00
hh
540327efa1
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
645df6f2b4
feat(ui): endpoint catalog with copyable urls on the now page
2026-08-28 22:30:11 +02:00
hh
b577034c83
chore(ui): beaver favicon from beaver-land and impeccable design sidecar
2026-08-28 22:20:36 +02:00
hh
00618ab7ad
feat(ui,api,admin): sveltekit admin spa, usage by day/agent/conversation/model, rate limits, memory tree, turn snapshot
2026-08-28 22:14:15 +02:00
hh
aaaf459e6d
fix(backends): remember the session id from the first frame so a cut turn stays resumable
2026-08-28 19:38:47 +02:00
hh
4ad014726b
fix(core): a turn cut by shutdown keeps running_turn for recover
2026-08-28 19:33:26 +02:00
hh
8c9c6eee69
fix(telegram): brief-seeded branches reply and stream in their topic
2026-08-28 19:21:03 +02:00
hh
21766fe2d7
feat(core): seeds without text wait for the first turn
2026-08-28 19:03:08 +02:00
hh
1f8dae57ac
fix(telegram,core): no draft for seed turns
2026-08-28 18:59:00 +02:00
hh
66325c2879
fix(telegram): last draft push is the final text so the client folds it into the message
2026-08-28 18:51:16 +02:00
hh
5a44a16ba3
fix(telegram,core): bare seeds stay silent in telegram
2026-08-28 18:42:35 +02:00
hh
c711dcab13
fix(telegram): final message waits for the draft push in flight
2026-08-28 18:32:45 +02:00
hh
3995741cd5
fix(telegram,core): first message seeds the branch, registered commands, no ellipses, html drafts
2026-08-28 18:25:46 +02:00
hh
b0f280b3ca
feat(telegram,core): master topic instead of general in private chats
2026-08-28 18:12:58 +02:00
hh
45a5eb4a94
feat(telegram,core,backends,storage): telegram frontend with inbox, outbox, drafts and question buttons
2026-08-28 17:57:09 +02:00
hh
7ae87aeeb8
fix(backends,markdown): stream turn events live, no blank lines for tool blocks
2026-08-28 17:27:35 +02:00
hh
fd8cbacd7b
feat(core): publish tool.result on the bus for the activity panel
2026-08-28 17:01:00 +02:00
hh
bd2d2368e1
refactor(agents,core,frontends): typed kinds, prompts per kind, frontend agents as parameters
2026-08-28 16:36:44 +02:00
hh
1d8d65b69a
feat(core,frontends,agents): agent kinds, frontend routing, anthropic on conversations, vault mirror
2026-08-28 03:50:33 +02:00
hh
33ccc78fec
feat(core,backends,frontends,storage): conversations, inject queue, session pool, gateway mcp tools, api frontend
2026-08-28 03:08:30 +02:00
hh
50b7057fa4
fix(backends,storage,core): setuid in exec wrapper, missing-column migration, runner config dir for mirror, tagged prompt sources
2026-08-28 02:10:19 +02:00
hh
e1f242a87a
feat(backends,storage,core,markdown,infra): claude agent sdk backend, session store, transcript seeding, runner isolation
2026-08-28 01:56:39 +02:00
hh and Claude Fable 5
ee2dc918ee
docs(env): .env.example for local development
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-27 23:45:53 +02:00
hh and Claude Fable 5
33cc769ca2
chore: make ruff format and ty clean
...
Format two mcp modules with the current ruff, and narrow the text-block
check in conversation_store through a typed helper so ty stops flagging
dict.get on an unnarrowed block.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-27 23:22:23 +02:00
hh and Claude Fable 5
e4282b38cd
feat(ui,infra): SvelteKit ui scaffold, Makefile, pre-commit, claude hooks
...
ui/: SvelteKit 2 + Svelte 5 + Tailwind 4 + shadcn-svelte (luma, lucide)
on bun with ultracite; adapter-static with SPA fallback; theme tokens
taken from msos. Dockerfile gains a bun stage that builds ui/build.
Makefile and pre-commit cover ruff, ty, ultracite and svelte-check;
.claude settings run the matching fixer after edits. docs/PRODUCT.md
captures product truth for the UI work.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-27 23:22:18 +02:00
hh
0e7dc263ad
feat(markdown): prefer tool description in callout title
2026-08-07 18:24:06 +02:00
hh
7d1e0b365d
chore(lock): scope the unconnected-MCP warning to configured servers
2026-07-28 03:27:28 +02:00
hh
6c1780583c
feat(claude): warm up sessions for agents that expose MCPs
...
`ClaudeCodeOptions.warmup_turn` defaults to `None`, which decides per
agent: on when the agent exposes any MCP, off otherwise. An agent whose
tools are the point shouldn't answer its first message without them, and
an agent with no MCPs shouldn't pay for a warm-up it gains nothing from.
The underlying reason lives in claude-code-api: the CLI connects MCP
servers when a turn starts and doesn't await them, so turn one runs with
built-in tools only.
2026-07-28 03:22:39 +02:00
hh
7f633a11a2
chore(lock): pick up claude-code-api stream-transport shutdown fixes
2026-07-28 03:12:11 +02:00
hh
823337409a
feat(claude): expose the headless stream-json transport, with real streaming
...
`ClaudeCodeOptions.transport="stream_json"` runs the agent on `claude -p`
with stream-json on both pipes instead of driving the TUI through a
pseudo-tty. Opt-in: the default stays `pty`, so nothing moves until a
config asks for it.
The reason to ask for it is that the PTY path pays a multi-second
readiness wait before every spawn and can silently lose a prompt to a
swallowed paste; the headless path writes to a pipe and gets a native
`result` record back. `--remote-control` and friends are dropped by the
transport when set, since they'd take claude out of print mode.
`include_partial_messages` then gives clients genuine token-level SSE.
Blocks are emitted from the `StreamEvent`s rather than forwarded raw:
the payload is already Anthropic-shaped but arrives as a dict, so it
would need validating against the SDK union anyway, and rebuilding it
through our own builders drops an unrecognized block or delta type the
same way `_emit_block` already does instead of raising mid-stream on a
claude release that adds one. When streaming, the whole-block records
are kept for TurnCapture but not re-emitted — that would duplicate every
block on the wire.
Verified end-to-end against a live claude: both paths accumulate to the
identical Message (same blocks, same stop_reason, same usage), the
envelope stays 1:1, and block indices stay collision-free across a turn
that spans several API requests.
2026-07-28 03:00:10 +02:00
hh
99b5c69c1e
fix(conversation_store): splice assistant text in place, keeping thinking blocks
2026-07-26 17:57:03 +02:00
hh
1ad8f2a475
fix(agents): raise claude tui startup wait to 60s
2026-07-26 00:49:47 +02:00
hh
90fe92d014
fix(conversation_store,admin,cli): keep session when file lags db, sort pty by recency
2026-07-26 00:25:07 +02:00
hh
d2981116d4
feat: live pty monitoring for claude code
2026-06-04 22:36:26 +02:00
hh
c7b3eddbf4
feat: add pty monitoring for claude code
2026-05-23 00:37:49 +02:00
hh
9de5647cfa
feat: bump claude-code-api
2026-05-23 00:31:42 +02:00
hh
b83018b97e
feat: bump claude-code-api
2026-05-23 00:12:33 +02:00
hh
e53195a948
fix: asynchronous generator is already running
2026-05-23 00:04:25 +02:00
hh
5fb5b6a3fb
feat: add heartbeats to prevent long-thinking from closing
2026-05-22 23:59:00 +02:00
hh
33eece331a
feat: add more logging
2026-05-22 22:48:12 +02:00
hh
b8ac545a51
feat: bump claude-code-api
2026-05-22 01:04:29 +02:00
hh
0c3a09456d
feat: bump startup delay (new method)
2026-05-22 00:46:39 +02:00
hh
e28b74ee3f
feat: bump startup delay (new method)
2026-05-22 00:36:44 +02:00
hh
a8c86a4292
feat: bump startup delay (new method)
2026-05-22 00:36:27 +02:00
hh
48d292904b
feat: add pastable link for markdown endpoint
2026-05-21 23:38:25 +02:00
hh
64ad92b4c1
feat: allow custom base url
2026-05-21 23:27:57 +02:00
hh
e8a4e3aa82
feat: markdown streaming via extension
2026-05-21 21:15:46 +02:00
hh
11f061070f
feat: add streaming to markdown, fix raycast mcps exposing
2026-05-21 13:52:48 +02:00
hh
7fc0c9c0b1
fix: claude shouldn't reset creds after rebuild now
2026-05-21 12:39:53 +02:00
hh
a83bec709d
feat: add stateful conversation storage
2026-05-21 12:27:11 +02:00
hh
4a405faf25
feat: more functionality for obsidian plugin
2026-05-21 10:27:21 +02:00
hh
1482674101
chore: update raycast-api in lock
2026-05-21 00:40:42 +02:00
hh
94bae38012
fix: load env before config
2026-05-21 00:32:00 +02:00
hh
3dc780c74c
refactor: add markdown frontend
2026-05-20 21:30:10 +02:00
hh
a7827b2fa6
refactor: remove dead session code
2026-05-20 14:23:01 +02:00
hh
0128191ac3
feat: add admin panel
2026-05-20 13:00:08 +02:00
hh
7970d4be9b
feat: implement mcp frontend
2026-05-20 09:59:47 +02:00
hh
99a30f256d
feat: implement claude code backend
2026-05-19 23:11:07 +02:00
hh
757065f21c
feat: implement raycast backend
2026-05-19 21:06:01 +02:00
hh
221e660c5c
feat: implement skeleton phase
2026-05-19 14:19:15 +02:00
hh
75a23d231e
docs: add slop badge
2026-05-19 11:27:28 +02:00
hh
fda6cbe165
feat: init
2026-05-19 11:26:47 +02:00