tandem-editor 0.3.1 → 0.4.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 +69 -13
- package/dist/channel/index.js +17915 -15
- package/dist/channel/index.js.map +1 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/client/assets/{index-CcE9UvS8.js → index-D6wQrQ7U.js} +52 -52
- package/dist/client/index.html +1 -1
- package/dist/server/index.js +112656 -4485
- package/dist/server/index.js.map +1 -1
- package/package.json +15 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,36 +5,92 @@ All notable changes to Tandem will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [0.
|
|
8
|
+
## [0.4.0] - 2026-04-12
|
|
9
9
|
|
|
10
|
-
###
|
|
10
|
+
### Added
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
12
|
+
- Tauri v2 desktop app wrapping the existing web editor (macOS, Linux, Windows)
|
|
13
|
+
- System tray with menu: Open Editor, Setup Claude, Check for Updates, About, Quit
|
|
14
|
+
- Single-instance detection — second launch focuses the existing window instead of opening a duplicate
|
|
15
|
+
- Node.js sidecar lifecycle: auto-spawn on startup, health polling, crash restart with exponential backoff
|
|
16
|
+
- Auto-updater checks on launch and every 8h; manual check available via tray menu "Check for Updates"
|
|
17
|
+
- Cross-platform CI release workflow (macOS arm64/x64, Linux x64, Windows x64) with GitHub Releases
|
|
18
|
+
- Window state persistence — position and size remembered across sessions
|
|
19
|
+
- Sample file copied to writable data directory on first run (supports read-only app bundles)
|
|
20
|
+
- Self-signed code signing for Windows builds in CI
|
|
21
|
+
- MCP setup auto-configuration on launch — writes Claude Code/Desktop config without manual `tandem setup`
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Accept `tauri.localhost` origin in WebSocket and CORS checks so the production WebView can connect
|
|
26
|
+
- Strip Windows `\\?\` extended-length path prefix returned by Tauri path APIs before passing to Node
|
|
27
|
+
- Sidecar binary name resolution corrected for Tauri's platform-specific naming convention
|
|
28
|
+
- Self-contained JS bundles via tsup `noExternal` so Tauri doesn't require `node_modules` at runtime
|
|
29
|
+
- Poll for port release before restarting after update install, preventing a startup race condition
|
|
30
|
+
- Surface last HTTP error in health-poll timeout diagnostics for easier debugging
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Updater-unavailable log downgraded from error to debug (reduces noise in dev builds without updater keys)
|
|
35
|
+
- Unhandled sidecar events are now logged instead of silently dropped
|
|
36
|
+
- Warn when `sample/` directory is missing in release builds
|
|
37
|
+
- CI: fail build when updater signing key secret is absent
|
|
38
|
+
- CI: summary job catches partial platform build failures rather than reporting false success
|
|
39
|
+
|
|
40
|
+
## [0.3.2] - 2026-04-12
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- **Annotation type unification:** Three semantically identical types (`comment`, `suggestion`, `question`) collapsed into a single `comment` type with optional `suggestedText` and `directedAt` fields. `AnnotationTypeSchema` reduced from 5 values to 3: `highlight`, `comment`, `flag`. (#193, #245, #255)
|
|
45
|
+
- **Toolbar:** Three annotation buttons (Comment, Suggest, Ask Claude) replaced with a single Comment button with "Replace" and "@Claude" toggles (#193)
|
|
46
|
+
- **Side panel filters:** "Suggestions" → "With replacement", "Questions" → "For Claude" (#193)
|
|
47
|
+
- **`sanitizeAnnotation()` moved to `src/shared/sanitize.ts`** — now available to both server and client code. Client-side Y.Map reads are sanitized to handle legacy session data. (#255)
|
|
23
48
|
|
|
24
49
|
### Added
|
|
25
50
|
|
|
26
51
|
- Link (Ctrl+K), Horizontal Rule, and Code Block buttons in the formatting toolbar (#204)
|
|
27
|
-
-
|
|
52
|
+
- Replacement cards show a visual diff — original text in red strikethrough → replacement in green (#195)
|
|
28
53
|
- Undo countdown progress bar — a shrinking indicator shows the 10-second undo window (#196)
|
|
29
54
|
- Review mode shortcut hints (Y / N / ↑↓ / Z) shown below the Review button (#200)
|
|
30
55
|
- Chat anchor previews expand on hover to show full text (#198)
|
|
31
56
|
- `disabledTitle` prop on toolbar buttons — annotation buttons show "Select text first" when no text is selected (#197)
|
|
32
57
|
- Explicit ✕ close button on the highlight color picker (#203)
|
|
58
|
+
- `tandem_comment` now accepts optional `suggestedText` and `directedAt` parameters (#193)
|
|
59
|
+
- `sanitizeAnnotation()` normalizes legacy `suggestion`/`question` entries at read boundaries — permanent migration for historical session data (#193)
|
|
60
|
+
- Exhaustive type switch in `buildDecorations` catches unhandled annotation types at compile time (#255)
|
|
61
|
+
- 8 new tests covering MCP tool params, sanitization edge cases, and legacy migration paths (#255)
|
|
33
62
|
|
|
34
63
|
### Fixed
|
|
35
64
|
|
|
36
65
|
- Toolbar wraps to a second row on narrow windows instead of overflowing; inline inputs shrink responsively (#192)
|
|
37
66
|
- Edit button on annotation cards now shows a visible "✎ Edit" label instead of icon-only (#201)
|
|
67
|
+
- Client-side legacy annotations (from pre-0.3.2 sessions) no longer render as invisible decorations or display raw JSON (#255)
|
|
68
|
+
- `sanitizeAnnotation` no longer drops `textSnapshot: ""` or `editedAt: 0` via falsy-check bug (#255)
|
|
69
|
+
- Event queue observer no longer silently dies if `sanitizeAnnotation` throws (#255)
|
|
70
|
+
- `handleEdit` catch-block no longer corrupts annotation data on JSON parse failure (#255)
|
|
71
|
+
|
|
72
|
+
### Deprecated
|
|
73
|
+
|
|
74
|
+
- `tandem_suggest` MCP tool — use `tandem_comment` with `suggestedText` parameter instead (#193)
|
|
75
|
+
|
|
76
|
+
### Removed
|
|
77
|
+
|
|
78
|
+
- **MCP wire change:** Removed unused `"overlay"` annotation kind from `AnnotationTypeSchema`. External clients sending `type: "overlay"` will now receive a Zod validation error. (#249)
|
|
79
|
+
- **MCP wire change:** `suggestion` and `question` annotation types removed from `AnnotationTypeSchema`. Use `comment` with `suggestedText` or `directedAt` fields. Legacy data is migrated automatically via `sanitizeAnnotation()`. (#193)
|
|
80
|
+
|
|
81
|
+
## [0.3.0] - 2026-04-07
|
|
82
|
+
|
|
83
|
+
### Wave 4: Notification & Interruption Redesign
|
|
84
|
+
|
|
85
|
+
- **Solo/Tandem mode** replaces All/Urgent/Paused interruption controls (#207, #226)
|
|
86
|
+
- **Dwell-time selection events** — selections fire after 1s hold (#188)
|
|
87
|
+
- **Configurable layout** — tabbed or three-panel, with settings popover (#206)
|
|
88
|
+
- **Click-to-navigate** — click annotated text to jump to annotation card
|
|
89
|
+
- **Tab badges** — notification counts on inactive panel tabs
|
|
90
|
+
- **Skill-directed response routing** — Claude responds in chat panel, not terminal
|
|
91
|
+
- Review banner replaced with per-annotation toasts (#208, landed earlier)
|
|
92
|
+
- `Y_MAP_MODE` constant, Zod validation for mode reads, error logging in channel event bridge
|
|
93
|
+
- 894 tests passing
|
|
38
94
|
|
|
39
95
|
## [0.2.12] - 2026-04-06
|
|
40
96
|
|