oficina / slides Public

Merge branch 'feat-home-sso' into main

claude agent, operated by paul@keymail.dev pushed by paul@keymail.dev ed5cc515e9896755d43a86d8b3a39eb6bf183c2e parent 298e00cparent 6ed0951
326 files changed, +63448 −251
  • .amadan/README.md +139 −0
  • .amadan/ci +7 −4
  • .amadan/ci.d/10-gate +202 −0
  • .amadan/ci.d/10-vet +0 −2
  • .amadan/ci.d/20-fmt +0 −2
  • .amadan/ci.d/30-test +0 −2
  • .amadan/ci.d/40-migration-check +0 −2
  • .cargo/config.toml +19 −0
  • .gitignore +11 −0
  • AGENTS.md +581 −57
  • CODEX-FINDINGS-SPEC.md +67 −0
  • CODEX-REVIEW-BRIEF-SPEC.md +92 −0
  • Makefile +2 −0
  • PRODUCT.md +350 −0
  • README.md +146 −15
  • clippy.toml +5 −0
  • cmd/slides/main.go +233 −13
  • core/.gitignore +1 −0
  • core/Cargo.lock +584 −0
  • core/Cargo.toml +36 −0
  • core/pdf/.gitignore +1 −0
  • core/pdf/Cargo.lock +905 −0
  • core/pdf/Cargo.toml +52 −0
  • core/pdf/src/abi.rs +207 −0
  • core/pdf/src/lib.rs +171 −0
  • core/pdf/tests/fonts/LiberationSerif-Regular.ttf binary
  • core/pdf/tests/no_host_imports.rs +52 −0
  • core/pdf/tests/render.rs +218 −0
  • core/src/abi.rs +463 −0
  • core/src/check.rs +294 −0
  • core/src/layout.rs +461 −0
  • core/src/lib.rs +152 −0
  • core/src/markdown.rs +344 −0
  • core/src/ops.rs +1282 −0
  • core/src/schema.rs +701 −0
  • core/src/view.rs +423 −0
  • core/tests/no_host_imports.rs +56 −0
  • core/tests/ops.rs +772 −0
  • core/vendor/README.md +120 −0
  • core/vendor/fastrand-2.5.0/CHANGELOG.md +140 −0
  • core/vendor/fastrand-2.5.0/Cargo.toml +96 −0
  • core/vendor/fastrand-2.5.0/LICENSE-APACHE +201 −0
  • core/vendor/fastrand-2.5.0/LICENSE-MIT +23 −0
  • core/vendor/fastrand-2.5.0/README.md +110 −0
  • core/vendor/fastrand-2.5.0/benches/bench.rs +141 −0
  • core/vendor/fastrand-2.5.0/src/global_rng.rs +234 −0
  • core/vendor/fastrand-2.5.0/src/lib.rs +736 −0
  • core/vendor/fastrand-2.5.0/tests/char.rs +44 −0
  • core/vendor/fastrand-2.5.0/tests/smoke.rs +357 −0
  • docs/api.md +838 −0
  • docs/superpowers/plans/2026-09-07-slice-1-live.md +258 −0
  • docs/superpowers/plans/2026-09-07-slice-2-editor.md +155 −0
  • docs/superpowers/plans/2026-09-08-slice-3-export.md +66 −0
  • docs/superpowers/specs/2026-09-07-slides-design.md +915 −0
  • fixtures/.gitignore +1 −0
  • fixtures/assets.test.mjs +119 −0
  • fixtures/build-bundles.mjs +67 −0
  • fixtures/canvas.mjs +319 −0
  • fixtures/canvas.test.mjs +86 −0
  • fixtures/changes.mjs +59 −0
  • fixtures/changes.test.mjs +74 −0
  • fixtures/check.mjs +146 −0
  • fixtures/check.test.mjs +110 −0
  • fixtures/commands.mjs +114 −0
  • fixtures/data/canvas.json +27 −0
  • fixtures/data/columns.json +28 −0
  • fixtures/data/every-block.json +41 −0
  • fixtures/data/table.json +19 −0
  • fixtures/data/title-only.json +13 −0
  • fixtures/dom-stub.mjs +165 −0
  • fixtures/editor-entry.js +688 −0
  • fixtures/frames.mjs +37 −0
  • fixtures/frames.test.mjs +33 −0
  • fixtures/generate.mjs +64 −0
  • fixtures/ids.mjs +17 −0
  • fixtures/inspector-block.mjs +123 −0
  • fixtures/inspector-image.mjs +188 −0
  • fixtures/inspector-ops.mjs +238 −0
  • fixtures/inspector.mjs +225 −0
  • fixtures/inspector.test.mjs +246 −0
  • fixtures/layout.mjs +111 −0
  • fixtures/link-dialog.mjs +58 −0
  • fixtures/link-dialog.test.mjs +53 −0
  • fixtures/live-updates.mjs +282 −0
  • fixtures/live-updates.test.mjs +369 −0
  • fixtures/markdown.mjs +190 −0
  • fixtures/ops-apply.mjs +337 −0
  • fixtures/ops-model.mjs +253 −0
  • fixtures/ops-parse.mjs +114 −0
  • fixtures/ops.mjs +48 −0
  • fixtures/ops.test.mjs +453 −0
  • fixtures/package-lock.json +715 −0
  • fixtures/package.json +27 −0
  • fixtures/poison.mjs +120 −0
  • fixtures/presence-view.mjs +202 −0
  • fixtures/presence-view.test.mjs +17 −0
  • fixtures/presence.mjs +247 −0
  • fixtures/presence.test.mjs +166 −0
  • fixtures/resync-controller.mjs +115 −0
  • fixtures/resync-controller.test.mjs +159 −0
  • fixtures/save-queue.mjs +122 −0
  • fixtures/save-queue.test.mjs +100 −0
  • fixtures/schema.mjs +175 −0
  • fixtures/schema.test.mjs +118 −0
  • fixtures/selection.mjs +125 −0
  • fixtures/selection.test.mjs +47 −0
  • fixtures/stage.mjs +300 −0
  • fixtures/stage.test.mjs +160 −0
  • fixtures/status.mjs +30 −0
  • fixtures/status.test.mjs +25 −0
  • fixtures/strip-reorder.mjs +92 −0
  • fixtures/strip-reorder.test.mjs +29 −0
  • fixtures/strip.mjs +182 −0
  • fixtures/strip.test.mjs +152 −0
  • fixtures/switcher.mjs +99 −0
  • fixtures/switcher.test.mjs +76 −0
  • fixtures/text-keys.mjs +109 −0
  • fixtures/text-keys.test.mjs +80 −0
  • fixtures/uploads.mjs +199 −0
  • fixtures/uploads.test.mjs +155 −0
  • fixtures/vectors/canvas.view.json +360 −0
  • fixtures/vectors/canvas.yjs binary
  • fixtures/vectors/columns.view.json +311 −0
  • fixtures/vectors/columns.yjs binary
  • fixtures/vectors/every-block.view.json +306 −0
  • fixtures/vectors/every-block.yjs binary
  • fixtures/vectors/table.view.json +156 −0
  • fixtures/vectors/table.yjs binary
  • fixtures/vectors/title-only.view.json +133 −0
  • fixtures/vectors/title-only.yjs binary
  • fixtures/view.mjs +161 −0
  • fixtures/view.test.mjs +58 −0
  • fixtures/ydoc.mjs +142 −0
  • go.mod +11 −4
  • go.sum +18 −6
  • internal/slides/agents.go +571 −0
  • internal/slides/api.go +855 −0
  • internal/slides/app.go +300 −35
  • internal/slides/assets.go +876 −0
  • internal/slides/assets_embed.go +99 −0
  • internal/slides/auth.go +582 −0
  • internal/slides/auth_test.go +146 −0
  • internal/slides/config.go +221 −0
  • internal/slides/config_test.go +140 −0
  • internal/slides/core/check_test.go +90 −0
  • internal/slides/core/core.go +708 −0
  • internal/slides/core/core_test.go +239 −0
  • internal/slides/core/testdata/slides_core.wasm binary
  • internal/slides/core/vectors_test.go +186 −0
  • internal/slides/deck/deck.go +192 −0
  • internal/slides/deck/deck_test.go +170 −0
  • internal/slides/decks.go +1135 −0
  • internal/slides/decks_test.go +176 −0
  • internal/slides/editor.go +387 −0
  • internal/slides/export.go +507 −0
  • internal/slides/export_test.go +712 −0
  • internal/slides/exports.go +1162 −0
  • internal/slides/fonts/files/LICENSE-OFL-1.1.txt +91 −0
  • internal/slides/fonts/files/LiberationMono-Bold.ttf binary
  • internal/slides/fonts/files/LiberationMono-BoldItalic.ttf binary
  • internal/slides/fonts/files/LiberationMono-Italic.ttf binary
  • internal/slides/fonts/files/LiberationMono-Regular.ttf binary
  • internal/slides/fonts/files/LiberationSans-Bold.ttf binary
  • internal/slides/fonts/files/LiberationSans-BoldItalic.ttf binary
  • internal/slides/fonts/files/LiberationSans-Italic.ttf binary
  • internal/slides/fonts/files/LiberationSans-Regular.ttf binary
  • internal/slides/fonts/files/LiberationSerif-Bold.ttf binary
  • internal/slides/fonts/files/LiberationSerif-BoldItalic.ttf binary
  • internal/slides/fonts/files/LiberationSerif-Italic.ttf binary
  • internal/slides/fonts/files/LiberationSerif-Regular.ttf binary
  • internal/slides/fonts/fonts.go +313 −0
  • internal/slides/fonts/fonts_test.go +229 −0
  • internal/slides/fonts/truetype.go +703 −0
  • internal/slides/handlers.go +98 −7
  • internal/slides/home.go +169 −0
  • internal/slides/home_test.go +584 −0
  • internal/slides/layout/blocks.go +531 −0
  • internal/slides/layout/fixture_test.go +226 −0
  • internal/slides/layout/layout.go +572 −0
  • internal/slides/layout/layout_test.go +606 −0
  • internal/slides/layout/paint.go +333 −0
  • internal/slides/layout/props.go +217 −0
  • internal/slides/layout/regions.go +179 −0
  • internal/slides/layout/regions_test.go +219 −0
  • internal/slides/layout/sizes.go +178 −0
  • internal/slides/layout/testdata/blank.golden.json +187 −0
  • internal/slides/layout/testdata/canvas-reflow.golden.json +83 −0
  • internal/slides/layout/testdata/canvas.golden.json +70 −0
  • internal/slides/layout/testdata/image-full.golden.json +49 −0
  • internal/slides/layout/testdata/quote.golden.json +46 −0
  • internal/slides/layout/testdata/section.golden.json +29 −0
  • internal/slides/layout/testdata/title-body.golden.json +237 −0
  • internal/slides/layout/testdata/title.golden.json +33 −0
  • internal/slides/layout/testdata/two-column.golden.json +124 −0
  • internal/slides/layout/text.go +356 −0
  • internal/slides/layout/unreached_test.go +90 −0
  • internal/slides/live.go +689 −0
  • internal/slides/live/hub.go +319 −0
  • internal/slides/live/hub_test.go +168 −0
  • internal/slides/live_test.go +49 −0
  • internal/slides/locales/en.toml +587 −0
  • internal/slides/migrations.go +7 −9
  • internal/slides/migrations/0001_init.sql +2 −1
  • internal/slides/migrations/0002_create_decks.sql +16 −0
  • internal/slides/migrations/0003_create_share_links.sql +6 −0
  • internal/slides/migrations/0004_create_presentations.sql +8 −0
  • internal/slides/migrations/0005_create_agents.sql +6 −0
  • internal/slides/migrations/0006_create_deck_snapshots.sql +4 −0
  • internal/slides/migrations/0007_create_deck_assets.sql +4 −0
  • internal/slides/migrations/0008_create_asset_uploads.sql +6 −0
  • internal/slides/migrations/schema.sql +53 −1
  • internal/slides/models.go +371 −10
  • internal/slides/pdfcore/pdfcore.go +355 −0
  • internal/slides/pdfcore/pdfcore_test.go +333 −0
  • internal/slides/pdfcore/testdata/slides_pdf.wasm binary
  • internal/slides/present/hub.go +129 −0
  • internal/slides/present/hub_test.go +118 −0
  • internal/slides/presentation.go +1460 −0
  • internal/slides/render.go +150 −21
  • internal/slides/render/assets_test.go +101 −0
  • internal/slides/render/order_test.go +140 −0
  • internal/slides/render/render.go +1376 −0
  • internal/slides/render/render_test.go +1066 −0
  • internal/slides/render/testdata/blank-desktop.golden.html +45 −0
  • internal/slides/render/testdata/blank-phone.golden.html +45 −0
  • internal/slides/render/testdata/canvas-desktop.golden.html +9 −0
  • internal/slides/render/testdata/canvas-phone.golden.html +9 −0
  • internal/slides/render/testdata/canvas-reflow-desktop.golden.html +13 −0
  • internal/slides/render/testdata/canvas-reflow-phone.golden.html +17 −0
  • internal/slides/render/testdata/image-full-desktop.golden.html +12 −0
  • internal/slides/render/testdata/image-full-phone.golden.html +12 −0
  • internal/slides/render/testdata/quote-desktop.golden.html +17 −0
  • internal/slides/render/testdata/quote-phone.golden.html +17 −0
  • internal/slides/render/testdata/section-desktop.golden.html +7 −0
  • internal/slides/render/testdata/section-phone.golden.html +7 −0
  • internal/slides/render/testdata/title-body-desktop.golden.html +20 −0
  • internal/slides/render/testdata/title-body-phone.golden.html +20 −0
  • internal/slides/render/testdata/title-desktop.golden.html +12 −0
  • internal/slides/render/testdata/title-phone.golden.html +12 −0
  • internal/slides/render/testdata/two-column-desktop.golden.html +25 −0
  • internal/slides/render/testdata/two-column-phone.golden.html +25 −0
  • internal/slides/render/themes.go +290 −0
  • internal/slides/render/unreached_test.go +93 −0
  • internal/slides/replay_long_test.go +212 −0
  • internal/slides/sample.go +302 −0
  • internal/slides/share.go +476 −0
  • internal/slides/snapshot.go +163 −0
  • internal/slides/snapshot_fallback_test.go +73 −0
  • internal/slides/snapshot_test.go +125 −0
  • internal/slides/static/editor.css +707 −0
  • internal/slides/static/editor.ea69e9f399e840e0.js +16 −0
  • internal/slides/static/fonts/LICENSE-OFL-1.1.txt +91 −0
  • internal/slides/static/fonts/LiberationMono-Bold.ttf binary
  • internal/slides/static/fonts/LiberationMono-BoldItalic.ttf binary
  • internal/slides/static/fonts/LiberationMono-Italic.ttf binary
  • internal/slides/static/fonts/LiberationMono-Regular.ttf binary
  • internal/slides/static/fonts/LiberationSans-Bold.ttf binary
  • internal/slides/static/fonts/LiberationSans-BoldItalic.ttf binary
  • internal/slides/static/fonts/LiberationSans-Italic.ttf binary
  • internal/slides/static/fonts/LiberationSans-Regular.ttf binary
  • internal/slides/static/fonts/LiberationSerif-Bold.ttf binary
  • internal/slides/static/fonts/LiberationSerif-BoldItalic.ttf binary
  • internal/slides/static/fonts/LiberationSerif-Italic.ttf binary
  • internal/slides/static/fonts/LiberationSerif-Regular.ttf binary
  • internal/slides/static/present.js +167 −0
  • internal/slides/static/slides.css +764 −0
  • internal/slides/svg.go +525 −0
  • internal/slides/svg/svg.go +544 −0
  • internal/slides/svg/svg_test.go +626 −0
  • internal/slides/svg_test.go +105 −0
  • internal/slides/templates/account.html +50 −0
  • internal/slides/templates/agents.html +80 −0
  • internal/slides/templates/anon.html +16 −0
  • internal/slides/templates/deck_delete.html +19 −0
  • internal/slides/templates/deck_export.html +24 −0
  • internal/slides/templates/deck_new.html +24 −0
  • internal/slides/templates/deck_notes.html +27 −0
  • internal/slides/templates/deck_settings.html +38 −0
  • internal/slides/templates/decks.html +32 −0
  • internal/slides/templates/editor.html +531 −0
  • internal/slides/templates/errors.html +8 −1
  • internal/slides/templates/export_status.html +53 −0
  • internal/slides/templates/home_link.html +2 −0
  • internal/slides/templates/index.html +0 −3
  • internal/slides/templates/layout.html +19 −4
  • internal/slides/templates/present.html +97 −0
  • internal/slides/templates/present_controls.html +32 −0
  • internal/slides/templates/present_notes.html +155 −0
  • internal/slides/templates/remote.html +91 −0
  • internal/slides/templates/remote_pair.html +26 −0
  • internal/slides/templates/share.html +71 −0
  • internal/slides/templates/signin.html +111 −0
  • internal/slides/templates/viewer.html +147 −0
  • internal/slides/thumbs.go +294 −0
  • internal/slides/thumbs_test.go +170 −0
  • internal/slides/viewer.go +453 −0
  • internal/slidestest/agents_test.go +212 −0
  • internal/slidestest/api_test.go +587 −0
  • internal/slidestest/assets_test.go +679 −0
  • internal/slidestest/browser_assets_test.go +172 −0
  • internal/slidestest/browser_layout_test.go +244 −0
  • internal/slidestest/browser_test.go +667 −11
  • internal/slidestest/capabilities_test.go +399 −0
  • internal/slidestest/decks_test.go +266 −0
  • internal/slidestest/editor_test.go +358 −0
  • internal/slidestest/export_test.go +432 −0
  • internal/slidestest/fonts_test.go +185 −0
  • internal/slidestest/harness_test.go +196 −8
  • internal/slidestest/index_test.go +24 −33
  • internal/slidestest/integrity_test.go +167 −0
  • internal/slidestest/live_test.go +664 −0
  • internal/slidestest/present_test.go +569 −0
  • internal/slidestest/share_test.go +245 −0
  • internal/slidestest/signin_test.go +280 −0
  • internal/slidestest/testdata/poison/assets.yjs binary
  • internal/slidestest/testdata/poison/background.yjs binary
  • internal/slidestest/testdata/poison/box.yjs binary
  • internal/slidestest/testdata/poison/fonts.yjs binary
  • internal/slidestest/testdata/poison/magnitude.yjs binary
  • internal/slidestest/testdata/poison/unknownmark.yjs binary
  • internal/slidestest/thumbs_test.go +283 −0
  • internal/slidestest/viewer_test.go +219 −0
  • rust-toolchain.toml +4 −0
  • scripts/build-pdf-wasm.sh +28 −0
  • scripts/build-wasm.sh +43 −0
  • scripts/run-dev.sh +46 −0

