emdash-emit 0.1.18 → 0.1.25

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.
Files changed (93) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +22 -11
  3. package/dist/cli/commands/new.d.ts.map +1 -1
  4. package/dist/cli/commands/new.js +30 -0
  5. package/dist/cli/commands/new.js.map +1 -1
  6. package/dist/cli/commands/status.d.ts.map +1 -1
  7. package/dist/cli/commands/status.js +7 -2
  8. package/dist/cli/commands/status.js.map +1 -1
  9. package/dist/client/api.d.ts +20 -0
  10. package/dist/client/api.d.ts.map +1 -1
  11. package/dist/client/api.js +89 -0
  12. package/dist/client/api.js.map +1 -1
  13. package/dist/db/baseline.d.ts +3 -2
  14. package/dist/db/baseline.d.ts.map +1 -1
  15. package/dist/db/baseline.js +2 -2
  16. package/dist/db/baseline.js.map +1 -1
  17. package/dist/db/cache.d.ts +5 -0
  18. package/dist/db/cache.d.ts.map +1 -1
  19. package/dist/db/cache.js +21 -0
  20. package/dist/db/cache.js.map +1 -1
  21. package/dist/mcp/tools/sync-new.d.ts.map +1 -1
  22. package/dist/mcp/tools/sync-new.js +42 -1
  23. package/dist/mcp/tools/sync-new.js.map +1 -1
  24. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  25. package/dist/mcp/tools/sync-status.js +1 -0
  26. package/dist/mcp/tools/sync-status.js.map +1 -1
  27. package/dist/sync/diff.d.ts.map +1 -1
  28. package/dist/sync/diff.js +11 -6
  29. package/dist/sync/diff.js.map +1 -1
  30. package/dist/sync/guards.d.ts.map +1 -1
  31. package/dist/sync/guards.js +2 -2
  32. package/dist/sync/guards.js.map +1 -1
  33. package/dist/sync/merge.d.ts +1 -1
  34. package/dist/sync/merge.d.ts.map +1 -1
  35. package/dist/sync/merge.js +50 -17
  36. package/dist/sync/merge.js.map +1 -1
  37. package/dist/sync/new.d.ts +11 -0
  38. package/dist/sync/new.d.ts.map +1 -1
  39. package/dist/sync/new.js +81 -4
  40. package/dist/sync/new.js.map +1 -1
  41. package/dist/sync/preflight.d.ts +7 -0
  42. package/dist/sync/preflight.d.ts.map +1 -1
  43. package/dist/sync/preflight.js +100 -7
  44. package/dist/sync/preflight.js.map +1 -1
  45. package/dist/sync/pull.d.ts.map +1 -1
  46. package/dist/sync/pull.js +127 -72
  47. package/dist/sync/pull.js.map +1 -1
  48. package/dist/sync/push/commit.d.ts +1 -0
  49. package/dist/sync/push/commit.d.ts.map +1 -1
  50. package/dist/sync/push/commit.js +59 -31
  51. package/dist/sync/push/commit.js.map +1 -1
  52. package/dist/sync/push/index.d.ts.map +1 -1
  53. package/dist/sync/push/index.js +27 -5
  54. package/dist/sync/push/index.js.map +1 -1
  55. package/dist/sync/push/media_stage.d.ts +17 -2
  56. package/dist/sync/push/media_stage.d.ts.map +1 -1
  57. package/dist/sync/push/media_stage.js +31 -2
  58. package/dist/sync/push/media_stage.js.map +1 -1
  59. package/dist/sync/push/merge_stage.d.ts.map +1 -1
  60. package/dist/sync/push/merge_stage.js +35 -21
  61. package/dist/sync/push/merge_stage.js.map +1 -1
  62. package/dist/sync/push/transport.d.ts +5 -1
  63. package/dist/sync/push/transport.d.ts.map +1 -1
  64. package/dist/sync/push/transport.js +4 -4
  65. package/dist/sync/push/transport.js.map +1 -1
  66. package/dist/sync/status.d.ts +3 -0
  67. package/dist/sync/status.d.ts.map +1 -1
  68. package/dist/sync/status.js +15 -6
  69. package/dist/sync/status.js.map +1 -1
  70. package/dist/sync/taxonomies.d.ts.map +1 -1
  71. package/dist/sync/taxonomies.js +19 -8
  72. package/dist/sync/taxonomies.js.map +1 -1
  73. package/dist/sync/workspace/commit.d.ts +46 -0
  74. package/dist/sync/workspace/commit.d.ts.map +1 -0
  75. package/dist/sync/workspace/commit.js +85 -0
  76. package/dist/sync/workspace/commit.js.map +1 -0
  77. package/dist/sync/workspace/index.d.ts +1 -0
  78. package/dist/sync/workspace/index.d.ts.map +1 -1
  79. package/dist/sync/workspace/index.js +1 -0
  80. package/dist/sync/workspace/index.js.map +1 -1
  81. package/dist/utils/disk-spelling.d.ts +26 -0
  82. package/dist/utils/disk-spelling.d.ts.map +1 -0
  83. package/dist/utils/disk-spelling.js +51 -0
  84. package/dist/utils/disk-spelling.js.map +1 -0
  85. package/dist/utils/draft-revision.d.ts +15 -0
  86. package/dist/utils/draft-revision.d.ts.map +1 -0
  87. package/dist/utils/draft-revision.js +36 -0
  88. package/dist/utils/draft-revision.js.map +1 -0
  89. package/dist/utils/frontmatter.d.ts +21 -2
  90. package/dist/utils/frontmatter.d.ts.map +1 -1
  91. package/dist/utils/frontmatter.js +70 -7
  92. package/dist/utils/frontmatter.js.map +1 -1
  93. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,126 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.1.25] - 2026-11-14
