Releases: SmooAI/smooth
Release list
v0.26.5
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Patch Changes
-
8ea21d1: Fix
th codedying with "Error: unknown error" on any turn longer than 15 seconds.The keep-alive heartbeat serialized
ClientEvent::Pingdirectly, putting the
bespoke{"type":"Ping"}on a wire that speaks the canonical operator protocol.
The server rejected it every 15s withVALIDATION_ERROR / missing 'action' field,
and that error tore down whatever turn was in flight — while the daemon went on
to finish the work and persist an answer the user never saw.Three fixes:
- The heartbeat now builds its frame with
to_canonical_frame, like every other
outbound message. The loop moved into a testableheartbeat_loopfunction, so
the regression test drives the real path instead of the helper that was always
correct. - New shared
smooth_cast::wire::error_message, used byth code,
th api smooth-operator, and the bench driver. All three read theerrorframe
withas_str()on what is actually an object, so every real server complaint
surfaced as the literal string "unknown error"; the code is now included in the
message. The bench's unit test asserted a frame shape the server never emits, so
it passed while the driver was wrong — corrected to the real shape. - An error frame only ends the turn it names. Unattributed protocol errors render
as an inline warning and let the turn keep streaming.
- The heartbeat now builds its frame with
-
580017e: The message composer now grows with what you type, in both
th codeand Big Smooth.th code— the input was one clipped row: anything past the box width was
invisible,\nwas rewritten to a space on typing and paste, and the cursor was
placed by adding a raw byte offset to the box origin, so it drifted on any
multi-byte character. It now wraps, grows to six rows, and scrolls beyond that.- New
composermodule holds the wrap arithmetic — rows, cursor row/column, and
scroll clamping — so the renderer and the height calculation can't disagree
about where a row ends. Pure and unit-tested, including a property-style check
that every wrapped row is a validcharboundary at every width. - Multi-line paste keeps its structure. Line endings are normalized over the
whole pasted string because terminals disagree about the separator (tmux sends
bare\r, Unix\n, Windows\r\n) and CRLF can't be collapsed onecharat
a time. - Mouse capture is enabled only while the draft is taller than the box, and
released the moment it fits again. The TUI keeps finalized chat in the
terminal's own scrollback, so holding capture for the whole session would cost
native wheel-scroll and drag-select permanently; scoping it to "there's a long
draft open" keeps the default interaction intact. It is also released
unconditionally on exit. - Once you scroll by hand the view stays put until you type again, instead of
snapping back to the cursor every frame. - The box borrows rows from the streaming preview, which is clamped so at least
one preview row survives — a long draft can't hide the answer you're replying to.
Big Smooth — the composer had
max-h-40butrows={1}pinned it to one
line, so the cap was unreachable. It now uses CSSfield-sizing-content(with a
JS fallback for browsers without it) to grow to that cap and scroll past it. - New
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.26.4
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Patch Changes
- d0f6326: Fix the flaky
provision_generates_and_persists_when_unsettest that reddened every Release CI run since 2026-07-22 (th-d9dbd7). It andprovision_prefers_env_tokenboth mutate the process-globalSMOOTH_LOCAL_TOKEN, and cargo runs tests in parallel threads of one process — so the env-token test'sset_varcould leak into the generate-and-persist test, which then took the env branch and never wrote~/.smooth/operator-token, failing its.exists()assertion. The release job's scheduling exposed the race that PR Checks got lucky on. Both tests now serialize on aTOKEN_ENV_LOCK, mirroring the existingGATEWAY_ENV_LOCKpattern.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.26.3
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Patch Changes
- 32174fa: Fix the legacy-auth migration stranding a valid session.
migrate_legacy()skipped the migration whenever the XDG auth directory merely existed, but an earlier run with nothing to migrate creates that directory empty and returns — so any session written to the legacy~/.smooth/authafterwards (what the daemon's browser login does) could never migrate. Boththand the daemon then resolved the empty default profile and reported "Not logged in" while a perfectly good session sat in the legacy tree. The guard is now content-based: migrate unless the XDG tree actually holds a session, in the default profile or any named one.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.26.2
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Patch Changes
-
e76400c:
th codenow remembers the conversation across turns. It built a fresh client per turn and each connect created its own session and its own conversation, so Big Smooth started from zero every message — tell it your favorite color and the next turn it answered "you've never told me." The TUI now records the conversation the server binds it to and replays it asconversationIdon later connects, so every turn appends to one conversation (the same resume path the web SPA uses). This also stops the empty-session churn of one throwaway session per message. -
b6bb168: Big Smooth and
thnow always read the same Smoo AI credentials. Signing in through the daemon's browser flow left thethtool it shells out to logged out, because the daemon's credential path depended on who launched it: onlythresolved the active auth profile (exportingSMOOAI_USER_AUTH_FILE/SMOOAI_AUTH_FILE), so a daemon started byth upinherited the right files and was accidentally correct, while one started by launchd ornohup smooth-daemon— how smoo-hub runs it — silently fell back to the legacy~/.smooth/auth/*tree. Profile resolution moved tosmooth_policy::auth_paths(shared by both binaries) andsmooth-daemonnow resolves it at startup, so it no longer matters how the daemon was started.Also removes the deprecated
th api login/logout/whoami, superseded byth auth login [--m2m]/th auth logout/th auth whoami. Two spellings for one identity was actively confusing, and onlyth authunderstands auth profiles. Theth api <resource>verbs are unaffected. Docs corrected:th auth loginis Smoo AI identity, not LLM-provider auth.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.26.1
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Patch Changes
- 4c4eb10: Fix the intermittently-red Release workflow: the file-tree walker's sort comparator called
Path::is_dir()on every comparison, which is a live filesystem stat. When the walked tree changed mid-sort — parallel tests creating and dropping temp dirs under/tmp— a path could answer "directory" for one comparison and "file" for the next, making the ordering non-transitive and tripping Rust'sslice::sort"comparison function does not correctly implement a total order" panic. The comparator now memoizes each path's verdict for the duration of the walk, so it stays a total order no matter what happens on disk underneath it.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.26.0
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Minor Changes
-
4bf038b:
th roles— first-class CLI for editing an org's RBAC roles (SMOODEV-2368 /
ADR-105), so you can manage the custom-role catalog without clicking through the
web dashboard or hand-rolling curl against a user JWT.Subcommands (all take
--org/SMOOAI_ORG_IDand--json):listandshow
(full permission-key list) read the catalog;create <name>makes a custom role
(with--template <kind>it seeds from an archetype via
/workforce/role-templates/create-role);deleteremoves a custom role;
grant/revokeadd/remove permission keys with a read-modify-write that
preserves every existing key exactly (PATCH the whole array),set-permissions
replaces the set wholesale;member-roles <email>shows a member's roles and
assign/unassignedit them (read-modify-write over the replace-all PUT).System roles (
organizationId == null) are immutable, so
grant/revoke/set-permissions/delete refuse them locally with a clear error
before any API call. Keys that don't match[a-z0-9_.*-]warn but still send
(the server is the source of truth for validity). Rides the user JWT
(th auth login) because the roles routes 401 under an M2M token.
Patch Changes
-
4bfce2b: feat(daemon): Big Smooth auto-recalls durable memories into every turn
Bumps the engine pin (
smooth-operator-server/-svc) toce2f9e3
(th-daemon-memory-seam= the core-1.7.0 daemon lineage + the cherry-picked
StorageAdapter::memory_for_accessseam from smooth-operator #330 / th-374b27),
and overridesmemory_for_accesson the daemon'sSqliteStorageAdapterto
return its durable SQLite memory store. The engine's runner now feeds that store
toAgentConfig::with_memory, so remembered preferences (theremembertool's
writes, th-6d1692) are auto-injected into every turn viamemory.recall(...)—
no explicitrecallcall needed, and they survive daemon restarts. Closes the
last gap so "always add shows to smoo-hub" actually influences later turns
unprompted (th-7a9832). -
fbf6a71:
th codeis a first-class Big Smooth client again — canonical WS protocol
(pearl th-248f33).th codespoke the bespokesmooth-bigsmoothprotocol (TaskStartout,
Connected/TokenDeltain). That crate was deleted with the microVM stack
(th-f4a801) and Big Smooth now hosts smooth-operator's canonical,
schema-driven WS — so nothing had spokenth code's dialect for months and
every turn died on "Timed out waiting for Connected event".It now speaks the same protocol as the web SPA (
smooth-web/web/src/operator.ts):
create_conversation_sessionon connect,send_messageper turn, streaming
back overstream_token/stream_chunk. Same daemon, same conversations and
sessions, same tools — just a terminal instead of a browser.Translation happens at the edge of
client.rs, mapping canonical frames onto
the TUI's existing internal events, soapp.rs/render.rsare untouched.
Details that came from reading the shipped client rather than guessing: the
session reply IS the connection signal; tool calls and results both nest
underrawResponse(readingstate.toolResultleaves tools stuck "running"
forever);stream_reasoningis dropped so chain-of-thought never renders as
the answer. Cancel/steer have no canonical verb, so they send nothing rather
than a frame the server would reject.Verified end-to-end against the live daemon: a real turn streams a reply.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.25.1
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Patch Changes
-
4d7ce2f: Add a
create_artifactagent tool (smooth-tools): Big Smooth can now write a self-contained HTML report/artifact into<workspace>/.smooth-artifacts/and get back the absolute path plus a clickablefile://URL — Claude Code Artifacts style. Registered in the default tool set so every host (including the daemon) gets it. Rendering artifacts inline in smooth-web is a follow-up. -
dcee87a: Big Smooth can now delegate subtasks to a sidekick (pearl th-1adf55).
The engine already shipped
DispatchSubagentTool(send_sidekick) — the
daemon just never registered it. Nowtools_forbuilds it from the engine's
built-in cast plus a snapshot of THIS turn's tool set, so a sidekick inherits
the same kernel-sandboxed fs/grep/bash instances filtered to its role's
clearance (scoutread-only,runnerfull), and runs in its own isolated
conversation returning only a summary — keeping an expensive investigation out
of the parent's context window (the win behind Claude Code's Task tool).Registered last so the snapshot never contains
send_sidekickitself (no
recursive dispatch), and only when a gateway is resolvable (a sidekick with no
model would just error). Sidekick sub-calls still cross the load-bearing kernel
sandbox, but NOT the daemon's userspace deny-policy/narc hooks — documented
in-code as a known defense-in-depth gap for this first cut. -
7f6b64f: Fix
th pearls pullfailing with "cannot merge with uncommitted changes"DOLT_PULLmerges, and Dolt refuses to merge a dirty working set — but
read-path commands dirty it as a side effect:th msg inboxand the
th msg watchpoll loop heartbeat theagentstable without committing.
That wedgedth pearls pullon every invocation, and silently stopped
th msg watchfrom receiving remote messages at all (it swallows pull
errors, so each poll's own heartbeat blocked the next poll's pull).SmoothDolt::pullnow commits the working set first, via a new
commit_working_sethelper that no-ops when the store is already clean
(commitpasses--allow-empty, so an unconditional call would add an
empty commit per pull). Fixing it at that shared choke point covers every
caller, including interrupted commands that leave the store dirty. -
ff955e0: Maintain session metadata in the daemon's durable store (th-503c80). Appending a
message now increments the owning session'smessageCount(and refreshes
lastActivityAt/updatedAt) and writes it through to sqlite, so sessions no
longer reportmessageCount: 0despite having real messages. Empty-session
churn is out of scope here — the engine'shandle_create_sessionmints a fresh
session per WS connection when no knownconversationIdis passed, which the
storage adapter can't prevent. -
dcda585: Add the
smooth-glow-upskill — Smooth's Presence design language.Sibling to smooai's
smooai-glow-up(Aurora), but for a terminal-first
product. Aurora is a dashboard language: cool midnight ground, teal→gold→coral
spent as heat. Presence is for a personal agent you cohabit with: a warm
ground, and color spent on presence and attention — the teal→blueth
gradient reserved for Big Smooth himself, amber meaning only "he needs you".Grounded in what already ships (
crates/smooth-code/src/theme.rs,
crates/smooth-web/web/src/globals.css) and covers all three Smooth surfaces:
theth codeTUI,thCLI output, and the smooth-web SPA — including the
terminal translation of web ideas (borders not glass, foreground-only styling,
form-not-just-color), pipe/NO_COLOR safety, and how to actually see a TUI
change (ratatuiTestBackendsnapshots + tmuxcapture-pane). -
fe323d9: Add
th referrals— the operator CLI for the partner / advocate referral program (SMOODEV-1035), which had API routes and schemas but no way to drive them short of hand-rolled curl. Coversshow/create/updatefor the program economics,partners list|add|update|remove,linkto print a partner's shareable referral URL, plusattributions/visits/commissions. Registered as top-levelth referralsand underth api referrals.--ratetakes a human percentage (20) rather than basis points, and partners are addressable by email, display name, or code instead of uuid. Referral links point atapi.smoo.ai/r/<code>— the host that actually serves the redirect; the marketing site 404s that path. -
d18e080: Fix
th code: send the local auth token so it can actually connect
(pearl th-6dd202).th codecalledconnect_asyncwith no authentication at all, while the
daemon runs the operator's strict-auth local flavor — so every session
died on401 Unauthorizedeven with a healthy Big Smooth, and the error
unhelpfully suggestedRun: th upfor a server that was already up.Verified against the live daemon: no-auth → 401,
Authorization: Bearer→
401 (the upgrade path doesn't consult headers),?token=<correct>→ 101
Switching Protocols,?token=WRONG→ 401. The client now resolves the token
the same way the daemon does (SMOOTH_LOCAL_TOKEN→~/.smooth/operator-token,
read-only — the daemon owns provisioning) and passes it as the query param,
percent-encoded so a token containing&/#/space can't silently truncate
the URL. A 401 now explains the token mismatch instead of misdirecting. -
ec502ee:
th code: first application of the smooth-glow-up (Presence) skill
(pearl th-24cdf3).- Greeting printed twice on every cold start — the splash renders "Type a
message to get started. /help for commands." andapp.rsadded an identical
System:message directly beneath it. Removed the duplicate. - Status bar hierarchy. It was flat pipe-soup — identity, metrics and
keybindings in one uniform gray separated by|, with the health dot buried
mid-row. Now presence leads (the health glyph opens the line — it's Big
Smooth's "I'm awake" signal), live state reads next, and the static
keybindings are dimmed and right-aligned so alignment does the separating
work. Middots replace pipes throughout. - Health state no longer color-only. Three identical
●differing only by
hue said nothing underNO_COLOR, on a mono terminal, or to the ~8% of users
who can't separate green from amber. The shape now carries it too:●awake,
◐degraded,○unknown.
Verified by rendering under tmux at 110/120/80 columns and with
NO_COLOR=1. - Greeting printed twice on every cold start — the splash renders "Type a
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.25.0
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Minor Changes
- a2467a6:
th dashboard layout get|add|remove— the dashboard-layout commands graduate to a top-level command (pearl th-93d811), following the config/widgets/pearls promotion pattern.th api dashboardkeeps working as the REST-mirror spelling; both dispatch to the same implementation.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.24.0
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Minor Changes
-
c905ee7:
th api dashboard layout get|add|remove— manage your Smoo AI main-dashboard
widget layout from the CLI (SMOODEV-2753).Layouts are per (user, org, dashboard type) rows behind
GET/PUT /organizations/{org}/dashboard/layout, previously reachable only by
clicking around the web dashboard or hand-rolling curl against a user JWT.
layout add <widget_id>does a read-modify-write: fetches the saved layout,
appends the widget below the current grid with the size→span mapping the web
uses (small 3 / medium 6 / large 9 / full 12 on the 12-column grid), and PUTs
it back — the server validates the widget id against its registry, so a typo
fails loudly instead of saving a dead tile.layout removeis the inverse;
layout getprints the saved (or default) layout as JSON. Rides the user JWT
(th auth login) because layout rows are keyed by user id — M2M tokens can't
own a layout. Dogfood: added the newaws_cost_forecastwidget to the Smoo AI
org dashboard withth api dashboard layout add aws_cost_forecast.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |
v0.23.4
Install
Homebrew (recommended — macOS + Linux):
brew install SmooAI/tools/thcurl | sh:
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | shBuild from source (Cargo):
git clone https://github.com/SmooAI/smooth.git
cd smooth
cargo install --path crates/smooth-cliUpgrade
# Homebrew
brew update && brew upgrade th
# curl|sh — re-run the installer (it overwrites in place)
curl -fsSL https://raw.githubusercontent.com/SmooAI/smooth/main/install.sh | sh
# Cargo — from your cloned checkout
cd smooth && git pull && cargo install --path crates/smooth-cli --forceWhat's new
Patch Changes
-
889cc82: Big Smooth: extend the system prompt to an industry-best-practice agentic
prompt (pearl th-67b1e1).BIG_SMOOTH_PERSONAgrew from ~70 words (identity + personal-not-support +
no-chain-of-thought) to a full sectioned agent prompt: Agency (finish
the job, adapt on failure, prefer doing over describing), Tools (use
them not guesses, never fabricate results, verify, parallelize),
Memory (recall at task start, remember durable facts like the vault
location), Skills & tracking (read SKILL.md, track via pearls),
Environment (workspace/vault/always-on), and Judgment (sensible
defaults vs ask, confirm destructive/outward-facing actions, secrets,
honest reporting). The two hard-won fixes — personal-assistant-not-support
and no reasoning narration — stay first and firm for the fast local model.
Downloads
| Platform | File name |
|---|---|
| macOS (Apple Silicon) | th-macos-arm64.tar.gz |
| Linux (x86_64) | th-linux-x86_64.tar.gz |
| Linux (arm64) | th-linux-arm64.tar.gz |