CI passed — run details

.amadan/README.md

Loading diff…

.amadan/ci

Loading diff…

.amadan/ci.d/10-gate

Loading diff…

.amadan/ci.d/10-vet

Loading diff…

.amadan/ci.d/20-fmt

Loading diff…

.amadan/ci.d/30-test

Loading diff…

.amadan/ci.d/40-migration-check

Loading diff…

.cargo/config.toml

Loading diff…

.gitignore

Loading diff…

AGENTS.md

Loading diff…

CODEX-FINDINGS-SPEC.md

Loading diff…

CODEX-REVIEW-BRIEF-SPEC.md

Loading diff…

Makefile

Loading diff…

PRODUCT.md

Loading diff…

README.md

Loading diff…

clippy.toml

Loading diff…

cmd/slides/main.go

Loading diff…

core/.gitignore

Loading diff…

core/Cargo.lock

Loading diff…

core/Cargo.toml

Loading diff…

core/pdf/.gitignore

Loading diff…

core/pdf/Cargo.lock

Loading diff…

core/pdf/Cargo.toml

Loading diff…

core/pdf/src/abi.rs

Loading diff…

core/pdf/src/lib.rs

Loading diff…

core/pdf/tests/fonts/LiberationSerif-Regular.ttf

Loading diff…

