Skip to content

feat(slidedeck): native slide deck writer and a shared zip package - #34

Merged
TheGreatAxios merged 1 commit into
mainfrom
cl-11886-build-a-native-powerpoint-writer-and-deck-tools-for-builders
Nov 1, 2026
Merged

TheGreatAxios merged 1 commit into
mainfrom
cl-11886-build-a-native-powerpoint-writer-and-deck-tools-for-builders

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Step 1 of CL-11886 (more steps follow, so it does not close the issue).

What changed

  • packages/zip (@corbits/zip): async zip/unzip. Deterministic within a runtime, no dependencies, runs in Bun and the browser. Unzip is hardened against hostile input: incremental inflate capped at the declared size and a total cap; bounds-checked offsets; overlapping entries and traversal or absolute names rejected. Meant to become Builder's one zip; jszip call sites are not moved here.
  • packages/slidedeck (@corbits/slidedeck):
    • validateDeck reports every issue with slide and path.
    • writePptx(deck, assets) writes a theme from tokens, a master logo, seven layouts (title, section, content, two-column, comparison, image, blank), text and image blocks, speaker notes, footer and slide numbers.
    • Asset problems are reported together before writing.
  • Zero runtime and dev dependencies added.

Verified

  • bun run lint, format:check, typecheck (including a DOM pass for zip), test, pins:verify pass.
  • Tests:
    • identical bytes on rewrite;
    • every part reads back with its CRC;
    • every XML part is well formed and every relationship target exists;
    • validation errors name the slide and field;
    • hostile zips (bomb, truncation, bad offsets, traversal) throw ZipError.
  • unzip -t is clean, and python-pptx reads back the slides, layouts, placeholders, notes, slide numbers 1–8 and the logo.
  • macOS Quick Look renders all 8 slides correctly.
  • Not yet checked: real PowerPoint and Keynote, ECMA-376 schema validation, LibreOffice; these are later steps.
  • Independent review; all findings fixed.

@linear-code

linear-code Bot commented Oct 31, 2026

Copy link
Copy Markdown

CL-11886

@corbits-triage

corbits-triage Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Triage: Pass

No changes needed from you. A maintainer will review this pull request.

Notes:

  • changes sensitive paths: locks: bun.lock

Triage will approve, request review.

@corbits-triage corbits-triage Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triage requests changes:

  • Conventions: added code matches a code pattern

@corbits-triage
corbits-triage Bot dismissed their stale review October 31, 2026 19:40

Nothing triage asked to change still fails, so this request no longer stands.

corbits-triage[bot]
corbits-triage Bot previously approved these changes Oct 31, 2026
corbits-triage[bot]
corbits-triage Bot previously approved these changes Oct 31, 2026
corbits-triage[bot]
corbits-triage Bot previously approved these changes Nov 1, 2026
corbits-triage[bot]
corbits-triage Bot previously approved these changes Nov 1, 2026
@TheGreatAxios
TheGreatAxios force-pushed the cl-11886-build-a-native-powerpoint-writer-and-deck-tools-for-builders branch from 53c6f12 to 8df125b Compare November 1, 2026 18:31
@TheGreatAxios TheGreatAxios changed the title feat(pptx): native PowerPoint writer and a shared zip package feat(slidedeck): native slide deck writer and a shared zip package Nov 1, 2026
corbits-triage[bot]
corbits-triage Bot previously approved these changes Nov 1, 2026
@TheGreatAxios
TheGreatAxios added this pull request to the merge queue Nov 1, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Nov 1, 2026
@TheGreatAxios
TheGreatAxios added this pull request to stack #50 November 1, 2026 18:46
@corbits-builder/zip writes and safely reads zip archives in the hub and
the browser with no dependencies. @corbits-builder/pptx validates a deck
model and writes a .pptx: theme from tokens, master logo, seven layouts,
text and image blocks, notes, footer and slide numbers.
@TheGreatAxios
TheGreatAxios added this pull request to the merge queue Nov 1, 2026
Merged via the queue into main with commit 718bf09 Nov 1, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant