feat: deliver P2 v0.2.0 with unified editor, search, and snapshots

Implement schema v2 migration, outline/setting/inspiration CRUD, unified TipTap editing, reference panel with mentions, FTS global search, chapter version history, writing landmarks, word frequency analysis, light theme contrast fixes, and full unit/E2E test coverage.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-06 14:13:27 +08:00
parent 91c93954df
commit aac51bf183
72 changed files with 5790 additions and 203 deletions
+57 -1
View File
@@ -68,6 +68,7 @@
"toast.bookCreated": "Book created",
"toast.saveFailed": "Save failed, please retry",
"toast.enterBookName": "Please enter a book title",
"toast.noBookOpen": "No book open",
"shortcuts.saveChapter": "Save chapter",
"shortcuts.newChapter": "New chapter",
"shortcuts.focusMode": "Focus mode",
@@ -83,5 +84,60 @@
"shortcuts.recordHint": "Press a new key combination (Esc to cancel)",
"shortcuts.recording": "Recording…",
"shortcuts.conflict": "This shortcut is already assigned",
"shortcuts.registerFailed": "Failed to register shortcut, may conflict with another app"
"shortcuts.registerFailed": "Failed to register shortcut, may conflict with another app",
"outline.new": "New Outline",
"outline.newItem": "New outline node",
"outline.empty": "No outline yet. Click below to create one.",
"setting.new": "New Setting",
"setting.empty": "No settings yet",
"setting.typeLabel": "Type",
"setting.nameLabel": "Name",
"setting.type.character": "Character",
"setting.type.location": "Location",
"setting.type.item": "Item",
"setting.type.skill": "Skill",
"setting.type.faction": "Faction",
"setting.type.custom": "Custom",
"inspiration.new": "New Idea",
"inspiration.newItem": "New idea",
"inspiration.empty": "No ideas yet",
"inspiration.untitled": "Untitled",
"inspiration.noContent": "(empty)",
"outline.filterAll": "All",
"outline.filterUncovered": "Uncovered",
"outline.filterCovered": "Covered",
"outline.compare": "Compare",
"outline.compareTitle": "Outline vs Chapter",
"outline.exitCompare": "Exit compare",
"outline.emptyFilter": "No matching items",
"outline.notWritten": "Not written yet",
"outline.noContent": "No content",
"outline.expected": "Expected",
"outline.actual": "Actual",
"outline.deviation": "Deviation",
"outline.jumpEditor": "Open in editor",
"reference.title": "Reference",
"reference.search": "Search references…",
"reference.tab.setting": "Settings",
"reference.tab.outline": "Outline",
"reference.tab.inspiration": "Ideas",
"search.title": "Global Search",
"search.placeholder": "Search…",
"search.regex": "Regex",
"search.caseSensitive": "Case sensitive",
"version.title": "Version History",
"version.empty": "No snapshots",
"version.create": "Create snapshot",
"version.restore": "Restore",
"version.manual": "Manual snapshot",
"version.selectHint": "Select a version to compare",
"version.restoreConfirm": "Restore this version? Current content will be overwritten.",
"landmark.title": "Landmarks",
"landmark.empty": "No landmarks",
"landmark.insert": "Insert landmark",
"landmark.prompt": "Landmark label",
"landmark.created": "Landmark inserted",
"landmark.chapterOnly": "Insert landmarks in a chapter",
"wordfreq.hint": "Top 100 words in current scope",
"wordfreq.aiNaming": "AI naming suggestions"
}