3aa26d9
v0.65.3
Andrey Nering created
3aa26d9
v0.65.3
Andrey Nering created
ecebe91
chore: auto-update files
Charm created
812d78b
chore(deps): update catwalk
Andrey Nering created
99bc5ce
fix(config): check config file for newer token before OAuth refresh
When refreshing an OAuth token (e.g. for Hyper), check the config file on disk first to see if another Crush session already refreshed it. If the disk token differs from the in-memory one, use the disk token and skip the external refresh request. Prevents unnecessary token churn and 401s when multiple Crush sessions are running. 💘 Generated with Crush Assisted-by: Kimi K2.6 via Crush <crush@charm.land>
Andrey Nering created
1ed6f52
refactor(ui): pair markdown cache invalidation with the styles mutation
This is an additional guard to invalidate the cache in the off-chance styles are mutated (rather than updated via applyTheme(), as they should be).
Christian Rocha created
19197e3
fix(ui): cache glamour renderers
The theme prep overhaul in 755f6fa made the main markdown renderer and thinking block markdown renderer heavier, which exasperated a gap in perf. Basically every token chunk would clear would clear the per-item render cache and force a re-render. This update memoizes renderers with markdown and should generally give us a nice increase in perf compared to what we had before the theme rendering.
Christian Rocha created
4010841
fix(db): prevent SQLITE_NOTADB corruption under concurrent sub-agents (#2690)
Crush could fail to start with "file is not a database (26)" after a session ran many sub-agents in parallel. The shared *sql.DB was opened with Go's default unlimited connection pool, so each concurrent sub-agent (session/message/cost writes via coordinator.runSubAgent) could open its own SQLite handle. Under load, WAL frames from different handles interleaved and auto-checkpoints could race; if the process was cancelled or killed mid-checkpoint, the main DB header and WAL desynced, producing SQLITE_NOTADB (26) on the next open. Two changes address this: - Set db.SetMaxOpenConns(1). SQLite serializes writes at the file level anyway, so extra pool connections add no throughput, only race surface. Forcing a single pooled connection makes database/sql queue all callers through one SQLite handle, eliminating cross-handle WAL/checkpoint races. Sub-agents still function; their writes just serialize (which SQLite was going to do regardless). - Add _txlock=immediate to both driver DSNs (modernc.org/sqlite and ncruces/go-sqlite3). BEGIN IMMEDIATE acquires the reserved-writer lock up front so concurrent writers queue cleanly on busy_timeout instead of racing the deferred-to-writer upgrade (the pattern behind prior SQLITE_BUSY reports, e.g. #2129, #2576). Defense in depth alongside the pool limit. For the ncruces driver the DSN must use the file: URI prefix for query params to be parsed; the plain path form silently ignores _txlock.
Greg Slepak created
481202e
chore(deps): bump the all group with 4 updates (#2795)
dependabot[bot] created
81e4d5a
chore(deps): bump github/codeql-action in the all group (#2794)
dependabot[bot] created
b5c8a6d
chore(legal): @ilgax has signed the CLA
Charm created
4be35b8
chore(legal): @somjik-api has signed the CLA
Charm created
56b192e
v0.65.2
Andrey Nering created
63e03ff
v0.65.1
Andrey Nering created
0f3a6cd
ci: remove snapcraft token
See: https://github.com/charmbracelet/meta/commit/86917ec06aa42153f5e48cb2570dfc5efd1e389d
Andrey Nering created
77d86b8
v0.65.0
Andrey Nering created
ce314b8
feat(ui): add hypercredit readout to small top header
Christian Rocha created
d5b5a9e
chore(ui): hypercrush small type treatment
Christian Rocha created
a93277f
chore(legal): @pragneshbagary has signed the CLA
Charm created
0a9d0b0
chore(legal): @mkaaad has signed the CLA
Charm created
bae9299
chore(legal): @SAY-5 has signed the CLA
Charm created
98f9a17
chore: auto-update files
Charm created
a14feb3
feat: launch hyper beta (#2768)
No need to set `HYPERCRUSH=1` anymore.
Andrey Nering created
6ce4fbc
feat(hyper): show remaining hypercredits in the sidebar (#2766)
Andrey Nering created
5d8f924
test: re-record test fixtures
Andrey Nering created
f36f65b
chore: update `view` tool limit to 200KB
The model was enable to edit `internal/ui/model/ui.go` for me, because it has ~ 108KB and the limit was 100KB. (Without being able to read, the model also can't update it). We're keeping the `fetch` tool limit to 100KB.
Andrey Nering created
c7368b7
fix: fix thinking on/off toggle for certain openai-compat providers
Andrey Nering created
59e9233
refactor(hyper): simplify by removing old code
Andrey Nering created
54a57fd
chore(legal): @carlosgrillet has signed the CLA
Charm created
eaf1cd7
chore(ui): change wording: rewrote input to rewrote output (#2742)
Christian Rocha created
35ce257
chore(legal): @lloydzhou has signed the CLA
Charm created
c9afdb1
chore(legal): @vorticalbox has signed the CLA
Charm created
efbf6bf
v0.64.0
Andrey Nering created
bc48334
chore(deps): update fantasy and catwalk
Andrey Nering created
aeb529c
chore(legal): @georgeglarson has signed the CLA
Charm created
86bb805
fix(tools/job_kill): use longer job_kill desc to improve reliability (#2747)
Christian Rocha created
4d16e96
fix(app): replace single events channel with pubsub.Broker for fan-out (#2663)
Fixes the SSE multi-consumer bug where multiple clients sharing the same workspace received only a fraction of events (competing-consumer semantics on a plain channel). Each caller to Events()/SubscribeEvents() now gets its own dedicated channel via Broker.Subscribe(ctx). 💘 Generated with Crush Assisted-by: AWS Claude Sonnet 4.6 via Crush <crush@charm.land>
Tai Groot created
c84ca2d
refactor(hooks): move matcher compilation into the runner
The runner now compiles its own matchers, so a config round-trip can't silently strip them. Hooks with an invalid matcher are dropped with a warning instead of quietly matching everything.
Christian Rocha created
38a846d
fix(hooks): recompile matchers after config reload
A hook with a matcher like "^bash$" was firing on every tool call after any config write, because the compiled regex was dropped when the config reloaded. Recompile on reload so filtering keeps working.
Christian Rocha created
b07664e
chore: auto-update files
Charm created
81fbaca
chore(hyper): update endpoint to new one
Andrey Nering created
cfcffd2
fix(styles): fix some regressions where colors were incorrect
Christian Rocha created
09a1120
fix(ui): notification width and text truncation
Prior to this fix, notifications in the footer would not span the width of the window, and text truncation would often happen prematurely.
Christian Rocha created
9c4a316
chore(ui,styles): color edits and copyedits for the oAuth view
Christian Rocha created
8ebab21
chore(styles): clean up theme definitions
Christian Rocha created
64c47cb
fix(ui): restore 'update available' notification
Christian Rocha created
066fb5a
fix: remove unused build (#2734)
Bruno Krugel created
2be2024
fix(hyper): re-auth at selection time to ensure provider availability
Christian Rocha created
a4488ca
feat(ui): switch to hyper theme when provider hyper is chosen
Christian Rocha created
9d4653e
chore(styles): use hypercrush theme when hyper is selected
Christian Rocha created
e29353f
v0.63.0
Andrey Nering created