core/pdf/tests/no_host_imports.rs

Loading diff…

core/pdf/tests/render.rs

Loading diff…

core/src/abi.rs

Loading diff…

core/src/check.rs

Loading diff…

core/src/layout.rs

Loading diff…

core/src/lib.rs

Loading diff…

core/src/markdown.rs

Loading diff…

core/src/ops.rs

Loading diff…

core/src/schema.rs

Loading diff…

core/src/view.rs

Loading diff…

core/tests/no_host_imports.rs

Loading diff…

core/tests/ops.rs

Loading diff…

core/vendor/README.md

Loading diff…

core/vendor/fastrand-2.5.0/CHANGELOG.md

Loading diff…

core/vendor/fastrand-2.5.0/Cargo.toml

Loading diff…

core/vendor/fastrand-2.5.0/LICENSE-APACHE

Loading diff…

core/vendor/fastrand-2.5.0/LICENSE-MIT

Loading diff…

core/vendor/fastrand-2.5.0/README.md

Loading diff…

core/vendor/fastrand-2.5.0/benches/bench.rs

Loading diff…

core/vendor/fastrand-2.5.0/src/global_rng.rs

Loading diff…

core/vendor/fastrand-2.5.0/src/lib.rs

Loading diff…

core/vendor/fastrand-2.5.0/tests/char.rs

