oficina / docs Public

Merge main into domain/oficina-works

Paul Campbell pushed by paul@keymail.dev f6cf5c235ed80effaca45d0c2c2b12331b8e56d0 parent e047ebdparent 779db9b
130 files changed, +27967 −445
  • .amadan/ci.d/10-gate +130 −3
  • .gitignore +8 −0
  • .impeccable/config.json +17 −0
  • AGENTS.md +112 −2
  • PRODUCT.md +222 −0
  • core/src/abi.rs +140 −1
  • core/src/fragment.rs +524 −13
  • core/src/lib.rs +27 −3
  • core/src/snapshot.rs +118 −0
  • core/tests/fragment.rs +556 −2
  • core/tests/snapshot.rs +189 −0
  • docs/superpowers/plans/2026-08-31-formatting-and-export.md +253 −0
  • docs/superpowers/plans/2026-09-01-live-sync.md +117 −0
  • docs/superpowers/plans/2026-09-01-search.md +116 −0
  • docs/superpowers/plans/2026-09-01-snapshots.md +1056 −0
  • docs/superpowers/plans/2026-09-02-images-links-tables.md +393 −0
  • docs/superpowers/specs/2026-08-30-docs-design.md +61 −6
  • docs/superpowers/specs/2026-09-01-live-sync-design.md +431 −0
  • docs/superpowers/specs/2026-09-01-snapshots-design.md +449 −0
  • docs/superpowers/specs/2026-09-02-word-processor-basics-design.md +729 −0
  • fixtures/align.mjs +150 −0
  • fixtures/align.test.mjs +238 −0
  • fixtures/autoformat.mjs +100 −0
  • fixtures/autoformat.test.mjs +164 −0
  • fixtures/browser-drive.mjs +1145 −0
  • fixtures/build-bundles.mjs +74 −0
  • fixtures/build-editor.mjs +0 −54
  • fixtures/dom-writes.mjs +53 −0
  • fixtures/editor-entry.js +708 −50
  • fixtures/flash-frames.mjs +290 −0
  • fixtures/fonts.mjs +143 −0
  • fixtures/fonts.test.mjs +94 −0
  • fixtures/generate-fragment.mjs +155 −1
  • fixtures/indent.mjs +168 −0
  • fixtures/indent.test.mjs +88 −0
  • fixtures/jump-to.mjs +292 −0
  • fixtures/live-updates.mjs +278 −0
  • fixtures/live-updates.test.mjs +365 −0
  • fixtures/menu.mjs +315 −0
  • fixtures/menu.test.mjs +143 −0
  • fixtures/package-lock.json +11 −0
  • fixtures/package.json +4 −3
  • fixtures/pages.mjs +238 −0
  • fixtures/paste.mjs +143 −0
  • fixtures/paste.test.mjs +154 −0
  • fixtures/shortcuts.mjs +85 −0
  • fixtures/sizes.mjs +156 −0
  • fixtures/sizes.test.mjs +93 −0
  • fixtures/toolbar-roving.mjs +105 −0
  • fixtures/toolbar.mjs +648 −0
  • fixtures/toolbar.test.mjs +518 −0
  • fixtures/vectors/fragment/aligned.bin binary
  • fixtures/vectors/fragment/fonts.bin binary
  • fixtures/vectors/fragment/indented.bin binary
  • fixtures/vectors/fragment/sizes.bin binary
  • fixtures/vectors/fragment/styled.bin binary
  • fixtures/wordcount.mjs +118 −0
  • fixtures/wordcount.test.mjs +92 −0
  • go.mod +1 −1
  • internal/core/core.go +218 −100
  • internal/core/core_test.go +124 −0
  • internal/core/testdata/docs_core.wasm binary
  • internal/docs/app.go +23 −2
  • internal/docs/assets.go +176 −39
  • internal/docs/assets_test.go +146 −10
  • internal/docs/brand/icon.svg +44 −0
  • internal/docs/cursor_test.go +429 −0
  • internal/docs/editor_view_test.go +1 −1
  • internal/docs/export.go +353 −0
  • internal/docs/export_test.go +824 −0
  • internal/docs/handlers.go +350 −21
  • internal/docs/hub.go +118 −0
  • internal/docs/hub_test.go +154 −0
  • internal/docs/list_test.go +307 −0
  • internal/docs/menu.go +326 −0
  • internal/docs/menu_test.go +259 −0
  • internal/docs/migrations/0004_doc_snapshots.sql +27 −0
  • internal/docs/models.go +23 −0
  • internal/docs/pages_test.go +169 −0
  • internal/docs/preview.go +312 −0
  • internal/docs/preview_internal_test.go +148 −0
  • internal/docs/render.go +260 −8
  • internal/docs/render_test.go +81 −0
  • internal/docs/search.go +243 −0
  • internal/docs/search_test.go +371 −0
  • internal/docs/seed.go +6 −1
  • internal/docs/selects_test.go +132 −0
  • internal/docs/sizes_test.go +134 −0
  • internal/docs/snapshots.go +143 −0
  • internal/docs/snapshots_test.go +929 −0
  • internal/docs/static/editor.15280b7eedd1868f.js +0 −14
  • internal/docs/static/editor.879cf51cc4b8e027.js +14 −0
  • internal/docs/static/jumpto.a37448e7fcd21855.js +1 −0
  • internal/docs/store.go +314 −34
  • internal/docs/store_test.go +4 −4
  • internal/docs/stream.go +170 −0
  • internal/docs/stream_test.go +309 −0
  • internal/docs/testing.go +11 −0
  • internal/docs/views/head.html +49 −0
  • internal/docs/views/list.html +264 −25
  • internal/docs/views/partials/jumpto.html +118 −0
  • internal/docs/views/show.html +1361 −32
  • internal/docs/views/signin.html +98 −15
  • internal/export/document.go +174 −0
  • internal/export/markdown.go +408 −0
  • internal/export/markdown_test.go +463 −0
  • internal/export/pageone.go +88 −0
  • internal/export/pageone_test.go +211 −0
  • internal/export/pdf.go +1066 −0
  • internal/export/pdf_test.go +705 −0
  • internal/export/pdfread_test.go +344 −0
  • internal/export/sample_pdf_test.go +71 −0
  • internal/fonts/files/LICENSE-OFL-1.1.txt +91 −0
  • internal/fonts/files/LiberationMono-Bold.ttf binary
  • internal/fonts/files/LiberationMono-BoldItalic.ttf binary
  • internal/fonts/files/LiberationMono-Italic.ttf binary
  • internal/fonts/files/LiberationMono-Regular.ttf binary
  • internal/fonts/files/LiberationSans-Bold.ttf binary
  • internal/fonts/files/LiberationSans-BoldItalic.ttf binary
  • internal/fonts/files/LiberationSans-Italic.ttf binary
  • internal/fonts/files/LiberationSans-Regular.ttf binary
  • internal/fonts/files/LiberationSerif-Bold.ttf binary
  • internal/fonts/files/LiberationSerif-BoldItalic.ttf binary
  • internal/fonts/files/LiberationSerif-Italic.ttf binary
  • internal/fonts/files/LiberationSerif-Regular.ttf binary
  • internal/fonts/fonts.go +294 −0
  • internal/fonts/fonts_test.go +277 −0
  • internal/fonts/truetype.go +689 −0
  • internal/pdf/pdf.go +455 −0
  • scripts/browser-drive.sh +111 −0

