Changelog

What changed, version by version.

Qemica versions increase with every released set of changes. The desktop app checks for updates at launch and never installs anything silently.


v0.4.02026-08-11

ORCA as a second classical engine, and a Run screen that shows the whole project

  • Qemica can now drive ORCA. If you have your own licensed copy installed, it sits beside PySCF as a second classical engine and serves the full range of calculation types — energies, optimizations, frequencies, transition states, reaction paths, dynamics, excited states, NMR — with the input file rendered in the app so you can read it, edit it, and know exactly what was run. Qemica does not include, download or host ORCA: you install a copy you registered for and point Config → Engines at the executable. Results from an ORCA run are excluded from the contribution pipeline, as its licence requires.
  • The Run screen is now a table of every molecule in the project, not just the jobs you submitted this session. It sorts by name, status or date, filters by status, method and device, and gives each molecule a lifecycle — empty, geometry prepared, ready to submit, in queue, running, complete, error. Close the app and it is all still there.
  • An independent expert review of the ORCA integration found result fields that were wrong or empty, and they are fixed. Entropy was reported as a quantity 298 times too large: ORCA publishes the entropy TERM (temperature times entropy, an energy) and Qemica stored it in a field measured per kelvin, so water read 0.0214 rather than 7.19e-5 Hartree per kelvin — and the same molecule disagreed with itself by that factor depending on which engine ran it.
  • Thermochemistry ignored the temperature and pressure you set. The conditions never reached the input file, so ORCA evaluated free energies at its own 298.15 K while the recipe recorded whatever you had chosen — a plausible wrong number that propagated into every derived quantity built on it, including solvation free energies, binding energies, pKa and redox cycles.
  • Triplet excited states were labelled as singlets, because the multiplicity ORCA reports was read and then discarded, so a triplet appeared as a dark low-lying singlet. The polarizability could never appear at all — the app asked ORCA to compute it and no code read it back. NMR anisotropy was reported as zero for every nucleus while ORCA was printing it. Open-shell orbital ladders rendered empty with a live but inert alpha/beta toggle above them. Reaction-path, trajectory and vibrational-mode data are read properly: molecular dynamics energies were all zero on a frame counter mislabelled as femtoseconds, the intrinsic reaction coordinate axis was a step index under a column headed in angstroms, and per-frame temperature now comes from the file that actually contains it.
  • Recipes ORCA rejects are now refused while you compose them, rather than after the queue: a resolution-of-identity approximation on a hybrid functional, RIJK without the auxiliary basis ORCA cannot infer, dispersion corrections a functional has no parameters for, and coupled cluster on a minimal basis — that last one exiting with a success code while having failed. The SCAN functional was rejected by ORCA on every recipe because it is spelled differently there, and geometry constraints, frozen-core choices and thermochemistry conditions were all being dropped on the way to the input file. Each of these was found by running the generated input through a real ORCA, which is now part of the test suite. Engine 0.1.5.
v0.2.72026-08-09

