Changelog¶
All notable changes to vibe-sketch are recorded here. Add a user-visible
change as a fragment under changelog.d/; the release fold moves fragments
into a version section.
[Unreleased]¶
[v0.6.3] - 2026-10-28 - Negishi’s Funnel¶
Added¶
Structures bonded to a material, such as HOOC–CNT or Au–C6H4–NH2, can be drawn with a labelled attachment atom (a free-text label, or
*with an alias for element names): figures and chemfig print the label as written in every preset, KET, MOL, SDF and CDXML keep it, the structure is listed as alabelledgeneric structure, andcap(SDK, CLI, REST, MCP) makes a calculable species of it with an explicit H or CH3 cap that the species records (#139).Tidy scheme lays out catalytic and redox cycles: the intermediates on a circle with arrows between them, substrates and products beside the arrows outside the circle and a catalyst label at the centre; an ambiguous cycle is refused with the reason (#143).
Build custom single- and multi-walled carbon nanotubes from Templates in the browser, choosing chirality, length, ends, charge, spin and depiction. SDK, CLI, REST and MCP can now add a generated model and its picture atomically.
Add an explicit Digital Discovery numerical profile across SDK, CLI, REST, MCP and browser with exact force thresholds, fine grid, both Hessian stencils, and explicit RHF/CC convergence settings.
Apparatus pictograms for electrochemistry and nanotube growth: a three-electrode cell (WE, RE, CE), a two-compartment cell with a membrane, a potentiostat, a tube furnace with gas inlet and outlet (CVD), a gas cylinder and a UV lamp (hν), in every figure format and the chemfig TikZ picture (#144).
Add aqueous redox and finite-cluster binding recipes with explicit cited constants, recorded writer jobs, verified result selection and derived potential figures through SDK, CLI, REST and MCP. Unsupported heavy-element ECP and counterpoise requests refuse with reasons.
Review explicitly pinned external MACE/PBE/Hessian/correlated chains through SDK, CLI, REST, MCP and the Recipes panel. Separate reaction reports retain original jobs, parent hashes, prior evidence, reference QVF and correlated sidecar roles without inventing campaign runs or changing stability defaults.
Solids without a molecular graph, such as Fe2O3, PbCO3, CuSO4·5H2O, Fe3−xCrxO4 or γ-Al2O3, are written as formula texts marked (s) or with a polymorph and take part in reactions as species identified by their normalized formula: catalysts over the arrow, coefficients, molar masses in stoichiometry, atoms in the balance check, formulas printed with lowered counts; every calculation refuses them until Phase 5 gives them a structure (#142).
Electrode half-reactions can be drawn and checked: electrons (
2e⁻, or± 2e⁻at the arrow), state labels such as (aq) and (s), coefficients and potentials against SHE, NHE, SCE, RHE or Ag/AgCl are read from the drawing into the reaction, a balance check reports atom and charge imbalances without fixing them, the stoichiometry table lists electrons and the charge passed, and superscripts print raised in every figure format; SDK, CLI (half-reaction,balance), REST and MCP (#141).Generated nanostructures can be drawn as one picture on the canvas and in figures (lattice, schematic, end-on or unrolled, with an optional label and a break mark for long tubes) in SVG, PNG, PDF, EPS, EMF and the chemfig TikZ picture, and a labelled structure can be attached to a picture’s anchor so a tube and its linker print as one figure, through the SDK, CLI (
depict,attach), REST and MCP (#138).Add five searchable nanotube, graphene and nanoribbon templates with generated species and editable picture previews through the SDK, CLI, REST, MCP and browser picker.
Carbon nanotubes (single- and multi-walled, from their chiral indices and length, with H, OH or COOH ends, C60 caps on (5,5), sidewall groups, vacancies and Stone–Wales defects), graphene flakes, armchair and zigzag nanoribbons and C60/C70 can be generated as species with their 3D atoms and a
NANO-identity key in place of an InChI, through the SDK, the CLI (nanostructure), REST and MCP, and exported as QVF, XYZ and program inputs (#137).The custom nanotube browser builder now accepts outer-wall H, OH and COOH groups and vacancy or Stone–Wales defects at explicit fractional-length and angular sites. Invalid requests preserve the drawing and entered values.
Draw schematic surfaces, electrodes, substrate stacks, ligand-bearing nanoparticles and vertical nanotube arrays; graft labelled structures at typed anchors through SDK, CLI, REST and MCP. Preserve metadata in QVF/VSK/KET and redraw publication figures; refuse molecular-only exports that would lose surfaces.
The template library gains 39 PubChem compounds for nanotube functionalization and electroanalysis (nanocarbon models, aryldiazonium salts, surface linkers, CVD precursors, analytes and redox probes, epoxy resins, and coordination compounds with a note that their metal-ligand bonds are not drawn), 5 surface-anchor fragments and a new type of entry, polymer repeat units in brackets (polyaniline, Nafion, HNBR, PEDOT:PSS, parylene C, PVDF, PMMA, polystyrene); bracketed repeat units whose bonds end open at
*now draw in figures (#145).
Fixed¶
Staged Hessians now execute the requested central displacement and refuse results without matching displacement evidence, instead of silently using the engine default.
Inert-pair ions such as Pb²⁺, Sn²⁺, In⁺ and Bi³⁺ are now singlets, as their ns² configuration requires, instead of the triplets RDKit’s valence model suggested; imports no longer add radical marks the file did not have, figures draw none, and radicals drawn by hand are kept (#147).
Automatic nanostructure insertion now skips identifiers used by surfaces, so mixed nanotube and electrode drawings no longer fail when a surface is named nano1. Explicit duplicate identifiers remain refused.
Preserve native atom-map numbers through KET import, save/reopen, mapped species SMILES, explicit-H preparation provenance and QVF. Changing maps invalidates conformers whose canonical atom ordering may differ while keeping species identifiers.
Retain ETKDG seed, selected conformer, force-field termination codes and warnings through document and QVF round trips, explicitly distinguishing preparation from a verified quantum minimum.
Stage campaigns now read accepted geometry and scientific parent verdicts from QVF, refuse mismatched JSON caches, carry reaction/species context through each stage, and gate the Digital Discovery two-Hessian comparison on the same accepted geometry. Raw results and historical review artifacts remain unchanged. The selected derivative structure is also checked against its raw result.
Tidy scheme no longer runs forever on a drawing whose steps close a loop: a cycle is laid out or refused with the reason (#143).
[v0.6.2] - 2026-10-27 - Negishi’s Funnel¶
Added¶
The contributor policy is settled (#70).
CONTRIBUTING.mdsets out the licensing terms, which are those of vibe-qc, vibe-view and vibe-queue, and the Developer Certificate of Origin sign-off each outside commit needs. It also covers AI-assisted contributions, the rules for contributed chemical data and test files, and where to report what.CODE_OF_CONDUCT.mdandSECURITY.mdare new. A release-candidate check refuses an outside commit without its author’s sign-off. External contributions open together with the public source mirror.
Changed¶
Expanded the SDK, REST and CLI guides with checked examples, request shapes, species identity, serialization, writer capabilities and save guarantees; added troubleshooting and calculation-run references, corrected tutorial commands, and clarified installation and development workflows.
R-group enumeration adds products in table order and numbers them after the core’s compound number, 3a, 3b, …, written under each (part of #90).
The self-contained desktop apps now say which features need a source installation instead of suggesting
pip install, which cannot reach the app’s own Python (#132). Submitting calculations, species names, importing a structure by name and reading a campaign’s journal need vibe-queue, vibe-qc’s naming engine or OPSIN, which the app does not include. Without vibe-queue, the Inputs panel says why there is no Submit to vibe-queue button, in the app and in a source installation alike. The desktop guide lists what the self-contained app leaves out.
Fixed¶
Result artifacts retained for vibe-view are read back from the cache within their 32 MiB bound, and vibe-view’s converted result within the QVF bound. An oversized entry is refused with the way out instead of being read whole. Campaign source pins and the check of an existing cache file are digested in streamed chunks, and the viewer’s log tail reads only its last 16 KiB (#69).
Launching the desktop app again after closing its last window restores the editor and current document instead of leaving the app running without a window.
Exports use the open desktop or browser document’s filename and replace its extension, including QVF. Untitled documents retain the
sketchfallback.Enforce UTF-8 byte limits on text inputs and refuse overflowing JSON numbers before they become infinite values. (#69)
JSON specification files and campaign records are read within vibe-sketch’s input bounds (64 MiB, 64 levels of nesting, no
NaNorInfinity), as imports already were. This covers the CLI’srecipe-set --from,--coefficients,campaign-review --reviewand--stage-runtimesfiles, and the campaign files that results, reviews and renders read. A stage’s result container passes the QVF archive checks before it is unpacked. A file beyond a bound is refused with its role and the bound it met, instead of being read whole or crashing the parser (#69).Bound local MCP document and result uploads before decoding or sending them to the server, including growing files and QVF files supplied at MCP startup.
Fixed
Naming now uses drawn bonds and CIP descriptors through the standalone naming engine. Stereo names require full identity verification, and install hints point to the standalone wheel instead of the quantum-chemistry core. (#2)
Ketcher’s palettes now pass the same WCAG 2.2 A and AA checks as the rest of the shell, apart from its copy button’s 9 px triangle, which Export ▾ → Copy as … replaces. That triangle and Ketcher’s clipboard area have accessible names, and the O, S, P, F and Cl atom buttons have readable contrast. An error message can be dismissed with Escape. The compact palette’s letter tools include their letter in their names, for example Carbon (C). The title bar’s vibe-sketch is now the page’s level-one heading (#68).
Bound CLI result imports, viewer companion attachments and returned-geometry file reads before allocation, including files that grow during reading; preserve existing limits and output files on refusal.
Explain disk-space and filesystem save failures through the REST API, preserving open edits and giving retry/download guidance instead of a generic server error.
Stream external-change checks and bound QVF destination inspection before saving; oversized or growing destinations are preserved with a Save As explanation.
[v0.6.1] - 2026-10-25 - Negishi’s Funnel¶
Added¶
Staged DLPNO recipes can explicitly request
real_restricted_ccthrough the SDK, CLI, REST, MCP and browser. The conservative default remains all tested channels. The selected runtime must expose the explicit contract API, and acceptance requires verified internal stability, resolved real channels and an authenticated correlated total. Generic instability and channel verdicts remain visible in reaction reports; this does not qualify complex stability or correlated accuracy, or relax optimization and Hessian acceptance.The Templates picker now includes 303 compounds and 87 editable open-attachment fragments alongside the full named-reaction index, with categories, aliases, formula search and previews. SDK, CLI, REST and MCP support the same catalogue; unresolved fragments remain generic structures.
Add origin-bearing species QVF exports and checked geometry-return imports through SDK, CLI, REST, MCP and browser. Returns append a conformer with source provenance, preserve the drawing, and refuse foreign or chemically changed atom mappings. Compatible viewers can return through an explicit directory; the user imports the returned QVF. Automatic inbox watching is not provided.
scripts/benchmark.py --checkchecks a saved performance record against the frozen budgets and exits 1 when one is exceeded or the record cannot show they are met (part of #68).Open a run’s orbitals, density, chosen normal mode or spectrum in vibe-view from its species card, SDK, CLI, REST or MCP. Retain verified output and geometry-checked companion files by digest, preserve the complete originals in the handoff, and carry species/run identity for checked geometry returns. Missing viewer/data and invalid selections report clear reasons.
Enumerate every finite constraint-valid R-group combination through the SDK, CLI, REST, MCP and browser, retaining the original cores and definitions and deduplicating by chemical identity. Unbounded or oversized sets refuse atomically. - Write linear, isolated, nested and stereogenic multiple groups to MOL/SDF as explicit copies with their parent atoms and multiplier; verified import restores the contracted drawing. Graph-aware assignment also covers substituents bridging separate R-group sites.
HELM peptides may use phosphotyrosine,
Tyr_PO3H2in the HELM core library, printed as Tyr(PO3H2) in sequence figures (part of #98).Sequence species sent to vibe-view carry their HELM and verified InChIKey in the opaque origin section. Graph identity remains authoritative on return; the sequence metadata never replaces atom mapping or connectivity checks.
Report electronic reaction energies directly from verified, accepted campaign artifacts through SDK, CLI, REST, MCP and the browser. Export JSON, CSV, Markdown, LaTeX, SVG or QVF with actual correlated algorithm, parent/attempt provenance and explicit-review warnings; refuse incomplete, stale, incompatible or unbalanced results.
The chemfig export writes contracted abbreviations such as Boc, OTf and CO₂H as their labels, reversed (TfO) when the bond leaves to the right, and draws a polymer repeat unit in brackets with its subscript and connectivity, as a TikZ picture of the drawing (#90).
The chemfig export draws copolymer (co, alt, ran, block), multiple-group and generic brackets as the SVG figure does, and refuses a drawing with R-groups instead of leaving them out of a scheme (#90).
The chemfig export writes R-group cores with their R1, R2 … labels and each R-group definition with its “R1 =” caption and wavy attachment bonds, as the SVG figure draws them (#90).
Documents list the drawing’s R-group cores and bracketed polymer groups (
generics) and R-group definitions with their substituents and conditions (rgroups) as CXSMILES, derived from the drawing; read them withvibe-sketch generics,GET /api/documents/{id}/genericsor the MCPshow_document(part of #90).MOL and SDF exports write polymer repeat units, copolymers and generic brackets beside the species as SRU, COP and GEN S-groups, and importing them puts the brackets back on the canvas; a molecule the drawing refuses no longer takes other molecules in the same canvas node with it (part of #90).
MOL exports of documents with R-group cores are V3000 R-group files, the cores with their R-group atoms and one RGROUP block per definition with its members, attachment points and occurrence, rest-H and if-then logic, and such files import back into the same cores and definitions; SDF refuses R-group cores instead of silently leaving them out (part of #90).
MOL, SDF and RXN exports carry contracted abbreviations such as Boc and OTf as superatom (SUP) S-groups, and importing those files draws the groups contracted again; the structure is unchanged either way (#90).
Add a searchable offline named-reaction picker with source links and previews, three editable teaching examples and explicitly unfinished scaffolds. Insert beside the existing canvas through the browser, desktop, SDK, CLI, REST or MCP; reference-only terms cannot be inserted. Scaffold insertion creates no chemistry or calculation jobs. Document the intake checklist and required production versions.
Keep unrelated, separated structures out of a lone reaction arrow’s participants, and translate scaffold arrow lines together with their labels when appending.
HELM peptides may use N-methyl residues (meA, meF, meG, meH, meL, meW) and phosphoserine and phosphothreonine (Ser_PO3H2, Thr_PO3H2) by the Pistoia HELM core library’s symbols, alongside the acetyl and amide caps, from a small reviewed table; figures print them as Ac-MeAla-Ser(PO3H2)-Gly-NH2 (part of #98).
Figures (SVG, PNG and PDF) draw copolymer (co, alt, ran, block), multiple-group and generic brackets as they draw repeat units, with nested brackets set apart, instead of refusing them; the groups stay drawings, not species (part of #90).
Sequence figures print a peptide of several chains, such as insulin, as a line per chain with the disulfides between chains drawn from cysteine to cysteine (#98).
Sequence figures print a peptide with disulfides within its chain, such as oxytocin’s ring, with a bridge drawn above the two cysteines (part of #98).
Sequence figures print D-amino acids (H-D-Ala-Gly-OH) and ornithine, sarcosine, norleucine, norvaline and 2-aminobutanoic acid by their IUPAC symbols (part of #98).
Figures print an R-group’s occurrence, rest-H and if-then conditions below its “R1 =” caption, in Ketcher’s own wording, instead of refusing the definition (part of #90).
Figures (SVG, PNG and PDF) draw R-group cores with their R1, R2 … labels and each R-group’s definition with its attachment points after “R1 =”, instead of refusing the core and leaving the definitions out; both stay drawings, not species (part of #90).
A species imported from a sequence or HELM keeps that sequence (
Species.sequence: its HELM and the InChIKey it builds, kept while the drawing is that structure), so documents export as HELM and FASTA, and figures can print peptides and nucleic acids as H-Tyr-Gly-OH or 5’-ACGU-3’ with--sequences(part of #98).Peptides (one-letter, standard L amino acids), DNA and RNA sequences, one per line or as FASTA, and HELM strings import as their full structures, ordinary species, from the browser’s Import menu, the CLI (
convert --from peptide|dna|rna|helm), the SDK, REST and MCP; letters a sequence cannot hold are refused with their position (part of #98).
Changed¶
Freeze the existing release-paper software corpus and independent archived-replay procedure with a versioned timestamp and checksum binding. Scientific acceptance, final archived artifacts and release qualification remain separate requirements.
An import lays out at most 5,000 atoms in all of its structures without 2D coordinates, so a FASTA file of many peptides or a long SMILES list is refused at once with the reason instead of taking minutes; structures with coordinates do not count. Laying out large molecules is also about a third faster (#69).
Document the template library as required scope for the next 0.6.x patch and paper environment, with exact-release qualification, fleet verification and explicit distinctions between molecular examples, unfinished scaffolds and reference terms.
Fixed¶
HELM import refuses a monomer RDKit lists but cannot build, such as
[Nal], naming it and its position, instead of importing the peptide without it as another structure (#115).Add immutable campaign revalidation for older structured correlated-energy readers, preserving original failures and calculation provenance across SDK, CLI, REST, MCP and browser workflows.
Refuse oversized document and CLI conversion files before loading them into memory, and cap reads if a file grows during loading. Existing QVF and text limits and output files are preserved.
Read DLPNO totals from hash-verified QVF run attachments when provenance describes the RHF reference, retaining original raw failures and explicit-review requirements. Refuse ambiguous, nonconverged, mismatched or conflicting correlated evidence.
Importing HELM with a monomer RDKit reads but cannot write back (Sar, Abu, D-Thr, D-Ile) no longer fails; the species keeps the HELM as given (#98).
Import MOL/SDF multiple groups with missing parent records as the listed atoms with a warning, rather than crashing or interpreting them as contracted repeats. Valid multiple groups continue to expand and round-trip.
Linux desktop packages bundle the supported QVF 0.6 toolkit. Packaged-runtime verification now checks a complete QVF save/reopen round trip before accepting either platform.
Refuse malformed Host and Origin headers on the local server with a clear error instead of an internal server error, without changing open documents.
Correct the roadmap, codename catalogue and release checklist to identify the published 0.6.0 paper baseline, its scientific limits and public data archive, and the remaining 0.7 acceptance gates.
A drawing whose only R-group atom is an unnumbered R is listed as an R-group core, not as a bracketed group (#90).
[v0.6.0] - 2026-10-24 - Negishi’s Funnel¶
Unpublished qualification candidate. Staged reaction workflows now expose recipe review and campaign controls in the browser alongside SDK, CLI, REST and MCP. The workflow retains accepted-parent geometry, explicit retries, scientific verdicts separate from process status, and evidence-bound reference reviews. The paper baseline remains pending real integrated acceptance (#42), independent archived-output replay under the frozen procedure (#66), and exact candidate/package qualification (#109). The multiple-reference repair (#110), disconnected-ion spacing repair (#111), correlated-QVF total repair (#112), verified campaign energy reports (#113), Linux QVF runtime repair (#114), the prospective replay-procedure freeze (#66) and the immutable validator revalidation continuation (#116) are included in this candidate.
This candidate also includes features merged ahead of their approved milestones, including spectra, annotations, analysis and interchange additions listed below. These source changes do not establish the later milestones’ acceptance. QVF is the native editable format; actual ChemDraw compatibility remains unverified. The published 0.5 package bytes remain unchanged.
Added¶
Figures (SVG, PNG, PDF and the chemfig TikZ picture) draw a KET polyline from a file or the API as an open path through its points instead of refusing it (part of #91).
Figures (SVG, PNG and PDF) draw polymer repeat units in brackets across the bonds leaving them, with their subscript and hh/eu connectivity, instead of refusing the drawing; the unit stays a drawing, not a species (part of #90).
Add explicit evidence-bound review continuations for terminal DLPNO restricted-reference external-instability decisions, preserving raw failures, original attempts and verified geometry lineage through the SDK, CLI, REST and MCP APIs.
Groups such as Ph, Boc, OTf and TBS can be drawn as their label and expanded again (Abbreviate and Expand in the browser, CLI
abbreviate, SDK, REST and MCP) without changing the structure, and figures print them as labels in every journal preset (part of #90).Laboratory apparatus pictograms (round-bottom and conical flasks, beaker, condenser, separatory funnel, column, vial, hotplate) drawn from shapes, with an optional label, through Import ▸ Apparatus…, the SDK, CLI
apparatus, REST and MCPadd_apparatus(part of #91).Expose staged recipe review, campaign compilation, runtime choices, scientific acceptance and explicit retry controls in the browser and desktop panel. The controls use the existing REST API, preserve recipes in QVF, and distinguish compilation from submitting jobs through the displayed vibe-queue command. Expanded sections and entered runtimes survive asynchronous panel refreshes; document edits still invalidate review and model licence acknowledgement. In-flight actions restore the current panel after a redraw, and stale campaign status cannot replace the current document’s status.
Imported frequency and TDDFT results keep their IR, Raman and UV-Vis lines, the species card counts vibrations and imaginary modes, and each spectrum exports as a line list (CSV or text) or as a Gaussian- or Lorentzian-broadened curve, from the browser, SDK, CLI (
vibe-sketch spectrum), REST and MCP (#87).Binary ChemDraw CDX files (
.cdx) open in the browser, desktop app, SDK, CLI, REST (base64) and MCP with their structures, arrows, text, shapes and reaction scheme, read by translating them to CDXML; CDXML files that state their bond length in the wrong unit are measured instead (part of #95).Drawings export as CDXML for ChemDraw and other drawing programs (structures, arrows including curved ones, plus signs, text, compound numbers, rectangles, ellipses and lines, and a reaction scheme) from the Export menu, Copy as CDXML, SDK, CLI, REST and MCP; CDXML import now also reads rectangles, ovals and plain lines as shapes (part of #95).
The chemfig (LaTeX) export writes a drawing with shapes as one TikZ picture instead of refusing it: molecules as
\chemfigwalks placed at their drawn coordinates, and rectangles, ellipses, lines, arrows, plus signs, text and TLC plates as TikZ paths and nodes (part of #91).Species show their CIP descriptors (R/S, pseudo-asymmetric r/s, E/Z) from RDKit’s implementation of the revised CIP rules, with undefined stereocentres and double bonds listed as a check and enhanced-stereo groups; Label R/S, E/Z writes them into the drawing, a stale label is reported after an edit, and figures can print them (
--stereo-labels,?stereo_labels=true, the export menu), through the SDK, CLI (stereo,stereo-labels), REST and MCP (#92).Each species shows its elemental analysis (“Anal. Calcd for …” line and mass percent per element) and calculated descriptors (Crippen logP and MR, TPSA, Lipinski donors and acceptors, rotatable bonds); they export as a CSV, Markdown or LaTeX property table and can be placed as text under the structure, from the browser, SDK, CLI, REST and MCP (#93).
Rectangles, ellipses and lines drawn on the canvas (new shape tools in the compact palette) are printed in SVG, PNG and PDF figures in the preset’s line width instead of being refused, and a TLC plate (lanes, baseline, solvent front, spots at their Rf with values) can be drawn from shapes and text through the Import menu, SDK, CLI (
tlc), REST and MCP; chemfig export refuses drawings with shapes rather than dropping them (part of #91).Atoms can be marked in Okabe and Ito’s colour-blind-safe palette (Mark selection on the canvas, or by atom number through the SDK, CLI
highlight, REST and MCP); the marks are kept in the document, follow the structure when it is redrawn, include the bonds between marked atoms, are shown on the canvas and printed as light tints under the line art in every figure preset (part of #91).ORCA NMR results keep every nucleus’s isotropic shielding; shifts are worked out against a reference run computed at the same level of theory (never a literature value), with symmetry-equivalent nuclei averaged, exported as CSV, Markdown or LaTeX line lists and placed as text beside the atoms of the drawing, through the browser, SDK, CLI (
nmr,nmr-labels), REST and MCP (#97).Figures export as EMF and EPS for Word, PowerPoint and Excel (written by vibe-sketch itself, text outlined from the bundled font, at the figure’s physical size) through the browser, SDK, CLI
render, REST and MCP, and the Export menu copies the drawing to the clipboard as PNG, SVG or MOL (#96).Names that vibe-qc’s naming engine does not know are read by OPSIN when the optional
[opsin]extra and a Java runtime are installed: systematic IUPAC, CAS-style and many trivial names, offline, with the source and OPSIN’s reason shown (#94).Add a reproducible SDK replay for the draft paper corpus, preserving output artifacts, diagnostics, timeouts and unrun cases. QVF round trips compare the whole document, and expected refusals must match the declared reason. These software observations do not establish scientific or release acceptance.
Added a versioned draft evaluation corpus and replay protocol for the 0.6 release paper, with input checksums and explicit expected refusals. Final scientific acceptance and independent replay remain pending.
Compile recipe campaigns with explicit per-stage host, program, interpreter, runner and resource settings through the SDK, CLI, REST API and MCP tool.
A reaction’s amounts can be entered as in a lab notebook (mmol, mass, a volume with a density or a concentration, or equivalents) and are kept in the document; its stoichiometry table works out equivalents, amounts, volumes, the limiting reactant and theoretical and isolated yields, in the browser and through the SDK, CLI (
amounts,stoichiometry), REST and MCP, and exports as CSV, Markdown or LaTeX (#99).Report electronic reaction energies directly from verified, accepted campaign artifacts through SDK, CLI, REST, MCP and the browser. Export JSON, CSV, Markdown, LaTeX, SVG or QVF with actual correlated algorithm, parent/attempt provenance and explicit-review warnings; refuse incomplete, stale, incompatible or unbalanced results.
Changed¶
Freeze the existing release-paper software corpus and independent archived-replay procedure with a versioned timestamp and checksum binding. Scientific acceptance, final archived artifacts and release qualification remain separate requirements.
Pin the QVF toolkit to v0.6.0 for document import/export and the bundled runtime. The archive format remains QVF v1; the toolkit adds drawing-preserving job preparation and bounded XSF/PDB conversion.
Fixed¶
Linux desktop packages bundle the supported QVF 0.6 toolkit. Packaged-runtime verification now checks a complete QVF save/reopen round trip before accepting either platform.
Separate disconnected components when generating 2D coordinates so imported salt labels such as NH4+ and Cl- do not overlap in the canvas or publication exports. Preserve atom order, charges and stereochemistry, and keep existing authored drawing coordinates unchanged.
Review separate terminal DLPNO reference failures in one completed reaction campaign without rerunning chemistry. Each continuation applies one explicit, evidence-bound decision; other references stay rejected until separately reviewed, and earlier decisions, raw failures and artifact lineage are retained.
Add immutable campaign revalidation for older structured correlated-energy readers, preserving original failures and calculation provenance across SDK, CLI, REST, MCP and browser workflows (#116).
Bind validation nodes to the selected managed program and support separate bounded compute/validation wall times across campaign APIs; review replay uses validation budgets and preserves original execution provenance. Correct the MACE force threshold description to maximum atomic vector norm.
Recipe campaigns now emit the supported nested DLPNO threshold and explicit t1 options for vibe-qc 0.17.25 or newer. Remove the obsolete container refusal while explicitly refusing the unsupported legacy t0 spelling.
Quote campaign paths in the controller commands returned by the SDK, CLI and REST API so spaces, quotes and shell metacharacters remain literal arguments when copied into a POSIX shell.
A campaign runtime that asks for too many CPUs, too much memory or too long a wall time is refused with the limit again, rather than only “invalid runtime” (#106).
Campaign validators now require final optimization force evidence and usable electronic reference verdicts, and reject incomplete or nonfinite Hessian frequency inventories. Existing convergence and imaginary-mode thresholds are unchanged. Older containers missing the required evidence are refused (#102).
The browser shows the reason a request was refused by the server’s own validation, rather than only its status code.
Read DLPNO totals from hash-verified QVF run attachments when provenance describes the RHF reference, retaining original raw failures and explicit-review requirements. Refuse ambiguous, nonconverged, mismatched or conflicting correlated evidence.
[v0.5.0] - 2026-10-22 - Heck’s Beaker¶
Published after exact-package qualification under #89. This release targets traceable reaction calculations: QVF job containers and groups, explicitly selected provenance-bound results, reaction-energy figures, and CSV/Markdown/booktabs tables. These features were implemented ahead of their milestone; their integrated and packaged acceptance was completed for 0.5.
The published 0.4 release retains its completed qualification and immutable artifacts. Native editable documents use QVF; ChemDraw/ChemOffice CDXML reading remains supported and CDXML writing remains deferred until user demand. The 0.6 paper baseline still requires real staged campaigns and independent scientific replay; this candidate does not establish those claims.
Added¶
Open ORCA 6 outputs (
.out) and Hessian files (.hess) as documents, their bonds and bond orders inferred from the coordinates with the stated charge. An optimisation’s geometries, like an XYZ trajectory’s frames, are kept as conformers, the last first, and a trajectory is drawn once (#86).Importing an ORCA optimisation’s output brings its converged geometry back as a further 3D structure of the species, named after the output it came from and listed on the species card; the atoms must be the species’ own, in order. An ORCA Hessian file (
.hess, formatorca-hess) is checked against its frequency run’s stationary point. Through the browser,vibe-sketch import-result, REST and MCP (#85).
Fixed¶
Accept ORCA Hessian files whose stationary-point coordinates use a translated origin, while preserving atom order and strict geometry tolerance. Rotated, reflected, scaled or internally changed geometries remain refused, and stored conformers are unchanged (#100).
[v0.4.0] - 2026-10-22 - Wittig’s Pipette¶
This release is about native QVF and publication interchange. ChemDraw and ChemOffice CDXML files open as whole drawings, every reaction and annotation included, and save as QVF; chemfig source for LaTeX came with 0.3.0’s publication work. CDXML writing is deferred until users ask for it, and the files have not been checked in ChemDraw itself. Tidy scheme now lays out divergent and convergent schemes, and the local server bounds what it reads and who may talk to it. Work merged ahead of its milestone also ships here: NEB inputs and the atom-mapping view (planned for 0.7), and result import with reaction energy figures and tables (0.5). Their milestones’ acceptance is still to come. Keyboard users can now leave the drawing canvas, errors reach screen readers, a performance corpus records the first timings, and venv updates restore the previous environment on failure. Cleanup is bounded on large molecules, and the desktop app accepts only a healthy backend at startup and recovers when it stops. The QVF toolkit remains at 0.5; the archive format remains version 1.
Added¶
Tidy scheme lays out divergent and convergent schemes. A molecule used in two or three steps keeps its first step in the row, and the others leave it by diagonal arrows to rows below and above. Two sequences that meet in one step form a Y, one arriving from above and one from below. Schemes the layout cannot express yet, such as a branch that branches again, are still left as drawn with the reason (#81).
Opening a CDXML file now reads the whole drawing, including every reaction instead of only the first, arrows, plus signs, text and compound numbers. Import warns about steps the drawing reads differently and about objects it leaves out. Save imported documents as QVF; CDXML writing is deferred (#24).
Export explicitly selected reaction energies as CSV, Markdown and booktabs LaTeX tables through the SDK, CLI, REST API, MCP and browser. Tables retain coefficients, absolute participant energies, methods and source runs; CSV preserves full precision and provenance for independent replay.
Bound what vibe-sketch reads and who may talk to its local server. Imports,
.vskdocuments and QVF archives are refused with the reason when they exceed a size, an archive’s unpacked size (zip bombs), JSON nesting, the atoms of one import or the atoms of a structure that must be laid out. A malformed canvas is refused instead of failing inside the server. A loopback server answers only for this machine’s host names and refuses requests from other sites’ pages, and request bodies over 272 MiB answer 413. See the new Security and input bounds page (#69).Map a reaction’s atoms in the browser: each reaction card has an Atom mapping and reaction path section that marks the reaction centre on the canvas, marks a pair when you point at it, offers an ambiguous mapping’s equally cheap pairings, pins a reactant and a product atom selected on the canvas, and downloads the NEB inputs. The mapping report gains each atom’s canvas position, the reaction centre and the pins that select each cheapest pairing (#83).
Write nudged-elastic-band inputs from a sketched reaction: ORCA NEB-TS, NEB-CI or NEB with the product end as an XYZ file, and a vibe-qc
run_nebscript (climbing image or plain; vibe-qc has no NEB-TS). Reactant and product atoms are paired by the fewest bonds formed and broken, the pairing is shown first and can be corrected with pins, and an ambiguous pairing is refused. Both ends are built as aligned complexes with their atoms in one order. Available asvibe-sketch neb,POST /api/documents/{id}/reactions/{rid}/mappingand.../neb, the MCPmap_reactionandwrite_neb_inputstools, andvibesketch.inputs.neb(#29).Import verified ORCA 6 text outputs and finished vibe-qc QVF containers onto recorded runs, then report explicitly selected reaction energies with coefficients, source provenance, derived SVG figures and QVF export through the SDK, CLI, REST API, MCP and browser. Missing, incompatible, stale or unbalanced results are refused.
A versioned corpus of small, large and crowded drawings (
tests/data/corpus/) and a harness,scripts/benchmark.py, that times load, cleanup, Tidy scheme, rendering and QVF export on it and records the environment; the first measurement is on the new Performance and accessibility checks page (#68).
Changed¶
Keep ChemDraw/ChemOffice CDXML import and save imported documents as native QVF. Hide CDXML export from the browser and refuse it through SDK, CLI, REST and MCP; writing CDXML is deferred until users request it. Actual ChemDraw testing and sample collection are omitted from 0.4 acceptance, and compatibility with ChemDraw itself remains unverified.
Clean up is much faster on large molecules: one of more than 500 atoms is laid out with a single layout that follows the drawing instead of three, and a molecule of more than 3,000 atoms is left as drawn with the reason. A 2,000-atom chain now cleans in about 2.5 s instead of about 21 s, with a third of the memory (#68).
Fixed¶
Compiling a campaign or rendering its stages no longer deletes a directory the user gave when the write fails, and a directory that cannot be written is refused with the reason instead of failing inside the server. Renders refuse campaign paths that lead outside the campaign and campaigns whose files are missing. Drawings sent over REST meet the import bounds, and a malformed one is refused with 422 (#69).
Saving a document the server opened from a file no longer overwrites a change another program made to that file in the meantime: Save is refused with the reason and the file keeps the other change. Saves also sync the directory after the rename, so a crash leaves the old file or the new one (#69).
The keyboard no longer gets stuck in the drawing canvas: Tab used to cycle among Ketcher’s palette buttons and Shift+Tab stopped on its clipboard area. Tab and Shift+Tab now pass through the canvas and out of it. The Performance and accessibility checks page lists the canvas’s limitations with what to use instead (#68).
Error messages in the browser now interrupt screen readers and stay until the next message or a click, instead of vanishing after nine seconds, and every control the Tab key reaches, the Licences link and the panel’s collapsible sections included, shows a visible focus ring (#68).
scripts/update.sh --recreate-venvno longer deletes the working virtualenv before the new one is installed: the previous one is set aside and restored if the update fails or is interrupted. Campaigns are bounded to 2,000 nodes and a node’s cpu and memory request to plausible values, refused with the reason before anything is written (#69).The desktop window no longer opens on an answer that is not vibe-sketch’s (an error page, or another program on its port), stops waiting at once when its backend dies while starting, and says so when the backend stops later, with Try again to start a new one (#69).
[v0.3.0] - 2026-10-20 - Diels’s Burette¶
This release combines publication-quality drawing and export with predictable FIRE-based geometry cleanup, constrained 3D relaxation and explicit reaction-scheme layout. It also includes reaction calculation groups and browser cancellation. The QVF toolkit remains at 0.5; the archive format remains version 1.
Added¶
vibe-qc jobs are submitted to vibe-queue as QVF job containers (one structure, one
job.spec, the document andrun_status: pending), so each result keeps its sketch: a finished container opens back with the drawing, the result geometry as a new conformer and the energy, through the SDK,vibe-sketch info, the REST API and MCP; when no container can be built or pinned, the run script goes and the reason is reported (--scriptasks for it), and every run now records the queue’s directory and, for a container, its file (#3).vibe-sketch rendertakes several documents and formats at once (--out DIR --format svg,pdf), reports every failure with its reason and exits non-zero when any figure failed; the manual gained a chapter on figures for papers.The browser can submit one reaction or the whole scheme through vibe-queue, show calculation progress by submission group, and cancel unfinished runs in a group. Older ungrouped runs retain individual controls.
Export chemfig source for LaTeX (
vibe-sketch convert DOC -o scheme.tex, formatchemfigin the SDK, REST and MCP): structures as\chemfigwalks with the drawn angles, reactions as\schemestartschemes with reagents, conditions, yields and compound numbers.Relax a species’ 3D structure with FIRE on MMFF94 or UFF, holding distance, angle, dihedral and fixed-atom constraints exactly, through the SDK (
vibesketch.chem.relax),vibe-sketch relax,POST /api/documents/{id}/relax,POST /api/chem/relaxand therelax_3dMCP tool; the result replaces the species’ first conformer asfire+mmff94orfire+uff.Add a FIRE minimiser (
vibesketch.chem.fire), numpy only, for the coming reference-geometry clean-up and constrained 3D relaxation: velocity Verlet with the FIRE 2.0 rules, fixed coordinates and a deterministic result.Add RSC and Wiley JCC SVG presets with physical bond, stroke, text and stereo dimensions. Saved document presets apply to browser and SDK exports; CLI, REST and MCP exports can override the style without changing the document.
Add self-contained Linux x86-64 desktop packaging with a hash-pinned Python runtime, bundled application libraries, native dependency checks and retained license notices.
Export complete reaction drawings as PNG and vector PDF through the optional, pinned publication backend. Add PNG DPI control and physical resolution metadata, embed publication text fonts, and share scene exports across SDK, CLI, REST, MCP and browser.
Submit a reaction’s or a whole scheme’s calculations as one group (
vibe-sketch submit --reaction IDor--scheme,reactionson the REST and MCP submit calls), each distinct species once; runs carry theirgroup,vibe-sketch runs --groupsandGET /api/documents/{id}/groupsshow each group’s progress, andvibe-sketch cancel-group, the groups cancel route and thecancel_groupMCP tool cancel one as a whole.Compile a saved recipe into a vibe-queue campaign (
vibe-sketch campaign-compile, the campaigns REST routes, thecompile_campaignMCP tool): a compute and a validate node per species and stage, each stage starting only from the geometry its predecessor’s validator accepted;campaign-statusshows each stage’s process state and scientific acceptance apart, andcampaign-retryauthorises an explicit retry of a failed node.Drawing cleanup now refines layouts with FIRE using a versioned table of approved IUPAC 2008 depiction conventions and RDKit’s existing ring-template API. Geometry, overlap and stereochemistry checks retain the legacy cleanup on refusal. Browser, CLI, REST, MCP and SDK share the same implementation; no new dependency or template dataset is added.
Render a recipe campaign’s stages for one species in one orientation (
vibe-sketch campaign-render, the renders REST route, therender_campaign_stagesMCP tool): the start and every accepted geometry, with optimisation trajectories, superposed on the start from the campaign’s verified artifacts, as QVF archives with a provenance record and vibe-view’s images when vibe-view is installed.Save a reviewable staged recipe on a document (
recipes, additive): stages with stable ids, parents and explicit geometry sources, with MACE, PBE, Hessian and DLPNO option models;vibe-sketch recipeandrecipe-set --baseline(the MACE → PBE/def2-SVP → Hessian → DLPNO-CCSD(T) workflow), the recipes REST routes and theshow_recipes,set_recipeandremove_recipeMCP tools show every stage as vibe-qc would run it and refuse what it cannot express.Add Tidy scheme: one action lays a whole reaction scheme out the way papers draw it. Molecules are cleaned and centred on their arrows’ line, reagents go above each arrow and conditions below, compound numbers centre under their structures, and a long sequence turns down and runs back. The steps keep their order and every reaction reads back the same; a scheme that would not, or that branches, is left as drawn with the reason. Curved mechanism arrows stay at their molecules. Available as the Tidy scheme button,
vibe-sketch tidy,POST /api/documents/{id}/tidy,POST /api/tidy, the MCPtidy_schemetool andvibesketch.document.scheme.tidy_scheme(#20).
Changed¶
Adopt MPL-2.0 for vibe-sketch, including the licence grant, Python and npm metadata, desktop notices and manual. Preserve third-party licences and keep publication availability separate from the licence decision.
Align release instructions with the approved 0.2–1.0 names, implemented publication exports and self-contained macOS runtime; distinguish source checks from installed-package acceptance.
Clean up now places two substituents on one ring atom 60 degrees apart, centred outside the ring (IUPAC 2008 GR-4.2.3). Fused, bridged and large ring systems take the most even uncrowded generated layout as their reference instead of always keeping the legacy layout’s, so a polycycle CoordGen draws unevenly is now refined. The clearance penalty keeps a small margin, and FIRE may take up to 400 steps (#80).
Link the approved feature-release sequence to its GitLab milestone IDs, define weekly evidence reconciliation and version-target advancement, and record completed RSC/Wiley journal styles.
Fixed¶
Batch rendering reports missing, unreadable or invalid-text inputs and output I/O failures without skipping independent figures.
Fix the desktop build guide download link in the distribution manual.
Cleanup skips CoordGen’s potentially unbounded search when a perceived ring has more than eight atoms, preventing the known 50-membered-ring hang. RDKit layouts, FIRE quality checks and stereo fallback remain available; ordinary small-ring cleanup keeps its existing candidates.
A recipe’s DLPNO stage is refused at review and compile time while vibe-qc’s QVF job containers cannot carry its pinned triples_mode, instead of failing when the campaign runs; and a Hessian stage’s verdict counts only the 3N-6 (3N-5 for a linear molecule) vibrations, leaving out the rigid-body modes vibe-qc reports as zeros.
[v0.1.4] - 2026-10-19 - Dötz’s Flask¶
This patch preserves drawn scenes in SVG export, adopts QVF toolkit 0.5 and includes a bundled Apple Silicon Python and RDKit runtime. QVF archives retain format version 1.
Added¶
Self-contained Apple Silicon macOS packages now include pinned Python, RDKit, QVF and browser assets, verify the native runtime before signing, and show repair guidance instead of requiring a separate Python installation. The desktop SMILES/name input uses an accessible dialog because Electron does not support the browser prompt API.
Changed¶
SVG exports now preserve the drawn layout: repeated molecule occurrences, reaction arrows in every direction, curved electron-flow arrows, plus signs and free text. Documents without a drawing retain the reaction-row fallback. Unsupported scene objects are refused instead of silently omitted. (#21)
Pin QVF toolkit v0.5.0 across the application, CI and installers. Request its NumPy and validation extras explicitly so the sketcher keeps its array-based document reader and writer when those dependencies are optional in QVF. The archive format remains version 1.
[v0.1.3] - 2026-10-18 - Dötz’s Flask¶
Fixed¶
SMILES and reaction SMILES imports preserve specified E/Z geometry and leave unspecified alkenes unspecified through the drawing and chemistry exports.
Refuse whitespace-padded CXSMILES relative-stereo flags instead of silently importing them as a single absolute stereoisomer, including reaction SMILES and CLI, REST and MCP imports.
Python API source views now return to documented definitions instead of missing anchors for re-exported symbols.
Published documentation no longer offers page-source links to files that are omitted from the website. Tutorial screenshots, examples and Python API source links remain available.
MOL, SDF and RXN exports now preserve absolute tetrahedral stereochemistry in readers that honor the molfile chiral flag, without assigning unspecified centers or overriding explicit relative stereo groups.
Imports now refuse relative or mixed stereochemistry that cannot identify one calculation species. Native drawings retain those labels with a warning, and normalized exports refuse to omit the affected structures. Absolute and unspecified stereochemistry remain supported.
[v0.1.2] - 2026-10-17 - Dötz’s Flask¶
Fixed¶
Keep the selected file format and recent-file path when opening or saving symbolic links in the macOS file dialog, including QVF links whose targets have another extension.
Added¶
The browser app:
vibe-sketch serve [file.vsk] --openserves it with the API. Draw with the toolbar, import SMILES, names and files, read each species’ formula, masses, charge, multiplicity, identifiers and checked name in the properties panel, save.vskdocuments (back to the file when started with one) and export SVG, PNG, MOL, SDF, RXN, SMILES, InChI and KET. Edits an agent makes through the API appear within seconds.The browser shell draws structures and reactions: the Ketcher canvas with its Indigo WebAssembly toolkit, driven by vibe-sketch’s own toolbar (atoms, bonds with wedges, charges, text, reaction arrows and plus signs, a cubane template, undo, redo and layout).
Names from vibe-qc’s naming engine are checked against the structure before they are shown: a name that describes another structure is withheld, and one that cannot be checked is shown only as a suggestion.
./scripts/install.sh --naming-path <vibe-qc-checkout>makes the engine available.Species and reactions are derived from the drawing on the server: charge from the formal charges, multiplicity from the radicals and checked against the electron count, reactions from the arrows with reagents, condition lines and compound numbers.
vibe-sketch convert,render,infoandname, and the matching REST routes, do the same from the command line and the API.Clean up:
vibe-sketch clean,POST /api/documents/{id}/cleanand the browser’s Clean up button (Ctrl/Cmd+Shift+L) give every molecule standard bond lengths and angles while keeping where it sits, which way it points and which way each chain turns. Stereochemistry is checked; a molecule it would change is left as drawn.Launch the native window with
vibe-sketch desktop [FILE]from any directory in a source installation. The command checks or repairs the reviewed runtime, selects a free port and records the active Python environment for later launches.Install the source desktop app with
install.sh --with-electron, optionally pinning it on macOS with--dock.update-desktop.shrefreshes the Python environment, browser and reviewed runtime while preserving packaged apps and launchers owned by other checkouts.Add a desktop guide for installation, first-run Python setup, file opening and saving, local settings, macOS updates and packaged-app acceptance.
Desktop Open, recent files, file drops and operating-system launches now import the selected structure into the canvas. Save writes back to its original path, Save As chooses a new destination, and cancelled or failed saves preserve existing files. Saves use a fixed document revision and refuse to overwrite external changes.
Browser and desktop distributions now include reviewed third-party notices, the corresponding Indigo source and separate InChI source. Build checks refuse missing or changed notices; macOS apps retain Electron and Chromium licences.
The
.vskdocument format, schema version 1: the drawing embedded verbatim as KET, plus species, reactions, program-neutral jobs, style and provenance, with a generated JSON schema andvibe-sketch validateandvibe-sketch schema.The browser app draws with Ketcher’s full palettes: rings, chains, the periodic table, functional groups (Et, OEt, Ph, Boc and more), charges, and curved arrows for mechanisms, for electron pairs and single electrons. A Clean up button (Ctrl/Cmd+Shift+L) standardizes bond lengths and angles on the server;
?palette=compactkeeps the small palette.Install the reviewed Electron runtime directly with
electron/install-electron.py, with release checksum verification, atomic replacement, health checks and ownership-aware uninstall. On macOS, install an ad-hoc signed vibe-sketch source launcher with optional Dock pinning, without an Apple developer account.3D structures:
vibe-sketch embed,POST /api/documents/{id}/embed,POST /api/chem/embed3dand Generate 3D in the browser make conformers with ETKDG and MMFF94 (UFF where MMFF94 has no parameters), keep the lowest in energy in the document, and check that every one has the drawn R/S and E/Z. Open stereocentres and species without a force field are reported.Advertise QVF and vibe-sketch documents as editable desktop files, and the supported chemistry formats as viewable files. Source and packaged macOS apps import QVF’s shared type; Linux packages include its canonical MIME declaration and matching desktop entries.
The manual now includes illustrated molecule, reaction and calculation-input tutorials, plus downloadable sketches and runnable CLI, Python and REST examples with an equivalent MCP workflow.
Inputs for a whole drawing: the browser’s Inputs section,
vibe-sketch input --all(or repeated--species) andPOST /api/documents/{id}/inputswrite one program’s input for every chosen species with one specification, embed what has no 3D structure first in the browser, and list refused species with the reasons.Input writers that refuse what they cannot express, with the reasons:
xyzandqcschema-moleculefor geometries, throughvibe-sketch input,vibe-sketch writers,POST /api/inputsandvibesketch.inputs.write_input.vibe-sketch mcp: vibe-sketch as tools for an agent over the Model Context Protocol. Agents can draw from SMILES or names, label species, clean up, embed in 3D, write ORCA and vibe-qc inputs, export and save, through the same revisioned API as the browser: withvibe-sketch serverunning, the agent edits the documents its user has open.Mechanisms read as reactions: arrows may point any way, each step takes the molecules ahead of and behind its arrow with what plus signs join and what is drawn close by, steps follow the molecules they share, and curved (electron-pushing) and crossed-out arrows are no longer read as reactions.
vibe-sketch opens what the other vibe programs write. XYZ files, as vibe-view exports them, open with their coordinates kept as 3D structures, reading
charge=andmultiplicity=from the comment line. A QVF from another program now opens its reaction scheme as reactions, with arrows, conditions and yields. It also opens radicals, single atoms, metal compounds (with the file’s SMILES giving the bond orders) and structures holding several molecules, each keeping its own 3D structure. These used to crash, be misread or lose their coordinates. Every archive of the qvf conformance corpus now opens or is refused with a reason, and CI checks it.The ORCA writer:
vibe-sketch input … --program orcawrites ORCA 6 inputs for single points, optimisations (with distance, angle, dihedral and position constraints), frequencies, TDDFT and NMR, with RIJCOSX, RIJK, dispersion corrections and CPCM or SMD, in the qc-input-library house style. It refuses, with every reason, what its keyword table does not cover or ORCA would not run as asked. Job specifications gainstates(TDDFT) andconstraints; theinputcommand takes the specification as options or--specand can--embedthe species first.Gate the sketch-to-ORCA-input and vibe-qc submission workflows with real Chromium and MCP acceptance tests, including the two-action budget and the displayed queue run. Calculations use a test queue; real-program integration acceptance remains separate.
QVF, the vibe family’s file format, is vibe-sketch’s default document format. A vibe-sketch QVF holds the whole document with a preview and one standard
structuresection per species with 3D coordinates, so any QVF reader shows the molecules. The browser saves.qvf,serve,loadandsaveread and write it,convertand the REST API take and give it (base64 over JSON), and a QVF from another program opens as species with their 3D structures. qvf-writer installs from a qvf checkout withinstall.sh --qvf-path. Opening a.qvfor.vsknow keeps the whole document.Added an illustrated tutorial that draws a reaction, exports a publication SVG, and submits and retrieves vibe-qc calculations through vibe-queue, with downloadable example chemistry and equivalent command-line instructions.
Release wheels now include the browser app, document schema and complete third-party notices and source. Release builds check reproducibility, reject stale assets and smoke-test a clean installation before staging checksummed artifacts. Desktop setup names the matching hosted wheel, and macOS packaging uses ad-hoc signing without a developer account.
The repository skeleton: the
vibesketchpackage withvibe-sketch --versionandvibe-sketch serve, install and update scripts, the browser shell underweb/, the desktop shell underelectron/, the manual’s toolchain and the CI gate.Calculations run through vibe-queue: Submit to vibe-queue in the browser’s Inputs section,
vibe-sketch submit,POST /api/documents/{id}/submitand the MCP toolsubmit_jobswrite ORCA inputs or vibe-qc scripts and submit them (ORCA through the binary registered with vibe-queue, vibe-qc through its registered Python), recording the jobs and their runs in the document. The Calculations section,vibe-sketch runsandshow_runsfollow them;cancelstops one.Species go to vibe-view as QVF: Send to vibe-view through vibe-view’s hand-off when vibe-view started vibe-sketch from its Sketch button, View in 3D with
vibe-view openotherwise; alsovibe-sketch view,POST /api/documents/{id}/viewand the MCP toolshow_in_vibe_view. vibe-sketch QVFs now also carry each species’ identifiers (SMILES, InChI, InChIKey, formula, name), an SD file and a PNG thumbnail.The vibe-qc writer: a Python script per species that runs
vibeqc.run_jobwith the charge and multiplicity on theMolecule, for single points, optimisations, finite-difference frequencies and TDDFT, refusing what vibe-qc cannot do (NMR, SMD, unknown functionals such as ωB97X-D3). Theqcschemawriter emits a QCSchema input exactly as vibe-qc’s adapter reads it. The browser’s Inputs section offers vibe-qc.Add illustrated tutorials and checked downloadable examples for every implemented drawing, file, geometry, input-writer, queue, desktop and automation workflow, including Diels–Alder and Suzuki teaching schemes. Keep vibe-qc primary and distinguish browser scheme PNG export from the single-structure server renderer.
Changed¶
Release codenames now pair an organic chemist with a named reaction and laboratory equipment. The selected name for 0.1.2 is Dötz’s Flask; later 0.1.x patches inherit it while earlier candidate names remain unchanged.
Release artifacts now carry their exact source and job identity alongside the checksum manifest so publication can reuse the qualified wheel without rebuilding it.
QVF files follow qvf 0.3, so any QVF reader learns more from a vibe-sketch file without knowing vibe-sketch. Each species’ structure carries its charge, multiplicity, SMILES, InChI, InChIKey, compound number and the name you gave it. The reaction scheme is a
reaction.scheme, and each calculation is ajob.specnaming its structure. The picture is a standardpreview: a PNG thumbnail of 256 to 1024 pixels and the scheme as SVG. QVF is served asapplication/vnd.vibe-qc.qvf+zip. Opening another program’s QVF takes each structure’s stated charge, multiplicity, compound number and name. When the coordinates give no bonds, as around many metals, the species is drawn from its SMILES instead. qvf-writer 0.3 or newer is required.Use QVF toolkit v0.4.0 for document compatibility checks and require
qvf-writer0.4 or newer for QVF import and export. The archive format remains QVF version 1.Documented the agreed vibe-sketch/vibe-view responsibilities: 2D chemical drawing and publication reaction graphics in vibe-sketch, detailed 3D structure work in vibe-view, and input, editing, basic cleanup and calculations in both. Recorded the requirements for reference-geometry and FIRE cleanup in vibe-sketch and distinguished planned integration from existing functionality.
The introductory calculation tutorial, screenshots and CLI, SDK, REST and MCP examples now lead with vibe-qc. ORCA remains documented as an optional alternative.
Expand the packaged desktop acceptance guide with startup-readiness and QVF symlink save checks, and update the roadmap to distinguish completed sketch/compute work from pending desktop acceptance.
Fixed¶
Source updates now rebuild the browser app by default and report missing npm or build failures.
--reuse-web-buildexplicitly reuses an existing build when it is already known to match the updated source.Save and Export now stop when pending drawing edits cannot reach the server. The drawing remains available for retry, and a later save resends it before producing a file, instead of silently writing an older revision.
Import QVF and XYZ structures with near-zero coordinates in scientific notation, preserving their precision instead of rejecting their geometry.
Wait for the local server before opening the desktop editor or a file; repeated activation and Recheck share one startup, and closed setup can be reopened.
Fit a canvas loaded in a hidden pane when it first becomes visible, keeping Ketcher’s zoom percentage in sync with the drawing. Later resizing preserves the user’s zoom.
Import structures with more than 999 atoms or bonds through the KET bridge using V3000, preserving stereochemistry, charges, radicals and isotopes. Report the specific RDKit chemistry error when a fragment is refused.
Correct stale introductory status text: 3D generation, calculation input writers, queue submission and the source Electron desktop shell are implemented. Add quickstart routes for these features and keep remaining desktop work and release availability explicit.
Recommend the current
vq daemon runcommand when the local queue daemon is absent, replacing the removedvq daemon startcommand.The
[queue]extra requiresvibe-queue>=0.26.10, the distribution’s name since it was renamed fromvq.Prevent SDK, CLI, REST and MCP saves or exports from replacing QVF calculation results or archives with unsupported data. Save an edited sketch to a different destination; native sketch QVF documents remain editable in place.
Desktop Save now offers a sketch copy when an imported or protected QVF cannot be overwritten, with a distinct suggested filename. Cancellation keeps the original destination and unsaved revision; protected results remain intact. Save errors show their reason without Electron’s remote-method wrapper.
Desktop Save As protects QVF calculation results through symbolic links even when the selected filename and target have different extensions. Saves retain the format selected by the filename and preserve the link itself.
Calculation-input number fields now use the available column width, so memory and process counts stay readable beside the browser’s spin controls.
Make shell menus and the compact palette navigable with arrow keys, add a skip link to properties and inputs, and retain keyboard focus across panel updates. Improve focus indicators, control contrast and target sizes, and correct the Layout button’s accessible name. Add automated accessibility checks for the shell and calculation views.
Keep drawing and document actions disabled until the initial document is ready, so an early import or keyboard shortcut cannot fail or be overwritten by startup. Startup failures leave a visible retry hint.
The queue Submit button now updates immediately when the calculation program changes, including when only one of ORCA and vibe-qc is available.
Opening a structure in vibe-view now chooses a free local port, preserves existing viewer sessions and waits for the new viewer to report readiness. Failed or timed-out launches return an actionable error and keep a diagnostic log instead of silently claiming success.