Two new figure types, publication-style rendering options, and a diagnosis command.
Everything that changes how drawings look is opt-in — existing calls render byte-identically to 0.2.1.
New
generate_tlc— TLC plates from Rf values. Lanes carry the name, spots carry the substances, so a co-spot is simply a lane with two spots. Mobile phase and detection are captioned on the plate. Rf outside 0–1 is rejected with the lane name instead of silently clamped.generate_scope_table— substrate-scope figures like those in method papers: a grid of product structures with identifiers and yields, optionally headed by the general reaction. Unresolvable entries are reported; the figure is built from the rest.abbreviate_groups— condenses Ph, Bn, OAc, OMe, tBu instead of drawing every ring out.render_style— three profiles named after their behaviour:compact(two-column typesetting),presentation(lecture slides),grayscale(black-and-white print).chemdraw-doctor— tells you what is wrong before it turns into "the server does nothing". Distinguishes broken from absent: no Claude Desktop installed is a note, not an error.chemdraw-install— register the server without cloning the repository.
Fixed
- The resolver blamed your input for network failures. Every cascade failure gave the same advice ("use a different name"), even with the network down. Errors now carry a kind and say what actually helps — offline, SMILES and systematic IUPAC names still work via OPSIN. A hanging network fails in 6.5 s instead of 40.6 s.
lookup_compounddropped genuine zeros — benzene really has TPSA 0 and no hydrogen-bond donors; those rows silently disappeared.- The installer wrote a bare
"uv"into the Desktop config, which does not resolve in Claude Desktop's minimal GUI PATH. The server then failed to start with no message at all. - The server reported the SDK version instead of its own, so you could not tell what was running.
Under the hood
The gate now catches its own blind spots: it launches the actual browser build instead of checking for a folder (false red), rebuilds the UI bundle and compares bytes (false green), and a frozen golden test guards the Python renderer — the pixel snapshot only ever covered the JavaScript side. 623 tests. 9 npm advisories closed; the shipped bundle is unchanged.
Full details in CHANGELOG.md.