Raman intensities in the right units, and conformer searches that find the conformers

  • A third expert review took the areas the first two had not reached — molecular dynamics, file import, Raman intensities, and the conformer workflow. Most of what it found was numbers that were correct arithmetic on the wrong scale, or data that was in your file and never made it onto the screen.
  • Raman activities were 12.75 times too large. They were computed in atomic units and labelled in the unit every other program prints (Angstrom to the fourth per amu), so a spectrum could not be compared with Gaussian, ORCA, Q-Chem or anything else. Water now returns 92 rather than 1174 for its symmetric stretch. Infrared intensities are unchanged but are now named for what they are — a relative intensity, not km/mol — in both the tab and the exported CSV, because they are comparable between the modes of one run and not against another program.
  • Conformer searches lost real conformers. Candidate structures were being discarded for looking alike BEFORE they were relaxed, and two structures that look alike before relaxation routinely fall into different minima afterwards. Glycine, one of the most studied conformational landscapes there is, returned one conformer when asked for thirty; it has four within 1.9 kcal/mol. Worse, the diagnostic agreed with the wrong answer — it reported one generated, one unique. Structures are now relaxed first and compared afterwards.
  • Boltzmann populations were missing their degeneracy. Two mirror-image conformers are two structures and carry twice the weight of one, which is why n-butane is about 30 to 32 percent gauche at room temperature and Qemica said 21. Rather than multiply by an assumed factor, the search now keeps both mirror images as separate members of the ensemble, so each contributes its own term: 34.8 percent. An ensemble that mixes a gas-phase conformer with a solvated one is also flagged now, because those populations are dominated by the solvation energy rather than by conformational preference.
  • Molecular dynamics reported a temperature that was too high, because the starting velocities carried a net drift of the whole molecule and that drift was counted as heat. A run that fails to conserve energy is now reported as unconverged with the size of the drift, instead of returning a trajectory that looks fine.
  • Imported calculations now bring the rest of the file with them. A file from another program carried its thermochemistry, polarizability, NMR tensors, circular-dichroism intensities, vibrational displacement vectors, scan data, spin densities and its own level of theory — and Qemica read none of it, showing empty sections instead. It reads all of them now, and anything it still cannot read is named in a warning rather than silently dropped. An imported MP2 or coupled-cluster job also no longer reports its Hartree-Fock energy as the total (22 kcal/mol of silent error on a test file).
  • A crystal file (CIF) is no longer flattened into a gas-phase fragment without comment: the unit cell and space group come with it, and the import says that no symmetry expansion was applied. Also: an excited-state optimization states that its geometry is a stationary point and not a verified minimum, vibrational quantum calculations stopped withholding their thermochemistry behind a wrong convergence message, and a machine-learned potential no longer reports a basis set it never used. Engine 0.1.4.
v0.2.62026-08-05

Reaction paths that reach their minima, and shifts referenced honestly

  • A second expert review looked at the parts the first one never reached — reaction mechanisms, the quantum method family beyond QPE, NMR, and the derived-quantity workflows. Its verdict on the numerics was reassuring: ten quantum methods all reproduce full configuration interaction to better than 0.01 kcal/mol, and the active-space machinery drew no findings at all. What it found instead was results being labelled as something they were not.
  • Intrinsic reaction coordinate paths now reach their minima, and say so when they do not. The walk could previously stop while still tens of kcal/mol above both basins and report nothing, while Analyze read an activation energy off those endpoints — on a test reaction the barrier came out two to three and a half times too small. The path also no longer wanders uphill (a step that climbs is rejected and retried shorter), it reaches further by default, and every point now carries its geometry so you can check the ends are the reactant and product you meant.
  • Nudged-elastic-band calculations report whether the band actually relaxed, rather than inheriting the starting point's convergence, and the band optimiser now adapts its own step size — a band that used to oscillate forever at the default setting converges. Where a band or path did not relax, barriers are labelled lower bounds and the reaction energy is withheld instead of printed.
  • NMR chemical shifts name their referencing assumption. The built-in trimethylsilane reference is a literature value from a calculation this build cannot perform, which put a systematic offset on every shift; it is still the default, but it is now labelled as an assumption and you can enter a reference you computed at your own level of theory.
  • The phase-estimation family (QCELS, RPE, QMEGS, BPE, BPDE, QKD) now states that it fits a finite signal and is not a variational bound, so its answer can fall either side of the exact one — the honesty quantum phase estimation already had. A Bayesian phase-difference run no longer presents its energy gap as an S0→S1 excitation, which it is not.
  • Also: eigenvalue spectra are drawn as spectra rather than as optimiser traces, frozen-core and all-electron legs can no longer be silently mixed in a basis-set extrapolation, and a calculation with no basis set specified records the default it used instead of leaving the field blank.
v0.2.52026-08-04

