Skip to content

Releases: PFigs/redliner

0.5.0

Choose a tag to compare

@PFigs PFigs released this 29 Apr 06:53
8d68784
Jsonl session storage (#2)

* feat: store reviews as per-session jsonl, expose storage path in UI

- Replace per-file JSON sidecars with one comments.jsonl per review
  session (plan file in plan mode, repo root in diff mode), plus
  meta.json for per-file approval state.
- Each comment now carries the full file path top-level, so JSONL
  records are self-describing.
- Plan and diff web UIs show the storage directory with a copy
  button; redliner status reports it too.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: spec for plan edit mode

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* docs: clarify edit-mode banner format

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* docs: implementation plan for edit mode

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* feat: add Edit dataclass and Review edit-content methods

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* chore: drop unused Path import in test_review

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* feat: persist edits to edits.jsonl in session storage

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* feat: add /api/edit-content and /api/clear-edit endpoints

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* feat: add 'redliner edits' command and has_edits to status

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* refactor: hoist edits_path import; use monkeypatch in cli tests

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* feat: add Edit mode toggle and textarea to plan view

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* fix: use raw file content for edit baseline; surface API errors

Server returns the unsplit file content as 'raw' in /api/review so
the JS baseline for hasUnsavedEdits matches files without a trailing
newline. saveEditContent and revertEdit now alert on non-OK responses
instead of silently failing. countDiffLines guards against null diff.

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* fix: emit well-formed unified diff for plan edits

The combination of lineterm="" and splitlines(keepends=True) made
unified_diff produce malformed output where the ---/+++/@@ headers
ran together with the first context line. Use the default lineterm
so each header gets its own newline. Adds a regression test that
asserts the first three lines are the canonical diff headers.

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* docs: sync spec with implementation; pin raw field with a test

The /api/review response includes a 'raw' field that wasn't in the
original spec, added to give the Edit-mode UI an exact baseline.
Documented and locked in by an assertion in test_web.py. Also notes
that the segmented mode toggle is the way to switch back to Comment
mode (no separate header button).

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Assisted-By: Claude Code (noreply@anthropic.com)

* fix: escape \n in countDiffLines so JS gets a backslash-n literal

The Python triple-quoted template string was interpreting '\n' as a
literal newline character, breaking the JS source with a SyntaxError
that aborted the whole render. Plan view rendered only the header.

Signed-off-by: Pedro Silva
Assisted-By: Claude Code

* feat: show 'Saved HH:MM' indicator next to filename

Save used to flash the page with no visible state change unless an
edit transition crossed the badge boundary. Now the header shows the
last-saved local time whenever an edit exists, in both modes, and
flashes green for 1.2s after Save completes.

Signed-off-by: Pedro Silva
Assisted-By: Claude Code

* feat: render edited content in Comment mode when edits exist

Once you've saved edits, Comment mode shows the edited version
(state.edit.content) as the source of truth instead of the original
lines. Lets you do a substantial edit and then drop comments on
specific lines of what you just wrote. Banner reworded to match.

Signed-off-by: Pedro Silva
Assisted-By: Claude Code

* chore: drop edit-mode implementation plan from version control

Workflow artifact, not part of the codebase.

Signed-off-by: Pedro Silva
Assisted-By: Claude Code

* chore: drop edit-mode design spec from version control

Workflow artifact, not part of the codebase.

Signed-off-by: Pedro Silva
Assisted-By: Claude Code

---------

Signed-off-by: Pedro Silva <pedro.figs.silva@gmail.com>
Signed-off-by: Pedro Silva
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

0.4.0

Choose a tag to compare

@PFigs PFigs released this 21 Apr 18:04
ddfb755
feat: store reviews as per-session jsonl, expose storage path in UI (#1)

- Replace per-file JSON sidecars with one comments.jsonl per review
  session (plan file in plan mode, repo root in diff mode), plus
  meta.json for per-file approval state.
- Each comment now carries the full file path top-level, so JSONL
  records are self-describing.
- Plan and diff web UIs show the storage directory with a copy
  button; redliner status reports it too.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

0.3.3

Choose a tag to compare

@PFigs PFigs released this 17 Apr 05:28
a5dc228
feat: wrap long lines and add approve button feedback

- Soft-wrap long lines in plan and diff views (pre-wrap + word-break)
- Anchor line numbers to the top of wrapped rows
- Disable Approve button and show "Approving..." while request is pending

0.3.2

Choose a tag to compare

@PFigs PFigs released this 15 Apr 12:50
d4c5f21
chore: use uv in README install instructions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

0.3.1

Choose a tag to compare

@PFigs PFigs released this 15 Apr 12:40
a20dc50
feat: add --version flag to CLI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

0.3.0

Choose a tag to compare

@PFigs PFigs released this 10 Apr 10:12
feat: add inline comment editing to web UI

- Add Review.edit() method to update comment text by ID
- Add POST /api/edit/{id} endpoint with text validation
- Add Edit button to pending comments in both plan and diff views
- Inline edit replaces comment text with textarea in place
- Support Ctrl+Enter to save and Escape to cancel
- Add tests for edit method and endpoint

0.2.0

Choose a tag to compare

@PFigs PFigs released this 02 Apr 12:16

Comments are now stored in a central location to avoid polluting the repos

0.1.0

Choose a tag to compare

@PFigs PFigs released this 02 Apr 11:28
fb15c12

First release of redliner, a simple web view to review plans and git diffs locally.