Full document, spreadsheet, slideshow, and diagram tooling
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: bump to v0.2.0

- CHANGELOG.md: restructured with proper semver sections (v0.2.0, v0.1.0)
with full release notes for everything shipped this session
- package.json: version 0.1.0 → 0.2.0
- CLAUDE.md: updated for TypeScript codebase, added versioning convention,
release process, and commit convention docs

+109 -100
+108 -99
CHANGELOG.md
··· 2 2 3 3 All notable changes to this project will be documented in this file. 4 4 5 - The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). 5 + The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 + and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 7 7 8 ## [Unreleased] 8 9 10 + ### Added 11 + - Empty Trash button to permanently delete all trashed documents at once 12 + - Auto-versioning: snapshots auto-created every 5 minutes for recovery 13 + - Save protection: `_hadSnapshot` persists across saves, not just loads 14 + 15 + ## [0.2.0] — 2026-03-19 16 + 17 + Major release: TypeScript migration, seamless import/export, formula engine overhaul, and UX improvements. 18 + 19 + ### Added — Sheets 20 + - **8 new power functions**: XLOOKUP, SUMIFS, COUNTIFS, AVERAGEIFS, LET, TEXTJOIN, CONCAT, SWITCH 21 + - **Topological recalculation engine**: dependency graph with Kahn's algorithm, only recalculates affected cells 22 + - **Circular reference detection**: `#CIRCULAR!` error with cycle path reporting 23 + - **Volatile function handling**: NOW, TODAY, RAND, RANDBETWEEN always re-evaluated 24 + - **Formula syntax highlighting**: cell refs (blue), functions (purple), strings (green), numbers (orange) in formula bar 25 + - **Range highlighting**: referenced cells colored on grid while editing formulas (6-color palette) 26 + - **Parameter tooltips**: inline signature help for all 57+ functions with current param highlighted 27 + - **Rich clipboard paste**: paste from Excel/Google Sheets preserves colors, fonts, bold, italic, alignment 28 + - **Copy with formatting**: copies styled HTML + TSV to clipboard for Excel/Google Sheets compatibility 29 + - **CSV export**: RFC 4180 compliant with UTF-8 BOM, delimiter options, range export 30 + - **XLSX export**: maps cell styles back to Excel format, preserves formulas (Cmd+Shift+E) 31 + - **Multi-sheet XLSX import**: imports ALL sheets from workbook (was first sheet only), creates tabs 32 + - **ExcelJS integration**: replaced SheetJS with ExcelJS for proper style extraction (background colors, text colors, fonts) 33 + - **Font size** (8–24pt dropdown), **font family** (sans/serif/mono), **underline** (Cmd+U), **strikethrough** (Cmd+Shift+X), **vertical alignment** (top/middle/bottom) 34 + - **Format painter**: wired to toolbar with single-click and double-click (sticky) modes 35 + - **Row/column insert/delete**: insert above/below/left/right, delete, formula refs auto-adjusted 36 + - **Context menu**: full right-click menus on cells, row headers, column headers with real actions 37 + - **Virtual scrolling**: only renders visible rows + buffer, large sheets now performant 38 + - **Command palette** (Cmd+K): fuzzy search across documents + contextual actions on all pages 39 + 40 + ### Added — Docs 41 + - **Drag-drop files into editor**: drop .docx/.md/.txt directly onto the editor 42 + - **Paste/drop images**: insert images as base64 data URLs (5MB limit) 43 + 44 + ### Added — Platform 45 + - **SVG favicon**: overlapping docs+sheets design with shield-lock badge 46 + - **Drag-drop import on landing**: drop files to auto-create and import documents 47 + - **File naming**: imported files use filename (minus extension) as document name 48 + - **Title select-all**: clicking document title selects all text for easy renaming 49 + - **Reusable drop overlay component** (`drop-overlay.ts`) 50 + 51 + ### Added — CI/Testing 52 + - **Playwright e2e tests**: 16 tests covering health, document/sheet lifecycle, import, collaboration 53 + - **CI test gate**: unit tests + e2e tests run BEFORE build, blocking broken deploys 54 + - **Enhanced deploy healthchecks**: validates HTML, API, and WebSocket endpoints 55 + - **2048 unit tests** across 77 test files 56 + 57 + ### Changed 58 + - **Full TypeScript migration**: all 122 source + test files, zero `any` types 59 + - **Server reorganized**: `server.js` → `server/index.ts` with full Express/WS/SQLite types 60 + - **`server.js` shim**: backwards-compatible entry point for Nomad deployment 61 + 62 + ### Fixed 63 + - **Data persistence race conditions** (5 bugs): save-before-sync, import coordination, observer re-attachment, snapshot validation 64 + - **Paste crash** (#144): `parsedRows` undefined reference in `pasteAtSelection` 65 + - **XLSX import crash**: missing `ensureSheet`/`renderSheetTabs` parameters 66 + - **Trash toggle**: list now renders and displays correctly when expanded 67 + - **Dead module imports**: clipboard, CSV/XLSX export, drop overlay were never imported after TS migration 68 + 69 + ### Documentation 70 + - PRODUCT.md: 1,012-line product bible (vision, architecture, features, roadmap, competitive analysis, user journeys, gap analysis) 71 + - README.md: features, quick start, architecture diagram, E2EE security model, self-hosting guide 72 + - CONTRIBUTING.md: dev setup, project structure, step-by-step guides for adding formulas/extensions/features 73 + - SECURITY.md: threat model, AES-256-GCM details, key lifecycle, known limitations 74 + - 7 Architecture Decision Records (vanilla JS, key-in-fragment, Yjs CRDT, SQLite, plugin system, forms, AI integration) 75 + 76 + ## [0.1.0] — 2026-03-16 77 + 78 + Initial release: E2EE collaborative office suite with docs and sheets. 79 + 9 80 ### Documents 10 - - Outline sidebar with navigable H1/H2/H3 heading tree (#37) 11 - - Floating table toolbar: row/column manipulation, cell merge/split, header toggle, cell color (#37) 12 - - Link preview tooltips on hover: URL display, Open/Edit/Remove actions (#37) 13 - - Zen mode (Cmd+Shift+F): distraction-free editing with hidden toolbar (#37) 14 - - Slash commands (`/`): Notion-style command palette with 15 block types (#37) 15 - - Block handles: Notion-style drag handle with context menu (Turn into, Delete, Duplicate, Move) (#37) 16 - - Markdown source toggle (Cmd+Shift+M): switch between WYSIWYG and raw markdown editing 17 - - Markdown export via Turndown with GFM support (tables, task lists, strikethrough, code languages) 18 - - Markdown import via markdown-it with GFM extensions (tables, task lists, strikethrough) 19 - - Markdown autoformatting input rules: `#`, `##`, `-`, `1.`, `>`, `[]`, `---`, backticks, `**`, `~~`, `[text](url)` (#27) 20 - - Line spacing presets (1, 1.15, 1.5, 2, 2.5, 3) and paragraph spacing controls (#28) 21 - - Page breaks with print-friendly rendering (#28) 22 - - Inline comments with author, timestamp, and text (#8) 23 - - Suggesting mode (track changes): insert/delete marks with session grouping, accept/reject per suggestion or bulk (#33) 24 - - Find and replace (Cmd+F / Cmd+H) with match highlighting and active match indicator (#5) 25 - - Font size control beyond heading levels (#10) 26 - - Font family selection, text color, highlight color 27 - - Text alignment (left, center, right, justify) 28 - - Subscript, superscript support 29 - - Task lists with checkboxes (nestable) 30 - - Indent/outdent for paragraphs, headings, and lists (Cmd+]/Cmd+[) (#14) 31 - - PDF export via html2pdf.js with light-mode rendering (#29) 32 - - .docx import via mammoth.js with heading style mapping (#29) 33 - - Word and character count in footer (#16) 34 - - Keyboard shortcut cheatsheet modal (#15) 81 + - Rich text editing with TipTap: bold, italic, underline, color, highlight, font family/size 82 + - Heading levels (H1–H6), text alignment, subscript/superscript 83 + - Tables, lists, task lists, code blocks, blockquotes, horizontal rules 84 + - Outline sidebar, zen mode, slash commands, block handles 85 + - Markdown: import, export, source toggle, autoformatting input rules 86 + - Find and replace (Cmd+F / Cmd+H) 87 + - Comments, suggesting mode (track changes) 88 + - PDF export, .docx import 89 + - Line spacing, paragraph spacing, page breaks, indent/outdent 90 + - Word/character count, keyboard shortcut cheatsheet 35 91 36 92 ### Spreadsheets 37 - - Custom grid engine with 100x26 default grid, cell editing, formula bar 38 - - Formula engine: recursive descent parser with 50+ functions across math, text, date, lookup, conditional categories 39 - - Functions: SUM, AVERAGE, COUNT, COUNTA, MIN, MAX, MEDIAN, STDEV, ABS, ROUND, ROUNDUP, ROUNDDOWN, INT, MOD, POWER, SQRT, LOG, LN, EXP, PI, RAND, IF, AND, OR, NOT, IFERROR, CONCATENATE, LEN, LEFT, RIGHT, MID, UPPER, LOWER, TRIM, SUBSTITUTE, FIND, SEARCH, TEXT, VALUE, NOW, TODAY, DATE, YEAR, MONTH, DAY, VLOOKUP, HLOOKUP, INDEX, MATCH, SUMIF, COUNTIF, AVERAGEIF (#12) 40 - - Cross-sheet references: `Sheet2!A1`, `'Sheet Name'!A1:B5` (#35) 41 - - Named ranges: human-friendly aliases for cell ranges in formulas (#35) 42 - - Formula autocomplete dropdown with function signatures (#34) 43 - - Formula tracer: trace precedents (inputs) and dependents (outputs) of any cell (#35) 44 - - Charts via Chart.js: bar, line, pie, scatter with auto-detected headers and axis labels (#31) 45 - - Multi-column filter: per-column value checkboxes (#31) 46 - - Multi-column sort: up to 3 sort levels, stable sort (#31) 47 - - Conditional formatting: 7 rule types (greaterThan, lessThan, equalTo, between, textContains, isEmpty, isNotEmpty) with custom colors (#30) 48 - - Data validation: list (dropdown), numberBetween, textLength with visual indicators (#30) 49 - - Cell borders: per-side and preset (all, outline, none) (#30) 50 - - Wrap text toggle per cell (#30) 51 - - Striped rows (alternating background) (#30) 52 - - Cell notes: plain text annotations with triangle indicator and hover tooltips (#34) 53 - - Status bar: SUM, AVERAGE, COUNT, MIN, MAX for multi-cell selections (#34) 54 - - Resizable column widths with drag handles (#6) 55 - - Column auto-fit on double-click (measure content width) (#19) 56 - - Frozen panes: lock header rows and columns (#7) 57 - - Cell merging and unmerging with colspan/rowspan (#11) 58 - - Drag-to-fill: pattern detection (number sequences, date sequences, formula adjustment, text repeat) (#36) 59 - - Paste special: values only, formulas only, formatting only, transpose (#36) 60 - - Format painter: copy cell formatting and apply to other cells (#36) 61 - - Multi-sheet tabs with add/rename/switch (#36) 62 - - .xlsx import via SheetJS with values, formulas, bold, number formats (#29) 63 - - CSV paste with auto-detect headers (#13) 64 - - Improved drag-to-select range visual feedback with border indicators (#18) 65 - - Virtual scrolling module for large sheet performance (pure logic ready) (#36) 93 + - Custom grid engine with formula bar 94 + - 50+ formula functions (math, text, date, lookup, conditional) 95 + - Cross-sheet references, named ranges, formula tracer, autocomplete 96 + - Charts (bar, line, pie, scatter), multi-column filter/sort 97 + - Conditional formatting, data validation, cell borders, wrap, striped rows 98 + - Cell notes, status bar (SUM/AVG/COUNT/MIN/MAX) 99 + - Column resize, auto-fit, frozen panes, cell merging 100 + - Drag-to-fill, paste special, multi-sheet tabs 101 + - .xlsx import, CSV import with header detection 66 102 67 103 ### Collaboration 68 - - Real-time editing via Yjs CRDT with encrypted WebSocket provider 69 - - Awareness protocol: colored cursors with usernames 70 - - Encrypted sync: all Yjs messages AES-256-GCM encrypted before transmission 71 - - Automatic encrypted snapshot persistence (debounced saves + periodic saves) 72 - - Reconnection with exponential backoff and jitter 73 - - Version history: automatic capture (edit threshold or time threshold), FIFO pruning (max 50), word count deltas, restore (#33) 74 - - Suggesting mode: track changes with insert/delete marks, session grouping, accept/reject (#33) 75 - - Offline support: online/offline detection, change queue, cache strategy (#33) 104 + - Real-time editing via Yjs CRDT with encrypted WebSocket 105 + - Awareness protocol (colored cursors with usernames) 106 + - Version history (50 snapshots, FIFO pruning) 107 + - Offline support with change queue 76 108 77 - ### Sharing & Permissions 78 - - Share dialog with URL builder, mode selector (edit/view), copy to clipboard (#39) 79 - - View-only mode: disables toolbar and editing, shows badge (#39) 80 - - Link expiry: 1h, 1d, 7d, 30d options with server-side enforcement (HTTP 410) (#39) 81 - - E2EE key in URL fragment: encryption key never sent to server 109 + ### Sharing 110 + - Share dialog with edit/view modes 111 + - View-only mode, link expiry (1h/1d/7d/30d) 112 + - E2EE key in URL fragment 82 113 83 114 ### Landing Page 84 - - Document list with type icons, decrypted names, last updated timestamps 85 - - Sort: by last updated, created, name, or type; starred items sort first (#32) 86 - - Search: filter by decrypted document name (#32) 87 - - Folders: create, rename, delete; move documents between folders; breadcrumbs (#32) 88 - - Favorites/Stars: star/unstar with priority sorting (#32) 89 - - Trash: soft delete with 30-day auto-purge; restore or permanently delete (#32) 90 - - Username prompt on first visit; click badge to change (#32) 115 + - Document browser with sort, search, folders, favorites, trash 116 + - Username prompt, dark mode toggle 91 117 92 - ### Platform & UX 93 - - Dark mode: automatic (prefers-color-scheme), manual toggle, persisted (#23) 94 - - Right-click context menus for docs (text, link, image, table) and sheets (cell, column header, row header) with keyboard navigation (#38) 95 - - Print layout: page size presets, margin presets, headers/footers, pagination for docs; grid lines, header repeat, scaling for sheets (#38) 96 - - Responsive toolbar: collapse overflow items on narrow viewports (#4) 97 - - Hover tooltips on all toolbar buttons (#3) 98 - - Grouped dropdowns for alignment and list buttons (#2) 99 - - Collapsible overflow menu for less-used toolbar items (#1) 100 - - Autosave indicator with last saved timestamp (#17) 101 - - Skip links and ARIA roles for accessibility (#39) 102 - - Mobile-responsive layout with touch-friendly targets (#39) 103 - - System fonts only (Charter, system-ui, ui-monospace) -- no external font dependencies 104 - - OkLCH color system for perceptual uniformity across themes 105 - - Legacy localStorage key migration (crypt-* to tools-*) 106 - 107 - ### Fixed 108 - - Fix Docker image reference in homelab-nix crypt-tools service (#24) 109 - - Docs+Sheets: proper Tab key support (indent in docs, cell navigation in sheets) (#20) 110 - - Sheets: wire up Ctrl+Z/Cmd+Z undo keyboard binding via Yjs UndoManager (#9) 111 - 112 - ### Changed 113 - - Rename all crypt references to tools across the codebase (#22) 114 - - Add comprehensive test suite: 60+ test files covering all pure logic modules (#25) 115 - - Toolbar redesign to match Google Docs visual style (#26) 118 + ### Platform 119 + - AES-256-GCM encryption via Web Crypto API 120 + - Dark mode (auto + manual toggle) 121 + - Right-click context menus, print layout 122 + - Responsive toolbar, hover tooltips 123 + - System fonts (Charter, system-ui, ui-monospace), OkLCH colors 124 + - 1500+ unit tests
+1 -1
package.json
··· 1 1 { 2 2 "name": "tools", 3 - "version": "0.1.0", 3 + "version": "0.2.0", 4 4 "private": true, 5 5 "type": "module", 6 6 "scripts": {