Releases

Changelog.

What's new in Crit. Release notes pulled automatically from GitHub.

v0.10.4

What’s Changed

Resizable sidebars

The file-tree panel and the comments panel both have drag handles on their inner edge. Widths persist across runs (consolidated into a single crit-settings cookie alongside the other UI prefs).

General

Internal refactors

  • chore(deps-dev): bump eslint from 10.2.1 to 10.3.0 by @dependabot in #416
  • chore(deps-dev): bump stylelint from 17.9.0 to 17.9.1 by @dependabot in #417

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.10.3…v0.10.4

v0.10.3

What’s Changed

PR-scoped and commit-range review

crit pr 1234 opens the PR diff scoped to the layer you’re reviewing, with a stack popover for hopping between branches in the chain. crit --range A..B does the same for any commit range. The popover surfaces the default branch as a non-interactive root marker and lists every reachable tip with full-stack vs layer scope toggles, so reviewing a stacked diff feels like reviewing a single PR.

Review-level comments

General feedback that doesn’t belong on a specific line now lives in a dedicated “Review conversation” section. Add, reply, edit, resolve - same threading model as line comments, but for the review as a whole. Drafts you’re typing survive sibling state changes (adding a reply elsewhere no longer wipes your in-progress comment).

Fixes

Documentation

  • docs(integrations): mention markdown in replies; print URL on daemon start by @tomasz-tomczyk in #401 (Thanks @hbogaeus for the suggestion!)
  • docs: surface crit pr subcommand and –scope/–remote in printHelp by @tomasz-tomczyk in #412

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.10.2…v0.10.3

v0.10.2

What’s Changed

Note: You might need to run crit auth login again to link your profile properly for the future.

v0.10.1

What’s Changed

Comments panel redesign

The comments panel has been rebuilt with a segmented filter (All / Open / Resolved) and collapsible groups. Pair it with the new “hide resolved comments” setting (h shortcut) to focus on what’s still open during a review.

  • feat: redesign comments panel with segmented filter and collapsible groups by @tomasz-tomczyk in #354 - thanks @omervk for suggestions in this area!

General

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.10.0…v0.10.1

v0.10.0

What’s Changed

Diff context expansion