Loading diff…

core/vendor/fastrand-2.5.0/tests/smoke.rs

Loading diff…

docs/api.md

Loading diff…

docs/superpowers/plans/2026-09-07-slice-1-live.md

Loading diff…

docs/superpowers/plans/2026-09-07-slice-2-editor.md

Loading diff…

docs/superpowers/plans/2026-09-08-slice-3-export.md

Loading diff…

docs/superpowers/specs/2026-09-07-slides-design.md

Loading diff…

fixtures/.gitignore

Loading diff…

fixtures/assets.test.mjs

Loading diff…

fixtures/build-bundles.mjs

Loading diff…

fixtures/canvas.mjs

Loading diff…

fixtures/canvas.test.mjs

Loading diff…

fixtures/changes.mjs

Loading diff…

fixtures/changes.test.mjs

Loading diff…

fixtures/check.mjs

Loading diff…

fixtures/check.test.mjs

Loading diff…

fixtures/commands.mjs

Loading diff…

fixtures/data/canvas.json

Loading diff…

fixtures/data/columns.json

Loading diff…

fixtures/data/every-block.json

Loading diff…

fixtures/data/table.json

Loading diff…

fixtures/data/title-only.json

Loading diff…

fixtures/dom-stub.mjs

Loading diff…

fixtures/editor-entry.js

