@satanwagen/reviewkit 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,132 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.5 — 2026-09-02
4
+
5
+ Fixes the "status won't change" bug for good.
6
+
7
+ - **Root cause:** the browser session is per origin (all pages), rooms are per
8
+ page, and on every connect the client uploaded its whole session into the
9
+ current room. Each item therefore existed in several rooms; a status change
10
+ updated one copy and the others stayed stale, so the web and the terminal
11
+ showed a mix.
12
+ - **Client:** on connect only items of the current page are re-uploaded.
13
+ - **Server (deployed):** items live in the room of their own `route`: an add
14
+ for another page is redirected there (an already-known id is confirmed,
15
+ never duplicated), and an update / status / delete for an id the current
16
+ room does not hold is applied in the sibling room that does — the sender
17
+ still gets the echo. On load, items stored in the wrong room are moved to
18
+ their own room ("rehomed"), so old duplicates disappear by themselves.
19
+ - **CLI (0.1.12):** shows each item once even if a stale copy still exists,
20
+ preferring the copy in its own page's room.
21
+
22
+ ## 0.1.12 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
23
+
24
+ - Each item is listed once even when an old duplicate lingers in another
25
+ room (see 0.1.5 of the main package); mutations target the right room.
26
+ - First `e` (edit prompt) without `$EDITOR` offers to install **micro**, a
27
+ terminal editor with VS Code keys (Ctrl+S save, Ctrl+Q quit, Ctrl+Z undo,
28
+ mouse): `y` installs (Homebrew on macOS, otherwise getmic.ro into
29
+ `~/.local/bin`) and uses it from then on, `n` sticks with nano. The choice
30
+ is remembered; `EDITOR=…` in the shell always wins. micro is preferred
31
+ automatically when already installed.
32
+
33
+ ## 0.1.11 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
34
+
35
+ - Prompt editing (`e`) uses `$VISUAL` / `$EDITOR`, else **nano** when
36
+ installed, else vi; the terminal shows how to save and leave before the
37
+ editor opens (nano: Ctrl+O, Enter, Ctrl+X · vi: Esc `:wq`). GUI editors
38
+ (code, cursor, subl, zed) get `--wait` so the run waits for you.
39
+
40
+ ## 0.1.10 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
41
+
42
+ - **Follow-ups.** `r` on a finished run opens a reply line; what you type goes
43
+ to the same agent session (`--resume <session id>`) as a new run marked
44
+ `#4↩2`, with the original items named, so "also make the button darker"
45
+ lands in the right context. Works for Claude Code; Cursor gets the same
46
+ flag best-effort.
47
+ - **Prompt review.** Before anything is sent you see the exact prompt: `⏎`
48
+ sends, `n` adds a one-line note, `e` opens it in `$EDITOR` for real edits,
49
+ `←` goes back to the model.
50
+ - **Run view.** Agent runs are cards (colour bar, `WORK` / `DONE` / `FAIL`
51
+ badge, agent, model, items, elapsed, last step). `Tab` focuses the cards,
52
+ `⏎` opens a run: its items with live statuses, model, turns, cost, session,
53
+ the full scrollable log and a follow-up line at the bottom (`⏎` sends into
54
+ the same session, `y` copies the log, `K` stop, `X` close).
55
+ - **Inline only.** The full-screen interactive agent mode is gone; agents
56
+ always work inside the view.
57
+
58
+ ## 0.1.9 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
59
+
60
+ - **Parallel agents.** Up to 10 runs at once, each on its own items (an item
61
+ already being worked on is skipped). One line per run in the pane with a
62
+ `WORK` / `DONE` / `FAIL` badge, agent, model, item count, elapsed time and
63
+ the latest step; `Tab` focuses a run, `K` stops it, `L` shows its log, `X`
64
+ closes a finished one. Finished runs show `✓ n/m applied · turns · $`.
65
+ - **Leftovers closed.** When a run ends OK, items the agent forgot to mark are
66
+ set to `applied` on its behalf (logged); the agent prompt now requires a
67
+ status call per item.
68
+ - **Fix:** status changes from the terminal silently did nothing for items
69
+ whose route has a trailing slash (`/about/` vs room `/about`): the change
70
+ went to the wrong room. Routes are compared normalised now, so it reaches
71
+ the room and every browser.
72
+
73
+ ## 0.1.8 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
74
+
75
+ - **Cursor support.** The agent picker offers every agent CLI found on PATH:
76
+ Claude Code (`claude`) and Cursor (`cursor-agent`, print mode with
77
+ `--force`, MCP from `~/.cursor/mcp.json` which `reviewkit setup` writes).
78
+ Two-step picker: agent → model, last choice remembered per agent.
79
+ - **Bulk hand-over.** `space` selects items (◆), `a` hands the selection (or
80
+ all open items when nothing is selected) to the agent; `1`–`4` change the
81
+ status of every selected item at once.
82
+ - **Agent finish = status change.** Items the agent worked on but did not
83
+ mark itself become `accepted` when the run ends OK.
84
+ - **Filters that exist.** `f` opens a filter panel (environment, status, type,
85
+ priority, page — arrows to move and change), `/` is a live text search
86
+ (id, text, author, note, selector); active filters are chips in the header,
87
+ `F` clears. `s` cycles status, `o` cycles environment.
88
+ - **No accidental quits.** `q` asks for a second `q`; Ctrl+C quits at once.
89
+ `esc` clears the selection, then the filters.
90
+ - **Redrawn table and footer.** Type glyphs (✎ ▣ ❝ ✕ ⇄ ◐), status dots, column
91
+ separators, key chips in the footer, a shorter header (name · environments
92
+ · who is online · counts). Long descriptive hints are gone.
93
+ - **No flicker.** Frames are painted line by line with erase-to-end-of-line
94
+ and redraws are coalesced (max one per 16 ms) instead of clearing the
95
+ screen for every update.
96
+
97
+ ## 0.1.7 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
98
+
99
+ - **Agent works inside the live view.** `a` (all open items) or Enter → "Apply
100
+ with claude here" opens a picker — model per task: Fable 5.1, Opus, Sonnet,
101
+ Haiku or the Claude Code default (last pick preselected) — then runs
102
+ Claude Code in print mode with the reviewkit MCP attached and streams its
103
+ steps into an agent pane under the list (`▸ Edit page.tsx`, `it-3f9a →
104
+ applied`, cost and turns at the end). Items being worked on spin; statuses
105
+ flip live for reviewers too. `K` stops, `L` shows the full log, `X` closes
106
+ the pane, `A` / menu `C` still open full-screen interactive Claude.
107
+ - Detail strip under the list: selector, tag, text snippet and the request of
108
+ the selected item.
109
+ - Edits are auto-accepted (`--permission-mode acceptEdits`), reviewkit MCP
110
+ tools pre-allowed; `REVIEWKIT_AGENT_PERMISSIONS=bypassPermissions` for
111
+ trusted repos, `REVIEWKIT_AGENT` to swap the binary.
112
+
113
+ ## 0.1.6 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
114
+
115
+ - **Environments.** One repo usually runs on several origins (localhost, a
116
+ dev domain, production); a project now carries a list of them. Pairing from
117
+ another environment with the same token **adds** its origin instead of
118
+ replacing the file; `reviewkit env` lists them, `env add <url>` / `env rm`
119
+ edit them. The live view shows all environments at once (a `where` column
120
+ with the host) and `o` switches between them; `list`/`watch` take
121
+ `--env <origin>`; MCP `reviewkit_list` accepts `origin` and tags items with
122
+ theirs. Items keep non-enumerable origin/route tags so exports stay clean.
123
+
124
+ ## 0.1.5 — 2026-09-02 (`@satanwagen/reviewkit-cli` only)
125
+
126
+ - CLI: a `.reviewkit/emblema-sync.json` or `project.json` still pointing at
127
+ the retired `agropolio.fucking.style` host resolves to the default public
128
+ server instead of a dead URL. The main package stays at 0.1.4.
129
+
3
130
  ## 0.1.4 — 2026-09-02