CI passed — run details

.amadan/ci.d/10-gate

Loading diff…

.gitignore

Loading diff…

.impeccable/config.json

Loading diff…

AGENTS.md

Loading diff…

PRODUCT.md

Loading diff…

core/src/abi.rs

Loading diff…

core/src/fragment.rs

Loading diff…

core/src/lib.rs

Loading diff…

core/src/snapshot.rs

Loading diff…

core/tests/fragment.rs

Loading diff…

core/tests/snapshot.rs

Loading diff…

docs/superpowers/plans/2026-08-31-formatting-and-export.md

Loading diff…

docs/superpowers/plans/2026-09-01-live-sync.md

Loading diff…

docs/superpowers/plans/2026-09-01-search.md

Loading diff…

docs/superpowers/plans/2026-09-01-snapshots.md

Loading diff…

docs/superpowers/plans/2026-09-02-images-links-tables.md

Loading diff…

docs/superpowers/specs/2026-08-30-docs-design.md

Loading diff…

docs/superpowers/specs/2026-09-01-live-sync-design.md

Loading diff…

docs/superpowers/specs/2026-09-01-snapshots-design.md

Loading diff…

docs/superpowers/specs/2026-09-02-word-processor-basics-design.md

Loading diff…

fixtures/align.mjs

Loading diff…

fixtures/align.test.mjs

Loading diff…

fixtures/autoformat.mjs

Loading diff…

fixtures/autoformat.test.mjs

Loading diff…

fixtures/browser-drive.mjs

Loading diff…

fixtures/build-bundles.mjs

Loading diff…

fixtures/build-editor.mjs

Loading diff…

fixtures/dom-writes.mjs

Loading diff…

fixtures/editor-entry.js

Loading diff…

fixtures/flash-frames.mjs

Loading diff…

fixtures/fonts.mjs

Loading diff…

fixtures/fonts.test.mjs

Loading diff…

fixtures/generate-fragment.mjs

Loading diff…

fixtures/indent.mjs

Loading diff…

fixtures/indent.test.mjs

Loading diff…

fixtures/jump-to.mjs

Loading diff…

fixtures/live-updates.mjs

Loading diff…

fixtures/live-updates.test.mjs

Loading diff…

fixtures/menu.mjs

Loading diff…

fixtures/menu.test.mjs

Loading diff…

fixtures/package-lock.json

Loading diff…

fixtures/package.json