Better entropy for floppy molecules, and a rebuilt chemistry engine

  • Conformer populations use Grimme's quasi-RRHO treatment. A harmonic oscillator's entropy grows without bound as its frequency falls, so the handful of very low-frequency modes in any flexible molecule dominate the free energy — and those modes are hindered rotations, not oscillators. The previous purely harmonic treatment over-rewarded floppy conformers, which for a molecule with a few rotatable bonds is a factor of two to five in predicted population. Both values are reported, so you can see the correction.
  • Thermochemistry is withheld when the SCF did not converge, instead of being reported with a warning attached. A Gibbs free energy computed from a wavefunction that never converged is not a number with error bars. The frequencies are still shown, for diagnosis.
  • The chemistry engine is rebuilt as version 0.1.2 and carries every accuracy check added in 0.2.4 — the published engine had fallen behind the app. Qemica installs it on first run as usual; if you already have an environment, Settings → Engines will offer the update.
  • Smaller corrections from the same review: the charge-transfer advice no longer recommends the functional that triggered it and now also applies to Hartree-Fock excited states; cost estimates and the ✨Suggest sizing understand transition metals (iron previously counted as having no electrons, so a metal complex could be offered a method meant for a handful of atoms); dispersion corrections are no longer offered on MP2 and coupled-cluster, where the engine correctly refuses them; and 6-31G is now marked exploratory — it has no polarization functions.
  • Qemica opens on B3LYP/def2-SVP rather than Hartree-Fock in a minimal basis. The old default put a two-click path to a number nobody should quote in front of every new user; HF/STO-3G remains one click away when you want it on purpose.
v0.2.42026-08-04

Qemica now tells you when a number should not be trusted

  • A computational chemist reviewed Qemica the way a referee reviews a manuscript, and this release is the answer to it. The engine was always candid about its own failures — a method it cannot run, a missing backend, an SCF that would not converge. It was silent about the ones that matter more: a calculation that finishes cleanly and reports a number you should not use.
  • Geometry claims are now earned. A structure that did not finish optimizing is no longer reported as converged, and frequencies are checked against the gradient before anything is called a minimum — a distorted geometry used to come back as a clean minimum with a full set of thermodynamic quantities.
  • The method you asked for is the method you get. Selecting ωB97X-D quietly computed plain ωB97X without its dispersion correction, because the underlying engine does not implement that term; it now refuses and points to ωB97X-V, which is fully supported. Frozen core reaches classical MP2 and coupled-cluster runs and is on by default, matching Gaussian, ORCA and Q-Chem — previous results correlated every electron and were not comparable to published values.
  • Chemistry that needs a second look gets one: anions in a basis with no diffuse functions, excited states above the ionization threshold, coupled-cluster on a system too multireference for it (a T1 diagnostic now runs on every CCSD), and the fact that the bundled continuum solvation models are electrostatic-only. Quantum phase estimation states the resolution of its phase register instead of presenting a quantized estimate as exact.
  • Vibrational frequencies are scaled by the factor published for your actual method and basis, not one blanket number for everything — and when no factor exists, they are shown unscaled and labelled as such. Warnings are now a bordered, counted panel rather than fine print, exported reports carry them (they were dropped entirely), and every result records the SCF tolerance, integration grid and basis convention behind it.
v0.2.32026-08-02

Quantum measurement outcomes, a repaired 3D viewport, and Windows groundwork

  • Qemica now finds the Python engine it just installed. In an exported build the app resolved the sidecar to a path that only exists inside its own application package, so the engine was launched with a filename it could not open — a correctly installed environment still reported “engine not detected”. If you downloaded 0.2.3 before this note appeared, download it again.
  • The account menu’s “Third-party licenses” opens the attributions again; it previously pointed at a file that is not part of the installed app. The same document is also in Settings → About.
  • Analyze has a new Quantum tab: for VQE, QPE and the other quantum methods it graphs the measurement outcomes — the sampled bitstring distribution the reported energy came from.
  • The 3D viewport is repaired — the atom outline, the lighting, and the atom layer’s resize behaviour all render correctly again.
  • Windows support is real in the codebase now: a managed WSL2 Python environment Qemica provisions for you, a first-run setup gate that explains it and is always skippable, and DPI scaling so the interface is not rendered at 100% on a high-DPI panel. Windows builds are still not published — this release is macOS only.
  • The desktop app now checks for updates against qemica-lab.com, our own domain.
  • Smaller download: the wheel-build residue is no longer packed into the app.
v0.2.12026-07-23

