···11+{0 Review of the last few weeks}
22+33+It's time to take a step back and write a retrospective on the last few months of
44+vibecoding with Claude.
55+66+{1 What's been done}
77+88+Firstly let's see the various projects I've worked on and see what's been
99+accomplished.
1010+1111+{2 Dune}
1212+1313+Last year I wrote up my experiences writing the {{!//blog/2025/12/page-"claude-and-dune"}dune rules for odoc} with Claude.
1414+The {{:https://github.com/ocaml/dune/pull/12995}pull request has been made}, representing a "feature complete" replacement for the current rules,
1515+in that it can completely replace what's in dune now, but doesn't extend the rules for the new features of
1616+odoc. Since then we've merged the first part of it -- though that's the bit that
1717+wasn't written by Claude but by my colleague {{:https://choum.net/panglesd/}Paul-Elliot}. Fortunately after a brief
1818+sabbatical working on {{:https://docs.slipshow.org/en/stable/}slipshow}, he's now back working with us and we'll be meeting soon to discuss the
1919+next steps to get the rest of it merged.
2020+2121+In the mean time though, I've extended the rules by quite a lot. We've now got smarter rules that don't
2222+pull in as many dependencies as the current PR, we've got support for assets, we've got support for source
2323+rendering, there's markdown output and sherlodoc native support so you can run sherlodoc queries on the
2424+command line. You can configure the prefix for your doc output, and pass arbitrary options to the
2525+various invocations of odoc. All of this is being used as part of the process of generating this site,
2626+but that's about all the testing its had. This will all have to be carefully reviewed then either
2727+tacked onto the end of the current PR or we'll make new PRs for these. Very likely the latter, as the
2828+current PR is hard enough to review as it is.
2929+3030+{2 Odoc}
3131+3232+Odoc itself hasn't had {i much} work done to it. What {i has} been done though is a new plugin system that
3333+has been hugely enabling for building the new features below. I'm using dune's {{:https://dune.readthedocs.io/en/stable/sites.html#sites}site} feature for
3434+the plugins, which really "just worked". It was very easy to add the feature and creating the plugins
3535+has been equally easy. Building a whole variety of plugins has also been very useful in testing the
3636+shape of the plugin API - I've made numerous changes to it as I've built various plugins and they expose
3737+problems. I've also done a couple of more minor changes - one to allow 'custom tags', which the plugin
3838+system uses heavily, and some improvements to the source rendering - there are many more links now
3939+and we've got the ability to link to source from doc comments.
4040+4141+Let's take a brief look through the plugins I've made.
4242+4343+{3 Admonitions}
4444+4545+This is a feature we've wanted to add to odoc for a while - and we have a {{:https://hackmd.io/ETSOAmetTI-E3vrDk3Bfrw}design sketched out} for it.
4646+4747+@admonition.note This is a 'note' admonition.
4848+4949+This is more-or-less a throwaway plugin as we'll be doing this "properly" and won't need it. It made for
5050+a nice first test though.
5151+5252+{3 Diagrams}
5353+5454+I've got 3 diagramming plugins - {{!/odoc-mermaid-extension/page-index}odoc-mermaid-extension}, {{!/odoc-msc-extension/page-index}odoc-msc-extension}
5555+and {{!/odoc-dot-extension/page-index}odoc-dot-extension}.
5656+5757+{3 Interative pages (notebooks)}
5858+5959+The {{!/odoc-interactive-extension/page-index}odoc-interactive-extension} uses {{:https://github.com/art-w}art-w}'s {{:https://github.com/art-w/x-ocaml}x-ocaml} to add interactivity to the mld files.
6060+Rather than using a fixed "execution engine" though, my fork is using {{:https://github.com/jonludlam/js_top_worker}js_top_worker} so we can
6161+use different OCaml/OxCaml versions and load libraries as '#required'.
6262+6363+{3 Scrollycode}
6464+6565+The {{!/odoc-scrollycode-extension/page-index}odoc-scrollycode-extension} is based on {{:https://pomb.us}Rodrigo Pombo}'s work. You just add in
6666+a few custom tags and some {{:https://tangled.org/jon.recoil.org/odoc-scrollycode-extension/blob/main/doc/notebook_testing.mld#L3}special markup}
6767+in the source and you get lovely animated tutorials.
6868+6969+{3 HTML shells}
7070+7171+The "traditional" way that you embed odoc output into another webpage, like ocaml.org does, is to output
7272+JSON. This is a bit annoying though, as it means once dune has finished, you need something else to come
7373+in, pick up all the json files and write out your new site. The HTML shells extension is part of the
7474+odoc plugin system, and allows you to swap out the HTML renderer for another one. I have two plugins
7575+that use this system:
7676+7777+- {{!/odoc-docsite/page-index}odoc-docsite} which produces a more modern SPA-style site
7878+- {{!/odoc-jons-plugins/page-index}jons-shell} which produces this website
7979+8080+8181+