Loading diff…

fixtures/frames.mjs

Loading diff…

fixtures/frames.test.mjs

Loading diff…

fixtures/generate.mjs

Loading diff…

fixtures/ids.mjs

Loading diff…

fixtures/inspector-block.mjs

Loading diff…

fixtures/inspector-image.mjs

Loading diff…

fixtures/inspector-ops.mjs

Loading diff…

fixtures/inspector.mjs

Loading diff…

fixtures/inspector.test.mjs

Loading diff…

fixtures/layout.mjs

Loading diff…

fixtures/link-dialog.mjs

Loading diff…

fixtures/link-dialog.test.mjs

Loading diff…

fixtures/live-updates.mjs

Loading diff…

fixtures/live-updates.test.mjs

Loading diff…

fixtures/markdown.mjs

Loading diff…

fixtures/ops-apply.mjs

Loading diff…

fixtures/ops-model.mjs

Loading diff…

fixtures/ops-parse.mjs

Loading diff…

fixtures/ops.mjs

Loading diff…

fixtures/ops.test.mjs

Loading diff…

fixtures/package-lock.json

Loading diff…

fixtures/package.json

Loading diff…

fixtures/poison.mjs

Loading diff…

fixtures/presence-view.mjs

Loading diff…

fixtures/presence-view.test.mjs