Engine setup that works, and a faster first run

  • The one-click Python engine install now works on macOS — it previously created the environment but silently failed to install the engine into it, so calculations came back “quchemy module missing”. You can also point Qemica at an existing conda/venv straight from the setup dialog.
  • Optional engine capabilities install from Config → Engines, including SQD (sample-based quantum diagonalization, on the local simulator) and the DFT-D dispersion, MACE, and Qiskit components.
  • A smoother first run: nothing contacts the network before you accept the terms, the engine-setup dialog no longer stacks over them, and its other buttons are disabled while an install or check is running.
  • Loading the benzene sample is now instant — its identifiers are known so it skips the chemistry round-trip, and the 3D shader is precompiled during the boot splash so the first render doesn’t hitch.
  • Smaller fixes: the engine reports its correct version (no spurious update prompt), typing a molecule name no longer nudges the 3D camera, and Get Started ships just benzene.
v0.2.02026-07-21

Opt-in updates, finalized terms, and polish

  • The launch-time update check is now opt-in: Qemica no longer contacts the update server on startup unless you turn the check on.
  • The EULA and privacy policy are finalized — no remaining placeholders — and the Free plan’s contribution terms now cover use of de-identified calculation data for training machine-learning models. The updated policy is presented in the app for re-acceptance.
  • The account and notification menus in the top bar now close when you click their button a second time.
  • Still a universal macOS build for Apple Silicon and Intel, signed and notarized; each release publishes its installer’s SHA-256.
v0.1.542026-07-20

The first download

  • Qemica is downloadable: the macOS build is a universal binary for Apple Silicon and Intel, signed with a Developer ID certificate and notarized by Apple, so it installs without a Gatekeeper warning. Each release publishes the SHA-256 of its installer so you can verify the file before opening it.
  • Windows and Linux builds are not published yet.
  • A boot splash now appears while the app starts.
v0.1.532026-07-19

Electron transfer in the methodology wizard

  • Configure’s Suggest-a-methodology wizard gains an “Electron transfer / redox” purpose: it recommends DFT optimize + frequencies for each charge state — the Gibbs legs the Redox reduction-potential cycle in Compare & workflows turns into E° vs SHE — plus a diffuse-basis (aug-cc-pVXZ) fixed-geometry single point for vertical IP/EA, with guidance on running once per charge state and why anions need diffuse functions.
v0.1.522026-07-19

Complete-basis-set extrapolation

  • New CBS tab in Compare & workflows: run one method across a systematic basis-set ladder (cc-pVXZ, aug-cc-pVXZ, or def2) as single points on one geometry and read the extrapolated basis-set limit — the SCF energy extrapolated exponentially (published per-family exponents, or a three-point fit when three consecutive cardinal numbers are present), the correlation energy as X⁻ᵝ from the two largest basis sets, and the post-HF total assembled as extrapolated SCF + extrapolated correlation.
  • Honest by construction: DFT ladders are flagged approximate, bases outside the systematic families are skipped with a warning, and legs mixing basis families or methods are refused with the reason shown.
v0.1.512026-07-18

Honest wording, everywhere

  • A full truth sweep across the website and the in-app legal texts: the Free plan’s calculation contributions are described as consent to a collection that is not yet active (no calculation data leaves your machine today; the app will tell you before that changes), Premium billing is stated as launching later, and the privacy policy now lists the engine setup’s downloads from astral.sh and PyPI.
  • The updated policy (version 2026-07-18) is presented in the app for re-acceptance.
v0.1.502026-07-17

Pre-ship review closeout

  • A final pre-ship review pass across the app; remaining findings fixed or explicitly signed off.
  • Optimization-step telemetry reaches the live charts again when the engine log is being captured, and the engine wheel pin is back on 0.1.1.
v0.1.492026-07-17

Move devices with one zip

  • Settings → Paths → Device migration exports everything — projects, results, settings — into a single zip you carry to the new machine and import there. Already-existing items are skipped on import, and credentials never ride along (you re-enter them on the new device).
  • The legal documents now describe exactly this local migration: the planned Premium cloud sync is dropped, so Premium is private results and early-access builds. The updated policy is presented for re-acceptance in the app.
v0.1.482026-07-17

Solvation models, spelled out

  • The solvent-model picker now offers C-PCM and IEF-PCM explicitly instead of one ambiguous “PCM”, with tooltips naming the exact reaction field each label runs (existing recipes saying “PCM” run as C-PCM).
  • Compare keeps a constant tab-strip height across tabs.
