feat: v4.6.0 — AI assistant, collaboration, knowledge base, and 15 more features

- AI Assistant plugin: multi-provider chat (OpenAI/Anthropic/Ollama/LM Studio),
  summarize/improve/translate commands, proofread via ai:analyze; calls
  proxied through main so API keys stay out of the renderer
- Collaboration plugin: anchor-based comments in .comments/ sidecars with
  drift detection and F8 navigation
- Local knowledge base: [[wiki-links]] with click-to-create + Backlinks panel
- Crash recovery: debounced session snapshots with restore prompt on launch
- Version history: pre-save snapshots, History panel with restore/diff/delete
- Real PDF encryption: swap pdf-lib for @cantoo/pdf-lib (probe-driven UI)
- XLSX export (native workbooks via JSZip), ODT headers/footers + page size
- Offline KaTeX (bundled CSS+fonts), local-first PlantUML rendering
- Editor: vim mode toggle, snippet Tab-expansion, zen word-goal setter,
  writing heatmap, writing-studio panels wired with rail icons
- Quick Note global scratchpad (Ctrl+Alt+Q), markdownconverter:// deep links,
  REPL first-run confirmation
- Fix: Ctrl+Shift+P collision, pandoc converter availability check, CLI
  dangling --css/--reference-doc flags, dead converter button

8 new test suites; 613 tests green; lint clean
This commit is contained in:
2026-09-05 20:48:39 +05:30
parent b83ba91731
commit c4dcbd8caf
105 changed files with 5695 additions and 195 deletions
+55
View File
@@ -100,3 +100,58 @@ body.zen-mode .editor-wrapper {
body[class*='dark'].zen-mode .zen-hud {
background: rgba(0, 0, 0, 0.7);
}
/* Word-goal setter (HUD button + inline dialog) */
.zen-goal-btn {
background: none;
border: none;
color: inherit;
font: inherit;
cursor: pointer;
padding: 0;
opacity: 0.7;
}
.zen-goal-btn:hover {
opacity: 1;
}
.zen-goal-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 11000;
}
.zen-goal-dialog {
background: var(--bg-primary, #fff);
color: var(--text-primary, #222);
border-radius: 8px;
padding: 20px;
display: flex;
flex-direction: column;
gap: 12px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}
.zen-goal-dialog h3 {
margin: 0;
}
.zen-goal-dialog input {
padding: 8px;
border: 1px solid var(--border-color, #ccc);
border-radius: 4px;
font: inherit;
}
.zen-goal-actions {
display: flex;
justify-content: flex-end;
gap: 8px;
}
.zen-goal-actions button {
padding: 6px 16px;
border-radius: 4px;
border: 1px solid var(--border-color, #ccc);
background: transparent;
color: inherit;
cursor: pointer;
}