You can now expand collapsed diff sections directly in the review UI - click gutter icons to reveal context above, below, or between hunks. Small gaps auto-expand, and sections with comments unfold automatically. Thanks @omry for suggestions in this area!

  • feat: auto-expand small unchanged gaps between diff hunks (#337) by @tomasz-tomczyk in #337
  • feat: add expand controls before first and after last diff hunk (#338) by @tomasz-tomczyk in #338
  • feat: expand diff context incrementally (20 lines per click) (#339) by @tomasz-tomczyk in #339
  • feat: GitHub-style diff expand controls with gutter icons (#343) by @tomasz-tomczyk in #343
  • fix: auto-expand diff spacers when comments exist on folded lines (#333) by @tomasz-tomczyk in #333

Comment carry-forward

Review comments now follow the code - when lines move out of a diff hunk, comments render inline at their outdated position instead of disappearing.

  • feat: extend comment carry-forward to code files (#324) by @tomasz-tomczyk in #324
  • feat: render outdated comments inline when lines leave diff hunks (#325) by @tomasz-tomczyk in #325
  • fix: preserve GitHubID in carryForwardComment to prevent duplicate PR comments (#340) by @tomasz-tomczyk in #340

Sapling SCM support

crit now works with Sapling in addition to Git. This includes automatic VCS detection, branch management, and all existing review workflows. (Thanks @omry for support!)

General

  • feat: migrate to crit design system (#327) by @tomasz-tomczyk in #327
  • feat: print review file path in crit fetch output (#341) by @tomasz-tomczyk in #341
  • fix: add response.ok checks and fix doFinishReview error recovery (#344) by @tomasz-tomczyk in #344
  • fix: preserve reply form state when opening new comment forms (#323) by @tomasz-tomczyk in #323
  • fix: match reply form font size to comment form (#322) by @tomasz-tomczyk in #322
  • fix: add –no-ext-diff to git diff commands to support external diff tools (#318) by @Amwam in #318
  • fix: eliminate ARM64 data race on Server.session pointer (#328) by @tomasz-tomczyk in #328
  • fix: optimize LCS diff from O(m*n) to O(n) space (#329) by @tomasz-tomczyk in #329
  • fix: log writeJSON encode errors instead of silently dropping them (#331) by @tomasz-tomczyk in #331
  • fix: wrap errors in atomicWriteFile with operation context (#330) by @tomasz-tomczyk in #330
  • fix: prevent stale pointer writes in RefreshDiffs (#345) by @tomasz-tomczyk in #345
  • chore: Add benchmarks for ComputeLineDiff to catch LCS performance regressions (#332) by @tomasz-tomczyk in #332
  • chore: Add wt.toml config for worktree node_modules sharing by @tomasz-tomczyk

Contributors

v0.9.3

What’s Changed

General

  • feat: include orphaned file metadata in share payload (#305) by @tomasz-tomczyk in #305
  • fix: resolve WCAG AA color contrast violations (#274) (#301) by @tomasz-tomczyk in #301
  • fix: add missing –fg-on-accent to light theme, remove dead vars, strengthen CSS guardrails (#315) by @tomasz-tomczyk in #315
  • fix: use server-side Live field for live badge instead of reply author heuristic (#311) by @tomasz-tomczyk in #311
  • fix: resolved live threads now collapse correctly (#308) by @tomasz-tomczyk in #308 - thanks for reporting Aditya!
  • fix: reset viewed state when file content changes between rounds (#310) by @tomasz-tomczyk in #310
  • fix: support crit pull across gh CLI versions (#299) by @omry in #299 - thanks!
  • fix: improve browser launching on WSL (#298) by @omry in #298 - thanks!

Tests & internal

Contributors

v0.9.2

What’s Changed

Content-based comment anchoring

When you leave a comment, crit now stores the full text of the commented lines as an anchor. During carry-forward between rounds, if the LCS-remapped line no longer matches the anchor text, crit searches the entire file for the original content. If multiple matches exist, it picks the one closest to the LCS-suggested position. Comments land on the right code even after refactors that shift line numbers.

  • feat: content-based comment anchoring for carry-forward positioning by @tomasz-tomczyk in #296

Orphaned comments on removed files

When a file receives comments and is later deleted from the branch, those comments used to vanish silently. Now crit detects removed files that still have comments and surfaces them in the UI so nothing gets lost.

General improvements

Internal refactors

  • fix: audit cleanup — comment index perf, CSS fixes, test isolation by @tomasz-tomczyk in #293
  • fix: audit cleanup — orphaned session files, safe type assertions, config docs by @tomasz-tomczyk in #292
  • chore: replace .crit.json references with “review file” terminology by @tomasz-tomczyk in #276
  • chore: add quality guardrails — linting, accessibility, rules by @tomasz-tomczyk in #273
  • fix: prevent flaky E2E test by adding loadPage buffer before comment read by @tomasz-tomczyk in #277

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.9.1…v0.9.2

Contributors

v0.9.1

What’s Changed

The included agent plugins & skill files got a little cleaner. /crit is the only user-facing command. You can still ask the agent to comment using crit or share and it should load the appriopriate skill.

Centralized review storage

Review data now lives in ~/.crit/reviews/<key>.json instead of <repo>/.crit.json. Each branch gets its own isolated storage, so switching branches no longer causes comment bleed or round number conflicts. Thanks to @omervk for continuous feedback leading to this improvement!

Settings panel

The Settings tab shows detected integrations and lets you change the content width used in file mode (new setting).

  • feat: settings panel with config status, content width toggle by @tomasz-tomczyk in #261
  • fix: settings panel polish — independent copy snippets, agent cmd layout by @tomasz-tomczyk in #268

Fixes

Documentation

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.9.0…v0.9.1

Contributors

v0.9.0

What’s Changed

crit auth brings login, logout, and whoami to the CLI, backed by the oAuth Device Flow. Pair it with crit.md (we use GitHub for authentication), or self-host crit-web with your own oAuth app if you need a private stack.

You don’t need an account to share; logging in is optional - for now it just makes it easier to find your reviews on crit.md. Expect more signed-in features in future releases.

Changes

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.8.3…v0.9.0

Contributors

v0.8.3

What’s Changed

This release eliminates the daemon startup timeout that blocked large repos — session init is now fully deferred, so the browser opens instantly while files load in the background. PR detection was also moved off the critical path, cutting another ~6s from perceived startup. Several race conditions and edge cases around scope cookies, file-arg sessions, and round completion are fixed.

Faster startup

Fixes

Contributors

v0.8.2

What’s Changed

When a review has more than 100 files, crit now eagerly loads only the first 100 (content + diff). The rest appear as collapsed headers and load on demand when you expand them, with a loading spinner and a 30-second diff timeout. Keeps the UI snappy on large changesets.

  • feat: lazy file loading for large changesets by @tomasz-tomczyk in #227 - inspired by a report from Brian K - thank you!

A new dropdown in the header lets you change which branch diffs are computed against, following GitHub’s [base ▾] ← current-branch layout. No more noisy diffs when your branch was forked from a non-default branch.

General

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.8.1…v0.8.2

v0.8.1

What’s Changed

Security

Features

Fixes

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.8.0…v0.8.1

Contributors

v0.8.0

What’s Changed

crit plan - plan review workflows

Two new subcommands for reviewing AI-generated plans before execution. crit plan opens a review session for a plan file; crit plan-hook is designed to be wired as a Claude Code PermissionRequest hook for ExitPlanMode, blocking the agent from proceeding until you approve.

You shouldn’t need to learn anything new - this should be used automatically by our Claude Code plugin when combined with planning mode.

crit fetch - two-way review workflow

crit fetch pulls comments from crit-web back into your local session, making the review loop fully bidirectional. Pair it with crit share to post a diff for async review, then fetch the comments when your reviewer is done.

This is included in the prompts automatically and you shouldn’t need to use this manually.

General

Documentation

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.7.0…v0.8.0

v0.7.0

What’s Changed

Send to agent (experimental)

New: Send now button in your comment forms. When you send a comment this way, it will immediately spawn your chosen agent’s CLI, pass in the comment as the prompt with some context around the file you’re commenting on. Great for adhoc questions or clarifications that might not need the full review loop.

Add agent_cmd key to your .crit.config.json to enable this feature (see README.md).

Thank you to @jbrooksbartlett for the idea! ❤️

File-level and review-level comments

You can now leave comments that aren’t anchored to a specific line — useful for architectural feedback, general suggestions, or review-wide notes. The review comments live in the comment side panel. Used by default when submitting with crit push to GitHub.

PR overview panel

A new panel shows PR metadata (title, description, status) inline in the review UI, so you don’t have to context-switch to GitHub to remember what you’re reviewing. Click the PR # in the header to toggle.

General

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.6.2…v0.7.0

v0.6.2

What’s Changed

  • Fix daemon reuse for file-mode sessions and shutdown on approve (#187)
    • Finish prompt now includes original file args (e.g. crit plan.md) so agents reconnect to the existing daemon
    • Daemon shuts down after approve (0 unresolved comments) to free the port for future sessions
    • Integration docs updated for claude-code, cursor, cline, windsurf, opencode
  • Reduce daemon idle timeout (5e88abc)

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.6.1…v0.6.2

v0.6.1

What’s Changed

This release hardens crit’s architecture with a daemon-based review model — crit now spawns a background daemon and acts as a thin client, replacing the old crit go / crit listen split.

The review UI shows a clickable PR link in the header when your branch has an open pull request - orange when it’s a draft.

Features

Fixes

  • fix: re-open browser when daemon has no connected browser tab (#177) by @tomasz-tomczyk in #177
  • Fix truncateStr UTF-8 corruption and remove dead runServer function (#179) by @tomasz-tomczyk in #179
  • fix: fetch review comment IDs after creating review (#175) (#176) by @tomasz-tomczyk in #176
  • fix: disambiguate quote highlight for duplicate text + add file-mode e2e tests (#180) by @tomasz-tomczyk in #180
  • fix: Approve button not updating on comment unresolve (#166) by @tomasz-tomczyk in #166
  • fix: include quote field in share payload (#169) by @tomasz-tomczyk in #169
  • fix: properly register files detected after startup for commenting and diff (#154) by @tomasz-tomczyk in #154
  • fix: marketplace plugin discovery — revert git-subdir source, add plugin.json by @tomasz-tomczyk
  • fix: restore Nix package builds and cover them in CI (#162) by @vereis in #162

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.6.0…v0.6.1

Contributors

v0.6.0

What’s Changed

This release adds comment threading, per-commit review, and file references — three features that make crit reviews feel much closer to a full GitHub PR review, but locally.

We have a new home - https://crit.md/ - tell your friends! The previous domain, crit.live will continue to work for now.

Comment threading and replies

Comments now support threaded replies with a GitHub-style inline reply input that expands on focus. Collapse and expand any comment thread, resolve/unresolve from the UI, and replies are included when you share a review.

Note: You may need to update the plugin (if using Claude Code) or manually install the latest /crit command and SKILL.md:

crit install claude-code   # or: cursor, opencode, windsurf, github-copilot, cline

Commit selection

A new sidebar lets you filter the review to a single commit, so you can review changes one commit at a time instead of the full diff.

File picker autocomplete

Type @ in any comment textarea to get fuzzy file picker autocomplete. File references render as styled inline tokens in comments.

General

Fixed

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.5.2…v0.6.0

v0.5.2

What’s Changed

This release greatly improves some of our core commenting & diff functionality.

You can select any text to begin a comment. Those selected words will be recorded as a quote in the metadata for your comment in JSON, allowing more granularity for your feedback to your agent.

File mode diff view has been improved greatly - in the split view, we align horizontally the right sections together for easier comparison.

New: word-level diff highlighting, to make it easier to spot what’s actually changed.

General

Fixed

Internal refactors

v0.5.1

What’s Changed

To upgrade:

brew update && brew upgrade crit

Workflow changes

You no longer have to manually copy/paste the prompt into the right terminal window!

I’ve added crit listen command which the agent should launch immediately after launching crit and each round. It blocks the agent and listens for you to hit Finish review in the UI.


I published crit as a plugin, which should make it easier to use and keep up to date with the commands and SKILL.md changes.

Claude Code:

/plugin marketplace add tomasz-tomczyk/crit
/plugin install crit

I’m trying to get published in the Claude Code and Cursor marketplaces - please ⭐ star the repo if you haven’t - it will help greatly - thank you!

  • refactor: restructure integrations as plugins with marketplace support by @tomasz-tomczyk in #62

Sharing

This release greatly improves the share capability. Please note, I added crit.live as the default share target but you can set SHARE_URL or share_url in config to a blank string to completely disable the sharing functionality.

I open sourced the web server package at crit-web! See full instructions for selfhosting there.

You can ask your agent to generate a share URL or QR code. Useful for planning on the go as our web view of the markdown files is mobile-friendly.

General

  • feat: Compact comment form button labels by @tomasz-tomczyk in #79
  • fix: disable hljs auto-detection for unlabelled code blocks by @tomasz-tomczyk in #66 (Thanks Omer for reporting!)
  • fix: restore review round from .crit.json on session restart by @tomasz-tomczyk in #81 (Thanks Omer for reporting!)
  • fix: flaky comment-count-badge E2E test race condition by @tomasz-tomczyk in #69
  • fix: update comment count badge on SSE comments-changed events by @tomasz-tomczyk in #68
  • fix: scope toggle ‘All’ re-queries git instead of using cached file list by @tomasz-tomczyk in #67
  • fix: add blue link styling to resolved comment bodies by @tomasz-tomczyk in #74

Docs

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.5.0…v0.5.1

Contributors

v0.5.0

What’s Changed

I’m very excited for this release! Several new features based on experience from dogfooding it for all my work as well as suggestions from our little community! Everyone who has reached out has been extremely thoughtful and kind. I truly appreciate all the feedback and comments, so please continue! ❤️

To upgrade:

brew update && brew upgrade crit

Config

Crit now reads a config file — ~/.crit.config.json globally, or .crit.config.json per-project. Project config takes precedence over global. Useful for setting ignore patterns, author name, and port.

{
  "port": 0,
  "no_open": false,
  "share_url": "https://crit.live",
  "quiet": false,
  "output": "",
  "author": "John",
  "ignore_patterns": [".crit.json"]
}

Scaffold a starter config with:

crit config --generate > ~/.crit.config.json

GitHub PR sync

This requires GitHub CLI to be installed.

Pull GitHub PR review comments down into your local .crit.json, review them in crit.

crit pull      # auto-detect PR from current branch
crit pull 123  # fetch PR #123 comments into .crit.json

Review a PR locally, add comments with crit and push them to the remote.

crit push             # post .crit.json comments to detected PR
crit push 123         # post to a specific PR
crit push --dry-run   # preview what would be posted

Programmatic comments

Your agents can leave comments directly into .crit.json without opening crit. Target a single line or a range:

crit comment main.go:42 "This will panic when input is nil"
crit comment auth.go:10-25 "Missing error handling for expired tokens" --author mybot

Comments written this way sync live to any running crit session via SSE.

You can find a new command, crit-comment to teach your agents how to do this in the integrations directory.


Release notes

Features

  • feat: add persistent config files and ignore patterns by @tomasz-tomczyk in #43
  • feat: comment template chips in comment form by @TickTockBent in #28
  • feat: display review round badges on comments by @tomasz-tomczyk in #52 - thanks to Omer for the idea!
  • feat: allow multiple comment forms open simultaneously by @tomasz-tomczyk in #55 - thanks to Omer and Jonny for the idea!
  • feat: add comment count badge next to comment icon in header by @JonnyCBB in #34
  • feat: preloaded .crit.json, GitHub PR sync, and crit comment CLI by @tomasz-tomczyk in #40
  • Add author identity to config, comments, and share by @tomasz-tomczyk in #45

Fixes

Documentation

E2E Tests

v0.4.8

What’s Changed

  • View all comments panel (#30)
  • Fix scope switching hang when files not in session (b56baad)
  • Fix unstaged scope showing full file instead of unstaged changes (#27)
  • Persist viewed state across round transitions (85230bd)
  • Render markdown in resolved comment bodies (6c36ddd)
  • Use correct CSS variables in server-stopped modal (9e3dd42)
  • Fix empty diffs when cwd is not repo root (#26)
  • Only show TOC shortcut key when TOC is enabled (89af5cb)
  • Gate release on unit and E2E tests passing (8f88e74)

Upgrade

# Homebrew
brew update
brew upgrade crit

# Nix flake
nix profile upgrade --inputs-from . crit

# Manual
# Download the binary for your platform from the assets below

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.4.7…v0.4.8

v0.4.7

What’s Changed

  • Make sharing opt-in by removing default crit.live URL — Share button now only appears when --share-url or CRIT_SHARE_URL is set (f3f570e)
  • Hide prompt in waiting modal once agent starts editing (2a78ad3)
  • Update the demo (6a0a5ea)

Upgrade

# Homebrew
brew update
brew upgrade crit

# Nix flake
nix profile upgrade --inputs-from . crit

# Manual
# Download the binary for your platform from the assets below

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.4.6…v0.4.7

v0.4.6

What’s Changed

  • Color-coded change highlights and n/N navigation in diff view (87993cc)
  • Make n/N change navigation scroll-position-aware (be7550b)
  • Add -o/--output flag to customize .crit.json location (cc8b866)
  • Suppress tree observer during manual scroll to prevent active state race (6d8e8e2)

Upgrade

# Homebrew
brew update
brew upgrade crit

# Nix flake
nix profile upgrade --inputs-from . crit

# Manual
# Download the binary for your platform from the assets below

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.4.5…v0.4.6

v0.4.5

What’s Changed

Features

  • Add --quiet/-q flag to suppress status output (a8f99ac)
  • Return all-resolved prompt when no unresolved comments remain (328352c)
  • Add TOC scrollspy highlighting in file mode (92530d4)
  • Highlight inter-round changes in file mode document view (1780090)
  • Render code files in document view for file mode (30817d2)

Fixes

  • Overlay document view comment button on line gutter (fe5a18b)
  • Remove v keyboard shortcut for toggling viewed (8c6dd58)
  • Scroll to file top when clicking tree item (1a24808)
  • Hide change indicators and line numbers from git mode document view (5cc8b8f)
  • Clear focused state after comment submit/cancel (79196c6)

Upgrade

# Homebrew
brew update
brew upgrade crit

# Nix flake
nix profile upgrade --inputs-from . crit

# Manual
# Download the binary for your platform from the assets below

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.4.4…v0.4.5

v0.4.4

What’s Changed

  • Restore rendered markdown diff view in file mode — “Toggle Diff” button shows rendered content with green/red highlighted blocks for additions/deletions, with split and unified layouts (#22)
  • Fix TOC click navigation and state persistence (#21)
  • Clean up file mode UI — hide status badges and show filename in header (1450849)

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.4.3…v0.4.4

v0.4.1

What’s Changed

  • Fix: carry forward comments for unedited files in file mode (#18)
  • Fix: reduce left padding for comments in markdown view (e70bbfa)
  • Docs: update README and integrations for unified plan + git review messaging (#17)
  • Fix: terminal output counts carried-forward comments as new (#16)
  • Fix: allow Playwright to reuse servers started by run.sh in CI (da9d00d)

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.4.0…v0.4.1

v0.6.0

What’s Changed

Conversations on review comments

Review-level and inline comments now support replies. The LiveView already had a generic add_reply handler — this release wires up the UI for review-level cards (which were missing it), surfaces an Edit button on the right side, and lets the review owner resolve any thread (not just their own). The keyboard flow also matches the CLI: text selection no longer auto-opens the editor — press c to start a comment.

Optional Sentry error monitoring

Hosted crit-web now ships exception monitoring when SENTRY_DSN is set. Privacy hardening throughout: request bodies, cookies, comment text, and DOM/console breadcrumbs are scrubbed before events leave. Uses Req (existing dep) instead of pulling in Hackney. Privacy policy was updated to disclose this on the hosted deployment.

Share-page hardening

The public /r/:token page now sets Referrer-Policy: no-referrer so destination URLs don’t leak the share token, and the global rate limiter applies to the share endpoint specifically.

Features

Fixes

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.5.0…v0.6.0

v0.5.0

What’s Changed

This release is a major UX refresh across crit-web. The dashboard, marketing header, and review meta header have been redesigned around a cohesive identity system, and the entire app now runs on the crit design system with WCAG AA contrast.

Dashboard & marketing redesign

The dashboard now leads with a guided onboarding empty state, file snippet previews on every review, and an identity popover with a self-hosted indicator. The marketing header has been rebuilt to match the dashboard chrome, and mobile review listings are finally first-class.

Review experience

The review page gets a meta header with author and owner-delete, a redesigned comments panel with segmented filter and collapsible groups, and a hide-resolved toggle for inline comments. Word-diff is now powered by @sanity/diff-match-patch for better accuracy, and orphaned files render in parity with crit local.

General

Documentation

Internal refactors

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.4.0…v0.5.0

Contributors

v0.4.0

What’s Changed

Device flow authentication

The CLI can now authenticate against crit-web using the OAuth device flow. Users visit a URL to authorize, and the CLI picks up the session automatically — no manual code entry required.

  • feat: add device flow auth endpoints and consent screen by @tomasz-tomczyk in #79
  • feat: simplify device auth — remove user code entry, use URL-based session linking by @tomasz-tomczyk in #80

Dashboard and settings

  • feat: split dashboard into personal + admin views with site-wide sign-in by @tomasz-tomczyk in #82
  • feat: add Settings page with API tokens and account deletion by @tomasz-tomczyk in #81
  • feat: settings panel and content width toggle (crit parity) by @tomasz-tomczyk in #84

Review viewer

Fixes

Tests

Internal refactors

  • chore: remove design spec and plan docs by @tomasz-tomczyk
  • chore(deps): bump mermaid from 11.13.0 to 11.14.0 in /assets by @dependabot in #74
  • chore(deps-dev): bump lazy_html from 0.1.10 to 0.1.11 by @dependabot in #75
  • chore(deps): bump hammer from 7.2.0 to 7.3.0 by @dependabot in #76

Marketing pages

v0.3.0

What’s Changed

This release brings GitHub OAuth login to crit-web, completing the authentication story for hosted users. Alongside that, the two-way review workflow gets its web-side half — crit fetch now syncs rounds and comments back from the web, with a round diff UI to see what changed. Mobile gets a significant overhaul too: a proper dashboard header with hamburger menu, a tokens page, and a round of polish across the review UI.

GitHub OAuth login

Users can now sign in with their GitHub account via OAuth — no manual token setup required. The privacy policy and terms of service have been updated to cover what data is stored and how it’s used.

Two-way review workflow

The share sync feature now upserts rounds, shows a round diff UI, and propagates comments — giving you a full picture of what changed between shares. Pair this with the new crit fetch command to pull web comments back into your local session.

  • feat: share sync — upsert rounds, round diff UI, comment propagation (#51) by @tomasz-tomczyk in #51
  • feat: add crit fetch support for two-way review workflow (#55) by @tomasz-tomczyk in #55

Mobile

Comment navigation

  • feat: add prev/next comment navigation with ] and [ shortcuts (#57) by @tomasz-tomczyk in #57
  • fix: account for sticky file header in comment navigation scroll (#67) by @tomasz-tomczyk in #67

Self-hosting

Fixes

  • fix: suggestion diff now shows original quote as before-line and works in multi-file reviews (#53) by @tomasz-tomczyk in #53
  • fix: don’t encourage AI to resolve comments (#56) by @tomasz-tomczyk in #56
  • fix: parity ports from crit, fix dashboard tests, format heex (#60) by @tomasz-tomczyk in #60
  • fix: audit fixes — session key, transaction safety, auth dedup, tests (#61) by @tomasz-tomczyk in #61
  • fix: audit frontend fixes — resize leak, CSS vars, ARIA, inline script (#62) by @tomasz-tomczyk in #62
  • fix: revert green stats to text-green-400, add desktop API Tokens link, widen footer (#63) by @tomasz-tomczyk in #63

Internal refactors

  • style: replace arbitrary font-size classes with Tailwind scale by @tomasz-tomczyk
  • test: isolate review_live tests from SELFHOSTED env var (#65) by @tomasz-tomczyk in #65
  • chore(deps): bump phoenix_live_view from 1.1.27 to 1.1.28 (#58) by @dependabot in #58
  • chore(deps): bump bandit from 1.10.3 to 1.10.4 (#59) by @dependabot in #59

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.2.2…v0.3.0

Contributors

v0.2.2

What’s changed

  • Support individual DB_HOST, DB_USER, DB_PASSWORD, DB_NAME (and DB_PORT) env vars as an alternative to DATABASE_URL
  • Add DB_SSL=true for encrypted database connections (no cert verification — recommended for AWS RDS)
  • Add DB_SSL_CA_CERT=/path for full verify_peer SSL with a custom CA certificate
v0.2.1

What’s Changed

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.2.0…v0.2.1

Contributors

v0.2.0

What’s Changed

We have a new home - https://crit.md/ - tell your friends! The previous domain, crit.live will continue to work for now.

General

SEO / Static pages

Internal improvements

  • Fetch integration snippets at runtime instead of compile time (#32) by @tomasz-tomczyk in #32
  • fix: move integrations inline script to app.js and update integration metadata by @tomasz-tomczyk
  • fix: apply mix format to HEEx templates by @tomasz-tomczyk
  • fix: use 308 redirect to preserve POST method on host redirect (#35) by @tomasz-tomczyk in #35
  • fix: honor forwarded https on canonical host redirects by @tomasz-tomczyk
  • fix: demo review leaking non-imported replies by @tomasz-tomczyk

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.1.1…v0.2.0

Contributors

v0.1.1

What’s Changed

Docs

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.1.0…v0.1.1

v0.1.0

Initial open source release

The hosted share target for crit — share code reviews with a link.

Features

  • Share reviews from the crit CLI
  • Review page with inline comments, keyboard shortcuts, file tree, theme switching
  • Multi-file review support
  • Comment creation, editing, and deletion with author identity
  • Table of contents for markdown documents
  • Auto-expiring reviews (30 days of inactivity)

Self-hosting

  • Docker image published to GHCR (ghcr.io/tomasz-tomczyk/crit-web:0.1.0)
  • Auto-migrations on container startup
  • Configurable SSL, URL scheme, and port for reverse proxy setups
  • Health check endpoint at /health
  • Example docker-compose in contrib/

See the README for setup instructions.