v0.1.472026-07-17

Dialog chrome, settled

  • Confirm dialogs use one borderless dark surface — no more overlapping header or mispainted top bar (closes the 0.1.45–0.1.47 chrome series).
v0.1.462026-07-17

Confirm-dialog top bar

  • The confirm dialog’s top bar is painted to match the app’s dark chrome.
v0.1.452026-07-17

Honest project deletion

  • Deleting a project now says where its molecules actually go — the “project not assigned” bucket, named exactly as the rest of the app names it — and the Settings confirmation dialogs get the app’s dark chrome instead of a bare system titlebar.
v0.1.442026-07-17

Depth cues in the 3D viewport

  • The 3D viewport gains ambient occlusion, depth fog, and an optional depth-of-field blur, so large structures read with real depth instead of a flat ball forest. Each cue toggles on the Graphics tab’s new Depth section (default off).
v0.1.432026-07-16

Under the hood

  • Internal: Home-screen panels and setup dialogs refactored onto shared base classes — no behaviour change.
v0.1.422026-07-16

Cleanup: unwired subsystems removed

  • Internal: orphaned subsystems that were tested but never wired into the app are removed, shrinking the codebase without changing behaviour.
v0.1.412026-07-16

Cleanup: duplicated helpers

  • Internal: dead code dropped and duplicated helpers consolidated — no behaviour change.
v0.1.402026-07-16

One import path

  • The Home screen’s “Coming from Gaussian or Jaguar?” card is retired — engine-output import now lives where you’d look for it, in the LeftPanel Import flow (see 0.1.36–0.1.38).
v0.1.392026-07-16

LeftPanel toolbar order

  • The molecule-list toolbar reads New · Save · Duplicate · Import · Delete, in that order.
v0.1.382026-07-16

Import structures and input decks

  • A LeftPanel Import button brings structures (.xyz, .mol, …) and engine input decks straight into the current project as new molecules — no detour through an external converter.
v0.1.372026-07-16

Buttons where you expect them

  • The LeftPanel “Compare” and Analyze “Import Output” buttons swapped homes, so comparison starts next to the molecule list and output import lives in Analyze.
v0.1.362026-07-16

One-folder import for Gaussian and Jaguar users

  • Point Qemica at a folder of your existing Gaussian or Jaguar outputs and it imports the lot — structures and parsed results — into a project in one pass.
v0.1.352026-07-16

SSH re-audit closeout

  • The minor findings from the remote-submission re-audit are closed: small wording, tooltip, and validation gaps around the SSH and scheduler settings.
v0.1.342026-07-16

Remote submission for non-HPC users

  • Test connection now also verifies the engine is importable on the remote host, and a remote ModuleNotFoundError is translated into “install the engine on the server” guidance instead of a raw traceback.
  • Plain-SSH runs warn that closing your laptop kills the job unless a scheduler manages it, scheduler jargon gets tooltips, and the fields are labeled Remote host (SSH) and Queue/partition.
  • The submission-script template hints where module-load lines belong, and key-based hosts explain that the password field is ignored (use ssh-copy-id).
v0.1.332026-07-15

The chat sees the failed geometry

  • Asking the Agent about a failed job now includes that job’s input geometry in context, so it can diagnose distance and valence problems instead of guessing blind.
v0.1.322026-07-15

Agent chat polish

  • The Agent tab and its List sibling now say what they are on hover, and the chat’s greeting points at the “Share project data” toggle instead of advertising abilities it can’t use until you turn it on.
  • A message that fails to send is put back in the box so you can retry with one keypress, and a very large molecule’s geometry is trimmed before it floods the request.
v0.1.312026-07-15

Composer and analyzer clarity

  • The basis-set dropdown gets a plain-language tooltip (bigger = more accurate but slower; when unsure, use ✨ Suggest).
  • Asking to optimize a single atom is caught up front with a redirect to a single-point energy, instead of a cryptic engine error.
  • The UV-Vis header no longer hard-labels a TDA run as “TD-DFT”, and a truncated reaction path warns that its barrier is only a lower bound.
v0.1.302026-07-15