13
+
14
+ ### Added
15
+
16
+ - **Frontmatter Draft Revision Visualization (`status: published # draft revision`)**:
17
+ - Implemented explicit, human-readable draft revision annotation on the `status:` frontmatter line when a published article tracks an uncommitted remote draft revision.
18
+ - File inspectors, text editors (VS Code, Obsidian, Cursor), and AI agents can immediately recognize that the file reflects an uncommitted draft revision without needing to query CLI `emit status`.
19
+ - Maintained 100% YAML 1.1/1.2 parser transparency: inline comments are ignored by `gray-matter` and `FrontmatterSchema` (Zod), preserving `status: 'published'` without altering AST or schema contracts.
20
+ - Automatically maintained across lifecycles: added on pull when `draftRevisionId` is present, maintained when staging drafts via push, and automatically removed when published live (when the remote publish response reports no remaining draft revision) or discarded.
21
+ - **Single Source of Truth Helper (`src/utils/draft-revision.ts`)**:
22
+ - Centralized `hasUncommittedDraftRevision(syncState)` in Layer 0. All disk representation, baseline reconstruction, diagnostics, and warnings derive strictly from `sync_state.remote_rev.includes('@draft:')` when status is published, eliminating guesswork from CLI arguments or partial local state.
23
+ - **Unified 3-Axis Disk Spelling Engine (`src/utils/disk-spelling.ts`)**:
24
+ - Centralized `resolveDiskSpelling()` and `renderForDisk()` in Layer 0, unifying all 3 disk representation dimensions (taxonomy percent-encoding, article-relative media references, and draft revision annotation) into a single resolver shared by pull, commit, diff, and status.
25
+
26
+ ### Changed
27
+
28
+ - **Phase 0 Refactoring: Centralized Article Snapshot Commit (`src/sync/workspace/commit.ts`)**:
29
+ - Eliminated dangerous code duplication across 6 distinct snapshot and disk writing locations (`pull.ts` fast-path heals ×3, full pull, `push/commit.ts`, and `push/merge_stage.ts`).
30
+ - Centralized all snapshot writes into `commitArticleSnapshot()`, structurally guaranteeing the 4 synchronization invariants:
31
+ 1. `localHash === calculateHash(diskContent)` (strict disk byte tracking)
32
+ 2. `baseline.hash === calculateHash(canonicalContent)` (canonical baseline tracking)
33
+ 3. `frontmatter` in base snapshots stores remote-derived Layer A values only (no synthetic noise)
34
+ 4. `revForTransport` (Track 1) and `revForComparison` (Track 2) remain strictly separated.
35
+ - Eliminated phantom diffs and baseline desynchronization across all standard pull, heal, and status inspection paths.
36
+
37
+ ---
38
+
39
+ ## [0.1.24] - 2026-11-14
40
+
41
+ ### Added
42
+
43
+ - **Draft Revision Synchronization for Published Articles (`src/sync/pull.ts`)**:
44
+ - Supported EmDash's architecture where published articles (`status: 'published'`) can hold uncommitted/staged draft revisions (`draftRevisionId`).
45
+ - Generalized single GET fallthrough condition from `itemStatus !== 'published'` to `needsFullDraftFetch = isDraft || hasDraftRevision`:
46
+ - **Published articles with draft revisions (`draftRevisionId` present)**: Discards the stale list `rawItem` (which only contains published `liveData`) and executes a single GET (`GET /posts/{id}`) to fetch the full 10-block draft body into `posts/published/<file>.md`.
47
+ - **Clean published articles (`draftRevisionId === null`)**: Completely maintains the zero-overhead fast-path with **zero extra HTTP requests (0-GET)**.
48
+ - **Unpublished Draft Status Visualization (`src/sync/status.ts`, `src/cli/commands/status.ts`, MCP `sync_status`)**:
49
+ - Added `hasUnpublishedDraft?: boolean` to `ArticleStatusItem`.
50
+ - Automatically flags published articles whose remote revision tracks an uncommitted draft (`@draft:` in `sync_state.remote_rev`).
51
+ - CLI `emit status` clearly highlights them with a purple icon and badge: `🟣 [synced ] published* posts/published/... [has unpublished draft]`.
52
+ - MCP `sync_status` transparently exposes `hasUnpublishedDraft: true` in JSON payloads.
53
+ - **Push Semantics Documentation & Safety Rails for Published Drafts**:
54
+ - Documented push semantics: EmDash stages PUT updates as drafts when `status` is omitted (Emit's default). To publish changes live to web, `--allow-publish` must be explicitly passed.
55
+ - Added contextual safety warnings during push (`src/sync/push/commit.ts`): when pushing published articles that carry remote draft revisions (`hadRemoteDraft`), Emit warns if changes were staged as drafts (without `--allow-publish`) or published live to web (with `--allow-publish`). Clean published articles remain warning-free.
56
+ - Verified and tested that unpushed local edits during draft advancement are safely preserved in `posts/conflicts/*.conflict.md` with `body_conflict_pending = 1` and Guard G12 rescue copy protection.
57
+
58
+ ## [0.1.23] - 2026-11-14
59
+
60
+ ### Added
61
+
62
+ - **Selective Single-Article GET Fallthrough for Updated Drafts (`src/sync/pull.ts`)**:
63
+ - Resolved architectural discrepancy where EmDash's list API (`GET /posts?status=draft`) returns stale creation-time `posts.data` while the latest content resides in the `revisions` table, which previously caused `emit pull` to overwrite local draft files with outdated content and mark them up-to-date.
64
+ - Implemented selective fallthrough in `pullArticle`:
65
+ - **Draft articles with advanced remote revisions**: Automatically discards the incomplete list `rawItem` and fetches the full canonical article via single GET (`articleContentEndpoint`), accurately reflecting added blocks, images, and edits.
66
+ - **Published articles**: Fully preserves the zero-overhead fast-path—uses the list `rawItem` directly without extra single GET requests, maintaining byte-identical consistency and zero additional network calls.
67
+ - **Fail-safe fallback**: Any article with missing or undefined status defaults safely to `'draft'`, ensuring single GET retrieval rather than writing incomplete content.
68
+ - Hardened unpushed edit protection: Divergent local copies continue to be safely quarantined under `posts/conflicts/*.conflict.md` with `body_conflict_pending = 1` and Guard G12 push protection across both draft and published states.
69
+
70
+
71
+ ## [0.1.22] - 2026-11-14
72
+
73
+ ### Added
74
+
75
+ - **Two-Track Revision Architecture & Draft Revision Advancement Detection**:
76
+ - Solved EmDash server architecture nuance where draft saves update `draftRevisionId` (ULID) while keeping `posts.version` and `posts.updatedAt` unchanged, which previously caused `emit pull` fast-path to falsely report `already up-to-date`.
77
+ - Implemented **Two-Track Revision Invariant**:
78
+ - **Track 1 (`revForTransport`)**: Preserves verbatim server revision tokens (Base64 string like `3:2026-11-14T...`) in `base_snapshots.rev` and `entries.rev`. Prioritized in `push/index.ts:136` for REST PUT `{ _rev }` requests, strictly preventing synthetic key contamination and HTTP 409 conflict loops.
79
+ - **Track 2 (`revForComparison`)**: Stores composite revision identifiers (`${version}@draft:${draftRevisionId}` or `${version}@live:${liveRevisionId}`) in `sync_state.remote_rev` across all 4 save paths (`pull.ts` full pull, `pull.ts` fast-path heal branches, `push/commit.ts`, and `push/merge_stage.ts`).
80
+ - Added `extractComparisonRev` (`src/client/api.ts`): Field-first composite key generator prioritizing explicit revision ULIDs (`draftRevisionId` -> `liveRevisionId`) with clean version fallback.
81
+ - Added `isSameRev` (`src/client/api.ts`): Strict multi-stage revision comparator supporting exact matches, composite key comparisons, legacy-to-composite cache migration, and Base64 round-trip verification.
82
+ - Added `formatRevForDisplay` (`src/client/api.ts`): Clean presentation formatter for CLI/MCP outputs, displaying only the clean version number (e.g. `rev: 3`) while hiding internal `@draft:...` tracking details in `status.ts` and `diff.ts`.
83
+ - Added `CacheDatabase.runTransaction<T>` (`src/db/cache.ts`): Safe transaction helper wrapping `BEGIN IMMEDIATE` / `COMMIT` / `ROLLBACK` for multi-step SQLite operations.
84
+ - Added Unicode NFC normalization to `tryDecodeTaxonomyTerm` (`src/utils/frontmatter.ts`), guaranteeing consistent string comparisons regardless of OS file system encoding (NFD vs NFC).
85
+ - Extended `transitionContentStatus` (`src/sync/push/transport.ts`) to return `StatusTransitionResult { rev, rawJson }`, ensuring post-publish/unpublish commit updates Track 2 with remote status and revision ULIDs accurately.
86
+ - Full production workspace verification: achieved 100% idempotency (`0 updated, 60 skipped/up-to-date`) on successive `pull` runs and verified clean create, update, and delete push lifecycles.
87
+
88
+
89
+ ## [0.1.21] - 2026-11-14
90
+
91
+ ### Added
92
+
93
+ - **Frontmatter Taxonomy Japanese Decoded Display & Two-Layer Representation**:
94
+ - Implemented human-readable Japanese decoded display (` - 未分類`, ` - カメラ`) in Markdown frontmatter `taxonomies:` by default instead of percent-encoded slugs (` - "%e6%9c%aa%e5%88%86%e9%a1%9e"`).
95
+ - Established strict Two-Layer Representation Invariant:
96
+ - **Layer A (Internal Data Layer)**: Remote API payloads, `computeTaxonomyHash`, and SQLite baseline snapshots (`base_snapshots.frontmatter_yaml`) strictly preserve canonical percent-encoded slugs, preventing hash divergence, 409 conflicts, and Guard G16 triggers.
97
+ - **Layer B (Presentation & Serialization Layer)**: Disk Markdown files (`serializeMarkdown`, `formatFrontmatterYaml`) and hint formatters (`formatTaxonomiesHint`) render decoded terms using safe unquoted CJK scalars or auto-quoted YAML strings via `formatYamlScalar`.
98
+ - Added Phantom Diff Prevention: `isBaselineSpellingMatch` (`src/sync/status.ts`) and `inspectArticleDiff` (`src/sync/diff.ts`) detect percent-encoded disk content via `carriesPercentEncodedTaxonomy` and selectively serialize baseline markdown with matching encoding (`preferEncodedTaxonomy`), ensuring untouched files never report spurious `modified` status.
99
+ - Implemented Self-Healing on Pull (`src/sync/pull.ts`):
100
+ - **Branch 1 (Valid frontmatter)**: Upgrades percent-encoded taxonomy terms to decoded format in-place on disk and bumps baseline snapshot hash atomically without remote refetching.
101
+ - **Branch 2 (Broken/unquoted legacy syntax)**: Leniently repairs invalid frontmatter via `lenientRepairMarkdownFrontmatter` -> `parseMarkdown` -> `serializeMarkdown` to clean decoded YAML and synchronizes baseline snapshot atomically.
102
+ - **Branch 3 (Unpushed local modifications)**: Preserves local edits intact without touching disk.
103
+ - Achieves complete idempotency: subsequent pull runs are zero-overhead no-ops (`0 updated, N skipped/up-to-date`).
104
+ - Added NFC Unicode normalization for taxonomy alias resolution in `loadLocalTaxonomyMaps` and `createArticleScaffold`, accepting raw Japanese terms (`-C 未分類 -T カメラレビュー`) seamlessly without spurious warnings.
105
+ - Dual-indexed candidates in `loadLocalTaxonomyCandidates` and refined human-readable name comments in frontmatter YAML (`# 日本語名`), automatically omitting redundant comments when term equals display name.
106
+
107
+
108
+ ## [0.1.20] - 2026-11-14
109
+
110
+ ### Added
111
+
112
+ - **One-shot Article Scaffolding via Extended Arguments (`sync_new` & `emit new`)**:
113
+ - Extended `createArticleScaffold` (`src/sync/new.ts`), CLI `emit new` (`src/cli/commands/new.ts`), and MCP `sync_new` (`src/mcp/tools/sync-new.ts`) with `-C, --categories`, `-T, --tags`, `-d, --description`, and `-f, --featured-image` arguments.
114
+ - Implemented centralized input normalization (`normalizeStringList`) supporting both array and comma-separated string inputs with whitespace trimming across MCP and CLI layers.
115
+ - Added uppercase Crockford Base32 normalization for 26-character ULID `featuredImage` values prior to disk write, keeping disk frontmatter immediately canonical.
116
+ - Added epistemic validation for taxonomy arguments: checks local `categories/` and `tags/` definitions when present and surfaces non-blocking warnings via `CreateArticleResult.warnings` without halting draft scaffolding.
117
+ - Enhanced CLI and MCP outputs with structured `Assigned: ...` confirmation line, separating assigned values, taxonomy warnings, and available hint summaries.
118
+ - Eliminates the error-prone post-creation Frontmatter manual editing step for AI agents and human authors.
119
+
120
+ ## [0.1.19] - 2026-11-14
121
+
122
+ ### Added
123
+
124
+ - **Local-First Featured Image Auto-Upload & ID Resolution (Guard G10 Extension)**:
125
+ - Allowed direct local image paths (`../../media/drafts/<filename>` or already-promoted `../../media/<filename>`) in frontmatter `featuredImage`.
126
+ - During `emit push` / `sync_push`, local draft featured images are automatically uploaded via EmDash Media API (`upload-url` → `PUT` → `confirm`) and resolved to their canonical 26-character D1 `mediaId` (ULID) in the remote push payload.
127
+ - On push completion, frontmatter `featuredImage` on disk and in baseline snapshots is committed as the canonical media record ULID, maintaining byte-identical baseline synchronization.
128
+ - Implemented shared upload pool deduplication: referencing the identical image in both article body and `featuredImage` executes binary upload and file promotion exactly once without duplicating remote assets or triggering filesystem collisions.
129
+ - Added two-stage lookup for already-promoted mirrors (supporting both stem-based and direct `storageKey` filename references) and suppressed spurious companion verification warnings for newly uploaded assets.
130
+ - Guarded against 409 conflict: 3-way merge strictly honors scalar conflict rules (Remote takes precedence with warning log), keeping baseline snapshots and disk state fully aligned (note: auto-uploaded draft images remain promoted in local media mirror and tracked in `media_state` for future doctor/media cleanups).
131
+
12
132
  ## [0.1.18] - 2026-11-13
13
133
 
14
134
  ### Added
package/README.md CHANGED
@@ -455,11 +455,11 @@ Markdown body begins here...
455
455
  - Emit automatically updates the remote state and moves the file from `posts/draft/` to `posts/published/`.
456
456
  - **Never move or rename files manually using `mv`**.
457
457
  4. **Featured Image References**:
458
- - `featuredImage` must be a 26-character canonical media **record** ULID (e.g. `01M67P0MBMJQQXH2K95HHCYRYB`) or `null` — never a `storageKey`, which is a different ULID for the same asset ([Two Media ID Spaces](#two-media-id-spaces-id-vs-storagekey)). Emit normalizes the value to uppercase, so lowercase input is accepted and canonicalized on pull, merge, and push.
458
+ - `featuredImage` accepts a 26-character canonical media **record** ULID (e.g. `01M67P0MBMJQQXH2K95HHCYRYB`), a local draft image path (`../../media/drafts/eyecatch.jpg` or an already-promoted mirror under `media/`), or `null` — never a bare `storageKey` ([Two Media ID Spaces](#two-media-id-spaces-id-vs-storagekey)). When a local draft image is specified, Emit automatically uploads it and resolves its D1 `mediaId` during push, committing the canonical ULID on disk. Emit normalizes ULIDs to uppercase on pull, merge, and push.
459
459
  - To remove the hero image, set `featuredImage: null`. Omitting the field leaves the remote value untouched.
460
460
  - When the referenced ULID matches the cached remote entry, Emit resends the original remote `featured_image` object verbatim (provider, `src`, `meta.storageKey`, dimensions, MIME type) so nothing is lost. When it does not match, Emit sends the bare `{ id: <ULID> }` and lets EmDash resolve the media record. **This contract is confirmed against a live EmDash instance:** `featured_image: { "id": "<ULID>" }` is accepted (HTTP 200) and the server stores the id and normalizes `"provider": "local"` itself.
461
461
  - Emit never fabricates media metadata from local `media/*.yaml` files: companion files are used only to cross-check a reference. In a workspace that mirrors media (`media/` exists and is non-empty), a missing or mismatched companion file is reported as a push warning — it means Emit could not confirm the media ID exists, not that the payload is invalid. Workspaces that do not mirror media produce no such warning.
462
- - Preflight Guard **G10** rejects local file paths and malformed values before pushing.
462
+ - Preflight Guard **G10** rejects invalid file paths outside `media/` and malformed values before pushing.
463
463
 
464
464
  ### EmDash Custom Block Preservation
465
465
 
@@ -562,7 +562,7 @@ To ensure autonomous AI agents and automated scripts cannot corrupt workspace st
562
562
  | **G7** | `TITLE_DUPLICATION_AUTOTRIM` | Detects redundant `# Title` headings at the top of the body and automatically trims them safely | Warning |
563
563
  | **G8** | `UNSUPPORTED_SYNTAX_WARNING` | Warns if unsupported block HTML, tables, or tilde code fences are detected in Markdown (`detectUnsupportedMarkdownSyntax`) | Warning |
564
564
  | **G9** | `MODIFIED_OPAQUE_BLOCK` | Verifies that `<!--ec:block ... -->` opaque fences have not been tampered with or corrupted | Error |
565
- | **G10** | `INVALID_FEATURED_IMAGE` | Verifies that `featuredImage` is a 26-character canonical media ULID (normalized to uppercase) or `null`. A remote media URL that contains a ULID is resolved with a warning; local file paths and malformed values are rejected | Error |
565
+ | **G10** | `INVALID_FEATURED_IMAGE` | Verifies that `featuredImage` is a 26-character canonical media ULID (normalized to uppercase), a local draft image path inside `media/drafts/`, or `null`. A remote media URL that contains a ULID is resolved with a warning; paths outside `media/` and malformed values are rejected | Error |
566
566
  | **G11** | `LOCAL_IMAGE_AUTO_UPLOAD` (`MISSING_LOCAL_IMAGE_FILE` / `INVALID_LOCAL_IMAGE_TYPE` / `LOCAL_IMAGE_SIZE_EXCEEDED` / `PROMOTED_MEDIA_NOT_FOUND_REMOTE` / `[MEDIA_EXISTENCE_UNVERIFIED]`) | Detects standalone `media/drafts/<file>` image lines (or reuses an already-promoted `media/` asset across articles), validates file existence, extension, and size (≤ 50 MiB), queues them for automatic upload, URL rewrite, and `media/` promotion during `push`, and verifies every reused asset against `GET /_emdash/api/media/{id}` before its URL is baked into the body | Info / Warning / Error |
567
567
  | **G12** | `QUARANTINED_COPY_NOT_PUSHABLE` | Refuses to push a rescue copy under `posts/conflicts/` (written by a pull that found divergent local content) before any network request, because it would overwrite the canonical article of the same ULID with stale content and recreate duplicate local files | Error |
568
568
  | **G13** | `CANONICAL_HAS_UNPUSHED_EDITS` | Protects canonical articles from being silently overwritten during conflict resolution (`accept-local`) when unpushed local modifications exist; requires explicit `--force` (`force: true`) | Error |
@@ -624,25 +624,32 @@ emit profile use <name>
624
624
 
625
625
  ### `emit new`
626
626
 
627
- Scaffolds a new draft article with a canonical 26-character ULID timestamp.
627
+ Scaffolds a new draft article with a canonical 26-character ULID timestamp. Supports one-shot frontmatter initialization via optional metadata arguments.
628
628
 
629
629
  ```bash
630
- emit new <slug> [-t, --title <title>] [-c, --collection <collection>] [-l, --locale <locale>] [-b, --byline <slug>] [-p, --profile <name>]
631
-
630
+ emit new <slug> [options]
632
631
  ```
633
632
 
634
633
  - `<slug>`: URL slug for the article (e.g., `modern-web-architecture`).
635
- - `-t, --title <title>`: Human-readable article title.
634
+ - `-t, --title <title>`: Human-readable article title (defaults to slug).
636
635
  - `-c, --collection <name>`: Collection name (defaults to `posts`).
637
636
  - `-l, --locale <locale>`: Locale code (defaults to `ja` or config).
638
- - `-b, --byline <slug>`: Author byline slug (defaults to the first cached non-guest author ordered by `slug ASC`).
637
+ - `-b, --byline <slug>`: Author byline slug (defaults to first cached non-guest author ordered by `slug ASC`).
638
+ - `-C, --categories <categories...>`: Category slugs (comma-separated or space-separated multiple).
639
+ - `-T, --tags <tags...>`: Tag slugs (comma-separated or space-separated multiple).
640
+ - `-d, --description <desc>`: Article excerpt or SEO description (saved to `seo.description`).
641
+ - `-f, --featured-image <pathOrId>`: Featured image (local draft path like `../../media/drafts/cover.jpg` or 26-char media ULID).
639
642
  - `-p, --profile <name>`: Explicitly target a specific connection profile.
640
643
 
641
644
  **Example:**
642
645
 
643
646
  ```bash
644
- emit new ai-workflow-guide --title "AI Workflow Guide"
645
-
647
+ emit new ai-workflow-guide \
648
+ --title "AI Workflow Guide" \
649
+ --categories tech,guide \
650
+ --tags typescript,ai \
651
+ --featured-image "../../media/drafts/cover.jpg" \
652
+ --description "A complete guide to AI-driven workflows"
646
653
  ```
647
654
 
648
655
  **Output:**
@@ -860,15 +867,19 @@ emit status [-c, --collection <collection>] [-p, --profile <name>]
860
867
  --- Workspace Status (posts | origin: https://your-blog.example.com) ---
861
868
  🟡 [modified] draft posts/draft/20261104_01M6BBB...-AI-Workflow-Guide.md (AI Workflow Guide)
862
869
  ⚪ [untracked] draft posts/draft/20261104_01M6AAA...-Draft-Notes.md (Draft Notes)
870
+ 🟣 [synced ] published* posts/published/20261020_01M5YYY...-Review-Notes.md (Review Notes) [has unpublished draft]
863
871
  🟢 [synced ] published posts/published/20261015_01M5ZZZ...-Getting-Started.md (Getting Started)
864
872
  🔴 [invalid ] published posts/published/20190405_01M6CCC...-Broken-Post.md (Broken-Post) [uncached] — bad indentation of a mapping entry at line 5
865
873
 
866
- Summary: 4 total (1 synced, 1 modified, 1 untracked, 1 invalid)
874
+ Summary: 5 total (2 synced, 1 modified, 1 untracked, 1 invalid)
867
875
  ```
868
876
 
869
877
  > [!NOTE]
870
878
  > Articles are sorted newest-first by date prefix and ULID. The date prefix reflects the article's publication or creation date, not the last-modified time. To locate currently active edits, look for files marked `[modified]`.
871
879
 
880
+ > [!NOTE]
881
+ > `published* [has unpublished draft]` (🟣) indicates a published article that has uncommitted/staged draft revisions on EmDash. The status icon prioritizes local sync state (e.g. 🟡 `[modified]` if edited locally), while the `published*` label and `[has unpublished draft]` badge clearly highlight pending remote draft content. Inside the file, the frontmatter explicitly states `status: published # draft revision` so authors and AI agents know the file contains unpublished draft revisions even when inspecting the file directly.
882
+
872
883
  > [!NOTE]
873
884
  > `[invalid]` marks a file whose YAML frontmatter could not be parsed (usually an older serializer wrote unquoted percent-encoded taxonomy slugs). Batch `emit pull` self-heals cached invalid files; files outside the sliding window are marked `[uncached]` and are repaired with `emit pull <ULID>` (MCP: `sync_pull` with `id: "<ULID>"`). When `<collection>/conflicts/` holds rescue copies, the count is reported separately (`conflicts`) and never counted as an article.
874
885
 
@@ -1 +1 @@
1
- {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAwD7F"}
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CA2F7F"}
@@ -42,6 +42,10 @@ export function registerNewCommand(program, resolveContext) {
42
42
  .option('-c, --collection <collection>', 'Target collection (defaults to "posts")')
43
43
  .option('-l, --locale <locale>', 'Article locale (defaults to "ja")')
44
44
  .option('-b, --byline <slug>', 'Author byline slug (defaults to first cached non-guest author by slug)')
45
+ .option('-C, --categories <categories...>', 'Category slugs (comma-separated or multiple)')
46
+ .option('-T, --tags <tags...>', 'Tag slugs (comma-separated or multiple)')
47
+ .option('-d, --description <desc>', 'Article excerpt or SEO description')
48
+ .option('-f, --featured-image <pathOrId>', 'Featured image (local draft path like "../../media/drafts/cover.jpg" or 26-char media ULID)')
45
49
  .option('-p, --profile <name>', 'Explicitly use a specific connection profile')
46
50
  .action(async (slug, options) => {
47
51
  try {
@@ -54,11 +58,37 @@ export function registerNewCommand(program, resolveContext) {
54
58
  collection,
55
59
  locale,
56
60
  byline: options.byline,
61
+ categories: options.categories,
62
+ tags: options.tags,
63
+ description: options.description,
64
+ featuredImage: options.featuredImage,
57
65
  workspaceRoot: ctx.root,
58
66
  cache: ctx.cache,
59
67
  });
60
68
  console.log(`✅ Created new article scaffold (ID: ${res.id})`);
61
69
  console.log(` Path: ${res.filePath}`);
70
+ const assignedParts = [];
71
+ if (res.assigned.categories.length > 0) {
72
+ assignedParts.push(`categories=[${res.assigned.categories.join(', ')}]`);
73
+ }
74
+ if (res.assigned.tags.length > 0) {
75
+ assignedParts.push(`tags=[${res.assigned.tags.join(', ')}]`);
76
+ }
77
+ if (res.assigned.featuredImage) {
78
+ assignedParts.push(`featuredImage=${res.assigned.featuredImage}`);
79
+ }
80
+ if (res.assigned.description) {
81
+ assignedParts.push(`description="${res.assigned.description}"`);
82
+ }
83
+ if (assignedParts.length > 0) {
84
+ console.log(` Assigned: ${assignedParts.join(', ')}`);
85
+ }
86
+ if (res.warnings.length > 0) {
87
+ console.log(`\n⚠️ Warnings:`);
88
+ for (const w of res.warnings) {
89
+ console.log(` 👉 ${w}`);
90
+ }
91
+ }
62
92
  const taxSummary = getLocalTaxonomiesSummary(ctx.root);
63
93
  const taxHint = formatTaxonomiesHint(taxSummary, { maxTags: 30 });
64
94
  if (taxHint) {
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,qBAAqB,EAAsB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAG3F,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,cAAkC;IACrF,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAS,EAAE;QACpD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CACV,oFAAoF,CACrF;SACA,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;SAC9C,MAAM,CAAC,+BAA+B,EAAE,yCAAyC,CAAC;SAClF,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,CAAC;SACpE,MAAM,CACL,qBAAqB,EACrB,wEAAwE,CACzE;SACA,MAAM,CAAC,sBAAsB,EAAE,8CAA8C,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;YAE1D,MAAM,GAAG,GAAG,qBAAqB,CAAC;gBAChC,IAAI;gBACJ,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU;gBACV,MAAM;gBACN,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa,EAAE,GAAG,CAAC,IAAI;gBACvB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,uCAAuC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAExC,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAClE,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC9B,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gGAAgG;IAChG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5C,eAAe,EAAE,oBAAoB,GAAG,IAAI,EAC5C,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAiBhB;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,kBAAkB,GACjC,IAAI,CA8ON"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gGAAgG;IAChG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5C,eAAe,EAAE,oBAAoB,GAAG,IAAI,EAC5C,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAiBhB;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,kBAAkB,GACjC,IAAI,CAkPN"}
@@ -91,11 +91,16 @@ export function registerStatusInitCommands(program, resolveContext) {
91
91
  icon = item.healable ? '🟠' : '🔴';
92
92
  label = item.healable ? 'healable' : 'invalid ';
93
93
  }
94
+ else if (item.hasUnpublishedDraft) {
95
+ icon = '🟣';
96
+ }
94
97
  const titleDisplay = item.title ? ` (${item.title})` : '';
95
98
  const cacheTag = item.syncStatus === 'invalid' && item.cached === false ? ' [uncached]' : '';
99
+ const draftTag = item.hasUnpublishedDraft ? ' [has unpublished draft]' : '';
96
100
  const errorDisplay = item.error ? ` — ${item.error}` : '';
97
- const paddedStatus = (item.status || '').padEnd(9, ' ');
98
- console.log(` ${icon} [${label}] ${paddedStatus} ${item.filePath}${titleDisplay}${cacheTag}${errorDisplay}`);
101
+ const statusDisplay = item.hasUnpublishedDraft ? 'published*' : item.status || '';
102
+ const paddedStatus = statusDisplay.padEnd(9, ' ');
103
+ console.log(` ${icon} [${label}] ${paddedStatus} ${item.filePath}${titleDisplay}${cacheTag}${draftTag}${errorDisplay}`);
99
104
  }
100
105
  const invalidSuffix = status.summary.invalid > 0 ? `, ${status.summary.invalid} invalid` : '';
101
106
  const healableSuffix = status.summary.healableInvalid > 0 ? ` (${status.summary.healableInvalid} healable)` : '';
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,26 @@ export declare function unwrapItem<T = Record<string, unknown>>(raw: unknown): T
16
16
  * Extracts revision string from an API response, prioritizing data._rev over item._rev, rev, version.
17
17
  */
18
18
  export declare function extractRev(raw: unknown, fallback?: string): string;
19
+ /**
20
+ * Extracts comparison revision key (Track 2), prioritizing draftRevisionId / liveRevisionId
21
+ * so draft content changes on server are never skipped during pull.
22
+ * Format: `<version>@draft:<ULID>` or `<version>@live:<ULID>` or fallback.
23
+ */
24
+ export declare function extractComparisonRev(raw: unknown, fallback?: string): string;
25
+ /**
26
+ * Compares two revision keys for equality.
27
+ * Supports:
28
+ * - Exact match
29
+ * - Composite keys (`<version>@draft:<ULID>` / `<version>@live:<ULID>`)
30
+ * - Safe migration: Legacy pure numbers vs Composite keys always return false (triggering upgrade pull)
31
+ * - Strict Base64 comparison with round-trip verification for legacy cached tokens
32
+ */
33
+ export declare function isSameRev(trackedRev: unknown, remoteRev: unknown): boolean;
34
+ /**
35
+ * Formats a revision token/key for human display in CLI and diff headers.
36
+ * Truncates composite keys (`3@draft:01M7...`) to their version number (`3`).
37
+ */
38
+ export declare function formatRevForDisplay(rev: string | null | undefined): string;
19
39
  /**
20
40
  * Normalizes revision representation (pure number, base64-encoded token, or colon-delimited)
21
41
  * to its canonical numeric string when possible, allowing reliable parity comparisons.
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAiB3E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CA6BvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,SAAM,GAAG,MAAM,CAmB/D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CA+BjD"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAiB3E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CA6BvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,SAAM,GAAG,MAAM,CAmB/D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,SAAM,GAAG,MAAM,CAoBzE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAiD1E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAQ1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CA+BjD"}
@@ -93,6 +93,95 @@ export function extractRev(raw, fallback = '1') {
93
93
  const rev = item._rev || envelopeRev || root._rev || item.rev || root.rev || item.version || root.version;
94
94
  return rev ? String(rev) : fallback;
95
95
  }
96
+ /**
97
+ * Extracts comparison revision key (Track 2), prioritizing draftRevisionId / liveRevisionId
98
+ * so draft content changes on server are never skipped during pull.
99
+ * Format: `<version>@draft:<ULID>` or `<version>@live:<ULID>` or fallback.
100
+ */
101
+ export function extractComparisonRev(raw, fallback = '1') {
102
+ if (!raw || typeof raw !== 'object') {
103
+ return fallback ? String(fallback) : '1';
104
+ }
105
+ const root = raw;
106
+ const item = unwrapItem(raw);
107
+ const version = String(item.version || root.version || '1');
108
+ const draftRevisionId = item.draftRevisionId || root.draftRevisionId;
109
+ const liveRevisionId = item.liveRevisionId || root.liveRevisionId;
110
+ if (draftRevisionId && typeof draftRevisionId === 'string' && draftRevisionId.trim()) {
111
+ return `${version}@draft:${draftRevisionId.trim()}`;
112
+ }
113
+ if (liveRevisionId && typeof liveRevisionId === 'string' && liveRevisionId.trim()) {
114
+ return `${version}@live:${liveRevisionId.trim()}`;
115
+ }
116
+ // Fallback to raw token (e.g. Base64 or plain version)
117
+ return extractRev(raw, fallback);
118
+ }
119
+ /**
120
+ * Compares two revision keys for equality.
121
+ * Supports:
122
+ * - Exact match
123
+ * - Composite keys (`<version>@draft:<ULID>` / `<version>@live:<ULID>`)
124
+ * - Safe migration: Legacy pure numbers vs Composite keys always return false (triggering upgrade pull)
125
+ * - Strict Base64 comparison with round-trip verification for legacy cached tokens
126
+ */
127
+ export function isSameRev(trackedRev, remoteRev) {
128
+ if (trackedRev === null ||
129
+ trackedRev === undefined ||
130
+ remoteRev === null ||
131
+ remoteRev === undefined) {
132
+ return false;
133
+ }
134
+ const a = String(trackedRev).trim();
135
+ const b = String(remoteRev).trim();
136
+ if (a === b) {
137
+ return true;
138
+ }
139
+ const isCompositeA = a.includes('@draft:') || a.includes('@live:');
140
+ const isCompositeB = b.includes('@draft:') || b.includes('@live:');
141
+ // Both are composite keys: must match exactly (already checked a === b, so false here)
142
+ if (isCompositeA && isCompositeB) {
143
+ return false;
144
+ }
145
+ // One is composite and one is legacy/raw token: always treat as different to trigger migration
146
+ if (isCompositeA !== isCompositeB) {
147
+ return false;
148
+ }
149
+ // Both are non-composite (legacy numbers, colon-delimited, or Base64 tokens)
150
+ const isStrictB64 = (s) => {
151
+ try {
152
+ return Buffer.from(s, 'base64').toString('base64') === s && /^[A-Za-z0-9+/=]+$/.test(s);
153
+ }
154
+ catch {
155
+ return false;
156
+ }
157
+ };
158
+ if (isStrictB64(a) && isStrictB64(b)) {
159
+ try {
160
+ const decodedA = Buffer.from(a, 'base64').toString('utf8');
161
+ const decodedB = Buffer.from(b, 'base64').toString('utf8');
162
+ return decodedA === decodedB;
163
+ }
164
+ catch {
165
+ return false;
166
+ }
167
+ }
168
+ // Pure numeric fallback comparison
169
+ return normalizeRev(a) === normalizeRev(b);
170
+ }
171
+ /**
172
+ * Formats a revision token/key for human display in CLI and diff headers.
173
+ * Truncates composite keys (`3@draft:01M7...`) to their version number (`3`).
174
+ */
175
+ export function formatRevForDisplay(rev) {
176
+ if (!rev)
177
+ return '';
178
+ const s = String(rev).trim();
179
+ const atIdx = s.indexOf('@');
180
+ if (atIdx > 0) {
181
+ return s.slice(0, atIdx);
182
+ }
183
+ return normalizeRev(s);
184
+ }
96
185
  /**
97
186
  * Normalizes revision representation (pure number, base64-encoded token, or colon-delimited)
98
187
  * to its canonical numeric string when possible, allowing reliable parity comparisons.
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { type Frontmatter, type TaxonomyCandidates } from '../utils/frontmatter.js';
1
+ import { type Frontmatter, type TaxonomyCandidates, type SerializeMarkdownOptions } from '../utils/frontmatter.js';
2
2
  import type { BaseSnapshot } from './cache.js';
3
3
  export interface DecodedBaseline {
4
4
  frontmatter: Frontmatter;
5
5
  body: string;
6
6
  }
7
+ export type BaselineSerializeOptions = SerializeMarkdownOptions;
7
8
  /**
8
9
  * Read and decode the frontmatter and body from a baseline snapshot.
9
10
  *
@@ -33,5 +34,5 @@ export declare function createBaseSnapshot(params: {
33
34
  * Invariant: serializeMarkdown(readBaseline(snapshot).frontmatter, snapshot.bodyMarkdown)
34
35
  * must be byte-identical to the baseline hash and disk representation.
35
36
  */
36
- export declare function baselineMarkdown(snapshot: BaseSnapshot, candidates?: TaxonomyCandidates): string;
37
+ export declare function baselineMarkdown(snapshot: BaseSnapshot, candidates?: TaxonomyCandidates, options?: BaselineSerializeOptions): string;
37
38
  //# sourceMappingURL=baseline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/db/baseline.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,CAMpE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAO1F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,YAAY,CAUf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAGhG"}
1
+ {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/db/baseline.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAE9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,CAMpE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAO1F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,YAAY,CAUf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,CAGR"}
@@ -67,8 +67,8 @@ export function createBaseSnapshot(params) {
67
67
  * Invariant: serializeMarkdown(readBaseline(snapshot).frontmatter, snapshot.bodyMarkdown)
68
68
  * must be byte-identical to the baseline hash and disk representation.
69
69
  */
70
- export function baselineMarkdown(snapshot, candidates) {
70
+ export function baselineMarkdown(snapshot, candidates, options) {
71
71
  const { frontmatter, body } = readBaseline(snapshot);
72
- return serializeMarkdown(frontmatter, body, candidates);
72
+ return serializeMarkdown(frontmatter, body, candidates, options);
73
73
  }
74
74
  //# sourceMappingURL=baseline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/db/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAGL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAQjC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAsB;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAgB,CAAC;IACxE,OAAO;QACL,WAAW;QACX,IAAI,EAAE,QAAQ,CAAC,YAAY;KAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAA8B;IACpE,IAAI,CAAC,QAAQ,EAAE,eAAe;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAgB,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAOlC;IACC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,uEAAuE;QACvE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;QACnD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KACzD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAsB,EAAE,UAA+B;IACtF,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrD,OAAO,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/db/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAIL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAUjC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAsB;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAgB,CAAC;IACxE,OAAO;QACL,WAAW;QACX,IAAI,EAAE,QAAQ,CAAC,YAAY;KAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAA8B;IACpE,IAAI,CAAC,QAAQ,EAAE,eAAe;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAgB,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAOlC;IACC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,uEAAuE;QACvE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;QACnD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KACzD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAsB,EACtB,UAA+B,EAC/B,OAAkC;IAElC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrD,OAAO,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC"}
@@ -109,6 +109,11 @@ export declare class CacheDatabase {
109
109
  deleteMediaStateByContentHash(contentHash: string): void;
110
110
  listMediaStates(status?: MediaStateStatus): MediaStateRecord[];
111
111
  private mapMediaStateRow;
112
+ /**
113
+ * Executes a synchronous callback within a SQLite transaction.
114
+ * Automatically commits on success and rolls back on error.
115
+ */
116
+ runTransaction<T>(fn: () => T): T;
112
117
  close(): void;
113
118
  }
114
119
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/db/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/db/cache.ts"],"names":[],"mappings":"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"}