Loading diff…

fixtures/pages.mjs

Loading diff…

fixtures/paste.mjs

Loading diff…

fixtures/paste.test.mjs

Loading diff…

fixtures/shortcuts.mjs

Loading diff…

fixtures/sizes.mjs

Loading diff…

fixtures/sizes.test.mjs

Loading diff…

fixtures/toolbar-roving.mjs

Loading diff…

fixtures/toolbar.mjs

Loading diff…

fixtures/toolbar.test.mjs

Loading diff…

fixtures/vectors/fragment/aligned.bin

Loading diff…

fixtures/vectors/fragment/fonts.bin

Loading diff…

fixtures/vectors/fragment/indented.bin

Loading diff…

fixtures/vectors/fragment/sizes.bin

Loading diff…

fixtures/vectors/fragment/styled.bin

Loading diff…

fixtures/wordcount.mjs

Loading diff…

fixtures/wordcount.test.mjs

Loading diff…

go.mod

Loading diff…

internal/core/core.go

Loading diff…

internal/core/core_test.go

Loading diff…

internal/core/testdata/docs_core.wasm

Loading diff…

internal/docs/app.go

Loading diff…

internal/docs/assets.go

Loading diff…

internal/docs/assets_test.go

Loading diff…

internal/docs/brand/icon.svg

Loading diff…

internal/docs/cursor_test.go

Loading diff…

internal/docs/editor_view_test.go

Loading diff…

internal/docs/export.go

Loading diff…

internal/docs/export_test.go

Loading diff…

internal/docs/handlers.go

Loading diff…

internal/docs/hub.go

Loading diff…

internal/docs/hub_test.go

Loading diff…

internal/docs/list_test.go

Loading diff…

internal/docs/menu.go

Loading diff…

internal/docs/menu_test.go

Loading diff…

internal/docs/migrations/0004_doc_snapshots.sql

Loading diff…

internal/docs/models.go

Loading diff…

internal/docs/pages_test.go

Loading diff…

internal/docs/preview.go

Loading diff…

internal/docs/preview_internal_test.go

Loading diff…

internal/docs/render.go

Loading diff…

internal/docs/render_test.go

Loading diff…

internal/docs/search.go

Loading diff…

internal/docs/search_test.go

Loading diff…

internal/docs/seed.go

Loading diff…

internal/docs/selects_test.go

Loading diff…

internal/docs/sizes_test.go

Loading diff…

internal/docs/snapshots.go

Loading diff…

internal/docs/snapshots_test.go

Loading diff…

internal/docs/static/editor.15280b7eedd1868f.js

Loading diff…

internal/docs/static/editor.879cf51cc4b8e027.js

Loading diff…

internal/docs/static/jumpto.a37448e7fcd21855.js

Loading diff…

internal/docs/store.go

Loading diff…

internal/docs/store_test.go

Loading diff…

internal/docs/stream.go

Loading diff…

internal/docs/stream_test.go

Loading diff…

internal/docs/testing.go

Loading diff…

internal/docs/views/head.html

Loading diff…

internal/docs/views/list.html

Loading diff…

internal/docs/views/partials/jumpto.html

Loading diff…

internal/docs/views/show.html

Loading diff…

internal/docs/views/signin.html

Loading diff…

internal/export/document.go

Loading diff…

internal/export/markdown.go

Loading diff…

internal/export/markdown_test.go

Loading diff…

internal/export/pageone.go

Loading diff…

internal/export/pageone_test.go

Loading diff…

internal/export/pdf.go

Loading diff…

internal/export/pdf_test.go

Loading diff…

internal/export/pdfread_test.go

Loading diff…

internal/export/sample_pdf_test.go

Loading diff…

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

Loading diff…

internal/fonts/files/LiberationMono-Bold.ttf

Loading diff…

internal/fonts/files/LiberationMono-BoldItalic.ttf

Loading diff…

internal/fonts/files/LiberationMono-Italic.ttf

Loading diff…

internal/fonts/files/LiberationMono-Regular.ttf

Loading diff…

internal/fonts/files/LiberationSans-Bold.ttf

Loading diff…

internal/fonts/files/LiberationSans-BoldItalic.ttf

Loading diff…

internal/fonts/files/LiberationSans-Italic.ttf

Loading diff…

internal/fonts/files/LiberationSans-Regular.ttf

Loading diff…

internal/fonts/files/LiberationSerif-Bold.ttf

Loading diff…

internal/fonts/files/LiberationSerif-BoldItalic.ttf

Loading diff…

internal/fonts/files/LiberationSerif-Italic.ttf

Loading diff…

internal/fonts/files/LiberationSerif-Regular.ttf

Loading diff…

internal/fonts/fonts.go

Loading diff…

internal/fonts/fonts_test.go

Loading diff…

internal/fonts/truetype.go

Loading diff…

internal/pdf/pdf.go

Loading diff…

scripts/browser-drive.sh

Loading diff…