Reactant complexes embed apart

  • Building a multi-fragment structure (an ion beside a molecule, e.g. Cl⁻ + CH₃Br) used to fuse the pieces together on 3D generation. They now embed spaced apart, with a note that the arrangement is an arbitrary starting point — position them or optimize for a bound complex.
v0.1.292026-07-15

The chat can explain a failed job

  • Ask the Agent “why did my job fail?” and it now answers from that job’s actual error, instead of describing your previous successful result.
  • API-key setup says up front that the key is a paid credential, checks the key’s shape when you save it, and re-opens the key box if the key is rejected.
v0.1.282026-07-15

Safer manual engine install

  • The copy-paste engine-setup commands now verify the download’s checksum and refuse to install a mismatched file, and they call the freshly-installed uv by path so the block works in the same terminal session.
v0.1.272026-07-15

Licences and notices, in the app

  • Every third-party licence and notice — including the full font licences — now ships inside the app and is viewable from Config → About (View EULA / Privacy Policy / third-party notices / font licences).
  • Installing an optional copyleft engine (Open Babel, dispersion, MACE) names its licence at the moment you click Install.
  • Wording pass across the EULA, privacy policy, and consent dialog for accuracy (the engine is downloaded, not bundled; keychain storage falls back to an encrypted store where no keychain exists).
v0.1.262026-07-15

Suggest reflects the real quantum methods

  • The ✨ Suggest wizard now recommends the quantum methods that actually run on IBM hardware (VQE, SQD, QCELS/RPE/QMEGS, QKD) and leads with SQD there; simulator-only methods are offered for local runs, with QPE noted as exact-but-local.
v0.1.252026-07-14

Under the hood

  • Calculation-recipe assembly moved into a pure, independently-tested core — no behaviour change, better foundations.
v0.1.242026-07-14

Test isolation

  • Internal: the test suite runs fully isolated from any real user data, so it is green on any machine.
v0.1.232026-07-14

Trustworthy engine install

  • The engine wheel is downloaded, checksum-verified against a pinned hash, and only then installed — a tampered or corrupt download is refused.
  • In-app links point at the live site, and the update check is on by default so you hear about new versions.
v0.1.222026-07-14

Honest transition states

  • A transition-state search that lands on a minimum now says so in red (“not a transition state”) instead of a green success — its energy is not a barrier.
  • The reaction-profile barrier is read at the marked transition state (and warns if the highest point isn’t it), and a finished job’s geometry can be adopted as the next job’s input in one click.
  • Charge/multiplicity errors ask whether your species is an ion and to check Charge first, rather than only suggesting a multiplicity change.
v0.1.212026-07-14

Compare candidates honestly

  • Cis and trans isomers now build as different structures — E/Z stereo is carried through 3D generation instead of being silently dropped.
  • The Compare table adds a ΔE (kcal/mol) column within comparable groups and warns when rows mix different molecules or levels of theory.
  • UV-Vis gains a computed-vs-computed spectrum overlay so you can read “which candidate is redder” off one chart.
v0.1.202026-07-14

A gentler first calculation

  • Quick, minimal-basis default recipes are labelled “exploratory” on the recipe and the result, so a first look is never mistaken for a decision-grade number.
  • Charge and multiplicity get plain-language tooltips, and a raw engine spin/charge error is translated into what to change.
v0.1.192026-07-13

Agent knows the app

  • The Agent chat now carries a map of every screen and feature — ask where to find something and it answers from the app that actually shipped, not guesses.
  • Ask it to open a screen and it takes you there, including landing on a specific Compare tab. Navigation works even with Share project data off — opening a screen sends nothing about your project to the API.
  • Modeler polish: the toolbar’s duplicate camera-reset button is gone (framing lives in the viewport’s corner cluster) and the empty selection card reads simply “No atom selected”.
v0.1.182026-07-12

Open-shell quantum methods and automatic active spaces

  • Radicals and triplets now run end-to-end on the quantum path: an ROHF reference with unrestricted UCCSD, a per-spin ADAPT operator pool, and spin-unbalanced LUCJ sampling for SQD — benchmarked against sector-exact FCI (H₃ doublet and H₄ triplet match to ~10⁻¹³).
  • Automatic CASSCF active-space selection: an AVAS-seeded search picks the active orbitals for you, with the search trace reported in the result; the Orbitals tab gains a per-orbital composition column.
  • An SCF reference picker (restricted / unrestricted / restricted-open) joins Configure, and a declared triplet can no longer silently run closed-shell.
