Commit log

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)

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

1495028 chore(deps): update fantasy and catwalk

Andrey Nering created

1948ca7 fix(ui/hooks): restore hook styling

Christian Rocha created

5dacf9e docs(hooks): document new embedded shell model

Click to expand commit body
Specifically, we describe the embedded-shell contract, Windows behavior,
permissive shebang fallback, guaranteed CRUSH/AGENT env markers, and
timeout hard-return semantics.

Christian Rocha created

3b3f992 feat(hooks): propagate CRUSH/AGENT env vars to builtin shell

Click to expand commit body
Share CRUSH=1/AGENT=crush/AI_AGENT=crush between the bash tool's Shell
and the hook runner so the two surfaces can't drift.

Christian Rocha created

22d6f44 feat(hooks): run via shell.Run instead of sh -c

Christian Rocha created

af002dc fix(shell): ctx-aware jq builtin

Click to expand commit body
This in necessary so hook timeouts can now interrupt long-running
filters and large stdin reads for the builtin jq tool.

Christian Rocha created

2e8e536 feat(shell): shebang/binary/in-process dispatch handler

Christian Rocha created

f6ef43e refactor(shell): extract stateless run entrypoint

Click to expand commit body
This is necessary for sharing the builtin shell with hooks.

Christian Rocha created

ead1c28 chore(deps): bump goreleaser/goreleaser-action in the all group (#2728)

dependabot[bot] created

b0b9842 chore(deps): bump the all group with 6 updates (#2729)

dependabot[bot] created

e5611c3 docs(hooks): improve hook documentation

Christian Rocha created

b9fdf72 chore(hooks,skills): update crush-hooks skill per recent changes

Christian Rocha created

3cda50f fix(ui): fix dialog box shift when session rename is active

Christian Rocha created

755f6fa chore(ui): theme prep

Christian Rocha created

f686999 chore: auto-update files

Charm created

dc003bf feat: PreToolUse hook (#2598)

Christian Rocha created

a7546ad chore(tests): regression test for (lack of) disabled skills in the ui

Christian Rocha created

7a6149d fix(ui): don't show disabled skills

Bruno Krugel created

fa13c7f v0.62.1

Andrey Nering created

8ab740f test: re-record vcr cassettes

Andrey Nering created

37daf0f chore(deps): update fantasy and catwalk

Andrey Nering created

e5d95aa fix(hyper): fix re-authorization flow not triggering on certain conditions (#2703)

Click to expand commit body
We attempt to refresh tokens in two scenarios:

* Pro-actively, when we expiration date passed before a request
* Reactively, when we try a request but a 401 was returned

The error / event handling that shows a dialog asking the user to
re-authenticate is dependent on code that runs for the second scenario.
This means that the dialog might not show on the first scenario, if
refreshing the token fails.

If refreshing a token fails, continue with the previous token. Let it
fail and the 401 will trigger a re-authorization dialog.

I caught this because I was switching between local vs. prod Hyper a lot.

Andrey Nering created

e5b5a40 Merge pull request #2692 from charmbracelet/hypercrush

Click to expand commit body
chore(styles): overhaul style definitions

Christian Rocha created

81daa26 fix(styles): use semantic names in styles + drop deadcode

Christian Rocha created

4f3a308 chore(ui): formal hypercrush type treatment

Christian Rocha created

511916a fix(ui): logo and grad arguments from earlier refactor

Christian Rocha created

7cbb1db chore(ui): use Lip Gloss for color blends

Christian Rocha created

15f20e6 chore(ui): add new letterforms: h, y, p, e, with alts

Christian Rocha created

549f717 fix(agent): implement OnRetry logging with structured retry fields (#2700)

iceymoss created