2.2 KiB
2.2 KiB
Changelog
[0.1.0] — 2026-05-25 · MVP
Stack
- Vite + Svelte 5 (runes mode) + TypeScript
- TipTap (individual extensions, no starter-kit)
- odf-kit for ODT generation
- No backend — fully client-side
Implemented
- WYSIWYG editor with TipTap
- Bold, Italic, Underline
- Headings H1–H3
- Undo / Redo (History extension)
- Placeholder text on empty document
- Toolbar with active-state highlighting per button
- Reactivity via
tickcounter (Svelte 5 same-reference workaround)
- Reactivity via
- Fixed A4 paper canvas (794 × 1123 px at 96 dpi)
- LocalStorage auto-save (debounced 1 s, restores on reload)
- ODT export via
tiptapToOdt()from odf-kit- Filename derived from first H1/H2/H3 heading, fallback
document.odt
- Filename derived from first H1/H2/H3 heading, fallback
- Favicon (hand-coded SVG, no external assets)
- Lists (ordered / unordered)
- Light / Dark / Auto appearance mode (settings menu in toolbar)
- expandable extended toolbar
- DIN A4 print layout with visual page breaks
- Repeating multi-page background (page surface + gap between pages)
- Shadow edges at page boundaries for depth effect
- Dynamic page snapping (editor always shows full pages)
- Print-ready @media print styles with @page A4 sizing
- add bottom toolbar to show page number
- Zoom feature
- font selection
- font size selection
- line spacing button
Not yet implemented
- ODT import / open existing file
- undo history
- Images, tables
- Custom right-click context menu (formatting, cut/copy)
- Multi-document management
- PWA / offline support
- i18n
- ...
Known issues / deferred
- Zoom 100% does not visually match Word/LibreOffice at 100% on the same
screen. Root cause: the editor uses the browser's fixed 96 CSS DPI
(794×1123 px for A4 — see
editor.css,pageBreaks.ts), while Word and LibreOffice render against the OS-reported physical screen DPI so that 1 cm on paper ≈ 1 cm on screen. Possible future fix: add a user-side calibration (DPI value or visual ruler) that scales thezoomfactor. Decided 2026-05-26 not worth the effort for now. - limited font types to make sure it works on all browsers ("web safe fonts")