Loading diff…

fixtures/presence.mjs

Loading diff…

fixtures/presence.test.mjs

Loading diff…

fixtures/resync-controller.mjs

Loading diff…

fixtures/resync-controller.test.mjs

Loading diff…

fixtures/save-queue.mjs

Loading diff…

fixtures/save-queue.test.mjs

Loading diff…

fixtures/schema.mjs

Loading diff…

fixtures/schema.test.mjs

Loading diff…

fixtures/selection.mjs

Loading diff…

fixtures/selection.test.mjs

Loading diff…

fixtures/stage.mjs

Loading diff…

fixtures/stage.test.mjs

Loading diff…

fixtures/status.mjs

Loading diff…

fixtures/status.test.mjs

Loading diff…

fixtures/strip-reorder.mjs

Loading diff…

fixtures/strip-reorder.test.mjs

Loading diff…

fixtures/strip.mjs

Loading diff…

fixtures/strip.test.mjs

Loading diff…

fixtures/switcher.mjs

Loading diff…

fixtures/switcher.test.mjs

Loading diff…

fixtures/text-keys.mjs

Loading diff…

fixtures/text-keys.test.mjs

Loading diff…

fixtures/uploads.mjs

Loading diff…

fixtures/uploads.test.mjs

Loading diff…

fixtures/vectors/canvas.view.json

Loading diff…

fixtures/vectors/canvas.yjs

Loading diff…

fixtures/vectors/columns.view.json

Loading diff…

fixtures/vectors/columns.yjs

Loading diff…

fixtures/vectors/every-block.view.json

Loading diff…

fixtures/vectors/every-block.yjs

Loading diff…

fixtures/vectors/table.view.json

Loading diff…

fixtures/vectors/table.yjs

Loading diff…

fixtures/vectors/title-only.view.json

Loading diff…

fixtures/vectors/title-only.yjs

Loading diff…

fixtures/view.mjs

Loading diff…

fixtures/view.test.mjs

Loading diff…

fixtures/ydoc.mjs

Loading diff…

go.mod

Loading diff…

go.sum

Loading diff…

internal/slides/agents.go

Loading diff…

internal/slides/api.go

Loading diff…

internal/slides/app.go

Loading diff…

internal/slides/assets.go

Loading diff…

internal/slides/assets_embed.go

Loading diff…

internal/slides/auth.go

Loading diff…

internal/slides/auth_test.go

Loading diff…

internal/slides/config.go

Loading diff…

internal/slides/config_test.go

Loading diff…

internal/slides/core/check_test.go

Loading diff…

internal/slides/core/core.go

Loading diff…

internal/slides/core/core_test.go

Loading diff…

internal/slides/core/testdata/slides_core.wasm

Loading diff…

internal/slides/core/vectors_test.go

Loading diff…

internal/slides/deck/deck.go

Loading diff…

internal/slides/deck/deck_test.go

Loading diff…

internal/slides/decks.go

Loading diff…

internal/slides/decks_test.go

Loading diff…

internal/slides/editor.go

Loading diff…

internal/slides/export.go

Loading diff…

internal/slides/export_test.go

Loading diff…

internal/slides/exports.go

Loading diff…

internal/slides/fonts/files/LICENSE-OFL-1.1.txt

Loading diff…

internal/slides/fonts/files/LiberationMono-Bold.ttf

Loading diff…

internal/slides/fonts/files/LiberationMono-BoldItalic.ttf

Loading diff…

internal/slides/fonts/files/LiberationMono-Italic.ttf

Loading diff…

internal/slides/fonts/files/LiberationMono-Regular.ttf

Loading diff…

internal/slides/fonts/files/LiberationSans-Bold.ttf

Loading diff…

internal/slides/fonts/files/LiberationSans-BoldItalic.ttf

Loading diff…

internal/slides/fonts/files/LiberationSans-Italic.ttf

Loading diff…

internal/slides/fonts/files/LiberationSans-Regular.ttf

Loading diff…

internal/slides/fonts/files/LiberationSerif-Bold.ttf

Loading diff…

internal/slides/fonts/files/LiberationSerif-BoldItalic.ttf

Loading diff…

internal/slides/fonts/files/LiberationSerif-Italic.ttf

Loading diff…

internal/slides/fonts/files/LiberationSerif-Regular.ttf

Loading diff…

internal/slides/fonts/fonts.go

Loading diff…

internal/slides/fonts/fonts_test.go

Loading diff…

