Skip to content

Releases: reviewjs/annotate

v1.5.1 — Keep the first comment when asked for a name

Choose a tag to compare

@akashgoswami akashgoswami released this 10 Oct 09:21

Patch release. Fixes a bug where a reviewer's first comment could be lost.

  • A reviewer with no saved name who clicks Comment sees the name dialog over their pending comment. Clicking in that dialog used to drop the comment: with the pin or a shape tool active, the click started a new comment instead, and with the cursor tool the click-outside handler cancelled it. Clicks inside the name dialog no longer affect the pending comment, so it is posted once the name is entered.

Validation: 900 browser checks passed across six projects (chromium, firefox, webkit, mobile-chrome, mobile-safari, tablet) after the version bump, including new tests that fail without the fix; 21 reference-server and receiver tests passed; package contents verified.

v1.5.0 — Review backend sync and comment lifecycle

Choose a tag to compare

@akashgoswami akashgoswami released this 10 Oct 08:55

Adds optional sync to a review backend over the annotate wire protocol, a versioned record schema, and a full comment lifecycle. Without data-api, the library behaves exactly as 1.4.0 and sends nothing over the network.

  • Sync comments to a backend with data-api + data-review-id. Writes go through a persisted per-review queue with idempotency keys, per-record ordering, conflict merge on 409, tombstones on 410, Retry-After on 429/503, backoff when offline, and ETag polling while the page is visible.
  • Join a review through an invite link (the token is removed from the URL) or plug in your own auth with auth.getToken() / onUnauthorized().
  • Record schema v2: one normalized shape for localStorage, exports and the wire. v1 records upgrade on read; runtime-only fields never leave the page.
  • Comment lifecycle: Open, In progress, Resolved and Won't fix, assignees, per-comment history, and an "Updated" marker when the review owner changes your comment.
  • New API: setStatus(), assign(), syncState(), and annotate:sync / annotate:auth window events. With a backend, submit() resolves once every queued change is acknowledged.
  • Background sync keeps open reply and edit drafts intact.
  • Includes a dependency-free reference server (examples/annotate-server.cjs) with wire-protocol conformance tests, now run in CI.

Documentation for backend mode follows in 1.5.x; the wire protocol is specified in docs/backlog/wire-protocol.md.

Validation: 876 browser checks passed across six projects (chromium, firefox, webkit, mobile-chrome, mobile-safari, tablet) before the version bump; 21 reference-server and receiver tests passed; release-version suites (126 chromium checks) and package contents verified after the bump.

v1.4.0 — Framework integration and feedback submission

Choose a tag to compare

@akashgoswami akashgoswami released this 07 Oct 10:59

Adds explicit lifecycle and framework integration APIs, ES module and CommonJS entry points with TypeScript declarations, and optional feedback submission to your own HTTP endpoint.

  • Initialize and destroy the review layer cleanly, with opt-in SPA navigation and recovery after dynamic content changes.
  • Render text highlights without modifying host text, preserve legacy quote anchors, and support visible text inside display: contents elements.
  • Submit the current page's JSON export explicitly, with timeout/error handling and local comments preserved on failure.
  • Prefill issue URLs with encoded page, count, and summary values; includes a dependency-free Node feedback receiver.
  • Keep route changes and immediate feedback submission consistent, and remove test hooks from the published API.

Validation: 798 browser checks passed across six projects without retries before the version bump; release-version integration, lifecycle, highlight, receiver, and package checks passed.

Stability improvement

Choose a tag to compare

@akashgoswami akashgoswami released this 04 Oct 13:58
v1.3.0

Release v1.3.0

v1.2.0

Choose a tag to compare

@akashgoswami akashgoswami released this 27 Jul 09:25

What's new

  • Added a Copy control that copies the complete, import-compatible comments JSON payload to the clipboard.
  • Reused the export payload builder so Copy and Download stay schema-compatible.
  • Fixed the share-enabled desktop footer so all four controls remain visible without overflow.
  • Added cross-browser coverage for the clipboard payload and desktop footer containment regression.
  • Synchronized the package, runtime, documentation, examples, and site version metadata at 1.2.0.

Validation

  • 461 Playwright tests passed across Chromium, Firefox, WebKit, mobile, and tablet; one Firefox timing case passed on retry.
  • The Firefox pin test then passed 5/5 isolated reruns.
  • Pages build and npm package dry run passed.