4
131
 
5
132
  ### Added
package/README.md CHANGED
@@ -312,7 +312,9 @@ reviewkit # first run pairs the repo (one click in the review panel), t
312
312
 
313
313
  **Pairing is one click, no copy-paste.** Bare `reviewkit` in an unpaired repo runs `setup` first; it detects the site's `token` (and a custom `syncToken` / `syncUrl`, if any) in the repo, opens a loopback port and waits. In the browser open the review panel → gear → **Connect terminal / agent…** → **Connect**: the panel finds the waiting terminal and pushes the connection into `<repo>/.reviewkit/project.json` (gitignored). `setup` also registers the MCP server in Claude Code and Cursor when it finds them. The dialog keeps a copyable key as the fallback for a terminal on another machine.
314
314
 
315
- The live view is interactive: arrow keys walk the items, Enter opens actions (detail, apply this item with Claude Code, copy as prompt, mark applied / accepted / rejected / reopen, delete), `a` hands every open item to Claude Code in the repo, and the header shows who is reviewing right now in their own colours. Everything is the shared room state, so a status flipped in the terminal or by an agent changes in reviewers' browsers instantly, and vice versa.
315
+ The live view is interactive: arrow keys walk the items, Enter opens actions (detail, apply with Claude Code, copy as prompt, mark applied / accepted / rejected / reopen, delete), `space` selects items and `a` hands them (or all open ones) to Claude Code or Cursor — you pick agent and model per task (Fable / Opus / Sonnet / Haiku…) and watch it work in an agent pane right under the list while statuses flip live; `f` filters, `/` searches — and the header shows who is reviewing right now in their own colours. Everything is the shared room state, so a status flipped in the terminal or by an agent changes in reviewers' browsers instantly, and vice versa.
316
+
317
+ One repo, several environments (localhost, dev domain, production): pairing from each adds its origin to the project, the live view shows them all with a `where` column, `o` switches between them, `reviewkit env` manages the list.
316
318
 