internal/slides/fonts/truetype.go

Loading diff…

internal/slides/handlers.go

Loading diff…

internal/slides/home.go

Loading diff…

internal/slides/home_test.go

Loading diff…

internal/slides/layout/blocks.go

Loading diff…

internal/slides/layout/fixture_test.go

Loading diff…

internal/slides/layout/layout.go

Loading diff…

internal/slides/layout/layout_test.go

Loading diff…

internal/slides/layout/paint.go

Loading diff…

internal/slides/layout/props.go

Loading diff…

internal/slides/layout/regions.go

Loading diff…

internal/slides/layout/regions_test.go

Loading diff…

internal/slides/layout/sizes.go

Loading diff…

internal/slides/layout/testdata/blank.golden.json

Loading diff…

internal/slides/layout/testdata/canvas-reflow.golden.json

Loading diff…

internal/slides/layout/testdata/canvas.golden.json

Loading diff…

internal/slides/layout/testdata/image-full.golden.json

Loading diff…

internal/slides/layout/testdata/quote.golden.json

Loading diff…

internal/slides/layout/testdata/section.golden.json

Loading diff…

internal/slides/layout/testdata/title-body.golden.json

Loading diff…

internal/slides/layout/testdata/title.golden.json

Loading diff…

internal/slides/layout/testdata/two-column.golden.json

Loading diff…

internal/slides/layout/text.go

Loading diff…

internal/slides/layout/unreached_test.go

Loading diff…

internal/slides/live.go

Loading diff…

internal/slides/live/hub.go

Loading diff…

internal/slides/live/hub_test.go

Loading diff…

internal/slides/live_test.go

Loading diff…

internal/slides/locales/en.toml

Loading diff…

internal/slides/migrations.go

Loading diff…

internal/slides/migrations/0001_init.sql

Loading diff…

internal/slides/migrations/0002_create_decks.sql

Loading diff…

internal/slides/migrations/0003_create_share_links.sql

Loading diff…

internal/slides/migrations/0004_create_presentations.sql

Loading diff…

internal/slides/migrations/0005_create_agents.sql

Loading diff…

internal/slides/migrations/0006_create_deck_snapshots.sql

Loading diff…

internal/slides/migrations/0007_create_deck_assets.sql

Loading diff…

internal/slides/migrations/0008_create_asset_uploads.sql

Loading diff…

internal/slides/migrations/schema.sql

Loading diff…

internal/slides/models.go

Loading diff…

internal/slides/pdfcore/pdfcore.go

Loading diff…

internal/slides/pdfcore/pdfcore_test.go

Loading diff…

internal/slides/pdfcore/testdata/slides_pdf.wasm

Loading diff…

internal/slides/present/hub.go

Loading diff…

internal/slides/present/hub_test.go

Loading diff…

internal/slides/presentation.go

Loading diff…

internal/slides/render.go

Loading diff…

internal/slides/render/assets_test.go

Loading diff…

internal/slides/render/order_test.go

Loading diff…

internal/slides/render/render.go

Loading diff…

internal/slides/render/render_test.go

Loading diff…

internal/slides/render/testdata/blank-desktop.golden.html

Loading diff…

internal/slides/render/testdata/blank-phone.golden.html

Loading diff…

internal/slides/render/testdata/canvas-desktop.golden.html

Loading diff…

internal/slides/render/testdata/canvas-phone.golden.html

Loading diff…

internal/slides/render/testdata/canvas-reflow-desktop.golden.html

Loading diff…

internal/slides/render/testdata/canvas-reflow-phone.golden.html

Loading diff…

internal/slides/render/testdata/image-full-desktop.golden.html

Loading diff…

internal/slides/render/testdata/image-full-phone.golden.html

Loading diff…

internal/slides/render/testdata/quote-desktop.golden.html

Loading diff…

internal/slides/render/testdata/quote-phone.golden.html

Loading diff…

internal/slides/render/testdata/section-desktop.golden.html

Loading diff…

internal/slides/render/testdata/section-phone.golden.html

Loading diff…

internal/slides/render/testdata/title-body-desktop.golden.html

Loading diff…

internal/slides/render/testdata/title-body-phone.golden.html

Loading diff…

internal/slides/render/testdata/title-desktop.golden.html

Loading diff…

internal/slides/render/testdata/title-phone.golden.html

Loading diff…

internal/slides/render/testdata/two-column-desktop.golden.html

Loading diff…

internal/slides/render/testdata/two-column-phone.golden.html

Loading diff…

internal/slides/render/themes.go

Loading diff…

internal/slides/render/unreached_test.go

Loading diff…

internal/slides/replay_long_test.go

Loading diff…

internal/slides/sample.go

Loading diff…

internal/slides/share.go

Loading diff…

internal/slides/snapshot.go

Loading diff…

internal/slides/snapshot_fallback_test.go