v0.1.172026-07-12

SSH for two-factor clusters

  • Extra SSH options in Config → SSH pass raw flags to every ssh/scp call (-J for a jump host, -i for a key, -o overrides) — your options take precedence over the built-ins.
  • Two-factor hosts (Duo, TOTP) are now supported via SSH connection multiplexing: authenticate once in a terminal and Qemica rides the authenticated session — the route is documented in the Remote clusters guide.
v0.1.162026-07-12

Modeler control review complete

  • A 71-finding review of every Modeler control is resolved.
  • Cancelling the conformer “Save all & run ensemble” dialog now rolls back the just-saved conformers instead of leaving them behind.
  • The Builder finally shows the active-element info line (“Iron · Fe · Z=26 · 55.845 u”) — picking an element from the periodic-table popup previously named nothing.
v0.1.152026-07-12

Honest tool state in the Modeler

  • Tools now show what the next click will actually do: the Ring chip arms the 2D sketch ring tool when you are sketching, Chain no longer keeps a stale highlight, and armed fragment chips get a persistent accent cue.
  • Undo/Redo/Clear grey out when they can do nothing; disabled 3D-only actions say why (“3D only — switch to 3D”).
  • The bond tool’s tooltip documents its click cycle (single → double → triple → aromatic → remove), and the keyboard-shortcuts overlay gains a visible “?” button.
v0.1.142026-07-11

Tetrahedral depth without the sidecar

  • The flat 2D→3D lift now pyramidalizes saturated centres onto ideal ~109.5° directions even when RDKit is unavailable — flat methane and CH₃ tips get real depth; rings and heavy skeletons stay planar by design.
v0.1.132026-07-11

Real 3D geometry on the 2D→3D flip

  • Flipping a sketch to 3D auto-runs the ETKDG + MMFF94 embed, so tetrahedral centres get realistic depth without pressing Optimize; the flat lift shows instantly as a placeholder.
  • Clean flips never re-embed, so imported or optimized geometries survive the toggle untouched.
v0.1.122026-07-11

Aromatic bonds in the 2D sketch

  • A dedicated aromatic bond tool joins the 2D editor, rendering as a solid line plus a parallel dashed line instead of masquerading as a double bond — matching the existing 3D support.
v0.1.112026-07-11

pKa, redox, and publication figures

  • pKa prediction via a thermodynamic cycle — run the acid and its conjugate base in gas and solvent and Qemica reports the pKa, with the literature proton reference values and standard-state corrections applied for you.
  • Reduction potentials vs the standard hydrogen electrode, with a selectable absolute-SHE reference.
  • Both carry a prominent accuracy caveat (continuum pKa/redox are good to ~2–3 pKa units / ~0.2 V even done correctly) and fail loud on missing thermochemistry or an inconsistent charge relationship — never a falsely precise number.
  • Spectra export as publication figures: true SVG vector output and a light publication PNG (white background, print-safe colorblind-friendly colors), alongside the existing dark exports.
v0.1.102026-07-11

Performance at scale

  • Batch jobs, conformer ensembles, and benchmark sweeps run much faster — a warm engine keeps Python and the chemistry libraries loaded across a group instead of paying the ~2-second startup for every job. Single jobs and cancellation are unchanged.
  • Building large structures stays responsive: adding and deleting atoms updates the scene incrementally instead of rebuilding the whole molecule, and atom labels above ~200 atoms are gated to keep rendering fast.
  • Molecular-dynamics and optimization playback is smoother on big systems, and large or imported trajectories open quickly — frames stream from disk on demand and charts are decimated rather than drawn point-for-point.
v0.1.92026-07-10

