Releases

Changelog.

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

v0.18.1

What's Changed

Documentation and maintenance

  • chore(readme): update top level readme with correct go install command (#742) by @jacob-winkler in #742 - Thank you!
  • chore: remove Go Report Card badge (#746) by @tomasz-tomczyk in #746
v0.18.0

What's Changed

Story review mode

  • feat: add story review mode (#735) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/735

Share improvements

  • feat: honor instance share policy in share modal (#734) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/734
  • fix: reshare when remote review was deleted (#730) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/730

Command hooks

  • feat: add command hooks for finish lifecycle side effects (#726) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/726
  • test: improve command hooks coverage (#727) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/727

General

  • fix: preserve unstaged changes in branch-added files (#736) by @makotodejima in https://github.com/tomasz-tomczyk/crit/pull/736 - Thank you @makotodejima for contributing!
  • fix: highlight .rake files as Ruby (#732) by @kizashi1122 in https://github.com/tomasz-tomczyk/crit/pull/732 - Thank you @kizashi1122 for contributing!
  • fix: stop all repo sessions (#731) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/731
  • fix: remove confusing opencode sharing plugin install hint (#725) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/725
  • fix: tolerate trailing commas in opencode config during plugin registration (#724) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/724

Dependencies

  • chore(deps-dev): bump eslint from 10.5.0 to 10.6.0 (#722) by @app/dependabot in https://github.com/tomasz-tomczyk/crit/pull/722
  • chore(deps): bump mermaid from 11.15.0 to 11.16.0 (#721) by @app/dependabot in https://github.com/tomasz-tomczyk/crit/pull/721
  • chore(deps): bump markdown-it from 14.2.0 to 14.3.0 (#720) by @app/dependabot in https://github.com/tomasz-tomczyk/crit/pull/720
  • chore(deps-dev): bump stylelint from 17.13.0 to 17.14.0 (#719) by @app/dependabot in https://github.com/tomasz-tomczyk/crit/pull/719
  • chore(deps): bump browser-actions/setup-chrome from 1 to 2 (#718) by @app/dependabot in https://github.com/tomasz-tomczyk/crit/pull/718
v0.17.1

What's Changed

Live mode: Chrome DevTools cookies

crit live can pull upstream session cookies from a local Chrome debugging endpoint (--cdp-url or live_cdp_url in config). Manual --cookie values still win when names collide.

  • feat: reuse Chrome DevTools cookies in crit live (#706) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/706

Range mode: working changes and stack orientation

  • feat: add virtual working changes entry in commit picker (#708) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/708 - Thank you @omry for suggesting!
  • feat: add stack popover orientation cues for issue 537 (#710) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/710 - Thank you @omry for suggesting!

General

  • fix: route bare GitHub PR URLs to range mode (#705) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/705 - Thank you @hitochan777 for reporting!
  • fix(claude-code): restore trigger clause in crit skill description (#711) by @prateek in https://github.com/tomasz-tomczyk/crit/pull/711 - Thank you!
  • chore: align printHelp output (#707) by @pqppq in https://github.com/tomasz-tomczyk/crit/pull/707 - Thank you!
  • fix: block share/fetch/unpublish CLI when proxy_auth is enabled (#712) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/712 - Thank you @jbrooksbartlett for raising!
  • fix: sync session memory after UI comment pull (#713) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/713 - Thank you @jbrooksbartlett for raising!
  • fix: address v0.17.0 post-release audit findings (#714) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/714
  • fix: dedupe review comments to prevent duplicate edit forms (#717) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/717
  • fix: filter virtual compare target and bump claude-code plugin version (#716) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/716
  • docs: clarify cleanup_on_approve default and /crit usage (#709) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/709

Internal refactors

  • chore: pin golangci-lint in mise and auto-enable git hooks in worktrees (#715) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/715
v0.17.0

What's Changed

Session finish hooks

You can now create your own instructions for when you finish a round or the whole review. Some of the use cases you may want to think about:

  • Directing agent to execute tasks with sub-agents to save your main conversation's context, if there's >5 comments to act on
  • Saving feedback from the review after approval in your knowledge base, to inform future work

See some examples and a guide here

  • feat: user-defined finish prompt hooks with project trust flow (#695) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/695

General

  • feat: add crit --session for cwd-independent review reconnect (#686) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/686
  • feat: configurable advertised URL for reverse-proxy access (#690) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/690
  • feat: scroll anchored element into view when a comment is tapped (#699) by @csharp-neet in https://github.com/tomasz-tomczyk/crit/pull/699 - Thank you!
  • feat: compare-against picker and commit from/through controls (#688) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/688 - Thank you @omry for suggesting!
  • fix: render PR diff hunks when default scope is branch (#704) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/704 - Thank you @hitochan777 for reporting!
  • fix: serialize crit share with per-review flock (#703) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/703
  • fix: resolve relative markdown image paths in file mode (#698) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/698
  • fix: reject --json with --reply-to on crit comment (#697) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/697
  • fix: guard null commitList in file-changed handler (#696) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/696
  • fix: resolve/delete preview comments imported from crit-web (#684) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/684

Documentation

  • docs: expand Codex plugin installation guide (#687) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/687

Internal refactors

  • chore(deps): bump actions/cache from 5 to 6 (#694) by @dependabot[bot] in https://github.com/tomasz-tomczyk/crit/pull/694
v0.16.5

What's Changed

Hotfix for v0.16.4: on finishing a review round, we now again include the full comment payload from review.json (including dom_anchor, replies, and other fields). The finish modal copy prompt is also clearer for agents, with an explicit crit comments --json path and a single next-command line when changes are requested.

Fixes

  • fix: include full comment fields in finish output and improve copy prompt (#683) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/683

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.16.4...v0.16.5

v0.16.4

What's Changed

  • feat: add configurable open command (#671) by @ekisu in https://github.com/tomasz-tomczyk/crit/pull/671 - Thank you!
  • feat: add crit comments command to list unresolved review comments (#677) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/677 - Thank you @pstibrany for suggesting!
  • feat: structured comments in crit finish stdout (#678) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/678 - Thank you @ekisu for suggesting!
  • fix: keep default-branch review visible after agent commits (#681) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/681
  • fix: finish button ignores hidden unresolved comments on commit switch (#679) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/679

Internal refactors

  • chore(deps): bump actions/checkout from 6 to 7 (#672) by @dependabot[bot] in https://github.com/tomasz-tomczyk/crit/pull/672
v0.16.3

What's Changed

  • feat: configurable globs auto-marked as viewed on launch by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/666 - Thank you @markjaquith for suggesting!
  • fix(pr): diff PRs from the merge-base, not the base-branch tip by @inyono in https://github.com/tomasz-tomczyk/crit/pull/659 - Thank you!
  • docs: update readme by @ValeriaVG in https://github.com/tomasz-tomczyk/crit/pull/645 - Thank you!
  • perf: delegate diff comment-button mousedown instead of per-button listener by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/665 - Thank you @pedromachados for reporting!
  • fix: accept @-prefixed file paths from agent file pickers by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/664 - Thank you @cheyne75 for reporting!

Internal refactors

  • refactor: align repo layout with Go project standard by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/655
  • refactor: remove dead alias and fix stale comments from release audit by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/668
  • chore(deps): bump codecov/codecov-action from 6 to 7 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/660
  • chore(deps-dev): bump eslint from 10.4.1 to 10.5.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/663
  • chore(deps-dev): bump esbuild from 0.28.0 to 0.28.1 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/662
  • chore(deps-dev): bump stylelint from 17.12.0 to 17.13.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/661
v0.16.2

What's Changed

Live mode: authenticated apps

crit live now accepts --cookie / --cookie-file (and matching config keys) to forward upstream session cookies through the proxy — useful for server-rendered apps that require login.

  • feat(live): forward upstream cookies for authenticated apps (#649) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/649 - Thank you @kattsushi for suggesting!

General

  • feat: show file renames without content changes like GitHub (#640) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/640
  • fix: use raw bind address for internal HTTP calls to avoid IPv6 mismatch by @tomasaschan in https://github.com/tomasz-tomczyk/crit/pull/634 - Thank you!
  • fix: sort files with GitHub byte order instead of localeCompare (#637) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/637 - Thank you @ekisu for suggesting!
  • fix: preserve j/k focus across hover and comment form re-renders (#638) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/638 - Thank you @markjaquith for reporting!
  • fix: align split diff rows positionally to preserve line number order (#647) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/647 - Thank you @pstibrany for reporting!
  • fix: inject crit-agent into all preview HTML pages (#641) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/641
  • fix(windows): retry transient ENOENT during concurrent review reads (#650) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/650

Internal refactors

  • refactor: move Go sources to cmd/crit and slim repo root (#639) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/639
  • fix(test): stabilize TestBindProxyServer_PortIsAPIPlusOne (#643) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/643
v0.16.1

What's Changed

  • feat: multi-commit selection in commit picker by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/629 - Thank you @briankung for suggesting!
  • feat: add "ignore whitespace" diff setting by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/628 - Thank you @omervk for suggesting!
  • fix: align line numbers with rendered markdown text by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/632 - Thank you @hal-shin for reporting!
  • fix: align and keyboard-enable the commit picker "All commits" row by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/633
  • Add Cursor rules synced from .claude/rules for file-scoped agent guidance. by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/commit/39eac5b

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.16.0...v0.16.1

v0.16.0

What's Changed

Shareable preview mode

The in-UI Share button now works in preview mode (previously files mode only). An HTML/CSS asset crawler builds a self-contained snapshot — text inlined, binaries base64-encoded — and crit share --preview uploads a standalone snapshot straight from the CLI. The whole Share flow was extracted into a shared module so code-review and preview render identical behavior, and preview comments now round-trip cleanly to crit-web.

  • feat(preview): shareable preview mode — share, comment sync, parity by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/626

crit stats

A new crit stats command reports your lifetime review statistics — sessions, total duration, files, and comments — alongside fun insights like your busiest day and longest session. Stats record to ~/.crit/stats.json on approval and daemon shutdown (with dedup), support a --json flag for scripting, and can be turned off entirely via the disable_stats config key.

  • feat: add crit stats command for lifetime review statistics by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/613

Session summary on exit

Finishing a review now shows a shareable receipt line in the approval modal — Done reviewing — 12 files · 5 comments · 15m — with a copy button, confetti on approval (respecting prefers-reduced-motion), and the same summary printed to stderr on approved exit.

  • feat: show session summary on exit by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/620

General

  • feat: badge GitHub-synced comments and propagate github_id to share payload by @Ylsssq926 in https://github.com/tomasz-tomczyk/crit/pull/604 - Thank you!
  • fix: default to branch scope on first launch by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/614
  • fix: prevent scope=branch from leaking files outside range mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/617
  • fix: skip binary files in git mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/616
  • fix: skip --share-url confirm prompt when stdin is not a TTY by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/625
  • fix: restore brand tint on target branch chip by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/612
  • docs: document make test-diff seed harness and integration tests in CONTRIBUTING by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/622

Internal refactors

  • refactor: remove migrateLegacySettings cookie migration by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/615
  • fix(e2e): de-flake stack popover and attribute-thrash specs at the race source by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/627
  • fix(e2e): scope unified mode assertions to expanded file sections by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/619
  • perf(ci): shard git-mode E2E tests to halve wall time by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/611
  • chore: make fresh worktrees and e2e work out of the box by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/621
  • chore(deps): bump markdown-it from 14.1.1 to 14.2.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/623
  • chore(deps-dev): bump eslint from 10.4.0 to 10.4.1 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/624
v0.15.4

What's Changed

General

  • Add Codex plugin support by @prateek in https://github.com/tomasz-tomczyk/crit/pull/525 - Thank you!
  • feat: improve mobile usability by @LucasRoesler in https://github.com/tomasz-tomczyk/crit/pull/607 - Thank you!
  • feat: shadow DOM host fallback for live/preview pin mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/599 - thank you @dankilman for reporting!
  • feat: interactive confirmation when --share-url is passed by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/601
  • feat: grant all permissions to live-mode iframe by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/608 - Thank you @robmckinnon for reporting!
  • style: redesign drifted badge with icon and amber card border by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/602 - Thank you @autumnust for suggesting!
  • fix: show clear error when running crit outside a git repo (#593) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/598 - Thank you @GustavoCaso for reporting!
  • fix: crit unpublish accepts file args to match crit share by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/600

Internal

  • chore(deps-dev): bump stylelint from 17.11.1 to 17.12.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/603
  • fix: skip file permission assertion on Windows by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/609
  • fix: delete dead codexPluginSourceRoot, use logPrefix consistently by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/610
v0.15.3

What's Changed

Features

  • feat: add heading anchor links with copy-to-clipboard by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/595 - Thanks @omervk for the idea!
  • feat: warn when directory args may cause slow loading by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/592

Fixes

  • fix: surface daemon log on connection refused by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/594 - Thank you @GustavoCaso for reporting!
  • fix: use configured host in daemon startup messages by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/591
  • fix: use session host for internal HTTP calls instead of hardcoded 127.0.0.1 by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/596
  • fix: remove scrollIntoView on pin highlight that hijacked scroll-driven pages by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/590
  • fix: harden heading anchor links — dedup IDs, a11y focus, clean CSS by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/597

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.15.2...v0.15.3

v0.15.2

What's Changed

Features

  • feat: detect installed AI tools and suggest crit integration by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/581

Fixes

  • fix(watch): rescan CLI dir args between rounds so files created by the agent appear in the UI by @autumnust in https://github.com/tomasz-tomczyk/crit/pull/586 - Thank you!
  • fix: restore marker badges and add click-to-scroll for live-mode comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/580
  • fix: preserve URL path in live mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/582
  • fix: prevent 404 when clicking comments in preview mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/583
  • fix: open comments panel when starting a pin comment by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/584
  • fix: next_command for live/preview modes includes subcommand prefix by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/587
  • fix: prevent flash timer stacking and extract agent name formatter by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/589

Documentation

  • docs: sync README with crit-web homepage messaging by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/585

Internal refactors

  • refactor: extract shared agent script list and add version-match for ambiguous agent probes by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/588

Contributors

v0.15.1

What's Changed

General

  • feat: add reply awareness to agent instructions across all integrations by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/575
  • feat: set document title and tab badge for live/preview modes by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/574

Fixes

  • fix: forward CLI flags to preview, live, and plan daemon modes by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/577
  • fix: forward noOpen flag to preview daemon, fix stale env var in tests by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/579
  • fix: re-sync pin mode to agent after round transition by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/576
  • fix: hide marker badges when target element is detached or zero-size by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/573
  • fix: restore "Copied" feedback on review-complete copy prompt button by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/572

Internal

  • fix: scope pre-commit lint/test to current worktree only by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/578
  • fix: assert final upload URL in reply paste test instead of transient placeholder by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/571

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.15.0...v0.15.1

v0.15.0

What's Changed

Live mode

Live mode brings crit's interactive review experience to running pages — review a live dev server with pin comments anywhere on the rendered page. Invoke it with /crit http://localhost:3000 in your agent chat.

  • feat: design mode and shared frontend module architecture by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/555

Preview mode

Preview mode does the same for local HTML files: point crit at a built page and it renders in an iframe so you can drop pin comments directly on the output, no server required. Invoke it with /crit index.html in your agent chat.

  • feat: preview mode — render local HTML files in iframe with pin commenting by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/559 - Thank you @autumnust for suggesting!

Fixes

  • fix: install opencode command to global config dir by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/568 - Thank you @pksunkara for reporting!
  • fix: fire design-round-start SSE for preview reviews by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/566
  • fix: open browser at /preview in preview mode daemon by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/564

General

  • feat: refresh waiting-modal tips by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/563
  • feat: add pre-commit check for unicode curly quotes in JS files by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/562
  • feat: add live and preview mode detection to agent skill prompts by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/561

Internal refactors

  • refactor: consolidate duplicate embedded-asset handlers by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/570
  • refactor: remove dead live-mode CSS and orphaned theme vars by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/569
  • refactor: rename design mode to live mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/567
  • refactor: audit cleanup — consolidate helpers, remove dead CSS, fix preview by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/565
  • refactor: extract files/vcs rendering from app.js into shared modules by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/556
  • fix: wait for image upload handler before paste in flaky e2e test by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/558

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.14.0...v0.15.0

v0.14.0

What's Changed

Organization support for sharing

Reviews can now be shared under an organization. The --org and --visibility flags on crit share let you publish to an org with organization, unlisted, or public visibility. The share modal in the browser also gained an org picker with remember-choice persistence.

  • feat: add org support for review creation (CRI-61) (#551) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/551

Features

  • feat: add Grok Build integration (#544) by @danlindow in https://github.com/tomasz-tomczyk/crit/pull/544 - Thank you!
  • feat: proxy_auth browser relay for SSO-proxied crit-web (#550) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/550 - Thank you @jbrooksbartlett for support and testing!

Fixes

  • fix: reverse stack popover order and clarify base label (#552) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/552 - Thank you @omry for suggesting!
  • fix: pre-release cleanup (dead code, missing style, silent decode error) (#554) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/554

Internal refactors

  • refactor: rename "Layer" to "This commit" in scope toggle (#553) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/553 - Thank you @omry for suggesting!
  • chore(deps): bump mermaid from 11.14.0 to 11.15.0 (#547) by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/547
  • chore(deps-dev): bump stylelint from 17.11.0 to 17.11.1 (#548) by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/548
  • chore(deps-dev): bump eslint from 10.3.0 to 10.4.0 (#549) by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/549
v0.13.1

What's Changed

Features

  • feat: add resolve/unresolve button to sidebar comment cards by @Amwam in https://github.com/tomasz-tomczyk/crit/pull/532 - Thank you!
  • feat: add copy-path buttons to file headers and navbar by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/538 - Thank you @menzenski for suggesting!
  • feat(frontend): redesign waiting modal with collapsed prompt and usage tips by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/539
  • feat: add HEEx syntax highlighting for .heex/.leex files by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/542

Fixes

  • fix: add dedup guard to all inline resolve/unresolve buttons by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/540
  • fix(frontend): polish copy-path buttons and resolve-btn light theme by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/543

Internal

  • ci: test Windows jobs on VS 2026 preview image by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/531

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.13.0...v0.13.1

What's Changed

  • ci: test Windows jobs on VS 2026 preview image by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/531
  • feat: add resolve/unresolve button to sidebar comment cards by @Amwam in https://github.com/tomasz-tomczyk/crit/pull/532
  • feat(frontend): redesign waiting modal with collapsed prompt and usage tips by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/539
  • feat: add copy-path buttons to file headers and navbar by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/538
  • fix: add dedup guard to all resolve/unresolve buttons by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/540
  • feat: add HEEx syntax highlighting for .heex/.leex files by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/542
  • fix(frontend): polish copy-path buttons and resolve-btn light theme by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/543

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.13.0...v0.13.1

Contributors

v0.13.0

What's Changed

Image copy/paste support in reviews

You can now paste images directly into review comments. Drag-and-drop and clipboard paste are both supported — images are embedded inline in the comment body.

  • feat: image copy/paste support in review by @SamuelTissot in https://github.com/tomasz-tomczyk/crit/pull/505 - Thank you!

General

  • feat: add Pi Coding Agent integration by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/520 - Thank you @nisrulz for suggesting!
  • feat(opencode): conditionally inject sharing instructions via plugin by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/524 - Thank you @markjaquith for suggesting!
  • feat: first-time share consent gate + redesigned post-share modal by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/522
  • feat: linkify comment IDs in comment bodies by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/515

Fixes

  • fix: highlight markdown diff in document view in vcs mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/523 - Thank you @matdurand for reporting!
  • fix: split nested list items into individual line blocks by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/514
  • fix: keyboard accessibility for comment refs and modal focus management by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/529
  • fix: generate agent list dynamically in help text and add missing config keys by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/528

Security

  • fix: block DNS-rebinding by validating Host header on loopback server by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/517 - Thank you @minac for reporting!
  • security: make share_url global-only to prevent auth token exfiltration by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/516 - Thank you @minac for reporting!
v0.12.0

What's Changed

Jujutsu VCS backend

crit now auto-detects .jj (before .git), supports --vcs jj and "vcs": "jj" in config, resolves the review base via trunk() with main / master / trunk bookmark fallback, and uses jj diff --git so existing diff rendering works unchanged. Colocated jj/git repos default to jj.

Vim-style visual line mode

Press Shift+V on a focused block to enter visual line mode; j/k extend the selection from the anchor; c opens a comment form spanning the range; Esc or Shift+V exits. Works for markdown line-blocks and diff lines (split + unified). The focused block's left accent turns amber while in visual mode.

General

  • Add Jujutsu VCS backend support by @solodov in https://github.com/tomasz-tomczyk/crit/pull/491 - Thank you!
  • feat: vim-style visual line mode (V) for multi-line comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/510 - Thank you @markjaquith for suggesting!
  • feat: collapse linguist-generated files by default (#503) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/504 - Thank you @matdurand for suggesting!
  • feat: configurable listen host (--host / CRIT_HOST) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/496 - Thank you @kaihendry for suggesting!

Integrations

  • feat: add Gemini CLI integration by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/488 - Thank you @sirjagman for suggesting!
  • feat: add Qwen Code integration by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/500 - Thank you @reneleonhardt for suggesting!
  • feat: add Hermes Agent integration by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/498 - Thank you @nisrulz for suggesting!

Fixes

  • fix: keyboard-nav line highlight visible in light mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/507 - Thank you @markjaquith for reporting!
  • fix: branch-scope diff renderer no longer shows stale cached lines by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/511

Internal refactors

  • test(e2e): reduce flakiness and cache Go build in CI by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/489
  • test(e2e): deeper flakiness audit — retrying assertions and CI guards by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/490
  • ci: install jj so JJ backend tests run by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/493
  • ci: install sapling so SL backend tests run by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/497
  • ci: fail if integration_hashes_gen.go is out of sync by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/501 - Thank you @reneleonhardt for raising!
  • test: expand jj VCS coverage by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/502
  • refactor: drop jj parser wrappers; call shared sapling parsers directly by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/512
  • ci: run frontend/test-diff-render.mjs in test-frontend target by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/513
  • chore(deps-dev): bump stylelint from 17.9.1 to 17.11.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/508
v0.11.0

What's Changed

Big milestone! Crit crossed more than 500 commits and 250 stars. You can now install it directly from homebrew and we released a Windows version!

Thank you to everyone who contributed to get us here! I'd appreciate if you would share it with your colleagues or on Twitter! It helps a lot!


crit is now in homebrew-core — no tap needed. If you installed from the tap, upgrade once with:

brew uninstall crit && brew untap tomasz-tomczyk/scratch && brew update && brew install crit

Future updates will arrive via brew upgrade like any other formula.

Windows + WSL support

feat: add Windows + WSL support replaces Unix-only syscalls with cross-platform abstractions, adds rundll32 browser launch on native Windows, and keeps the existing WSL fallback chain. crit now works end-to-end on Windows natively.

  • feat: add Windows + WSL support by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/459

General

  • feat: add --file flag and better errors to crit comment --json by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/480
  • fix: deny rather than silently auto-approve on daemon shutdown by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/483 - Thank you @TalAmuyal for raising!
  • fix: remove daemon 1h idle timeout by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/477 - Thank you @TalAmuyal for reporting!
  • fix: audit fixes — path safety, shared reads, dir pruning by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/485
  • fix: chain reloadForScope when scope/commit changes mid-flight by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/482
  • fix: scope unified diff comment highlight to commented side by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/479
  • fix: header context chip colors and hidden unresolved count by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/486
  • fix: preserve CLI argument order for files by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/474
  • docs: switch primary brew install to homebrew-core by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/481 - thanks @omervk for contributing to homebrew on our behalf!
  • docs: cleanup stale spec by @tomasz-tomczyk
  • refactor: drop auto-detection of stacked PRs / local stacks by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/478

Full Changelog: https://github.com/tomasz-tomczyk/crit/compare/v0.10.5...v0.11.0

v0.10.5

What's Changed

A maintenance release with broad fixes across the GitHub PR roundtrip, the comment-sync push/pull pipeline, and the local review UI — plus accessibility polish on the sidebar resize handles, a distinct "Approved" state on the review-finish modal.

General

  • feat: distinct "Approved" state for review-finish modal by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/427
  • feat: keyboard-accessible sidebar resize handles by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/469
  • feat: per-round timeline backend (Stage 1) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/460
  • style: bump comment input font-size to 14px by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/441
  • style: align textarea line-height with rendered comment bodies by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/444

Fixes

  • fix: tie agent goroutine to daemon shutdown ctx + add runGit helper by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/433
  • fix: small correctness nits (bulk parser err, scheduleWrite doc, dup mkdir) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/432
  • fix: use 127.0.0.1 in internal HTTP clients to match daemon bind by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/436 (Thanks @perbu for reporting)
  • fix: clean message when running crit on a repo with no changes by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/439 (Thanks @perbu for reporting)
  • fix: hide TOC toggle for single-heading documents by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/443
  • fix: propagate local comment deletes to GitHub on push by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/461
  • fix: import GitHub thread resolved state on crit pull by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/462
  • fix: detect mid-push auth rotation and abort cleanly by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/463
  • fix: prefers-reduced-motion spinner gap; rename waitingHasComments; annotate reflow line by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/465
  • fix: relax comment drift detection for in-place edits by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/466
  • fix: atomically rewrite auth_token + identity on login by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/468
  • fix: close finish-review modal on backdrop click by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/470
  • fix: allow --range/--pr on clean working tree by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/472 (Thanks @ewgdg for reporting!)
  • fix: backward selection across blank-line boundary by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/473 (Thanks Matt for reporting!)

Documentation

  • docs: rewrite AGENTS.md with blocks by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/431

Internal refactors

  • chore: post-v0.10.4 audit cleanup by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/426
  • fix: post-v0.10.4 release audit cleanup by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/475
  • refactor: bundled cleanup — wrappers, mustGetwd, browser.go, error surfacing by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/428
  • refactor: extract review-file CLI logic out of github.go by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/429
  • refactor: consolidate atomic-file-write helpers by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/430
  • refactor: split main.go and session.go into focused files by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/434
  • refactor: release audit cleanup — atomic writes, flag parsing, dead code by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/464
  • test: cover gaps in atomic write, auth, watch, sapling, parsers by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/440
  • test: GitHub PR roundtrip integration harness by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/445
  • test: wait for PR head sha after force-push in roundtrip harness by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/457
  • test: integration coverage for resolved_round mapping by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/467

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

Contributors

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).

  • feat: resizable file-tree and comments-panel sidebars by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/422 — Thanks @hbogaeus for suggesting!

General

  • feat: print "Next round" command on review exit + restructure agent prompts by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/421
  • feat: consolidate settings cookies, restore update dismiss by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/418
  • docs: add SECURITY.md by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/420
  • fix: confirm before discarding non-empty comment draft on Escape by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/415
  • fix: prevent review comment form re-opening pre-populated after submit by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/419
  • fix: skip stack autodetect in file mode; remove CRIT_NO_AUTODETECT by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/423
  • fix: route crit comment --json bulk to alt review file by reply ID by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/424

Internal refactors

  • chore(deps-dev): bump eslint from 10.2.1 to 10.3.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/416
  • chore(deps-dev): bump stylelint from 17.9.0 to 17.9.1 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/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.

  • feat: PR-scoped and commit-range review (#300) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/391 (Thanks @omry for the suggestion!)

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).

  • feat: give review-level comments a real conceptual home by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/405 (Thanks @omry for the suggestion!)

Fixes

  • fix: prefer origin/ as diff base over stale local branch by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/397 (Thanks @TheCoreMan for reporting!)
  • fix: persist verified user_id on auth login by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/393
  • fix: thread resolved share URL into lazyBackfillAuthUserID by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/398
  • fix: bulletproof external diff isolation (#380) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/409 (Thanks @TheCoreMan for reporting!)
  • fix: require c keypress to comment on selection (#408) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/411 (Thanks @ewgdg for the suggestion!)
  • fix: patch hljs markdown grammar and re-enable for diff view by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/388 (Thanks @hbogaeus for reporting!)

Documentation

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

Internal refactors

  • chore: post-release audit fixes (Go backend) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/389
  • chore: post-release audit fixes (frontend) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/390
  • refactor: return errors from installAider; unify integration list by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/394
  • chore: wire markdown-patch smoke test into CI by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/395
  • ci: run nix build check on PRs by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/396 - Thanks @vereis for reporting!
  • test: add selfhosted+OAuth integration test suite by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/400
  • ci: fix invalid codecov.yml so status checks wait for all uploads by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/402
  • test: integration test for review-level reply round-trip by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/407
  • test: stabilize range-mode popover tests against async render by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/410
  • refactor: clean up frontend dead code and fix review:new draft loss by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/413

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

v0.10.2

What's Changed

  • feat: send + cache verified author identity on share by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/371
  • fix: persist verified user_id on auth login by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/393

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

  • feat: distinct "Approved" state for review-finish modal by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/381
  • feat: improve agent integrations with global install + aider automation by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/373
  • fix: patch hljs markdown grammar and re-enable for diff view by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/388 (Thanks @hbogaeus for reporting!)
  • fix: keep SSE alive past idle timeout (Safari "Connection lost") by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/376 (thanks Jared for reporting!)
  • fix: expand hljs language coverage via alias resolution by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/378
  • fix: Ctrl+Enter to save when editing replies (#382) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/386 (Thanks @hbogaeus for reporting!)
  • fix: align light theme with modern GitHub for visible diff highlights by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/387 (Thanks @hbogaeus for reporting!)
  • fix: Change comment submit button text to 'Add comment' by @TalAmuyal in https://github.com/tomasz-tomczyk/crit/pull/385 - Thank you!
  • fix: strip GIT_* env from test process to prevent worktree corruption by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/383
  • docs: Docker recipe for sandboxed agents by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/372 (Thanks Jared for the suggestion!)
  • chore: wait for unit + e2e uploads before codecov status by @tomasz-tomczyk
  • chore: pre-release audit fixes (Go backend) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/389
  • chore: pre-release audit fixes (frontend) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/390
  • refactor: return errors from installAider; unify integration list by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/394
  • chore: wire markdown-patch smoke test into CI by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/395
  • chore: move mise-trust to pre-start so worktree shell can load mise by @tomasz-tomczyk
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 https://github.com/tomasz-tomczyk/crit/pull/354 - thanks @omervk for suggestions in this area!

General

  • feat: redesign disconnected state as a sticky banner by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/347 - Thanks @vereis for inspiration!
  • feat: add hide-resolved setting for inline comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/353 - Thanks @vereis for the suggestion!
  • feat: store CLI args in review file and include in share payload by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/349
  • feat: replace custom LCS word-diff with @sanity/diff-match-patch by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/348
  • fix: remove blur/scrim overlay from disconnected state by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/352
  • fix: fetch comment replies from crit-web during share sync by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/350
  • fix: hide TOC panel when buildToc is called with no headings by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/360
  • fix: clarify Hide resolved comments label in settings by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/364
  • fix: hide comment-line highlight when 'h' hides resolved comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/365
  • fix: collapse reply form after submit; auto-close empty comment forms by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/366
  • fix: preserve replies on fingerprint-matched comments + cleanup by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/367

Internal refactors

  • docs: update plugin install instructions to claude CLI syntax by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/351
  • docs: rule on cookies vs localStorage for persisted settings by @tomasz-tomczyk
  • chore: remove releasing section from AGENTS.md by @tomasz-tomczyk
  • chore: add Codecov integration for unit and e2e coverage by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/359
  • chore: Exclude vendored Go packages from coverage profile by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/361
  • test: add unit tests for high-value uncovered functions by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/362
  • test: add comprehensive tests for server handlers, session, auth, and daemon by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/363
  • chore: update GitHub Actions to latest versions, add dependabot by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/355
  • chore(deps-dev): bump stylelint from 17.7.0 to 17.9.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/356
  • chore(deps): bump mermaid from 11.13.0 to 11.14.0 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/357
  • chore(deps-dev): bump eslint from 10.2.0 to 10.2.1 by @dependabot in https://github.com/tomasz-tomczyk/crit/pull/358
  • chore: copy mermaid 11.14.0 to frontend/ by @tomasz-tomczyk
  • chore: add mise trust to wt.toml post-start and fix e2e-share rate limiting by @tomasz-tomczyk
  • refactor: hide-resolved state, persist filter, restore switch CSS by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/368
  • refactor: port hook lifecycle and a11y fixes from crit-web for parity by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/369

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 https://github.com/tomasz-tomczyk/crit/pull/337
  • feat: add expand controls before first and after last diff hunk (#338) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/338
  • feat: expand diff context incrementally (20 lines per click) (#339) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/339
  • feat: GitHub-style diff expand controls with gutter icons (#343) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/343
  • fix: auto-expand diff spacers when comments exist on folded lines (#333) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/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 https://github.com/tomasz-tomczyk/crit/pull/324
  • feat: render outdated comments inline when lines leave diff hunks (#325) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/325
  • fix: preserve GitHubID in carryForwardComment to prevent duplicate PR comments (#340) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/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!)

  • feat: add Sapling SCM support (#295) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/295
  • fix: separate Sapling override from auto-detected default branch (#346) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/346

General

  • feat: migrate to crit design system (#327) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/327
  • feat: print review file path in crit fetch output (#341) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/341
  • fix: add response.ok checks and fix doFinishReview error recovery (#344) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/344
  • fix: preserve reply form state when opening new comment forms (#323) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/323
  • fix: match reply form font size to comment form (#322) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/322
  • fix: add --no-ext-diff to git diff commands to support external diff tools (#318) by @Amwam in https://github.com/tomasz-tomczyk/crit/pull/318
  • fix: eliminate ARM64 data race on Server.session pointer (#328) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/328
  • fix: optimize LCS diff from O(m*n) to O(n) space (#329) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/329
  • fix: log writeJSON encode errors instead of silently dropping them (#331) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/331
  • fix: wrap errors in atomicWriteFile with operation context (#330) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/330
  • fix: prevent stale pointer writes in RefreshDiffs (#345) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/345
  • chore: Add benchmarks for ComputeLineDiff to catch LCS performance regressions (#332) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/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 https://github.com/tomasz-tomczyk/crit/pull/305
  • fix: resolve WCAG AA color contrast violations (#274) (#301) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/301
  • fix: add missing --fg-on-accent to light theme, remove dead vars, strengthen CSS guardrails (#315) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/315
  • fix: use server-side Live field for live badge instead of reply author heuristic (#311) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/311
  • fix: resolved live threads now collapse correctly (#308) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/308 - thanks for reporting Aditya!
  • fix: reset viewed state when file content changes between rounds (#310) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/310
  • fix: support crit pull across gh CLI versions (#299) by @omry in https://github.com/tomasz-tomczyk/crit/pull/299 - thanks!
  • fix: improve browser launching on WSL (#298) by @omry in https://github.com/tomasz-tomczyk/crit/pull/298 - thanks!

Tests & internal

  • fix: unify CLI and browser share code paths (#302) (#304) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/304
  • test: fix live-thread E2E test, add light theme a11y check, fix integration test compile error (#316) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/316
  • test: audit and clean up Playwright E2E suite (#306) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/306
  • test: add e2e share integration tests for crit ↔ crit-web (#303) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/303
  • test: verify MergeBase works with origin/main for #313 by @tomasz-tomczyk
  • test(e2e): fix flaky file-picker filter test by @tomasz-tomczyk
  • fix: stabilize integration_hashes_gen.go format across Go versions (#307) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/307
  • feat: update favicons (#312) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit/pull/312

Contributors

v0.10.4

What's Changed

Fixes

  • fix: restore pin mode on isolated preview hosts (#306) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/306 - thanks @omervk for raising!
  • fix: recover LiveView mutations after disconnects (#305) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/305

Internal refactors

  • chore(deps): bump @sentry/browser from 10.63.0 to 10.65.0 in /assets (#301) by @app/dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/301
  • chore(deps): bump sentry from 13.2.0 to 13.3.0 (#302) by @app/dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/302
  • chore(deps): bump postgrex from 0.22.2 to 0.22.3 (#303) by @app/dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/303
  • chore(deps): bump phoenix_live_view from 1.2.5 to 1.2.6 (#304) by @app/dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/304
  • chore(deps): bump phoenix from 1.8.8 to 1.8.9 (#300) by @app/dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/300
  • chore: align review renderer dependencies (#299) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/299

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

v0.10.3

What's Changed

This release introduces configurable instance share policy controls — admins can now set allowed review visibilities and comment policies, enforced across the API and review UI. It also ships a DAST suite that locks down preview-origin session isolation as a permanent security property, plus a fix for loading preview-host raw assets without a canonical-host session.

  • feat: add instance share policy controls by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/298
  • fix: allow preview host raw assets without app session by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/297
  • test: add DAST suite for preview-origin session isolation by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/296

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

v0.10.2

What's Changed

Preview mode isolation

Preview reviews now load from a separate host (e.g. preview.crit.md) so uploaded HTML/JS cannot access session cookies on the main app origin. Self-hosters can configure PREVIEW_HOST; docs cover reverse-proxy setup and ICO registration.

  • feat: isolate preview mode on a dedicated host (#291) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/291
  • fix: allow preview host in CSP frame-src (#292) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/292
  • fix: address release audit findings for preview and host gate (#294) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/294
  • docs: document PREVIEW_HOST self-hosting and ICO registration (#293) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/293

General

  • fix: resolve relative markdown image paths in hosted reviews (#280) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/280
  • docs: add Codex plugin docs to integrations page (#278) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/278
  • chore: skip GitHub stars/changelog pollers on self-hosted (#277) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/277
  • feat: add articles landing page and first tutorial (#281) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/281
  • fix: load articles from release priv and add release smoke CI (#282) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/282

Internal refactors

  • chore(deps): bump actions/cache from 5 to 6 (#279) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/279

Dependency updates

  • chore(deps): bump phoenix_live_view from 1.2.3 to 1.2.5 (#283) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/283
  • chore(deps): bump markdown-it from 14.2.0 to 14.3.0 in /assets (#284) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/284
  • chore(deps): bump mermaid from 11.15.0 to 11.16.0 in /assets (#285) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/285
  • chore(deps): bump mdex from 0.13.1 to 0.13.3 (#286) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/286
  • chore(deps): bump @sentry/browser from 10.59.0 to 10.63.0 in /assets (#287) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/287
  • chore(deps): bump req from 0.6.1 to 0.6.2 (#288) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/288
  • chore(deps): bump tailwind from 0.5.0 to 0.5.1 (#289) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/289
  • chore(deps): bump swoosh from 1.26.1 to 1.26.3 (#290) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/290

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.10.1...v0.10.2

v0.10.1

What's Changed

  • feat: add Umami analytics for hosted deployments (#256) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/256
  • feat: Replace Earmark with MDEx for markdown rendering (#275) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/275
  • feat: show GitHub star count on Star on GitHub CTA (#274) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/274
  • fix: align line numbers with rendered markdown text (#631) (#246) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/246 - Thank you @hal-shin for reporting!
  • fix: allow gateway.umami.is in CSP connect-src (#257) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/257
  • fix: handle expired OAuth sessions and reduce Sentry noise (#276) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/276
  • fix: preserve j/k focus through comment form re-renders (#258) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/258
  • fix: sort review files to match GitHub order (crit#635 parity) (#250) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/250 - Thank you @ekisu for suggesting!
  • perf: delegate diff gutter mousedown to fix large-diff freeze (#271) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/271 - Thank you @pedromachados for reporting!

Internal refactors

  • chore: upload frontend source maps to Sentry during Docker build (#251) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/251
  • fix: declare SENTRY_RELEASE ARG inside Docker builder stage (#252) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/252
  • fix: ensure Sentry sourcemap upload runs in Fly Docker build (#253) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/253
  • fix: upload frontend source maps in deploy CI job (#254) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/254
  • fix: run npm ci before CI sourcemap upload, revert Docker secret env mount (#255) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/255
  • chore: update preview agent sync path for crit web/ layout (#259) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/259
  • Add Cursor rules synced from .claude/rules for file-scoped agent guidance. by @tomasz-tomczyk

Dependency updates

  • chore(deps): bump @sentry/browser from 10.56.0 to 10.59.0 in /assets (#273) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/273
  • chore(deps): bump actions/checkout from 6 to 7 (#272) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/272
  • chore(deps): bump sentry from 13.1.0 to 13.2.0 (#269) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/269
  • chore(deps): bump phoenix_live_view from 1.1.31 to 1.2.3 (#265) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/265
  • chore(deps): bump phoenix from 1.8.7 to 1.8.8 (#268) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/268
  • chore(deps): bump bandit from 1.11.1 to 1.12.0 (#267) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/267
  • chore(deps): bump tailwind from 0.4.1 to 0.5.0 (#266) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/266
  • chore(deps): bump req from 0.5.18 to 0.6.1 (#263) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/263
  • chore(deps): bump @tailwindcss/typography in /assets (#262) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/262
  • chore(deps): bump actions/setup-node from 4 to 6 (#261) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/261
  • chore(deps): bump codecov/codecov-action from 6 to 7 (#260) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/260
  • chore(deps): bump swoosh from 1.25.3 to 1.26.1 (#249) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/249
  • chore(deps): bump @sentry/browser from 10.55.0 to 10.56.0 in /assets (#248) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/248
  • chore(deps): bump earmark from 1.4.48 to 1.4.49 (#247) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/247

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

v0.10.0

What's Changed

Preview review mode

crit preview snapshots can now be shared and reviewed in the browser. ReviewLive renders the snapshot in an iframe with viewport toggles and a DOM pin panel, and the same review chrome (comments side panel + settings overlay) is now shared across files and preview modes. This is the hosted side of the shareable preview work.

  • feat(preview): hosted preview review mode + shared review chrome by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/241
  • fix(preview): preserve comment DOM anchors across fetch + re-share by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/244

Review experience

  • feat: improve mobile usability by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/233
  • feat: add heading anchor links with copy-to-clipboard by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/228
  • fix: dedup heading-anchor IDs and add controls to reduced-motion demo videos by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/245
  • fix: stack mini-toasts instead of overlapping (parity with crit local) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/223
  • chore: bump mermaid to ^11.15.0 to match crit local by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/222

Marketing site revamp

  • feat: marketing page revamp by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/224
  • feat: replace homepage and mode page screenshots with autoplay demo videos by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/226
  • perf: add video posters, controls and reduced-motion to marketing pages by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/227
  • fix: video modal blocked by CSP + update live screenshots by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/225

Internal refactors

  • fix: stabilize dark-theme contrast check via reduced-motion guard (CRI-90) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/242
  • chore: make fresh worktrees run e2e out of the box by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/243
  • chore: make worktree/test setup work out of the box by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/235
  • perf(ci): cache npm deps and Playwright browsers in E2E workflow by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/234
  • docs: DB_PORT defaults to 5433, drop manual-export guidance by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/236

Dependency updates

  • chore(deps): bump phoenix_live_view from 1.1.30 to 1.1.31 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/240
  • chore(deps): bump markdown-it from 14.1.1 to 14.2.0 in /assets by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/239
  • chore(deps): bump @sentry/browser from 10.53.1 to 10.55.0 in /assets by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/238
  • chore(deps): bump swoosh from 1.25.2 to 1.25.3 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/237
  • chore(deps): bump req from 0.5.17 to 0.5.18 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/232
  • chore(deps): bump hammer from 7.3.0 to 7.4.0 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/231
  • chore(deps): bump ecto_sql from 3.13.5 to 3.14.0 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/230
  • chore(deps): bump sentry from 13.0.1 to 13.1.0 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/229

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.9.0...v0.10.0

v0.9.0

What's Changed

Multi-tenant organizations

Organizations now get their own URL slugs and isolated workspaces, laying the groundwork for team-based access control and billing.

  • feat: multi-tenant organizations with slug-based routing by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/212

Self-hosted SSO proxy support

Self-hosted deployments behind an authentication proxy (e.g., Authelia, Authentik, OAuth2 Proxy) can now pass trusted headers to crit-web, so sharing and other authenticated actions work without a second login.

  • feat: proxy_auth support for SSO-proxied self-hosted deployments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/211 - Thank you @jbrooksbartlett for reporting!

Features

  • feat: add Permissions-Policy, opt-in HSTS, and secure cookies by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/213
  • feat: marketing opt-in consent capture by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/210
  • feat: add Pi, Grok, and Cline logo integrations by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/220

Fixes

  • fix: filter 410 from LiveSocket transport error reporting by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/219

Internal refactors

  • refactor: pre-release audit cleanup by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/221

Dependencies

  • chore(deps): bump swoosh from 1.25.1 to 1.25.2 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/214
  • chore(deps): bump mermaid from 11.14.0 to 11.15.0 in /assets by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/215
  • chore(deps): bump bandit from 1.11.0 to 1.11.1 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/216
  • chore(deps): bump @sentry/browser from 10.52.0 to 10.53.1 in /assets by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/217
  • chore(deps): bump postgrex from 0.22.1 to 0.22.2 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/218

Full Changelog: https://github.com/tomasz-tomczyk/crit-web/compare/v0.8.0...v0.9.0

v0.8.0

What's Changed

Self-hosted authentication & admin

  • feat(auth): local username + password authentication by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/199
  • feat: admin role for selfhosted instances by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/201

Review experience

  • feat: vim-style visual line mode (V) for multi-line comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/198 - Thank you @markjaquith for suggesting!
  • feat: add copy-path button to file headers by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/205 - Thank you @menzenski for suggesting!
  • feat: add HEEx syntax highlighting for .heex/.leex files by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/208
  • feat: collapse linguist-generated files by default by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/189 - Thank you @matdurand for suggesting!
  • feat: linkify comment IDs in comment bodies by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/202

Homepage & install

  • feat: add Windows tab + switch Homebrew tab to homebrew-core by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/187
  • feat: list Gemini, Qwen, and Hermes integrations by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/188
  • perf: optimize homepage images and static asset caching by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/203

Fixes

  • fix: pre-release audit fixes (rate limiter config, admin demotion guard, clipboard error handling) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/209
  • fix: add dedup guard to all resolve/unresolve buttons by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/207
  • fix: upgrade decimal 2.4.1 → 3.1.0 to patch DoS vulnerability by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/206
  • fix: port keyboard accessibility and animationend fixes from crit CLI by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/204
  • fix: split nested list items into individual line blocks by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/200
  • fix: keyboard-nav line highlight visible in light mode by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/191
  • port .comment-body img rule from crit for parity with PR #505 by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/190
  • fix: position TOC below header inline with document start by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/185
  • fix: use chat icon on disabled/login-required comment policy badge by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/184

Internal

  • refactor: extract reusable sign_in_button component by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/186
  • chore(deps): bump phoenix_live_view from 1.1.28 to 1.1.30 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/197
  • chore(deps): bump sentry from 13.0.0 to 13.0.1 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/196
  • chore(deps): bump phoenix from 1.8.5 to 1.8.7 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/194
  • chore(deps): bump @sentry/browser from 10.51.0 to 10.52.0 in /assets by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/193
  • chore(deps): bump postgrex from 0.22.0 to 0.22.1 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/192

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

v0.7.0

What's Changed

This release brings sharing controls to crit-web. Reviews are now unlisted by default and owners can promote them to public; a new comment policy lets you decide whether replies are open to anyone, signed-in users only, or disabled entirely. The review surface itself got more flexible too — sidebars are resizable, the comments panel is draggable, and there's a /raw/<file> view for plain-text access.

Sharing controls

  • feat: review public visibility (unlisted by default, owner-promotable) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/169
  • feat: comment policy controls (open / logged-in only / disabled) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/172

Review surface

  • feat: resizable sidebars + draggable comments panel by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/177
  • feat: add raw file view at /r/:token/raw/*file_path by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/180

General

  • feat: add resolved_round to comments (mirror crit timeline) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/175
  • feat: add custom 404 page by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/158
  • fix(security): gate raw file endpoint behind selfhosted OAuth by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/182
  • fix: block protocol-relative open-redirect + expand test coverage by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/167
  • style: align textarea line-height with rendered comment bodies by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/171
  • style: bump comment input font-size to 14px by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/168
  • polish marketing pages: founder section, screenshots, testimonials, stats receipt by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/159
  • docs: rewrite AGENTS.md with blocks by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/165
  • docs: update contact email addresses to crit.md domain by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/163

Fixes

  • fix: backward selection across blank-line boundary by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/181
  • fix: close get-prompt modal on backdrop click by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/179
  • fix: add aria-valuenow to focusable separator handles by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/178
  • fix: render TOC after content arrives in init handler by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/170
  • fix: confirm before discarding non-empty comment drafts on Esc by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/157
  • fix: stop flashing disconnect banner on transient mobile websocket drops by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/155
  • fix: frontend audit cleanup (resize leak, a11y, styling regime) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/183

Internal refactors

  • refactor: narrow review_round_snapshot status enum to actual values by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/176
  • ci: register Sentry releases on deploy by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/156
  • chore(deps): bump sentry to 13.0 and @sentry/browser to 10.51 by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/166
  • chore(deps): bump bandit from 1.10.4 to 1.11.0 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/160

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

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.

  • feat: review conversation parity (crit/#374, crit#405) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/148
  • fix: add reply UI to review-level comments + always center on web by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/150

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.

  • feat: add optional Sentry error monitoring by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/144

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.

  • feat: harden share page with no-referrer + global rate limit by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/147

Features

  • feat: author attribution for shared reviews by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/131
  • feat: per-tool /integrations/ pages + llms.txt + UI cleanup by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/132
  • feat: include user_id in device-flow token response by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/141
  • feat: adopt Phoenix 1.8 Scope pattern across Reviews context + LiveView by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/143
  • feat: Add login + selfhosted share_url steps to dashboard empty state by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/133

Fixes

  • fix: let comment authors and review owners resolve comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/149
  • fix: require c keypress to comment on selection (parity with crit/#408) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/151
  • fix: edit button + tailwind drift on review-level comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/153
  • style: typography cleanup + empty-state mobile + changelog wrap by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/134
  • fix: expand hljs language coverage via alias resolution by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/136
  • fix: align light theme with modern GitHub for visible diff highlights by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/138
  • fix: patch hljs markdown grammar and re-enable for fenced blocks by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/139
  • fix: rename comment submit button to "Comment" by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/140
  • fix: sync drifted hljs dark token colors with crit local by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/142
  • fix: gate review LiveView with selfhosted+OAuth auth requirement by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/145

Internal refactors

  • ci: fix invalid codecov.yml so status checks wait for upload by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/146
  • chore: migrate wt pre-start to pipeline form by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/152
  • refactor: post-release audit cleanups by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/154

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.

  • feat: redesign dashboard empty state with guided onboarding flow by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/117
  • feat: add file snippet previews to dashboard and overview lists by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/116
  • refactor: redesign dashboard header with identity popover and self-hosted indicator by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/109
  • refactor: redesign marketing header to match dashboard chrome by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/114
  • feat: improve mobile review listings and link styling by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/119
  • fix: show Dashboard link on mobile marketing nav, review logo navigates to /dashboard by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/118
  • fix: render Overview before Dashboard in self-hosted nav by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/115

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.

  • feat: add review meta header with author and owner delete by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/122
  • feat: redesign comments panel with segmented filter and collapsible groups by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/106
  • feat: add hide-resolved toggle for inline comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/105
  • fix: clarify Hide resolved comments label, hide Reviews link in selfhosted by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/121
  • feat: port orphaned file rendering from crit local (#305 parity) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/96
  • feat: Replace custom LCS word-diff with @sanity/diff-match-patch by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/101
  • style: refine review header — delete button, no truncation, wrap by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/125

General

  • feat: migrate to crit design system by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/98
  • fix: sync CTA button colors with design system for WCAG AA by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/99
  • fix: match reply form font size to comment form by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/97
  • feat: add keep_reviews setting to prevent auto-deletion by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/108
  • feat: store cli_args and include in agent prompt for local session refresh by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/102
  • fix: auto-close empty forms when opening file/review comment forms by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/126
  • fix: auto-close empty comment forms when opening another by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/124
  • fix: hide comment-line highlight when 'h' hides resolved comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/123
  • fix: render comment + button in gap between line numbers and content by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/120
  • fix: hide TOC button and panel when document has no headings by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/113

Documentation

  • docs: update plugin install instructions to claude CLI syntax by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/104
  • docs: replace .crit.json references with review file by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/100

Internal refactors

  • refactor: cache hide-resolved, idempotent comments panel, track timers by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/129
  • refactor: merge comments-panel e2e specs, drop stale aria-expanded by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/128
  • refactor: harden inactive-review deletion, validate cli_args by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/127
  • feat: add Codecov integration for test coverage by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/112
  • feat: comprehensive dev seeds with 7 review scenarios by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/110
  • chore: add Docker-based PostgreSQL and configurable DB_PORT by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/111
  • chore: update GitHub Actions to latest versions by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/107
  • chore: bump mermaid to 11.14.0 by @tomasz-tomczyk
  • chore: update worktrunk settings by @tomasz-tomczyk
  • chore: add mise trust to wt.toml post-start hook by @tomasz-tomczyk
  • fix: add seed-reply endpoint for share integration testing by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/103

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 https://github.com/tomasz-tomczyk/crit-web/pull/79
  • feat: simplify device auth — remove user code entry, use URL-based session linking by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/80

Dashboard and settings

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

Review viewer

  • feat: render orphaned files in shared reviews by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/91
  • feat: improve mobile header layout and comments panel by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/71
  • feat: add text labels to resolve/unresolve buttons by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/68
  • feat: replace full-state comment broadcasting with granular delta events by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/78

Fixes

  • fix: port WCAG AA color contrast fixes from crit CLI by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/92
  • fix: handle Cloud SQL unix socket DATABASE_URL format by @jbrooksbartlett in https://github.com/tomasz-tomczyk/crit-web/pull/88
  • fix: parity — hljs markdown skip + sync 39 missing theme variables by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/89
  • fix: align font stack and content width with crit local by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/85
  • fix: port parity fixes from crit v0.8.3 audit by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/83
  • fix: preserve author_display_name during review upsert by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/77
  • fix: use review's round number in migration and update seeds by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/72
  • fix: add missing aria-label on unresolve button by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/69
  • fix: match reply body font size and line height to comments by @tomasz-tomczyk
  • fix: make comments panel sticky to scroll with viewport by @tomasz-tomczyk
  • fix: update homepage test assertion to match current copy by @tomasz-tomczyk
  • fix: update integration source paths after commands/ → skills/ migration by @tomasz-tomczyk

Tests

  • Add Playwright E2E tests for review page by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/94
  • Expand LiveView test coverage for user journeys by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/93

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 https://github.com/tomasz-tomczyk/crit-web/pull/74
  • chore(deps-dev): bump lazy_html from 0.1.10 to 0.1.11 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/75
  • chore(deps): bump hammer from 7.2.0 to 7.3.0 by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/76

Marketing pages

  • feat: redesign homepage layout and widen all pages by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/86
  • feat: add persistent platform statistics with homepage display by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/73
  • feat: add testimonials section to homepage by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/70
  • feat: add testimonials from @vereisyaps and Ullrich Schäfer by @tomasz-tomczyk
  • chore: adopt tagline "Your feedback loop with the agent" across site by @tomasz-tomczyk
  • feat: add favicons and web app manifest by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/87
  • Update favicons and fix static asset serving by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/95
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.

  • feat: OAuth login (#54) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/54
  • docs: update privacy policy and terms for GitHub OAuth login (#64) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/64

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 https://github.com/tomasz-tomczyk/crit-web/pull/51
  • feat: add crit fetch support for two-way review workflow (#55) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/55

Mobile

  • feat: mobile review page improvements (#52) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/52
  • feat: mobile dashboard header, hamburger menu, and tokens page by @tomasz-tomczyk
  • fix: mobile improvements and consistency tweaks by @tomasz-tomczyk

Comment navigation

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

Self-hosting

  • feat: skip review cleanup in self-hosted mode (#66) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/66
  • feat: improve env vars table on self-hosting page by @tomasz-tomczyk

Fixes

  • fix: suggestion diff now shows original quote as before-line and works in multi-file reviews (#53) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/53
  • fix: don't encourage AI to resolve comments (#56) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/56
  • fix: parity ports from crit, fix dashboard tests, format heex (#60) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/60
  • fix: audit fixes — session key, transaction safety, auth dedup, tests (#61) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/61
  • fix: audit frontend fixes — resize leak, CSS vars, ARIA, inline script (#62) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/62
  • fix: revert green stats to text-green-400, add desktop API Tokens link, widen footer (#63) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/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 https://github.com/tomasz-tomczyk/crit-web/pull/65
  • chore(deps): bump phoenix_live_view from 1.1.27 to 1.1.28 (#58) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/58
  • chore(deps): bump bandit from 1.10.3 to 1.10.4 (#59) by @dependabot in https://github.com/tomasz-tomczyk/crit-web/pull/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

  • fix: port frontend parity from crit v0.6.0..HEAD by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/41
  • feat: file-level and review-level comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/42
  • docs: add no-analytics privacy note to README by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/43 - Thanks @omervk for the idea!
  • feat: support individual DB_* env vars as alternative to DATABASE_URL by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/44 - Thanks @omervk for the idea!

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

  • chore: rename crit.live to crit.md (#30) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/30
  • feat: add @file-ref rendering in shared review comments (#28) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/28
  • feat: bundle all highlight.js languages for syntax highlighting (#34) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/34
  • feat: comment threading and replies (#29) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/29
  • feat: port word-level diff highlighting for suggestion blocks (#23) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/23
  • feat: render suggestion blocks as inline diffs (#18) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/18
  • feat: select-to-comment with quote field and inline highlights (#33) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/33
  • fix: comment action buttons not visible and restrict to own comments by @tomasz-tomczyk
  • fix: Compact comment form buttons: Submit, + Template (#17) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/17
  • fix: include author and replies, skip resolved in review markdown export (#37) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/37
  • fix: include replies, author, and resolved status in comment export (#36) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/36
  • fix: match comments panel reply previews to crit local styling (#39) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/39
  • fix: render markdown in comments panel instead of plain text (#22) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/22
  • fix: reply form styling and author fallback (#31) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/31
  • fix: style links in reply comments to match main comment links (#38) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/38
  • fix: align theme CSS variables with crit local (#20) (#24) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/24

SEO / Static pages

  • feat: add /getting-started page (#26) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/26
  • feat: add /changelog page with auto-fetched GitHub releases (#25) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/25
  • Redesign self-hosting page to match getting-started style by @tomasz-tomczyk
  • feat: SEO optimisation — sitemap, robots.txt, canonical URLs, JSON-LD (#16) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/16
  • feat: add Open Graph image and meta tags for social sharing by @tomasz-tomczyk
  • fix: JSON-LD rendering bug and expand feature page content for SEO by @tomasz-tomczyk
  • Widen controller page layouts for consistency by @tomasz-tomczyk

Internal improvements

  • Fetch integration snippets at runtime instead of compile time (#32) by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/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 https://github.com/tomasz-tomczyk/crit-web/pull/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

  • feat: Split prompt button with two export modes by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/8
  • fix: preserve file_path on comments added via web UI by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/9
  • fix: disable hljs auto-detection for unlabelled code blocks by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/10
  • fix: eliminate CSP-blocked inline JS for theme toggle by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/12
  • fix: backfill display name on existing comments by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/14
  • perf: code-split JS bundle and add YouTube lite facade by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/13

Docs

  • Mark self-hosting as available by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/7
  • docs: update marketing pages for crit listen, crit share, and QR codes by @tomasz-tomczyk in https://github.com/tomasz-tomczyk/crit-web/pull/15

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.