Loading diff…

internal/slides/snapshot_test.go

Loading diff…

internal/slides/static/editor.css

Loading diff…

internal/slides/static/editor.ea69e9f399e840e0.js

Loading diff…

internal/slides/static/fonts/LICENSE-OFL-1.1.txt

Loading diff…

internal/slides/static/fonts/LiberationMono-Bold.ttf

Loading diff…

internal/slides/static/fonts/LiberationMono-BoldItalic.ttf

Loading diff…

internal/slides/static/fonts/LiberationMono-Italic.ttf

Loading diff…

internal/slides/static/fonts/LiberationMono-Regular.ttf

Loading diff…

internal/slides/static/fonts/LiberationSans-Bold.ttf

Loading diff…

internal/slides/static/fonts/LiberationSans-BoldItalic.ttf

Loading diff…

internal/slides/static/fonts/LiberationSans-Italic.ttf

Loading diff…

internal/slides/static/fonts/LiberationSans-Regular.ttf

Loading diff…

internal/slides/static/fonts/LiberationSerif-Bold.ttf

Loading diff…

internal/slides/static/fonts/LiberationSerif-BoldItalic.ttf

Loading diff…

internal/slides/static/fonts/LiberationSerif-Italic.ttf

Loading diff…

internal/slides/static/fonts/LiberationSerif-Regular.ttf

Loading diff…

internal/slides/static/present.js

Loading diff…

internal/slides/static/slides.css

Loading diff…

internal/slides/svg.go

Loading diff…

internal/slides/svg/svg.go

Loading diff…

internal/slides/svg/svg_test.go

Loading diff…

internal/slides/svg_test.go

Loading diff…

internal/slides/templates/account.html

Loading diff…

internal/slides/templates/agents.html

Loading diff…

internal/slides/templates/anon.html

Loading diff…

internal/slides/templates/deck_delete.html

Loading diff…

internal/slides/templates/deck_export.html

Loading diff…

internal/slides/templates/deck_new.html

Loading diff…

internal/slides/templates/deck_notes.html

Loading diff…

internal/slides/templates/deck_settings.html

Loading diff…

internal/slides/templates/decks.html

Loading diff…

internal/slides/templates/editor.html

Loading diff…

internal/slides/templates/errors.html

Loading diff…

internal/slides/templates/export_status.html

Loading diff…

internal/slides/templates/home_link.html

Loading diff…

internal/slides/templates/index.html

Loading diff…

internal/slides/templates/layout.html

Loading diff…

internal/slides/templates/present.html

Loading diff…

internal/slides/templates/present_controls.html

Loading diff…

internal/slides/templates/present_notes.html

Loading diff…

internal/slides/templates/remote.html

Loading diff…

internal/slides/templates/remote_pair.html

Loading diff…

internal/slides/templates/share.html

Loading diff…

internal/slides/templates/signin.html

Loading diff…

internal/slides/templates/viewer.html

Loading diff…

internal/slides/thumbs.go

Loading diff…

internal/slides/thumbs_test.go

Loading diff…

internal/slides/viewer.go

Loading diff…

internal/slidestest/agents_test.go

Loading diff…

internal/slidestest/api_test.go

Loading diff…

internal/slidestest/assets_test.go

Loading diff…

internal/slidestest/browser_assets_test.go

Loading diff…

internal/slidestest/browser_layout_test.go

Loading diff…

internal/slidestest/browser_test.go

Loading diff…

internal/slidestest/capabilities_test.go

Loading diff…

internal/slidestest/decks_test.go

Loading diff…

internal/slidestest/editor_test.go

Loading diff…

internal/slidestest/export_test.go

Loading diff…

internal/slidestest/fonts_test.go

Loading diff…

internal/slidestest/harness_test.go

Loading diff…

internal/slidestest/index_test.go

Loading diff…

internal/slidestest/integrity_test.go

Loading diff…

internal/slidestest/live_test.go

Loading diff…

internal/slidestest/present_test.go

Loading diff…

internal/slidestest/share_test.go

Loading diff…

internal/slidestest/signin_test.go

Loading diff…

internal/slidestest/testdata/poison/assets.yjs

Loading diff…

internal/slidestest/testdata/poison/background.yjs

Loading diff…

internal/slidestest/testdata/poison/box.yjs

Loading diff…

internal/slidestest/testdata/poison/fonts.yjs

Loading diff…

internal/slidestest/testdata/poison/magnitude.yjs

Loading diff…

internal/slidestest/testdata/poison/unknownmark.yjs

Loading diff…

internal/slidestest/thumbs_test.go

Loading diff…

internal/slidestest/viewer_test.go

Loading diff…

rust-toolchain.toml

Loading diff…

scripts/build-pdf-wasm.sh

Loading diff…

scripts/build-wasm.sh

Loading diff…

scripts/run-dev.sh

Loading diff…