Skip to content

feat(documents): Spreadsheet Viewer — Excel / ODS / CSV - #142

Merged
slaveofcode merged 15 commits into
developfrom
feat/documents-spreadsheet-viewer
Aug 2, 2026
Merged

feat(documents): Spreadsheet Viewer — Excel / ODS / CSV#142
slaveofcode merged 15 commits into
developfrom
feat/documents-spreadsheet-viewer

Conversation

@slaveofcode

Copy link
Copy Markdown
Owner

What

New Spreadsheet Viewer in the Documents category — opens .xlsx, .xlsm, legacy .xls, OpenDocument .ods and .csv files entirely in the browser. Every sheet renders as a scrollable grid with column letters (A, B, C…) and row numbers, sheet tabs for multi-sheet workbooks. Cells show their Excel-formatted values (dates, currency, percentages); formulas show last-saved results. Nothing is uploaded.

Security note

Uses the patched SheetJS 0.20.3 (Apache-2.0) installed from SheetJS's own CDN tarball — not the npm registry xlsx@0.18.5, which carries the CVE-2023-30533 prototype-pollution and CVE-2024-22363 ReDoS advisories. npm audit confirms our pinned build is not flagged. Bundled same-origin (no external runtime fetch); the ~500KB engine is a lazy dynamic import and excluded from the PWA precache via a workbox globIgnore.

Details

  • src/tools/documents/spreadsheet.lib.ts — pure parse→grid lib (XLSX injected, kept lazy), 14 unit tests (col labels, ragged-row padding, row/col caps, date formatting)
  • src/islands/documents/SpreadsheetViewer.tsx — thin island, dynamic-imports xlsx
  • Registered spreadsheet-viewer (beta); EN + ID SEO + OG
  • 653 tests pass · 0 lint errors · build green (/tools/spreadsheet-viewer + /id/...)

🤖 Generated with Claude Code

slaveofcode and others added 15 commits August 2, 2026 03:13
Promote to production: Bahasa Indonesia (/id/) i18n
Promote to production: Digital Legacy Letter (Legacy category)
Promote to production: legacy letter illustrated + Bahasa explainer
Promote to production: UX fixes (categories, mobile navbar, lang switcher, search)
Promote: Bahasa legacy-letter forms
Promote: GA fix + localized header/About + contact email
Promote: Bahasa Dev tool UIs (wave 1)
Promote: Bahasa Image tool UIs (wave 2)
Promote: Bahasa tool UIs — final wave (all 73 tools)
Promote: Bahasa shared UI components
Promote: Bahasa Privacy page
Promote: Ghost Blog Backup tool
Promote to production: DOCX Viewer + Documents category
Open .xlsx/.xlsm, legacy .xls, OpenDocument .ods and .csv files entirely
in the browser — every sheet rendered as a scrollable grid with column
letters and row numbers. Cells show their Excel-formatted values (dates,
currency, percentages), formulas as last-saved results. Nothing uploaded.

Uses the patched SheetJS build (0.20.3, Apache-2.0) from SheetJS's own CDN
tarball, not the CVE-affected npm 'xlsx' 0.18.5. The ~500KB engine is a
lazy dynamic import and excluded from the PWA precache (workbox globIgnore).
Bilingual (EN + ID) UI, SEO and OG.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ubfx4XocHcECaL8twp9zsr
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
goodwebtools a79858e Aug 02 2026, 03:40 PM

@slaveofcode
slaveofcode merged commit a965c88 into develop Aug 2, 2026
2 checks passed
@slaveofcode
slaveofcode deleted the feat/documents-spreadsheet-viewer branch August 2, 2026 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant