tandem-editor 0.2.11 → 0.3.0
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 +161 -117
- package/README.md +201 -201
- package/dist/channel/index.js +45 -2
- package/dist/channel/index.js.map +1 -1
- package/dist/cli/index.js +7 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/client/assets/index-BXWLR51Y.js +308 -0
- package/dist/client/index.html +13 -13
- package/dist/server/index.js +54 -25
- package/dist/server/index.js.map +1 -1
- package/package.json +5 -1
- package/sample/demo-script.md +23 -23
- package/sample/welcome.md +21 -21
- package/dist/client/assets/index-CfGlbY9B.js +0 -297
package/CHANGELOG.md
CHANGED
|
@@ -1,117 +1,161 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to Tandem will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [0.
|
|
9
|
-
|
|
10
|
-
###
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
### Fixed
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Tandem will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.3.0] - 2026-04-07
|
|
9
|
+
|
|
10
|
+
### Wave 4: Notification & Interruption Redesign
|
|
11
|
+
|
|
12
|
+
- **Solo/Tandem mode** replaces All/Urgent/Paused interruption controls (#207, #226)
|
|
13
|
+
- **Dwell-time selection events** — selections fire after 1s hold (#188)
|
|
14
|
+
- **Configurable layout** — tabbed or three-panel, with settings popover (#206)
|
|
15
|
+
- **Click-to-navigate** — click annotated text to jump to annotation card
|
|
16
|
+
- **Tab badges** — notification counts on inactive panel tabs
|
|
17
|
+
- **Skill-directed response routing** — Claude responds in chat panel, not terminal
|
|
18
|
+
- Review banner replaced with per-annotation toasts (#208, landed earlier)
|
|
19
|
+
- `Y_MAP_MODE` constant, Zod validation for mode reads, error logging in channel event bridge
|
|
20
|
+
- 894 tests passing
|
|
21
|
+
|
|
22
|
+
## [Unreleased]
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Link (Ctrl+K), Horizontal Rule, and Code Block buttons in the formatting toolbar (#204)
|
|
27
|
+
- Suggestion cards show a visual diff — original text in red strikethrough → replacement in green (#195)
|
|
28
|
+
- Undo countdown progress bar — a shrinking indicator shows the 10-second undo window (#196)
|
|
29
|
+
- Review mode shortcut hints (Y / N / ↑↓ / Z) shown below the Review button (#200)
|
|
30
|
+
- Chat anchor previews expand on hover to show full text (#198)
|
|
31
|
+
- `disabledTitle` prop on toolbar buttons — annotation buttons show "Select text first" when no text is selected (#197)
|
|
32
|
+
- Explicit ✕ close button on the highlight color picker (#203)
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Toolbar wraps to a second row on narrow windows instead of overflowing; inline inputs shrink responsively (#192)
|
|
37
|
+
- Edit button on annotation cards now shows a visible "✎ Edit" label instead of icon-only (#201)
|
|
38
|
+
|
|
39
|
+
## [0.2.12] - 2026-04-06
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
|
|
43
|
+
- Undo/redo toolbar buttons powered by Y.js UndoManager — tracks document edits with proper CRDT-aware undo scoping (#189, #210)
|
|
44
|
+
- Adjustable editor content width toggle — switch between comfortable and full-width layouts, preference persists in localStorage (#185, #205)
|
|
45
|
+
- SVG icons for unordered list, ordered list, and blockquote toolbar buttons, replacing plain text labels (#194)
|
|
46
|
+
- Automated npm publishing via GitHub Actions with OIDC trusted publisher (tokenless)
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- Guard all localStorage access with try-catch for private/disabled browser storage modes; reset scroll position on annotation filter clear (#212, #202)
|
|
51
|
+
|
|
52
|
+
## [0.2.11] - 2026-04-06
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- Auto-reload documents when files change on disk — Tandem detects external edits (e.g., Claude's Edit tool) via `fs.watch`, reloads content, and preserves existing annotations (#175)
|
|
57
|
+
- File watcher module with 500ms debounce and self-write suppression (prevents reload loops when Tandem saves)
|
|
58
|
+
- Toast notification when a document is reloaded from disk
|
|
59
|
+
- Runtime warning when `onDocSwapped` callback is missing during Hocuspocus doc swap (defensive guard for #178 audit)
|
|
60
|
+
- 28 new tests: observer reattachment, CTRL_ROOM lifecycle, buffer cap, file watcher debounce/suppress, annotation-preserving reload
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- Dead CRDT `relRange` handling — `refreshRange` now strips broken CRDT anchors and re-anchors from flat offsets instead of leaving annotations permanently stuck with non-functional RelativePositions (#175)
|
|
65
|
+
- Buffer cap test was previously a no-op (empty loop body) — now actually exercises the event queue buffer (#178)
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
|
|
69
|
+
- CLAUDE.md gotcha for Hocuspocus doc replacement updated to document the automatic `onDocSwapped` callback lifecycle (#178)
|
|
70
|
+
|
|
71
|
+
## [0.2.10] - 2026-04-05
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
|
|
75
|
+
- Resizable side panel — drag to resize between 200–600px, width persists in localStorage
|
|
76
|
+
- Accessibility: ARIA labels on annotation highlights (type-specific), annotation cards (`role="listitem"`, `aria-current`), annotation list (`role="list"`), review mode button (`aria-pressed`), live region for pending count and review progress
|
|
77
|
+
|
|
78
|
+
### Fixed
|
|
79
|
+
|
|
80
|
+
- Flaky session tests — each test file now uses an isolated temp directory via `vi.mock`, eliminating cross-file race conditions (#177)
|
|
81
|
+
- Session file writes use atomic rename with retry on Windows EPERM/EACCES (#173)
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
|
|
85
|
+
- `atomicWrite()` extracted as shared helper in session manager — consolidates duplicate write-tmp-rename logic with exponential backoff retry
|
|
86
|
+
|
|
87
|
+
## [0.2.9] - 2026-04-05
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- Changelog tab no longer disappears after upgrade — version check and sample/welcome.md now open before servers start, preventing CRDT merge races with stale browser tabs
|
|
92
|
+
- Tutorial annotation injection errors now get their own log message instead of being misattributed as file-open failures
|
|
93
|
+
|
|
94
|
+
## [0.2.8] - 2026-04-05
|
|
95
|
+
|
|
96
|
+
### Added
|
|
97
|
+
|
|
98
|
+
- CHANGELOG.md opens as the active tab on first startup after an npm update
|
|
99
|
+
- `checkVersionChange` helper tracks version transitions via `last-seen-version` file
|
|
100
|
+
- CHANGELOG.md now ships in the npm package
|
|
101
|
+
|
|
102
|
+
## [0.2.7] - 2026-04-05
|
|
103
|
+
|
|
104
|
+
### Fixed
|
|
105
|
+
|
|
106
|
+
- Force-reload (`tandem_open` with `force: true`) now clears Y.Doc in-place instead of destroying the Hocuspocus room — sidebar, observers, and connections survive
|
|
107
|
+
- TOCTOU fix: session deletion moved after successful reload transaction
|
|
108
|
+
- Observer ownership table corrected in architecture docs
|
|
109
|
+
|
|
110
|
+
### Added
|
|
111
|
+
|
|
112
|
+
- 4 new tests for force-reload (annotation clearing, awareness clearing, .txt reload, metadata)
|
|
113
|
+
|
|
114
|
+
## [0.2.6] - 2026-04-05
|
|
115
|
+
|
|
116
|
+
### Fixed
|
|
117
|
+
|
|
118
|
+
- Demo script rewritten to be self-referential for recording
|
|
119
|
+
- Observer ownership documentation added to architecture.md
|
|
120
|
+
|
|
121
|
+
## [0.2.5] - 2026-04-05
|
|
122
|
+
|
|
123
|
+
### Fixed
|
|
124
|
+
|
|
125
|
+
- `tandem setup` Claude Code MCP config path updated
|
|
126
|
+
|
|
127
|
+
## [0.2.4] - 2026-04-05
|
|
128
|
+
|
|
129
|
+
### Fixed
|
|
130
|
+
|
|
131
|
+
- Security audit findings (DNS rebinding, CORS, input validation)
|
|
132
|
+
|
|
133
|
+
## [0.2.3] - 2026-04-05
|
|
134
|
+
|
|
135
|
+
### Fixed
|
|
136
|
+
|
|
137
|
+
- `tandem setup` now writes Claude Code MCP config to `~/.claude.json` instead of `~/.claude/mcp_settings.json`, which Claude Code no longer reads
|
|
138
|
+
|
|
139
|
+
## [0.2.2] - 2025-04-05
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
|
|
143
|
+
- Silent failure review findings
|
|
144
|
+
|
|
145
|
+
## [0.2.1] - 2025-04-05
|
|
146
|
+
|
|
147
|
+
### Fixed
|
|
148
|
+
|
|
149
|
+
- Full security audit — 25 findings across 7 categories (#172)
|
|
150
|
+
|
|
151
|
+
## [0.2.0] - 2025-04-04
|
|
152
|
+
|
|
153
|
+
### Added
|
|
154
|
+
|
|
155
|
+
- Initial public release on npm as `tandem-editor`
|
|
156
|
+
- 30 MCP tools for collaborative document editing
|
|
157
|
+
- Multi-document tabs with CRDT-anchored annotations
|
|
158
|
+
- Chat sidebar with real-time channel push
|
|
159
|
+
- Support for .md, .docx, .txt, .html files
|
|
160
|
+
- `tandem` CLI with `setup` and `start` commands
|
|
161
|
+
- Claude Code skill auto-installation
|