Repository navigation
Conversation
- escaped-pipe handling in GFM tables (parse + serialize) - flexible, embeddable GitbookEditor (extensions, slashMenu, toolbar, onEditorReady) - export building blocks (createGitbookExtensions, gitbookNodes, SLASH_ITEMS, createSlashMenu)
- escaped-pipe handling in GFM tables (parse + serialize) - flexible, embeddable GitbookEditor (extensions, slashMenu, toolbar, onEditorReady) - export building blocks (createGitbookExtensions, gitbookNodes, SLASH_ITEMS, createSlashMenu)
…paths, tiptap peerDeps - export getGitbookSchema() for fragment<->markdown bridges (y-prosemirror) - pure subpath exports so the markdown engine/schema don't pull mermaid server-side - @tiptap/* moved to peerDependencies (host owns a single tiptap instance)
…paths, tiptap peerDeps - export getGitbookSchema() for fragment<->markdown bridges (y-prosemirror) - pure subpath exports so the markdown engine/schema don't pull mermaid server-side - @tiptap/* moved to peerDependencies (host owns a single tiptap instance)
The GitBook block node views (hint, expandable, tabs, stepper, columns, embed, figure, math, openapi, updates, code, toolbar) were unstyled — styles.css was an empty TODO. Author a self-contained, themeable (--gb-*) editor stylesheet.
…ask lists, tables, code) Task lists rendered as bullet + detached checkbox; blockquotes/spacing were unstyled. Add base typography scoped to .gb-content so the editing surface renders correctly standalone.
…ly active panel - SlashMenuView measures itself and flips above the line when there isn't room below (and clamps within the viewport) - .gb-tabs-content shows only the active .gb-tab via data-active + nth-child
…rapper); drop slash debug Tab panels are grandchildren of .gb-tabs-content (TipTap inserts a content wrapper div), so the child-combinator rule matched nothing. Use a descendant combinator keyed on data-active + nth-child.
Rewrite the editor chrome so every node view mirrors its read-only twin in @brett_lamy/docstream/styles.css: same 12px radii, spacing, semantic hint palette, tabs/stepper/code/table treatments, and .docs-article typography on the editing surface. Tokens now derive from host shadcn-style variables with neutral hex fallbacks (light/dark adaptive), using only broadly-supported CSS (no oklch()/color-mix()). Includes the sticky toolbar and slash-menu styling so hosts need no extra CSS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace color-mix()/chart-var derived colors with plain rgba/hex tokens (hosts can override) so the theme renders in older Chromium forks, and give hints/OpenAPI badges a real semantic palette (info blue, success green, warning amber, danger red) shared with the editor package. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…o-publish on main
Sync source to published 0.3.0 + auto-publish on main
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sync source to published 0.3.0 + auto-publish on main
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add VizEmbed, media playback attributes, and release 0.3.2.
Round-trip video playback attributes and consume Docstream 0.3.2.
Add a markdown-only Docstream entrypoint and isolate optional playground loading.
…ages deploy Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…r playground) + GitHub Pages deploy Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…pper on MarkdownContent - every host token reference is now var(--token, default) with a light zinc default, so the library styles itself out of the box and hosts override by defining tokens - MarkdownContent gained the data-docstream scope wrapper (+ className prop) so tokens apply to it like DocsRenderer/GitbookStreamdown Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…es, STL and Strudel embeds (v1.14.0) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…for host projects; docstream 1.14.0 (v1.14.0) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…title (v1.14.1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eep their file name; docstream 1.14.1 (v1.14.1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ide by side, Open in Playground, render time; PeleDiagram/usePele for hosts (v1.15.0) Replaces the mermaid dependency with pele (lazy, per diagram type). Pele's --pele-* variables follow the docstream theme without a redraw. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…TeX beside KaTeX, stacked when narrow; SplitCard/SplitSource/SplitResult (v1.16.0) The Mermaid and math cards share one container-query layout: side by side at 640px and up, stacked below. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the TeX themselves (v1.16.1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lt cards — edit the source on the left, Pele or KaTeX on the right, stacked when narrow; docstream 1.16.1 (v1.16.1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…m's hover/panel tokens (v1.16.2) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… 1.16.2 (v1.16.2) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ads with path, query and hash; Vite plugin uploads (v1.17.0)
- `{% embed url="./session.rrweb" %}` renders the rrweb recording in the replay
browser frame instead of a link card. The URL goes through the host's
AssetResolverProvider (like STL and Strudel files) and the file is fetched only
when the frame nears the viewport. `ReplayFile` and `isRrwebUrl` are exported
from the root and `./replay`.
- The URL bar leads with the path, query and hash once the page is past the site
root; the host dims and gives way first when space runs out.
- `docstreamSources`: `POST {apiBase}/source` creates or replaces a file from the
raw body (uploads such as .rrweb recordings), and a mount can set
`reloadOnWrite: false` so editor autosaves don't reload the page.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ropped, pasted and chosen files; docstream 1.17.0 (v1.17.0)
- Embeds of `.rrweb` recordings render docstream's ReplayFile (through the host's
resolveAsset) instead of a link card.
- New `uploadFile(file, { kind })` prop: embed and image blocks get "Upload…", and
dropped or pasted files that aren't images are uploaded and embedded where they
land. `onDropEmbeds` still sees drops first; images keep their inline/chip path.
`FileUploader` type exported.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stepper step headings (v1.18.0) - `` renders a small framed image with an optional badge; hovering or focusing it opens a card with the full image. Other renderers see an ordinary image with a tooltip. - First in a paragraph or list item, the text runs beside the thumbnail (float, so list markers stay on the first line). - First in a stepper step's heading, the image takes its own column and the step's title and body sit beside it. Step titles leave thumbnails out (`stepTitleText`), and the heading round-trips as written. - Exports: `ImageThumbnail`, `leadingThumbnail`, `thumbnailLabel` (root); `thumbnailLabel`, `stepTitleText` (`/gitbook`). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… up with their numbers (v1.18.1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….1 (v1.18.1) - Inline images titled `thumbnail…` render as docstream's ImageThumbnail (badge, hover card); first in a paragraph they float left so the text runs beside them. - A step heading that opens with a thumbnail shows it beside the title input, and retitling rewrites the heading around the new title so the thumbnail is kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…kdown; the docstream site rebuilt on it (v1.19.0)
`@brett_lamy/docstream/site` takes any VFS ({ path: content } or [{ path, content }]),
keeps the Markdown, and builds the sidebar from the folders (README.md is a folder's page,
numeric prefixes order entries, frontmatter title/description/order/hidden) or from a GitBook
SUMMARY.md. It adds ⌘K full-text search, an "On this page" outline with scroll-spy,
breadcrumbs, previous / next, Copy page, Edit this page, light / dark with a built-in palette
or the host's tokens, hash / history / memory routing, and relative .md links that navigate
in place. Layout follows the site's own width, so an embedded site goes to its phone layout.
`buildDocsTree` and `createDocsSearchIndex` are the pure pieces behind it. Headings now
render with the anchor ids `documentOutline` reports. The site's styles ship inside
styles.css (and alone as /site/styles.css), so no module imports CSS.
The demo site is now `demo/docs/`: ~40 pages across Getting started, Docs sites, Writing,
Interactive, Media & embeds, AI and Reference, with ~25 new folder demos (a live DocsSite
playground, streaming answer and chat pane, parser explorer, theming, replay player, STL,
Strudel studio, asset resolver, …) and sample assets. demo/docs.test.ts checks every page
round-trips, uses no unknown tags, links only to pages that exist and has a folder behind
every demo. Unmarked live fences now run in almost-node.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nMark list starts and boundaries - OpenApiOperation resolves its spec link through the asset resolver, like images and embeds. - DocsSite keeps the non-Markdown files it's given as `tree.assets` and serves them to pages as blob: URLs (relative to the page), falling back to the host's resolver; plain links to them open the file. The docs site's OpenAPI page now loads specs/petstore.json and specs/model-library.yaml from the docs folder. - Ordered lists render their start number (`3.` starts at 3). - A different bullet (`-`, `*`, `+`) or ordered delimiter (`.`, `)`) starts a new list, as in CommonMark; round trips stay byte for byte. - README: setAssetBase(repo, branch, filePath), parseBlocks(lines), refDefinitions as a Map, full-color theme tokens, one-line embed tags, the OpenAPI block's real form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d's link isn't nested
`{% content-ref %}` renders as an <a>; a Markdown link in its body made an <a> inside it
(invalid HTML, and React's validateDOMNesting warning). The label's links now render as text.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…5 live editor demos; editing fixes; docstream 1.19.0 (v1.19.0) Docs: the demo site is now demo/docs/ published by DocsSite — Getting started, Editing, Files and demos, Reference — with live GitbookEditor demos beside their serialized Markdown, and demo/docs.test.ts guarding every page. The demo uses the editor's own exact-pinned docstream instead of a stale copy. README audited against the source. Fixes: - Line breaks (Shift+Enter) were lost on save: they save as `\` breaks, and `\` breaks in the Markdown load as real ones. - A second paragraph in a table cell was dropped: cell paragraphs join with a space. - Underline (Mod+U) made formatting Markdown can't store: the mark is off. - `editable` follows the prop after mount. - The toolbar's Bold / Italic / Strike / Code / Link follow the selection (useEditorState). - SourceFileEditor re-read the file (dropping unsaved edits) when the host re-rendered with an inline onError or an equal reference; it reads when the file changes. - Suggestion menus mount after the transaction that opened them (no flushSync in render). - Menus fall back to --card / --foreground, so they're readable in dark hosts without shadcn's --popover tokens. - A list made right after another of its kind gets the other marker, so the two stay separate (docstream 1.19's CommonMark list boundaries). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….19.1) The stage paused at 0, and rrweb applies only events before the pause point, so mutations recorded with the first snapshot waited for play. Pausing 1ms in shows them — a trimmed recording opens on the page as it was at its window's start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both repos were merged in with their history (packages/docstream, packages/docstream-editor). They join the pnpm workspace and nx graph as @brett_lamy/docstream and @brett_lamy/docstream-editor: ui, the registry, the docs and the catalog depend on them as workspace:* (pnpm pack writes the exact version, so the editor still ships pinned to its docstream). Their exports gain the workspace's @org/source condition, so Vite and TypeScript in the monorepo read their sources, and their tsconfigs become composite projects the rest of the TypeScript build references. Their standalone demo apps stay as playgrounds (docstream-playground, docstream-editor-playground). The packages' own workflows and npm lockfiles are gone; publishing moves to the root workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dependency order The registry resolves workspace:* dependencies to the version the package publishes (docstream 1.19.1). knip passes again: the wait-on hint is gone, and buffer — the browser polyfill the Worktree Atlas block imports, which knip reads as Node's builtin — is declared where it's used. The docstream playground drops five dependencies nothing imports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…so one app can host several DocsSites Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t at the monorepo Both packages (and their playgrounds) get the workspace's React ESLint config; the autofixes (prefer-const and friends) are mechanical, and the handful of real findings are fixed by hand (comma-expression statements, needless regex escapes, an NBSP literal). Tests may @ts-ignore their node: imports and stub DOM APIs with no-ops. The docs and READMEs link to the new homes — blamy.github.io/ui/#/docstream(-editor) and github.com/BLamy/ui — and each package's docs become one component (DocstreamDocs, EditorDocs) that its playground and the BL site both mount. The playgrounds are dev servers only now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y, and the plan to split @brett_lamy/ui apps/docs grows a site around the ui docs: one header on every page with a Libraries menu (every library by category, live and planned), a landing page, a page per library, and the roadmap — a DocsSite whose package map, module map and docs-coverage report are generated from the library manifest (src/site/libraries.ts). A test holds that manifest to the code: every module in packages/ui/src has one home and no planned package imports from one it doesn't build on (it found the composer/PencilKit annotator cycle and put MarkdownView/Editor in a Markdown package). docstream's and the editor's docs run inside the site, at #/docstream and #/docstream-editor, with their live demos (?demo=docstream:<page>/<example>). The ui page that was #/docstream is #/markdown-view. The docs app reads docstream from source, so it no longer pre-bundles it — a pre-bundled copy split the demo contexts and broke the Notes block's inherited demos. Two time-input tests now wait for the default reading they assume. tools/release/placeholders.mjs packs 0.0.0 placeholders for the planned packages, which npm needs before it accepts a trusted publisher. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
|
Important Review skippedToo many files! This PR contains 546 files, which is 446 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configuration
⛔ Files ignored due to path filters: 5
📒 Files selected for processing: 546
You can disable this status message by setting the
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merges docstream and docstream-editor into this repo (full history) and turns the docs app into the BL site: a TanStack-style landing page, a page per library, and the roadmap for splitting
@brett_lamy/uiinto packages. The split itself isn't in this PR.The move
packages/docstreamandpackages/docstream-editor, added withgit subtree(history kept). They're workspace packages: ui, the registry, the docs and the catalog depend on them asworkspace:*.pnpm packwrites exact versions, so the editor still ships pinned to its docstream.@org/sourcecondition, so Vite and TypeScript read their sources. Their tsconfigs are composite projects in the TS build.pnpm nx dev docstream-playground). The packages' own workflows and npm lockfiles are removed.publish.ymlreleases docstream → editor → ui in dependency order (trusted publishing / OIDC).blamy.github.io/ui/#/docstream(-editor)andgithub.com/BLamy/ui.The site (
apps/docs)#/,#/libraries,#/libraries/<id>, and the roadmap at#/roadmap(a DocsSite). The roadmap's package map, module map and docs-coverage report are generated fromsrc/site/libraries.ts.libraries.test.tschecks the plan against the real imports: every module inpackages/ui/srchas one home, and no package imports from a package it doesn't depend on.#/docstreamand#/docstream-editor, with live demos (?demo=docstream:<page>/<example>). This uses a new DocsSite feature:basePathunder hash routing.#/docstreamis now#/markdown-view.Fixes along the way
workspace:*into registry.json; it now resolves workspace versions.wait-onhint is gone, andbufferis declared in the registry, where it's imported.tools/release/placeholders.mjspacks0.0.0placeholders for the planned packages. npm needs a package to exist before it accepts a trusted publisher.Before merging
BLamy/ui,publish.yml) for all 18 packages. See the roadmap's Publishing page.ENEEDAUTHuntil its trusted publisher exists. The new DocsSitebasePathstays unreleased until docstream's version is bumped.Checks run locally
nx run-many -t lint,typecheck,build,test: all 10 projects pass (docstream 1086, editor 637, ui 1107, plan test 4).sql-console … no axe violations, also fails on main.🤖 Generated with Claude Code