Repository navigation
Releases: crittylabs/critty
Release list
v1.3.1
v1.3.0
Added
-
History management — group reviews by task with
critty historyand the bundled critty-history skill. Save portable Markdown archives with attachments and images, inspect task storage, and defer maintenance across conversations. Reviews are retained by default. Automatic retention rotates eligible completed backups within a per-directory disk budget, while protecting ongoing reviews and explicit archives. Ordinary reviews report history warnings;critty doctorprovides fresh checks and remedies. See history settings. -
Review before editing — review proposed updates to notes, reports, configuration files, and other text outside Git while the originals stay untouched. Use
critty tmp prepare,snapshot, andapplyto create, split, rename, or delete files through reviewed copies. Originals stay unchanged until approval and explicit application consent. Concurrent-edit checks, backups, and saved progress support safe retries; application is atomic per file, not across the batch. See the workflow. -
Side-by-side diffs — compare code in unified or side-by-side diffs. Switch with the
Split: off/onheader control orS, and setsplit = trueto start with two columns. Both views preserve comment anchors and support supplied patches without original files; narrow panes temporarily use unified rendering. See configuration. -
Check Git prerequisites and local marker delivery with
critty doctor. It reports missing Git or versions below 2.31.0 and tests marker delivery in a foreground terminal without launching an agent. Unsupported terminal contexts are skipped; standalone documents and attachment-only reviews remain available without Git. See setup. -
Inspect changes, documents, patches, and attachments with
critty --dry-runin the current terminal. Search and display controls remain available without saving a review or history, migrating configuration, or allowing edits and external applications.
Changed
-
User settings now use TOML:
$XDG_CONFIG_HOME/critty/config.tomlglobally and.critty.tomlin projects. Existing JSON settings are converted once when the TOML destination is absent; remove or replace JSONnullvalues before migration. Review records and JSON command output keep their formats. See configuration. -
Local state, configuration, custom prompts, and launcher variables use Critty names. Startup migrates old paths only when the corresponding Critty destination is absent, without merging directories or retaining compatibility aliases. Update launchers to use
CRITTY_HOST. -
Approval requests use a short description and ordinary approval for a single action. The approval skill covers publication details and separate permissions or choices. AI review and cowork skills carry authorization across covered task revisions while tying each review to its exact snapshot; new services, broader access, and publication require separate authorization.
Fixed
-
Paste text with
C-vin comment and reply editors. Prefer plain text on Linux and macOS, with HTML text extraction when needed and an additional RTF fallback on macOS. Image paste remains available. -
Replaced attachments appear in collapsed, read-only history after current attachments. Their checkboxes are inactive, and answers belong to current forms.
-
Markdown formatting and link click targets survive wrapped rows and deleted lines. Links in attachment choices open without changing the answer; use the checkbox or surrounding space to select it.
-
critty review --helpexplains desktop terminal launchers outside a multiplexer, replacing the removedautolauncher description.
v1.2.0
Added
-
Inspect local images in a lightbox from documents, comments, and image diffs. Click a preview or press
M-oto open it, zoom with the keyboard or mouse wheel, and use the arrow keys to browse images on the same line or labeled Before/After revisions. Comments show image previews while you write.M-oalso opens Markdown links, HTML links, and plain web URLs with the system browser or viewer; external applications do not open over SSH. See image previews. -
Open reviews in a floating pane on capable tmux 3.8+ servers, a split on older servers, or a desktop terminal window without a multiplexer. Choose built-in or custom launchers with
--launcheror configuration. Desktop launchers support macOS, Linux withxdg-terminal-exec, and WSL with Windows Terminal; they skip known SSH connections. See review launchers. -
Review changes and approval requests from Antigravity CLI (
agy) withcritty install agy(orantigravity), using the ordinary/crittyand/critty-approvalskill names.install allincludes Antigravity; legacy Gemini CLI remains available explicitly. Restricted AI reviewer launches continue to support Claude Code and Codex. See Antigravity setup. -
Install user integrations from any directory with
critty install --user <target>. Codex skills now use.codex/skillsin projects and~/.codex/skillsfor users. Chooseinstall agentsfor shared skills in.agents/skillsor~/.agents/skills. Existing copies in old locations remain in place; remove obsolete copies to avoid duplicate skill names. See agent skill installation.
Changed
-
critty --versionshows a colored brand mark on terminals, and Help opens in the pager selected byPAGER(lessby default). Colors adapt to the terminal background. Redirected output,NO_COLOR, and agent tools retain plain output. -
The Submit dialog starts on one Approve/Comment/Reject choice group, with keyboard navigation between choices, the overall comment, and action buttons. Bracket navigation continues through the dialog and wraps between matching threads and form items.
-
critty doctorchecks supported desktop launchers without opening windows, identifies Critty and tfil Codex wrappers, and can test terminal marker binding and notifications. Its paged report groups checks by area, highlights status and advice, wraps to the terminal width, and ends with a summary.
Fixed
- Delayed image capability replies and mouse reports no longer spill into text fields when sequences arrive in separate reads, including tmux extended-key input. Image detection starts only when needed or explicitly requested, retries when the review pane becomes visible, and rechecks unconfirmed support on image tabs. Ordinary typing no longer triggers detection. The Images control shows
N/Awhile previews are inactive.
v1.1.3
Fixed
- Files containing a bare carriage return, such as shell scripts, no longer show the lines after it shifted against their line numbers and diff markers. Carriage returns and other control characters in source lines now appear in caret notation such as
^M.
v1.1.2
Changed
-
Diagnose installed integrations, AI review Python/MCP prerequisites, and image forwarding settings with
critty doctor;critty checkremains an alias. Partial installations report missing resources,--pythonselects a dedicated review environment, and color-coded text or--jsonreports present the results. tmux pane settings and local Herdr configuration include advice without changing stored settings. On macOS and Linux, image support is probed on the current foreground TTY; an unavailable TTY reports a skipped check without an error. -
AI review and collaboration skills are now named
critty-ai-reviewandcritty-ai-cowork, matching the other Critty skills. Reinstall withcritty install --force <agent>to update references and automatically remove recognized oldcrit-ai-reviewandcrit-ai-coworkskill folders after installing their replacements. See the upgrade instructions. -
Checkboxes and choices in attachments stand out with colored badges and highlighted labels. Submitting asks for confirmation when an unanswered item has never scrolled into view, so items below the visible area are not missed. You can review the item, submit anyway, or cancel.
-
Review data now uses the
crittystate directory, with a compatibility link preserving old paths and running sessions. If the directories conflict or cannot be linked, Critty keeps using the legacy directory. Saved reviews usecritty_state, with the oldtcrit_statekey retained for compatibility. Review launchers useCRITTY_HOST, withTCRIT_HOSTsupported as a fallback.
Fixed
- Improved readability on light terminal backgrounds. Text that used pale ANSI colors, such as cursor markers, item counts, warnings, attachment names, Markdown code, links, and headings, now uses darker shades. Code is highlighted with a light color scheme, line numbers are a subdued gray, and button keys are white on dark yellow. Item counts in dialogs share the gray background of the header counts.
v1.1.1
Fixed
- Improved detection of inline image support, which could incorrectly report images as unavailable on supported terminals, especially through tmux. Detection handles tmux's extended-key input and retries unanswered startup queries. If support remains unconfirmed, the first keypress checks again after the terminal becomes visible. Press
Ior click Images to restart an unsuccessful or ongoing check as often as needed. The Images control shows when a check is in progress.
v1.1.0
Features
-
Experimental AI review: Get second opinions with
crit-ai-review, or refine work with another AI usingcrit-ai-coworkbefore final human review. Both require an existing Critty session and authorized reviewer access. Reviewers post findings and manage their own threads; your agent makes edits and runs checks. All agent install targets include these skills, with restricted CLI setups for Claude Code (Python 3.10+) and Codex (Python 3.11+ with the MCP SDK). See the README for usage and setup. -
Navigate attachment checkboxes and choices alongside review threads.
[/]visit every thread and form item;{/}visit unresolved threads and unanswered required items.n/Nvisit diff hunks, unresolved threads, unanswered required items, and optional form items. A required choice group has one unresolved stop until answered. See the navigation table. -
Added actionable counters to the main screen and decision dialogs to show item counts and completion status. Click a counter to jump to an item. Tab titles flag unresolved threads and unanswered checkboxes and choices instead of underlining filenames. Prominent messages and colors highlight unresolved threads and unanswered items to help prevent omissions. Required answers block approval; optional answers remain optional, and unchecked consents stay unauthorized.
-
Switch to the previous or next file tab with
M-{orM-}, alongsideS-TABandTAB. -
Export verdicts, feedback, and attachment identities as compact JSON with
--summary FILE. Bundled skills use it to read results and retain original human feedback for host permission checks.
Changed
-
Configuration uses
~/.config/critty/config.jsonand.critty.config.json, falling back to the legacy TCrit file only when the new file is absent at that level. Custom prompts use the correspondingcritty/prompts/and.critty/prompts/directories, with TCrit paths as fallbacks. Project settings still override global settings, and review storage stays unchanged. -
Resolve and Images controls underline their shortcut keys,
randI; the Images button uses less footer space.
v1.0.0
Critty 1.0 brings code and document reviews, approvals, and user choices into one terminal session. Review proposed changes alongside an approval checklist or a choice of next steps, or use the same workflow for a standalone decision. Your agent receives both your review feedback and explicit answers.
Features
-
Submit reviews with Approve, Reject, or Comment and an optional overall comment thread, as on GitHub. Individual threads' resolution state informs the suggested decision, and approval asks before resolving remaining threads.
-
Preview images referenced by relative paths in Markdown documents, image files in diff reviews, and images pasted into comments and replies. PNG, JPEG, GIF, and WebP are supported.
-
Image previews require a terminal that implements the Kitty graphics protocol with Unicode image placeholders, such as Kitty, Ghostty, and iTerm2. Within these terminals, previews work through tmux or Herdr with passthrough enabled. Press
Ior click the Images button to toggle image previews. -
Incremental search supports regular expressions, smart case, Unicode word search, and searching across files. Matching text is highlighted as you type. Keyboard and clickable controls let you change search modes, move between matches across files, keep the result, or cancel.
-
Search supports pasted text, the shared kill ring, and multilingual IME input. Long queries keep their input end visible. Controls stay available in short terminals and wrap after resizing.
Changed
-
n/Nalso stop on whole-file reviews, attachments, and files whose diffs have disappeared, even without unresolved comments. -
Buttons without a background now use the same subtle gray background as the Submit dialog, including close, comment navigation, and resolution controls.
-
Keyboard Help shows the running build's version beside a colored logo. Help and the review banner share the logo, with a terminal prompt and green accents. Help keeps its scroll controls on the bottom row, beside the version when space allows.
-
Building from source requires Go 1.27.2 or later.
-
The bundled
critty,critty-cli, andcritty-approvalskills cover interactive reviews, CLI operations, and approval requests, with input and display rules in the CLI reference. -
Keyboard Help moves to
M-?, leaving?for incremental search. -
Updated Keyboard Help includes the search-mode shortcuts and scrolls with keys, the mouse wheel, and Up/Down buttons when it does not fit the terminal.
Fixes
-
Dialog buttons remain clickable when submission or clipboard status messages wrap.
-
critty envandcritty env ttyreport output write failures instead of returning success. -
Unresolved drifted comments show their threads by default. Resolved threads expand while focused with
[,], or the arrow keys, without requiring Enter. -
TUI saves preserve comments and replies added or changed by concurrent CLI commands. Conflicting edits to the same field report a save error instead of overwriting another writer's changes.
-
Demo recordings select the build prepared by
demo/setup.sh, even when a tmux pane's login shell changes PATH. -
Bundled skills refresh the selected review input after edits, distinguish ordinary approval from interactive forms, and preserve complete output for manually launched reviews. Comment examples consistently target a session and handle bodies that need JSON input.
v0.18.1
Features
-
The bundled
critty-approvalskill prepares Markdown approval attachments with YAML frontmatter and interactive confirmations, choices, and consents, then ties execution to the exact human-approved result. All four agent integrations install it. -
--nullreviews only attached documents without requiring a Git repository.
Fixes
-
Empty diff input, including
--diff=/dev/null, can be reviewed with attachments and resumed from its saved session. -
Markdown quotes and italic text use the primary text color to stay readable on diff backgrounds.
-
nandNstop at added, deleted, and modified binary files even though they have no diff hunks. -
demo/release.shcan upload recordings to a draft release before its tag exists.
v0.18.0
Critty is the new name of crit. This first release from crittylabs/critty, the original crit repository, brings in everything developed as the TCrit fork since crit 0.2.2. The changelog lists every change in detail under TCrit 0.3.0 through 0.17.0.
Moving to Critty
- Install from the new repository and Go module path,
github.com/crittylabs/critty:go install github.com/crittylabs/critty/cmd/critty@latestormise install github:crittylabs/critty. Release archives are namedcritty_*. - The command and the bundled agent skills are
crittyandcritty-cli. Oldtcritcommands and skills are not aliases: update scripts, reinstall the skills withcritty install, and remove the oldtcritandtcrit-cliskills. - Reviews, configuration, and custom prompts saved by TCrit stay available. Their paths,
.tcrit.config.json, thetcrit_statefield, andTCRIT_HOSTare unchanged. - Codex terminal markers start with
CRITTY-. tfil 0.4.1 and later report them with--critty-notify;--tcrit-notifyremains an alias. - TCrit releases remain available as the
tcrit-v0.3.0throughtcrit-v0.17.0tags. - Critty has its own logo and icon.
Agent workflow
- Review commands follow the Crit workflow: they block until the reviewer finishes, print a result for the agent, and continue in later rounds with
critty --session <id>. Reviews keep Crit-compatiblereview.jsondata, andcritty commentandcritty commentsscript them. critty installadds the sharedcrittyreview loop andcritty-clireference to Claude Code, Codex, OpenCode, and Gemini CLI.critty checkreports stale integrations, and finish prompts can be customized. The skills describe local effects and the scope of a human approval.- Reviews open in a full-width Herdr tab or a tmux split, found from process ancestry when the multiplexer environment is missing. Each round closes its pane or tab.
- Codex reviews find their pane through the bundled
codexwrapper orcritty codex, a one-time marker shown by the skill, and optional notifications from terminal filters such as tfil. critty envprints the terminal variables of the pane a review would use, asNAME=valuelines or JSON.critty env ttyprints only the terminal device, andcritty env run <command>runs a command with those variables.
What to review
--scopeselectsall,staged,unstaged, or a committed comparison such asmain..HEADormain...;--stagedand--unstagedare shortcuts. Each scope keeps its own session, shown in the header.git diff <base> <head> | critty --diffreviews any Git unified diff, including outside a repository.critty plansaves each revision of a plan and carries comment threads forward.- Repeated
--attachment FILEflags show documents such as commit messages before the reviewed files. Task lists in attached Markdown become forms for required confirmations, choices, and individual permissions, and--result FILEexports the approved answers. - Every review gets its own session ID.
critty stop --session <id>keeps it, andcritty --session <id>resumes it. --focus PATH[:LINE]andcritty FILE:LINEstart at a file or line.- The header names the project and the Git branch under review;
--projectand--topicreplace them.
Comments
- Threads support replies, resolution, and reopening.
rtoggles resolution in place, andRresolves and moves to the next unresolved thread, or opens the finish dialog after the last one. fcomments on the whole file, and removed lines can be commented on too.ctrl+vpastes clipboard images into comments as Markdown attachments.- The comment editor has a kill ring (
ctrl+y,alt+y), GitHub-style suggestions (alt+s),$EDITORediting (ctrl+o), and@pathcompletion.alt+wcopies a source or thread reference, and clicking@path L40or a comment ID jumps to it. - Comments follow edits between rounds: anchors match moved text, multi-line ranges resize with insertions and deletions, and comments without a matching line fold into markers at the right edge of the code.
hfolds all resolved threads andHhides comment boxes for reading the diff.- A new round focuses the first thread with a fresh reply from another author.
- Each author has a color, unfocused threads shrink to the latest message, and the focused thread has a bright border.
Navigation and display
- The sidebar has a Files tab with a foldable tree that follows the active file. File tabs use compact paths, follow the tree order, and mark new and deleted files as
(A +12)and(D -8). n/Nvisit changes and unresolved comments across files;[/]and{/}move between all or unresolved threads.alt+pswitches files by fuzzy search.- The top line names what is under review and ends with a Submit button. The mouse can click tabs, lines, threads, and buttons, scroll, and drag the gutter to select lines.
wignores whitespace in diffs.- Text adapts to light terminal backgrounds, approval dialogs are light green, and editors place the real terminal cursor for input methods.
Diffs
- Inline replacements keep whitespace, long highlighted lines wrap, and syntax highlighting starts faster.
- Paths with spaces or special characters work, and binary files keep their added, deleted, modified, or renamed status.
Fixed
- Tab-indented code quoted in comment and reply dialogs stays inside the preview border when it wraps.
- The second click of a double-click that opens a dialog no longer activates a control under the pointer.