317
319
  Everyday commands: `reviewkit list --status open`, `reviewkit show <id>`, `reviewkit status <id> applied`, `reviewkit watch`, `reviewkit export -o review.json`, `reviewkit prompt` (agent-ready work list), `reviewkit rooms`, `reviewkit projects` / `-p <name>` to act on another paired site. Full table in [`cli/README.md`](./cli/README.md).
318
320
 
@@ -33,4 +33,4 @@ function LazyReviewKit(props) {
33
33
  export {
34
34
  LazyReviewKit
35
35
  };
36
- //# sourceMappingURL=chunk-EOX3UJNP.js.map
36
+ //# sourceMappingURL=chunk-L7JLBD7Q.js.map
@@ -3750,6 +3750,11 @@ function currentAuthor(name) {
3750
3750
 
3751
3751
  // src/client/sync.ts
3752
3752
  var DEFAULT_SYNC_URL = "wss://2-59-219-26.sslip.io/rk-sync";
3753
+ function normalizeRoute(route) {
3754
+ let r = String(route ?? "/");
3755
+ if (!r.startsWith("/")) r = "/" + r;
3756
+ return r.length > 1 ? r.replace(/\/+$/, "") : r;
3757
+ }
3753
3758
  function resolveSyncUrl(config) {
3754
3759
  return typeof config.syncUrl === "string" && config.syncUrl !== "" ? config.syncUrl : DEFAULT_SYNC_URL;
3755
3760
  }
@@ -3832,8 +3837,11 @@ function useRealtimeSync(state, rawDispatch, config, reducer2) {
3832
3837
  for (const id2 of deletedIds) dispatch({ type: "REMOTE_DELETE", id: id2 });
3833
3838
  dispatch({ type: "PEERS_SET", peers: peers.filter((peer) => peer.id !== id).map(toPeerState) });
3834
3839
  const serverIds = new Set(items.map((item) => item.id));
3840
+ const here = normalizeRoute(window.location.pathname);
3835
3841
  for (const item of stateRef.current.session?.items ?? []) {
3836
- if (!serverIds.has(item.id) && !deleted.has(item.id)) sync.addItem(item);
3842
+ if (serverIds.has(item.id) || deleted.has(item.id)) continue;
3843
+ if (normalizeRoute(item.route) !== here) continue;
3844
+ sync.addItem(item);
3837
3845
  }
3838
3846
  },
3839
3847
  onPeerJoin: (peer) => dispatch({
@@ -7660,4 +7668,4 @@ export {
7660
7668
  importSessionFile,
7661
7669
  ReviewKit
7662
7670
  };
7663
- //# sourceMappingURL=chunk-5MAFDRUI.js.map
7671
+ //# sourceMappingURL=chunk-VNRVRNZX.js.map