Derived-quantity workflows

  • Solvation free energy: run gas and solvent single points on one geometry and Qemica reports ΔG_solv, honoring the standard-state convention automatically (PCM/COSMO results get the +1.89 kcal/mol 1 atm→1 M correction).
  • Interaction/binding energy: split a complex into fragments and get E_int = E_AB − (E_A + E_B), labeled honestly with the no-counterpoise (BSSE) and geometry-convention caveats.
  • Method/functional benchmark: sweep several levels of theory on one geometry and compare energies with ΔE-vs-reference side by side.
  • Conformer ensemble: save a whole ETKDG ensemble, optimize it, and get Boltzmann populations and Boltzmann-averaged properties weighted by QM Gibbs free energy (not force-field energy).
  • Experimental-spectrum overlay: import a measured IR/Raman, UV-Vis, or NMR spectrum from CSV and plot it over the computed one.
  • All of the above live in the Compare screen and stamp a level-of-theory-match guard so mismatched inputs are flagged, never silently combined.
v0.1.82026-07-10

Publication export and discoverability

  • Every 3D viewer (structure, orbitals, NTOs, ESP, bonding, MD frame) exports high-resolution PNG at 2–4×, with transparent or white background for slides and papers, plus Save as… to any folder.
  • IR/Raman, UV-Vis, and NMR spectra export as PNG alongside their CSV data.
  • Orbitals gains a Cube save-as — the volumetric file behind the current surface, copied out as-is.
  • Discoverability pass: the app now links its user guide and changelog, explains the editable script preview, the MACE speed advantage, the Agent tab, and surfaces the ⌘K command palette.
v0.1.72026-07-10

Post-HF methods, easier first run, spectra polish

  • MP2, CCSD, CCSD(T), and FCI are now genuinely runnable through PySCF — MP2/CCSD with geometry optimization on analytic gradients, CCSD(T)/FCI as single-point energies. Dispersion is refused for post-HF (no double counting); solvation is applied at the SCF reference with a warning.
  • Custom basis sets and ECPs: a Custom… entry in Configure accepts any PySCF basis string, per-element assignments, and an effective core potential.
  • Checkpoint restart: every SCF run writes a .chk beside result.json; Reproduce reuses it as the initial guess automatically.
  • Sign-in is now optional — Skip for now on first launch and sign in later from the avatar.
  • One-click engine install on macOS and Linux: the setup dialog runs the whole uv setup itself, with live per-step status.
  • Home shows a Get-started card with three bundled samples (benzene, aspirin, caffeine) and a four-step quickstart.
  • IR/Raman and NMR gain Lorentzian broadening envelopes with adjustable FWHM; every spectrum now zooms about the cursor, pans, and resets.
  • Config → SSH gains a Test connection button that verifies host, remote Python, and scheduler in one click.
v0.1.62026-07-09

Qemica Lab

  • Legal documents now name the operator: Qemica Lab, Republic of Korea. The product name stays Qemica.
v0.1.52026-07-09

Standalone script export

  • The Configure preview’s save button now exports a standalone-runnable .py — run it in a terminal and it reproduces the in-app result and writes result.json.
  • Fixed the MACE preview building ASE atoms from the injected geometry.
v0.1.42026-07-09

SSH module mode

  • Remote SSH and SLURM/PBS runs no longer need a sidecar source checkout — leave the remote sidecar path empty and Qemica runs the wheel-installed engine (python -m quchemy.sidecar).
v0.1.32026-07-09

Housekeeping

  • Repository and licensing metadata cleanup; updated legal documents (contact, jurisdiction, third-party API cost clause).
v0.1.22026-07-09

Engines cleanup

  • Removed the dead SMD row from Config → Engines — it could never be installed from there.
v0.1.12026-07-08

User-managed engine

  • The Python engine now installs as a quchemy wheel into an environment you create once with uv — nothing bundled, ~2 GB lighter downloads.
  • New first-run setup dialog with copyable per-OS commands and a Re-check button.
  • The app warns when the installed engine version differs from the one the release expects.
  • License documents updated: contact details, governing law, payment provider, and a third-party API cost clause (IBM Quantum, Claude API, SSH/HPC).
v0.1.02026-07-05

Public-launch baseline

  • Versioning reset to 0.1.0 as the public baseline.
  • Commercial license (Qemica EULA) with a free plan; first-run consent flow.
  • Full workbench: Model, Configure, Run, Analyze across PySCF, a local quantum simulator, and the MACE ML potential.