Repository navigation
feat: unified docs for the pymmcore-plus ecosystem - #1
tlambert03 wants to merge 15 commits into
Conversation
Builds one zensical site from the docs of pymmcore-plus, useq-schema, pymmcore-widgets, pymmcore-gui and napari-micromanager: one navigation, one search, cross-references between all packages, a combined user guide, and a de-duplicated, generated API reference. Each member keeps its docs in its own repository; tools/compose.py assembles them (a stopgap until zensical supports composing projects natively). Includes the landing page, Getting Started, theme overrides, CSS/JS (method explorer, install builder), redirects for moved pages, and CI to deploy the site and publish pull-request previews. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
hey @fdrgsp, @marktsuchida, @gselzer here's a grand remake of the docs that claude whipped up in a drug-addled craze :) https://pymmcore-plus.github.io/pr-preview/pr-1/ without feeling like you have to look at the code/structure... just look around the preview and let me know if you feel like it's a good direction. if you see anything wrong, or have any cool ideas, just make a quick qualitative note (without wasting too much time). |
pymmcore-gui already brings in pymmcore-widgets, pymmcore-plus[cli,io] and PyQt6, and napari-micromanager / pymmcore-widgets bring in pymmcore-plus[cli], so the builder no longer repeats them. Implied options show as included, and the Qt backend is fixed to PyQt6 when pymmcore-gui is selected. Also caches pyconify's icon downloads between CI builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Describing experiments now holds the useq overview and the v2 migration guide; links that pointed at the schema pages as a guide are updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
- new pages: Coming from Micro-Manager, Using Your Own Microscope; Getting Started overview renamed to which-package.md so it shows in the sidebar - nav: Building Sequences and Saving Data added; Title Case labels - API module pages: summary tables, one block per object, re-export-only modules dropped, private/deprecated/logger names filtered, edit links point at the module source - griffe: TidyDocs extension (dataclass/builtin docstring noise, ForwardRef, undocumented Qt instance attributes); griffe-fieldz adds to Attributes - CSS/JS: method table fits its column, enum grid, backlinks summary, mobile hero, contrast fixes; llms.txt sections mirror the nav - redirects for the folded pymmcore-plus example pages Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
- home: restore the "Control microscopes with Python" hero and the task cards (2x2), community cards; add ome-writers to the stack - which-package: apps vs libraries, a Python/C++ dependency diagram (mermaid) with links out, ome-writers - coming from Micro-Manager: bring back the components diagram - use the pymmcore-plus logo (header, favicon, home hero) and switch the palette to the logo's blue, with its yellow as the accent - drop the announcement banner and the edit/view page actions - pymm.js: "%% pymm:align-groups" gives mermaid subgraphs a common width - compose: don't put docs/ in zensical's watch list, so hub page edits rebuild incrementally instead of reloading the whole site Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
The header already shows it, right above. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
…r pages Group headings in the active tab's sidebar are never links now (a nav-item.html override drops the section index link at level 2), so the two groups whose first page was an index get explicit titles instead. Headings are small uppercase labels, each group's pages hang off a thin left rule, and the current page is an accent segment of that rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp
|
Looks beautiful! The only comment I had is that the full architecture diagram might be a bit intimidating as the first thing people see after clicking on Getting Started. Maybe the diagram could be moved to the end of that page (if not to the User Guide), starting the Which Package Do I Need? page with the Applications and Libraries? |
|
I'm also a big fan of this direction, and agree with @marktsuchida on the graph being scary 👿 Looking forward to seeing where it goes! |
|
Thanks! Agree on the graph :) |
This is a work-in-progress proposal for a single, unified docs site for the whole ecosystem: pymmcore-plus, useq-schema, pymmcore-widgets, pymmcore-gui and napari-micromanager, built with zensical (the successor to mkdocs-material). I'm opening it early so people can browse it and weigh in. A preview link will show up in a comment below (it's rebuilt on every push).
The short version of what changes for readers:
setExposureorMDASequence)pymmcore_plus.Device, not alsopymmcore_plus.core.Device). other modules link to it under "Re-exports"CMMCorePluspage is now a filterable explorer of all 342 methods (added / overridden / inherited / deprecated, by category), and finally includes the ~44 overload-only methods (setExposure,getXYPosition, ...) that were silently missing/pymmcore-plus/...,/useq-schema/...etc. are preserved, and moved pages redirect)And for maintainers:
docs/folder (and docstrings), so a PR can still change code and docs together. member repos just have a smallzensical.tomland.nav.ymlfiles. this repo holds the theme, landing page, top-level navigation, andtools/compose.py, which assembles everything. zensical doesn't support composing multiple projects yet (it's on their roadmap), so the composer is meant as a stopgap that we can drop when that lands.mainin any member trigger a deploy hereThe member-side changes aren't PRs yet. They're on
zensical-docsbranches in my forks, andcompose.overrides.tomlpoints CI at them for now (it'll be deleted before merging):One thing I want to be upfront about, since this was all done with Claude Code: most of the prose here was written by Claude, not me. The first version mostly carried over the existing docs. Since then there's been a full review pass: every page was read by fresh "readers" (newcomer, Micro-Manager expert, GUI user, structure, staleness, and voice), then rewritten where needed, with every code example run against the demo config. Comparing every page against the old docs on
mainnow gives about 26k words of prose, of which about 63% is new, 13% is adapted from old text, and 25% is carried over verbatim.So unless it's on the short list below, assume a page was largely written by Claude, and review it that way. The pages that are still mostly the old text are UniMMCore, event-driven acquisition, performance profiling, the useq-schema overview (about half), the axes schema page, and the metadata API page. Generated content (API pages, the CMMCorePlus table, widget pages) isn't counted, but docstrings were edited too: the
src/changes in all five repos are docstring-only (checked with an AST comparison againstmain).New pages from the review pass: Coming from Micro-Manager, Using your own microscope, Saving data, Building sequences, and an Events reference. A few old example pages were folded into the guides (with redirects), and reference material moved out of the User Guide into the API Reference (constants, events, CLI, env vars). The review also turned up a handful of real bugs (e.g.
mmcore runcrashes, and a relative z plan without a stage position is centered on z = 0), which deserve their own issues rather than fixes in this PR.Things I'd especially love feedback on:
Not done yet (and not until there's some consensus): opening the member PRs, switching this repo's Pages deploy to Actions, retiring the old per-repo sites, and adding the token that lets members trigger deploys. (fwiw, this repo's Pages source is now the
gh-pagesbranch, so previews can live under/pr-preview/... the root redirect there is unchanged.)The preview workflow also builds on Windows, just to compare build times and widget screenshots (see the job summaries and the
widget-screenshots-*artifacts).🤖 Generated with Claude Code
https://claude.ai/code/session_019cDFrDDGJkJSy4zsEUj3Fp