Repository navigation
Beta v0.8.6
What's Changed
π New Features
- Session directory access for built-in file tools (c750343) β
/accesslists the session's directory rules,add <path> read|writeadds or replaces one, andremove <path>drops it, with repeatable--allow-readand--allow-writeflags seeding the launched session. Covered directories are treated like workspace paths for read and write approval, areadrule refuses file writes before classification and path resolution, and the rules persist in the session document. - Per-workspace default directory access (647e88f) β
/access defaultlists the defaults saved in~/.crystal/access.json, anddefault add <path> read|write/default remove <path>change that file and the current session. New sessions,/clear,/fork, and a successful/cdor/spacecopy the destination workspace's defaults, while/resumekeeps the saved session rules. - F6 quick prompts (3dc6b96) β Pressing
F6opens a picker over direct.mdtemplates in~/.crystal/shortcuts, searching names and bodies with Fill and Send modes, and every open starts in Fill. Fill inserts at the composer cursor without replacing the draft; Send submits the template alone, keeps the draft and its images, and queues while a turn is running without interrupting it. - Compaction model and forced prompt attachments (7ab2d24) β
compactionModelinconfig.jsongives summaries their ownprovider,model, andthinkingEffort, shown and changed with/compact modeland/compact thinkingand reported by/statuswhile it is on. The launch flags--compaction-model,--compaction-provider,--compaction-model-id,--compaction-thinking, and repeatable--prompt-attachment <name>apply to one process without writingconfig.json, and a forced attachment cannot be changed with/promptattach. - Microcompaction and larger compaction budgets (2b692a6) β With
microCompactionenabled, old successful tool results are replaced with the omitted-result note before each model call, keeping the latestprotectTurnsuser turns andprotectTokensof newer results and rewriting only when the removed text is larger thanminimumTokens./compact microtoggles the switch,/statusshows a Microcompaction row while it is on, and compaction reserves up to 16384 tokens for the summary, keeps a verbatim tail of at most 32000 tokens, and discards a summary that stops at its output limit. - Slash commands queued during a turn (1ac7418) β Slash commands typed while a turn is running are held out of the message queue and run as commands when the turn finishes, so
/forkor/statusno longer reach the model as prompt text. A queued command that stops a busy turn still interrupts it. - Slash commands typed during compaction (f0d0ee3) β Commands that only report state or adjust the display run immediately while compaction is in progress, commands that would change the session are refused with the busy-turn message, and
/quitcancels compaction and exits. - Verbose switches for results, review cards, and tool cards (4eb843c, 1f07d9b, a0c2e90) β
/verbose resultsis a new parent switch for success result panels (verboseResultsinconfig.json), andverboseTools/verboseCommandsnow only act while it is on./verbose reviewandverboseReviewcontrol review allow cards independently ofverboseApprovals, and/verbose callsandverboseCallshide the Tool cards themselves without touching results. - Rule file switches (7ea48a2) β
/rulesshows the OpenCode-compatible global and project rule files and acceptson/offfor both orglobal/projectpluson/offfor one side, storing the choice inruleFileswithinconfig.json.--rules on|offorglobal=on|off/project=on|offapplies to one process without writing the file, and neither form affectsinstructions.mdor.crystal.md. - Plugin-registered status line fields (e7c0bc1) β Disk plugins can register named status fields, and the operator adds the lowercase name to
statusLineor through/statuslineto show text the plugin pushes./statuslinelists each loaded plugin field with its directory and description, keeps a saved name when the plugin is not loaded, and marks it unavailable. - Bounded
treetool (4e68aff, 08e8843) β The built-intreetool lists a workspace directory depth-first with a depth bound, a per-directory file cap, and a total-entry cap, lists a directory link once under its resolved path, and skips ignored directories, links that leave the workspace, and credential paths. Cap notes now name the workspace root instead of.. - GFM tables in the transcript (75f822e) β Assistant markdown now renders GitHub-flavored tables, aligned by display columns, wrapped inside a column, or stacked when the terminal cannot give every column its minimum. A table that cannot be parsed or laid out is shown as its original lines.
- Compaction summary switches (c635881, 6657748) β
/compact summarytoggles the manual summary panel and/compact autotoggles the same panel after automatic compaction, each acceptingonoroffand writingconfig.jsonwithout summarizing. Automatic compaction printsCompacted contextand, with the newshowAutomaticCompactionSummaryswitch on, the full summary panel. - Context budget launch override (cb118b7) β
--context <budget>selects one of the chosen model's declared local context budgets for that process, using the same272k/1m/ exact-token syntax as/context. The choice is not written tocontextSelections, and a model with one budget or one that does not declare the value is rejected. {{directories}}prompt placeholder (21d43c2) β Prompt templates gain{{directories}}, which prints the session's directory access text or nothing when there are no rules and refreshes when the live system message is replaced, including after/access.
π Fixes
- Deferred stop commands (f6bbd06, f5cf4a4, 2160f58) β
/quit,/clear,/resume, and/forknow stop a busy turn even when other session work is still on the stack, stay in the Queued panel, and run in the order they were typed./clear,/resume, and/forkdrop follow-up text still waiting in the queue, and the panel reflects that. - Responses stream parsing for gateway variants (7f448ff) β Responses SSE streams that omit or reshape fields no longer throw: items without a type are skipped, a function call missing an identifier or name is rejected with a clear message, and missing usage counts are treated as absent usage. Chat Completions token names are accepted on Responses usage objects, and error events report the provider message and code from flat, nested, and
response.failedshapes. - Session access entry paths and saved rule validation (bbf7133) β Each rule records the path it was added with, so
/access remove <path>still revokes it after the entry symlink is deleted or retargeted, and invalid saved rules report a visible error instead of failing startup or replacing the current session. Theglob,grep, andsearchdescriptions now state that roots may be workspace-relative or absolute and that only the requested root is searched. - Directory access across links (2173f4c, fb3399f) β Saved directory access rules and prompt history now match a workspace by its canonical path, so defaults and history apply to workspaces reached through an ancestor link, and
--allow-readand--allow-writeresolve relative paths against the operator's workspace path rather than the resolved target. - Transcript and summary budget after microcompaction (9171dd8) β The transcript is no longer lost after a microcompacted round, and the review conversation keeps messages added later in the turn. The summary reserve is capped at half the summary window so a small context window can still send the conversation.
- Forked reasoning state (7594716) β
/forknow copies reasoning segments and the opaque reasoning state, so a forked session keeps its summaries and provider signatures instead of sharing or losing them. - Recalled slash commands in prompt history (7ce4931) β Up and Down keep walking recalled entries that start with
/without the slash picker taking over, and editing such an entry leaves history and opens the picker again. - Plugin status field ordering (40a3f43) β Plugin status snapshots are published in the order they were taken, so an in-flight update can no longer reorder text or swallow a
Clearfrom a plugin reload or close. The status sink attaches once per loaded catalog, and a failed sink's text is dropped. - Background bash output as command output (a980699) β
bash_start,bash_status,bash_logs, andbash_stopresults now count as command output, so they followverboseCommandsand command formatting in the run log instead of riding with generic results. - Markdown table width sharing (27d407d) β Table overflow is spread across the widest columns instead of one column absorbing the whole cut, so wide tables wrap into readable cells rather than a tall ribbon.
- CTX percentages (506ea17) β Used and left context percentages now show one decimal place, round to the nearest tenth, and always sum to 100.0.
- Cancellation after
bash_stop(4fb7059) β Cancellation requested while a background bash task is being stopped is now honored, so a cancelled turn or session exit completes instead of continuing.
Full Changelog: B0.8.5...B0.8.6