commits
- odoc extension API: add link-phase enrichment support for extensions
- odoc-jons-plugins: new site shell with nav bar, recent posts with
featured card layout, and updated CSS
- site-builder: support projects/ directory and improved rule generation
- site: redesigned homepage with hero section and recent posts cards
- site: updated blog index layout
- onnxrt docs: minor .mld cleanup
- New blog images and content (weeknotes, examination map, fungus svg)
- Add mockup.html for design iteration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The scrollycode theme support (scrollycode_theme_links helper and
--config scrollycode.theme=warm in dune-workspace) belongs in a
dedicated scrollycode shell, not in the generic docsite shell.
The generic --config infrastructure (config_values on Config.t and
the --config CLI arg) is retained for use by any shell.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a config_values field to Html.Config.t and a --config KEY=VALUE
repeatable CLI argument to odoc html-generate, allowing arbitrary
configuration to flow from the command line through to shell plugins.
The docsite shell reads scrollycode.theme from config_values and emits
a <link> for the corresponding theme CSS in both page_creator and
src_page_creator. The dune-workspace passes --config
scrollycode.theme=warm via html_flags.
SPA navigation now collects head script:not([src]) elements from
fetched pages and executes them after newly added external scripts
have loaded. Inline scripts are stamped with a data-spa-inline
attribute (content hash) at HTML generation time; the SPA checks this
attribute to avoid re-executing scripts already present in <head>.
Document the resource type's SPA execution semantics in both
odoc_extension_registry.ml and odoc_extension_api.ml, covering
deduplication behaviour, execution timing, and guidance for extension
authors (prefer MutationObserver over re-execution, avoid
DOMContentLoaded in inline scripts).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add index.mld files for all packages that were missing them, which
caused odoc to generate default pages titled "<package> index". Also
fix leaf item indentation by always adding a spacer span regardless
of the node kind.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Improve sidebar density and polish: reduce padding/font-size for ~2x
more visible items, add leaf-page/class/library badge backgrounds,
switch active item from solid blue pill to subtle tinted highlight,
add thin scrollbar, reduce nesting indentation, and style non-link
library labels as muted text.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The docsite shell's navigateTo() function fetches new pages and replaces
content, but discarded <head> elements from the fetched page. Extension
resources like admonition.css were never loaded during client-side
navigation, only on full page loads.
Scan the fetched page's <head> for stylesheet and script elements,
resolve their URLs, and append any missing ones to the live document.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Html.txt HTML-encodes its content, turning quotes into " inside
<script> tags. This made window.BASE_URL undefined (invalid JS),
causing the sidebar to fall back to './' and produce doubled paths
like odoc-interactive-extension/odoc-interactive-extension/demo1.html.
Use Html.Unsafe.data instead, which outputs raw content appropriate
for script tags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix sidebar kindBadge: map leaf-page→pg, module-type→MT, etc. (was
showing "L" for leaf-page entries)
- Stop escaping sidebar content HTML (entries contain <code> tags)
- Fix inline sidebar JSON: use Html.cdata_script instead of Html.txt
to prevent HTML-escaping inside <script> tags
- Add --xo-* CSS custom properties for x-ocaml cells in light/dark themes
- Fix support file registration: use 'opam var share' instead of
'opam var x-ocaml:share' (works without x-ocaml being an opam package)
- Suppress empty <li> from config-only extension tags (@x-ocaml.*)
- Add worker_url field to jtw opam findlib_index.json
- Refactor x-ocaml.js worker URL discovery to support both direct
worker_url and day10-style version/content_hash paths
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Accept deletion of odoc-docsite files (removed in our branch).
Update auto-generated README.md and dune-project from sync.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extend the odoc shell plugin interface with a sidebar_data field that
provides the raw Odoc_document.Sidebar.t alongside the pre-rendered HTML
sidebar. This allows shell plugins to generate custom sidebar UIs from
structured data rather than being limited to the default HTML rendering.
Create the odoc-docsite shell plugin (--shell docsite) that generates a
docs.rs-inspired documentation website with a fixed header, interactive
sidebar with package selector, full-text search, SPA navigation, dark
mode, and responsive layout. The sidebar JSON is embedded inline in each
page for client-side rendering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts:
# odoc-scrollycode-extension/src/scrollycode_extension.ml
- Bump root dune-project to (lang dune 3.21) for odoc v3 rules
- Remove (package odoc) from odoc_model_semantics_test library
- Remove (package js_top_worker_rpc_def) to work around directory-targets
bug in dune's doc generation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Escape curly braces and fix odoc reference syntax to eliminate warnings
with (warnings fatal):
- Replace {dir}, {pkg}, {hash} etc with [dir], [<pkg>], [<hash>] or
{[ code blocks ]} as appropriate
- Fix {!Stdlib.Out_channel.with_open_gen} -> [Out_channel.with_open_gen]
in sherlodoc type_polarity.mli
- Fix @scrolly.<theme> -> [@scrolly.<theme>] in scrollycode extension
- Fix JSON format in findlibish.ml doc comment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Support files can now either embed inline string content (Inline) or
reference a file path on disk to copy (Copy_from). This enables large
binary-like files such as x-ocaml.js (~16MB) to be managed via
`odoc support-files` without embedding them as OCaml string literals.
The scrollycode extension's x-ocaml script URLs are now configurable
via ODOC_X_OCAML_JS and ODOC_X_OCAML_WORKER environment variables,
and ODOC_X_OCAML_JS_PATH registers the file as a Copy_from support file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three-layer architecture separating content, theme, and renderer:
Phase 1 — Scrollycode refactor:
- Strip ~1030 lines of embedded theme CSS from scrollycode_extension.ml
- Create scrollycode_css.ml with structural CSS using CSS custom properties
- Create scrollycode_themes.ml with three theme files (warm/dark/notebook)
registered as support files
- Simplify @scrolly tag: theme suffix now ignored (CSS concern, not content)
- Playground overlay styled via --xo-* custom properties on x-ocaml element
Phase 2 — Extra CSS support:
- Add --extra-css flag to odoc html-generate for injecting additional
<link> tags (used for per-page theme selection)
Phase 3 — Shell plugin system:
- Add Html_shell module with Shell interface and hashtable registry
- Register "default" shell in html_page.ml, "json" shell in
html_fragment_json.ml
- Replace hardcoded if/else in generator.ml with shell registry lookup
- Add --shell NAME flag (--as-json kept as backward-compat alias)
x-ocaml theming:
- Replace hardcoded colors in style.css with var(--xo-*, fallback)
covering editor, gutter, buttons, tooltips, and output areas
- CSS custom properties inherit through shadow DOM boundary, so
consumers theme x-ocaml with pure CSS — no JS injection needed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a doc_markdown field to Entry.t, populated at index time using
odoc's markdown renderer. The CLI gains --print-docstring for markdown
output (useful for LLM consumption and terminal display) while the
existing HTML output moves to --print-docstring-html.
Also exports Odoc_markdown.Generator.block for external use and adds
the UnboxedField case to url.ml's name_aux (needed after cherry-picked
fully-qualified-paths changes).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add extract_all_text helper that properly handles all inline renderer
elements (Text, Code_span, Inlines, Emphasis, etc.) instead of only
handling Text nodes. Fixes record fields losing their type annotations
in the unified code block output.
Cherry-picked from jonludlam/odoc@f303d8e69
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Regenerate markdown reference files for the full generator test suite
to match the new unified code block and fully-qualified-paths output.
Cherry-picked from jonludlam/odoc@c19ca211f
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Properly handle trailing code items (like closing brackets for
polymorphic variants) by appending them to the unified code block.
Cherry-picked from jonludlam/odoc@55fea14a2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of rendering each constructor as a separate code block with
interleaved prose documentation, combine them into a single code block
with inline doc comments ((** ... *)). This produces much more coherent
output for LLM consumption.
Cherry-picked from jonludlam/odoc@6ed5e8ea9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests for variant types, polymorphic variants, and module includes
to validate the fully-qualified-paths markdown output.
Cherry-picked from jonludlam/odoc@c372810a5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use full_ident_name instead of Identifier.name to render complete
module-qualified paths in markdown output (e.g. Foo.Bar.t instead of
just t). This makes the markdown output much more useful for LLMs
that need unambiguous type references.
Cherry-picked from jonludlam/odoc@0220c2e06
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
git-subtree-dir: odoc-scrollycode-extension
git-subtree-split: c9a035faca2354d252755d70188ac6efa7973a26
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Port fix from avsm/oxmono@1618948: when a module type path is replaced
during substitution, raise Invalidated instead of assert false, and
handle it in signature_fragment by unresolving the fragment.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c7281d056 Fix oxcaml build compatibility for PR #1400 cherry-pick
git-subtree-dir: odoc
git-subtree-split: c7281d05663066649a407efa1b94b484bfc2a744
- Add missing source_loc_jane fields to Module and ModuleType records
in tools.ml (required by oxcaml's extended Component types)
- Add Strengthen case to is_elidable_with_u pattern matches in
compile.ml and link.ml (oxcaml adds this variant to U.expr)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4e51ebdec Further fixes for duplicate identifiers
5f4bdb4ac Fix broken test
064373cd7 Further fixes for identifiers
e322d99d7 Fixup mdx tests
994631243 Update CHANGES.md
67e848450 Fix issue #930: Crash when substituting for the same name at different arities
0d26341b1 Add test for GitHub issue #930 (crash on type substitution arity mismatch)
9d6ae633a Don't compile module types twice
git-subtree-dir: odoc
git-subtree-split: 4e51ebdec7fa1e9ddaee331456aab9a5d8284238
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch from GitHub forks with non-main branches to tangled repos
using main branch, so opam-repo URLs match what monopam pushes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
94463e290 Populate empty js_top_worker-unix.opam with package metadata
git-subtree-dir: js_top_worker
git-subtree-split: 94463e290c70b4298a3ab3f4045d0fd2a84dfc69
The file was empty (0 bytes), making it an invalid opam package.
Added dependencies based on the dune build files that reference
this package.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
git-subtree-dir: mime_printer
git-subtree-split: 5dac047317057e26f619777d3884da275fe098d1
The directory was never added via git subtree, causing monopam sync failures.
5ee7644ac fix(odoc): fix OxCaml test infrastructure issues
f47dffbf0 feat(odoc): add return modes, type param jkinds, value modalities and tests
d92f9bdbe fix(odoc): correct OxCaml API field names and add cmti mode extraction
921aab8c6 feat(odoc): render mode annotations and jkind on type expressions
8a05501b5 feat(odoc): capture mode/jkind info from OxCaml compiler in loader
1e285c5e7 feat(odoc): add mode/jkind fields to TypeExpr.Arrow and TypeExpr.Var
f19550642 feat: add OxCaml dual-compiler support for js_top_worker and odoc
0ac197dc0 feat: extract odoc-scrollycode-extension into standalone package
git-subtree-dir: odoc
git-subtree-split: 5ee7644ac76734c4f03467be0daa54ba76aa0bc3
d51c17bea fix(js_top_worker): OxCaml demo support, exec RPC fix, and dependency cleanup
aa1e6da45 feat: add OxCaml dual-compiler support for js_top_worker and odoc
f4a66e5ab feat(x-ocaml): wire jtw backend and enable type-on-hover in playground
git-subtree-dir: js_top_worker
git-subtree-split: d51c17bea96b82b4a63923006bb4ea5a74797ae9
9d638f9ea fix(js_top_worker): OxCaml demo support, exec RPC fix, and dependency cleanup
fb665b1f5 feat: add OxCaml dual-compiler support for js_top_worker and odoc
4133e4b26 feat(x-ocaml): wire jtw backend and enable type-on-hover in playground
2053f4119 feat(x-ocaml): implement js_top_worker backend bridge
git-subtree-dir: x-ocaml
git-subtree-split: 9d638f9eab124006141d35b472b9ae4affc339de
7bd521fe5 chore: stage pending changes before monopam sync
git-subtree-dir: day10
git-subtree-split: 7bd521fe534ac4a92398363466297c333adce4ff
- Add comprehensive JS stubs for OxCaml-specific primitives (domain TLS,
arch detection, blocking sync, basement/capsule) needed by the OxCaml
js_of_ocaml runtime
- Fix demo.js to load rpc_worker.bc.js (JSON-RPC) instead of the
non-RPC _opam/worker.js, fixing a protocol mismatch bug
- Fix exec RPC method never resolving: rename phrase_p parameter from
~name:"string" to unnamed, preventing rpclib from incorrectly treating
the phrase as a named parameter in the dispatch dict
- Remove unused cbort, zarith, bytesrw dependencies from opam and
dune-project
- Bump dune version in x-ocaml opam files to 3.21 for OxCaml support
- Update cram test expected output for current package list
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- odoc extension API: add link-phase enrichment support for extensions
- odoc-jons-plugins: new site shell with nav bar, recent posts with
featured card layout, and updated CSS
- site-builder: support projects/ directory and improved rule generation
- site: redesigned homepage with hero section and recent posts cards
- site: updated blog index layout
- onnxrt docs: minor .mld cleanup
- New blog images and content (weeknotes, examination map, fungus svg)
- Add mockup.html for design iteration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The scrollycode theme support (scrollycode_theme_links helper and
--config scrollycode.theme=warm in dune-workspace) belongs in a
dedicated scrollycode shell, not in the generic docsite shell.
The generic --config infrastructure (config_values on Config.t and
the --config CLI arg) is retained for use by any shell.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a config_values field to Html.Config.t and a --config KEY=VALUE
repeatable CLI argument to odoc html-generate, allowing arbitrary
configuration to flow from the command line through to shell plugins.
The docsite shell reads scrollycode.theme from config_values and emits
a <link> for the corresponding theme CSS in both page_creator and
src_page_creator. The dune-workspace passes --config
scrollycode.theme=warm via html_flags.
SPA navigation now collects head script:not([src]) elements from
fetched pages and executes them after newly added external scripts
have loaded. Inline scripts are stamped with a data-spa-inline
attribute (content hash) at HTML generation time; the SPA checks this
attribute to avoid re-executing scripts already present in <head>.
Document the resource type's SPA execution semantics in both
odoc_extension_registry.ml and odoc_extension_api.ml, covering
deduplication behaviour, execution timing, and guidance for extension
authors (prefer MutationObserver over re-execution, avoid
DOMContentLoaded in inline scripts).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Improve sidebar density and polish: reduce padding/font-size for ~2x
more visible items, add leaf-page/class/library badge backgrounds,
switch active item from solid blue pill to subtle tinted highlight,
add thin scrollbar, reduce nesting indentation, and style non-link
library labels as muted text.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The docsite shell's navigateTo() function fetches new pages and replaces
content, but discarded <head> elements from the fetched page. Extension
resources like admonition.css were never loaded during client-side
navigation, only on full page loads.
Scan the fetched page's <head> for stylesheet and script elements,
resolve their URLs, and append any missing ones to the live document.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Html.txt HTML-encodes its content, turning quotes into " inside
<script> tags. This made window.BASE_URL undefined (invalid JS),
causing the sidebar to fall back to './' and produce doubled paths
like odoc-interactive-extension/odoc-interactive-extension/demo1.html.
Use Html.Unsafe.data instead, which outputs raw content appropriate
for script tags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix sidebar kindBadge: map leaf-page→pg, module-type→MT, etc. (was
showing "L" for leaf-page entries)
- Stop escaping sidebar content HTML (entries contain <code> tags)
- Fix inline sidebar JSON: use Html.cdata_script instead of Html.txt
to prevent HTML-escaping inside <script> tags
- Add --xo-* CSS custom properties for x-ocaml cells in light/dark themes
- Fix support file registration: use 'opam var share' instead of
'opam var x-ocaml:share' (works without x-ocaml being an opam package)
- Suppress empty <li> from config-only extension tags (@x-ocaml.*)
- Add worker_url field to jtw opam findlib_index.json
- Refactor x-ocaml.js worker URL discovery to support both direct
worker_url and day10-style version/content_hash paths
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extend the odoc shell plugin interface with a sidebar_data field that
provides the raw Odoc_document.Sidebar.t alongside the pre-rendered HTML
sidebar. This allows shell plugins to generate custom sidebar UIs from
structured data rather than being limited to the default HTML rendering.
Create the odoc-docsite shell plugin (--shell docsite) that generates a
docs.rs-inspired documentation website with a fixed header, interactive
sidebar with package selector, full-text search, SPA navigation, dark
mode, and responsive layout. The sidebar JSON is embedded inline in each
page for client-side rendering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Escape curly braces and fix odoc reference syntax to eliminate warnings
with (warnings fatal):
- Replace {dir}, {pkg}, {hash} etc with [dir], [<pkg>], [<hash>] or
{[ code blocks ]} as appropriate
- Fix {!Stdlib.Out_channel.with_open_gen} -> [Out_channel.with_open_gen]
in sherlodoc type_polarity.mli
- Fix @scrolly.<theme> -> [@scrolly.<theme>] in scrollycode extension
- Fix JSON format in findlibish.ml doc comment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Support files can now either embed inline string content (Inline) or
reference a file path on disk to copy (Copy_from). This enables large
binary-like files such as x-ocaml.js (~16MB) to be managed via
`odoc support-files` without embedding them as OCaml string literals.
The scrollycode extension's x-ocaml script URLs are now configurable
via ODOC_X_OCAML_JS and ODOC_X_OCAML_WORKER environment variables,
and ODOC_X_OCAML_JS_PATH registers the file as a Copy_from support file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three-layer architecture separating content, theme, and renderer:
Phase 1 — Scrollycode refactor:
- Strip ~1030 lines of embedded theme CSS from scrollycode_extension.ml
- Create scrollycode_css.ml with structural CSS using CSS custom properties
- Create scrollycode_themes.ml with three theme files (warm/dark/notebook)
registered as support files
- Simplify @scrolly tag: theme suffix now ignored (CSS concern, not content)
- Playground overlay styled via --xo-* custom properties on x-ocaml element
Phase 2 — Extra CSS support:
- Add --extra-css flag to odoc html-generate for injecting additional
<link> tags (used for per-page theme selection)
Phase 3 — Shell plugin system:
- Add Html_shell module with Shell interface and hashtable registry
- Register "default" shell in html_page.ml, "json" shell in
html_fragment_json.ml
- Replace hardcoded if/else in generator.ml with shell registry lookup
- Add --shell NAME flag (--as-json kept as backward-compat alias)
x-ocaml theming:
- Replace hardcoded colors in style.css with var(--xo-*, fallback)
covering editor, gutter, buttons, tooltips, and output areas
- CSS custom properties inherit through shadow DOM boundary, so
consumers theme x-ocaml with pure CSS — no JS injection needed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a doc_markdown field to Entry.t, populated at index time using
odoc's markdown renderer. The CLI gains --print-docstring for markdown
output (useful for LLM consumption and terminal display) while the
existing HTML output moves to --print-docstring-html.
Also exports Odoc_markdown.Generator.block for external use and adds
the UnboxedField case to url.ml's name_aux (needed after cherry-picked
fully-qualified-paths changes).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add extract_all_text helper that properly handles all inline renderer
elements (Text, Code_span, Inlines, Emphasis, etc.) instead of only
handling Text nodes. Fixes record fields losing their type annotations
in the unified code block output.
Cherry-picked from jonludlam/odoc@f303d8e69
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of rendering each constructor as a separate code block with
interleaved prose documentation, combine them into a single code block
with inline doc comments ((** ... *)). This produces much more coherent
output for LLM consumption.
Cherry-picked from jonludlam/odoc@6ed5e8ea9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use full_ident_name instead of Identifier.name to render complete
module-qualified paths in markdown output (e.g. Foo.Bar.t instead of
just t). This makes the markdown output much more useful for LLMs
that need unambiguous type references.
Cherry-picked from jonludlam/odoc@0220c2e06
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add missing source_loc_jane fields to Module and ModuleType records
in tools.ml (required by oxcaml's extended Component types)
- Add Strengthen case to is_elidable_with_u pattern matches in
compile.ml and link.ml (oxcaml adds this variant to U.expr)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4e51ebdec Further fixes for duplicate identifiers
5f4bdb4ac Fix broken test
064373cd7 Further fixes for identifiers
e322d99d7 Fixup mdx tests
994631243 Update CHANGES.md
67e848450 Fix issue #930: Crash when substituting for the same name at different arities
0d26341b1 Add test for GitHub issue #930 (crash on type substitution arity mismatch)
9d6ae633a Don't compile module types twice
git-subtree-dir: odoc
git-subtree-split: 4e51ebdec7fa1e9ddaee331456aab9a5d8284238
5ee7644ac fix(odoc): fix OxCaml test infrastructure issues
f47dffbf0 feat(odoc): add return modes, type param jkinds, value modalities and tests
d92f9bdbe fix(odoc): correct OxCaml API field names and add cmti mode extraction
921aab8c6 feat(odoc): render mode annotations and jkind on type expressions
8a05501b5 feat(odoc): capture mode/jkind info from OxCaml compiler in loader
1e285c5e7 feat(odoc): add mode/jkind fields to TypeExpr.Arrow and TypeExpr.Var
f19550642 feat: add OxCaml dual-compiler support for js_top_worker and odoc
0ac197dc0 feat: extract odoc-scrollycode-extension into standalone package
git-subtree-dir: odoc
git-subtree-split: 5ee7644ac76734c4f03467be0daa54ba76aa0bc3
d51c17bea fix(js_top_worker): OxCaml demo support, exec RPC fix, and dependency cleanup
aa1e6da45 feat: add OxCaml dual-compiler support for js_top_worker and odoc
f4a66e5ab feat(x-ocaml): wire jtw backend and enable type-on-hover in playground
git-subtree-dir: js_top_worker
git-subtree-split: d51c17bea96b82b4a63923006bb4ea5a74797ae9
9d638f9ea fix(js_top_worker): OxCaml demo support, exec RPC fix, and dependency cleanup
fb665b1f5 feat: add OxCaml dual-compiler support for js_top_worker and odoc
4133e4b26 feat(x-ocaml): wire jtw backend and enable type-on-hover in playground
2053f4119 feat(x-ocaml): implement js_top_worker backend bridge
git-subtree-dir: x-ocaml
git-subtree-split: 9d638f9eab124006141d35b472b9ae4affc339de
- Add comprehensive JS stubs for OxCaml-specific primitives (domain TLS,
arch detection, blocking sync, basement/capsule) needed by the OxCaml
js_of_ocaml runtime
- Fix demo.js to load rpc_worker.bc.js (JSON-RPC) instead of the
non-RPC _opam/worker.js, fixing a protocol mismatch bug
- Fix exec RPC method never resolving: rename phrase_p parameter from
~name:"string" to unnamed, preventing rpclib from incorrectly treating
the phrase as a named parameter in the dispatch dict
- Remove unused cbort, zarith, bytesrw dependencies from opam and
dune-project
- Bump dune version in x-ocaml opam files to 3.21 for OxCaml support
- Update cram test expected output for current package list
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>