# Changelog

## 0.2.31

- Restored reliable Python 3.10-3.12 installation after the compiled matscipy
  migration by resolving the NumPy 1.x/matscipy 1.1.x ABI family there, while
  Python 3.13+ retains NumPy 2.x/matscipy 1.2+. Lightweight CLI commands now
  avoid eager ASE/SciPy imports and startup reports a direct binary-stack repair
  instead of misidentifying a valid POSCAR.
- Added mass-weighted **Selection COM to Origin** scene alignment without
  changing ASE coordinates, cell vectors, constraints, labels, or calculator
  state.
- Added calculator-driven 3D rigid translation over one shared Cartesian
  x/y/z vector with explicit per-axis Angstrom bounds. Analytic-force,
  finite-difference, nonperiodic, invariant-geometry, timeline, and browser/API
  regressions cover the new mode while preserving the existing `(hkl)` plane
  workflow.

## 0.2.30

- Made the matscipy adapter exactly preserve ASE neighbor semantics for
  full-rank partial-PBC cells whose atoms lie outside a finite cell direction.
  Periodic lattice vectors remain unchanged, nonperiodic image shifts remain
  zero, and scalar, per-atom-radius, and label-pair cutoffs now share the same
  validated behavior.
- Replaced fractional-coordinate rounding in exported periodic bonds with
  ASE's exact `find_mic`, so strongly skewed triclinic cells select the true
  shortest image rather than a merely component-wrapped image.
- Added deterministic ASE-oracle matrices and physical regressions covering
  cell-free, finite, wire, slab, partial-PBC, orthogonal, and triclinic cells;
  cutoff-edge exclusion; RDF normalization and long-range images; repulsion
  energy/force equivalence; finite-difference gradients; momentum, torque, and
  lattice-translation invariance; and exported bond geometry.

## 0.2.29

- Replaced runtime ASE neighbor-list searches with one validated matscipy
  backend across periodic RDF, finite pair distributions, built-in repulsion,
  and exported bond topology. Cell-free, partial-PBC, full triclinic, and
  long-cutoff periodic-image semantics remain covered by independent numerical
  regressions.
- Passed label-pair repulsion cutoffs directly to matscipy's compiled search
  instead of generating every pair inside the largest cutoff in Python, and
  vectorized force accumulation. Local production-path benchmarks measured
  about 7-8x faster RDF calculations and 2.7-4.7x faster repulsion evaluations
  over the tested 100-50,000 and 500-30,000 atom ranges respectively, with
  unchanged RDF arrays and numerical force agreement.
- Added matscipy 1.2 as a required dependency and aligned the runtime floors
  with its supported ASE and NumPy versions.

## 0.2.28

- Unified CLI and browser-upload format detection behind one canonical input
  resolver. **Open File** now auto-detects numbered or calculation-specific
  VASP names such as `XDATCAR_2` exactly as `v_ase gui XDATCAR_2` does.
- Applied the same original-filename hint to Replace, Add to trajectory, and
  Open in new tab, while retaining an explicitly selected Reader as the
  highest-priority override.

## 0.2.27

- Separated repulsive contact distances from visual bond connectivity. The
  default is now an absolute-Angstrom label-pair table seeded from covalent
  radii, with optional van der Waals defaults, per-pair enable/disable, and a
  scaled reference-distance mode for one shared contact multiplier.
- Added global and label-pair bond material, opacity, split/custom color, and
  cylinder/flat appearance controls. A selected pair can remain flat 2D while
  the rest of the scene uses 3D bonds, and the same style can be applied to all
  pairs at once.
- Made explicit Dark theme switch both interface and atom viewport to dark,
  while the default System theme keeps OS-responsive chrome with the white
  scientific viewport. Added delayed descriptions to compact top-bar icons.
- Fixed the top-bar renderer and adjacent grid controls so both respond to
  pointer activation and expose their current state correctly.
- Added optional Allow/Reject-domain enforcement during Add Atoms relaxation.
  Staged atoms remain inside the Allow union and outside Reject regions; rigid
  molecules use their native ASE template origin for efficient confinement.
- Added relaxation-trajectory clearing with displayed/final-frame retention
  while the active mode remains open, including live semantic-agent control.
- Reworked Undo/Redo around complete user actions. Placement batches and
  confirmed transforms are individually reversible during Add Atoms, while
  Cancel still restores the exact pre-session baseline.
- Released indexed trajectory sources, workers, browser listeners, WebGL
  resources, caches, and timers when documents close or are replaced to bound
  long-session CPU and memory use.

## 0.2.26

- Rebuilt the product-wide interface around one role-based typography system,
  consistent 36 px controls, restrained neutral surfaces, and a focused teal
  action color in both light and dark themes.
- Refined **+ Add atoms**, **Build with ASE**, the Inspector, dialogs, document
  tabs, and standalone HTML views into one compact scientific-tool language.
  Labels, field values, descriptions, actions, and numerical readouts now keep
  a stable hierarchy instead of mixing unrelated font sizes.
- Added browser regression coverage for readable minimum text sizes, aligned
  builder controls, visible primary actions, and narrow-window overflow.

## 0.2.25

- Added per-label atom opacity (`0..1`) beside color, radius, and material in
  **Structure > Appearance**. Opacity remains consistent across ordinary and
  instanced atoms, displayed supercells, commensurate previews, flat 2D,
  visual history, reusable settings, `.vase`/HTML projects, and Blender, OBJ,
  and 3DM exports.

## 0.2.24

- Moved **Build with ASE** into the **+ Add atoms** workspace so single-atom
  insertion, staged batches, molecules, and ASE crystal building share one
  discoverable tool surface.
- Unified staged-content optimization with **Structure > Relaxation**. Add
  sessions now use the same calculator, device, cutoff, strength, `fmax`,
  steps, Start, and Stop controls as ordinary structure relaxation.
- Allowed repeated atom and molecule placements in one Add session, including
  after placement relaxation and region edits. Every batch accumulates against
  one immutable pre-session host and one undo entry until Finish or Cancel.
- In Edit mode, selecting any displayed supercell replica now keeps the primary
  unit-cell atom fully highlighted and marks all equivalent replicas with a
  distinct muted selection indicator.

## 0.2.23

- Added byte-offset, on-demand View-mode readers for VASP XDATCAR and native
  ASE trajectories. Remote sessions now transfer only the active frame while
  retaining a compatibility fallback for uncommon headers and older formats.
- Replaced generic file-load failures with concise reader diagnostics for
  unknown formats, missing files, permissions, directories, invalid text, and
  incomplete data.
- Added a complete flat 2D viewport mode for atoms, bonds, vectors, cell and
  insertion-region edges, including adaptive outlines and an X mark on
  FixAtoms, with lighting and 3D materials disabled automatically.
- Rebuilt export framing as a persistent Render Area with an independent
  camera, gray outside mask, exact pointer projection, viewport-follow mode,
  and an Edit-mode eye object movable with `G`.
- Made copy/paste preserve exact coordinates, labels, all per-atom arrays,
  compatible constraints, per-atom calculator results, and visual materials.
- Centered displayed supercells across View/Edit switches. View replicas now
  accept appearance edits and exact-instance hiding; Edit replicas remain
  opaque and map click or box selection back to unique base atoms.
- Kept lighting, Render Area transforms, appearance edits, and analysis
  refreshes responsive during trajectory playback; corrected screen-relative
  toolbar tilt directions and added overflow-safe compact toolbar behavior.
- Added project-embedded HTML support to Import Preset and synchronized the
  live Agent schema with Render Area control and View-mode visual deletion.

## 0.2.22

- Kept active radial and finite pair-distribution plots open and synchronized
  with live coordinate transforms, committed structure changes, and dedicated
  relaxation movie frames, including bounded per-source trajectory caching.
- Replaced the ambiguous covalent-radius scale UI with an active
  label-pair-bond-cutoff multiplier. Disabled and `0 Å` bonding pairs remain
  non-repulsive when set explicitly; automatically hidden same-class visual
  bonds use a covalent contact fallback so scratch overlaps still relax. The
  absolute-Angstrom onset remains available.
- Extended the live AI calculator schema and regression suite for the same
  label-aware pair table and relaxation-analysis behavior.
- Highlighted project-embedded HTML as a portable save file with a macOS
  Finder/Quick Look poster and an offline interactive browser view.

## 0.2.21

- Expanded the one-atom **Measure** readout with the displayed Cartesian and
  fractional position, standard ASE atom attributes, every stored per-atom
  `Atoms.arrays` value, and stored per-atom calculator results.
- Kept inspection lazy and frame-specific for trajectories, preserved replica
  display positions while resolving properties from their base atoms, and
  avoided evaluating attached calculators.
- Made the detailed Inspector readout use the full panel width with bounded
  scrolling while keeping the viewport Measure HUD compact.

## 0.2.20

- Added synchronized **Section** menus to Analysis and Export, matching the
  existing Structure navigation, and normalized the Selected Atoms Apply
  control typography.
- Kept RDF and finite pair-distribution graphs synchronized during trajectory
  playback through eager per-frame preparation for ordinary trajectories and
  a bounded rolling cache for larger frame/bin/curve products.
- Added a physical **Absolute distance / Å** onset to the built-in repulsion
  calculator beside the existing dimensionless covalent-radius scale. Pair
  energy and force are exactly zero at and beyond either selected onset.
- Serialized calculator setting updates without rebuilding atom geometry, so
  late responses cannot clear active analysis, selection, or viewport state.

## 0.2.19

- Added transient `--remote-python /absolute/path/to/python` selection and
  persistent `v_ase remote configure/show/remove` host mappings for HPC and
  virtual-environment launches without sourcing remote shell profiles. The
  exact environment participates in existing CLI capability negotiation while
  the source file remains remote.
- Kept the full Add Atoms panel inside the browser viewport after dragging,
  including tall Batch layouts, pointer cancellation, window blur, and resize.
- Synchronized active trajectory analysis with the displayed frame: RDF and
  finite pair distributions recalculate after scrubbing settles, per-atom
  colors/forces/displacements update immediately, and explicitly frame-bound
  scalar fields switch or hide instead of leaving a stale isosurface.

## 0.2.18

- Moved the collapsed **+ Add atoms** launcher to the upper-left viewport,
  directly below the app header, so it no longer overlaps bottom-left
  notifications. Closing the draggable panel now restores that stable anchor.

## 0.2.17

- Fixed `HOST:/path` launches on load-balanced HPC aliases by starting the
  remote backend and local port forward on one SSH connection. The launcher
  now verifies a real forwarded HTTP response before opening the browser, so a
  TCP listener that cannot reach the backend no longer appears ready.
- Documented the remote/local processing boundary: source I/O, ASE parsing,
  trajectory caching, volumetric processing, and backend calculations stay on
  the remote host, while the local browser performs UI interaction and WebGL
  rendering without downloading the original source file.

## 0.2.16

- Added an Edit-mode **Build with ASE** workflow backed by the installed
  `ase.build.bulk` implementation. A cached compatibility catalog filters
  reference materials, prototypes, and primitive/orthorhombic/cubic cell
  shapes; custom compounds receive exact missing-parameter guidance before
  generation. Structure replacement is confirmed, undoable, and available to
  external agents through the validated `build-bulk` operation.
- Always print the complete local or SSH-tunneled viewer URL before waiting,
  so WSL/headless users can Ctrl+click or paste it even when a browser launcher
  returns a false success without opening a tab.
- Standardized repeated POSCAR/CONTCAR species-block labels as `O_1`, `O_2`,
  and so on. The mapping follows the original block/index order while ASE
  elements, coordinates, cells, PBC, and constraints remain unchanged.
- Added a selected-active-bond-pairs RDF mode that tracks the current atom
  selection without changing full-structure normalization, and restored
  reliable save and close controls in the analysis graph drawer.

## 0.2.15

- Made Add Atoms infer the Type control from element-symbol Labels in both
  Single and Batch workflows while preserving explicit manual Type overrides.
- Expanded the Cu(111) insertion example to a five-layer bulk-like domain with
  18 staged oxygen atoms and regenerated the optimizer-backed README media.
- Rebuilt the rigid-water example with edge- and basal-hydroxylated graphene
  oxide, `6 Å` periodic layering, two `2 Å` GO-only Reject regions, separate
  left/right solvent chambers, and 64 H2O molecules at `0.994 g/cm³`.
- Re-recorded View-mode appearance editing from the actual viewport box
  selection through label, material, color, and radius controls, including
  InstancedMesh-safe visual-invariance checks.
- Preserved completed short relaxation trajectories when the terminal
  WebSocket event arrives before the start response, in both GUI and agent
  command paths.

## 0.2.14

- Added one-login remote CLI capability negotiation for `HOST:/path` launches.
  Current servers retain on-demand frame streaming, while older installations
  automatically omit unsupported `--no-browser` and `--stream-frames` options
  instead of failing in `argparse`.
- Preserved the blocking browser-close lifecycle on the oldest compatible
  remote CLI by exposing its loopback URL through `BROWSER=/bin/echo`. Explicit
  requests that cannot be preserved, such as FP64 volumetric precision, now
  stop with a targeted remote-upgrade instruction.

## 0.2.13

- Changed Add Atoms and Add Molecules placement to attach one
  `AdditionRepulsionCalculator` to the complete staged structure and run ASE
  FIRE without pairwise coordinate corrections. Every optimizer step is kept
  in the mode trajectory, and exact-overlap MIC candidates are vectorized in
  one calculator call.
- Added CPU thread and CUDA selection directly to the floating Add panel so
  placement resources remain accessible when the main inspector is closed.
  The panel reports the effective backend and safely falls back to CPU when
  CUDA is unavailable.
- Enabled View-mode visual relabeling and per-atom materials without changing
  ASE elements or coordinates. Stable trajectories propagate labels by atom
  index; incompatible trajectories show a modal and modify only the current
  frame. Complete project and embedded-HTML saves preserve these identities.
- Centered odd Edit-mode display supercells around the primary cell, added a
  stronger editable-cell halo, and rendered noneditable replicas at 16%
  opacity. View-mode replicas remain fully opaque and selectable.
- Regenerated all README media, including subsurface O placement, exact-density
  rigid water placement, trajectory-wide force colors, and Cu5O4 View-mode
  appearance editing.

## 0.2.12

- Made a filename-free `v_ase gui` launch an empty Edit document. A full
  Cartesian `3 x 3` cell and PBC axes can now be defined before any atoms
  exist, while every Open File request offers an explicit View/Edit choice.
- Completed scratch relaxation for finite structures without a unit cell,
  including deterministic separation of exact overlaps, reliable stop and
  restart, and an exit choice that safely keeps the latest coordinates or
  restores the exact pre-relaxation document even while a worker is active.
- Added Regular grid placement beside volume-uniform Random and physically
  space-filling Homogeneous placement. Exact user grid spacing is never
  silently changed, triclinic periodic duplicates are removed, and placement
  diagnostics cover both nearest-neighbor uniformity and residual voids.
- Added Blender-style physical `S` transforms for selected atom coordinates
  and insertion regions, with global Cartesian X/Y/Z locks. Atom radii, bond
  thickness, materials, and the cell remain unchanged when atom spacing is
  scaled.
- Reworked Add Atoms region overlays as depth-lit 3D guides whose fills do not
  intercept picking. Nested Allow/Reject regions remain selectable from their
  edges, and the batch panel keeps its primary actions visible while the body
  scrolls independently.
- Added a finite-system Pair-distribution function for structures with all PBC
  axes disabled. It reports an unordered-pair probability density instead of
  claiming bulk `g(r)` normalization; fully periodic RDF behavior and strict
  partial-PBC rejection remain unchanged.
- Added a verified scratch-to-amorphous README animation and synchronized the
  canonical Agent Skill, live operation schema, scientific regressions, and
  generated Add Atoms media.

## 0.2.11

- Anchored commensurate host and guest parent lattices to one stable in-plane
  origin. Rotating a guest no longer translates its unit-cell grid, candidate
  validity changes only the green common-cell guide, and atom/bond visibility
  remains independent of candidate appearance.
- Added a visibly different graphene/MoS2 commensurate demonstration while
  retaining graphene/Cu(111) as the strict numerical strain regression. The
  graphene/MoS2 match is validated as a rectangular graphene
  `(sqrt(7) x sqrt(21)) R+/-19.11 deg` area-14 cell against a MoS2 `2 x 2`
  area-4 cell instead of an incompatible equal-edge shorthand.
- Rebuilt the periodic rigid-water example around two 6 Angstrom slits in a
  fully periodic 12 Angstrom channel, two Allow regions, one Reject gate, an
  exact 459.586 Angstrom^3 domain, and 10 randomly oriented rigid waters.
- Preserved atom geometry and every user radius while temporary Add Atoms host
  fixation changes only the fixed-material treatment.
- Prevented delayed pair-cutoff refresh responses from overwriting newer table
  edits made during Add Atoms setup.
- Made volumetric-plane `G`/`R` transforms resolve their normal and offset
  range from the current `(hkl)` immediately, so a pending high-resolution
  slice request cannot restore stale transform geometry.
- Rebuilt the per-atom data example around one moving O probe above 96 Cu(111)
  atoms. ASE EMT is evaluated at every frame; every atom receives a finite
  stored force and mapped color, one trajectory-wide range is retained, and
  matching red arrows use the same Cartesian force array.
- Reworked the human/Agent/v_ase documentation around three legible
  bidirectional Natural language, CLI, and GUI channels, including the final
  Agent completion and human GUI revision feedback.

## 0.2.10

- Rebuilt commensurate preview semantics around fixed black host and orange
  mobile-guest parent lattices. Their display extent no longer changes with
  the nearest integer candidate; a green common-cell guide appears only after
  the current angle resolves a bounded strain/area match.
- Kept same-lattice guest grids aligned with their atom layer by applying the
  selected-layer rotation pivot to both atoms and lattice origins, while
  preserving exact candidate cells for materialization.
- Reframed the same-lattice and independent host/guest examples to show the
  cells-only start, live mobile-lattice rotation, conditional common cell,
  fixed parent-grid dimensions, optional atoms/bonds, and complete 3D search
  graph without clipping.
- Rebuilt the human/Agent/v_ase collaboration figure as three explicit
  bidirectional links: natural-language feedback, CLI state/revisions, and
  live GUI inspection/refinement.

## 0.2.9

- Rebuilt periodic insertion-region overlays around one intact Cartesian
  source cuboid plus cell-clipped nonzero lattice images. Shared wrapped edges
  are deduplicated, including in triclinic cells, so a boundary-crossing box
  remains readable without changing exact backend membership or volume.
- Replaced the Add Atoms guide with a Cu(111)/O surface-placement workflow and
  rebuilt Add Molecules around a clean orthorhombic 6 Angstrom layered channel
  with random rigid-water placement, exact multi-region density, and visible
  source/wrapped region semantics.
- Rebuilt the per-atom trajectory example so all 160 atoms use one locked
  force-magnitude scale and frame-matched harmonic forces and arrows; slowed
  the animation to half its previous playback rate.
- Enlarged and repositioned the structures above the Planar Translation and
  Optimize Translation plots, synchronized the README and canonical Agent
  Skill, and added browser/scientific regressions for the new examples.

## 0.2.8

- Extended the persistent Add Atoms workspace with reproducible Random and
  Homogeneous placement. Homogeneous centers can maximize Cartesian distance
  in angstrom or normalized fractional spacing with exact triclinic periodic
  distances; random placement remains uniform in physical volume.
- Added molecule insertion for the complete installed ASE G2 catalog, optional
  unbiased three-dimensional orientation, native ASE-origin anchoring, and a
  default rigid-body repulsion path that preserves every internal distance
  while optimizing molecular translation and rotation.
- Added stable multi-selection of Cartesian Allow and Reject regions. Their
  exact insertion domain is the finite cell intersected with the Allow union,
  or the complete cell when no Allow exists, minus the Reject union; overlapping
  regions and triclinic periodic images are handled without voxel volume
  estimates. Selected regions translate together with `G` and reject `R`.
- Added molecule density placement in g/cm3. Count fields become composition
  ratios reduced to their primitive integer form, exact accessible volume
  determines the nearest complete batch, and the UI and semantic API report
  target and realizable density before commit.
- Made confined periodic placement use the shortest triclinic minimum-image
  displacement, kept active-session region MIC state synchronized between the
  GUI and backend, and reject fractional, string, or boolean entity counts.
- Kept inserted content selected for direct `G`/`R` refinement, rejected
  partial edits that would distort a staged rigid molecule, and retained exact
  baseline coordinates, arrays, calculators, labels, and constraints on
  finish or cancel.
- Added periodic amorphous-Ga/H allowed and prohibited region examples plus a
  layered rigid-water example, synchronized the live semantic schema and
  canonical Agent Skill, and expanded scientific, browser, and external-CLI
  regressions for the new workflows.

## 0.2.7

- Rebuilt the external-Agent collaboration figure and animation as an explicit
  bidirectional cycle: natural-language request, structured CLI command, live
  GUI result, human refinement, revision event, and Agent re-synchronization.
- Strengthened the generated collaboration example to record command and
  result states separately and verify two distinct GUI-originated events.
- Removed per-update candidate-array allocation and sorting from live
  commensurate angle selection while preserving the established scientific
  ranking and bounded-area behavior.
- Eliminated a duplicate analysis pass from full README media generation while
  retaining the explicit `--only analysis` capture target.
- Synchronized the README, canonical Agent Skill, collaboration/evaluation
  contract, regression checks, and generated GitHub media.

## 0.2.6

- Reworked the commensurate workspace so GUI activation, layer selection, and
  guest loading preserve the current angle; black host and orange guest
  lattices remain primary, while a thinner teal common cell appears only at a
  resolved bounded match.
- Rebuilt the commensurate host/guest animation around live guest rotation and
  the moving three-dimensional angle plane.
- Replaced the Add Atoms documentation scene with a recognizable vacancy-rich
  NaCl lattice and separate Allowed and Prohibited placement animations.
- Enlarged the trajectory colorscale demonstration, slowed the isovalue sweep,
  restored the legible axial FixedLine CNT view, and added a complete
  natural-language-to-Agent-to-live-GUI collaboration animation.
- Synchronized the README, canonical Agent Skill, evaluation contract,
  generated scene assets, and browser regressions with the updated behavior.

## 0.2.5

- Made stored-force arrows frame-aware so trajectory playback refreshes both
  atom colors and Cartesian vectors from the active frame without evaluating
  an attached calculator.
- Replaced the random-insertion demonstration with a dense bonded triclinic
  silicon framework, making vacancy and interstitial placement under MIC
  repulsion directly visible.
- Rebuilt the volumetric section example around a high-resolution signed
  multi-center field on a `(1 0 0)` plane with a fixed color range and an
  oblique three-dimensional view.
- Reworked commensurate analysis into a readable three-axis landscape with
  floor and back grids, axis ticks, candidate points, and a live angle plane.
- Generalized rigid translation from an XY-only operation to any compatible
  periodic Miller plane, using exact integer lattice bases, one shared
  translation for selected atoms, an optional sampled map, and a map-free
  optimizer-trial timeline.
- Synchronized the GUI, semantic API, Agent Skill, scientific regressions,
  README guidance, and generated media for the updated workflows.

## 0.2.4

- Reorganized the user guide around an immediate product overview, concise
  selling-point highlights, installation, task-oriented details, and final
  troubleshooting, while keeping the full external-Agent workflow linked from
  its prominent overview.
- Reframed the FixedLine documentation scene so the complete nanotube channel
  and moving constrained ion remain cleanly inside every animation frame.
- Removed historical license-transition wording from public guidance and kept
  the current `AGPL-3.0-or-later` terms stated consistently.

## 0.2.3

- Extended Add Atoms Cartesian regions with allowed and prohibited roles,
  default post-scatter escape, optional confinement, live `G` translation,
  and an operation-specific optimizer timeline that closes with the mode.
- Expanded same-lattice and host/guest commensurate previews around the full
  common cell with independent opaque atoms and bonds, distinct parent
  lattices, exact-symmetry guides, and a cleaner interactive Plotly
  angle-area-strain landscape with a live current-angle plane.
- Added calculator-driven rigid XY registry relaxation that changes only two
  common in-plane translation coordinates, reports projected interface force,
  records a temporary timeline, commits as one undo step, and cancels exactly.
- Strengthened trajectory-wide property coloring and force-vector examples,
  widened the documented isosurface scan, rebuilt oblique fixed-range planar
  field media, and verified annotation-free Hookean threshold rendering across
  trajectory frames.
- Synchronized the user guide, canonical Agent Skill and references, semantic
  schema, generated README media, scientific regressions, and release assets.

## 0.2.2

- Expanded commensurate host and guest primitive lattices beyond every
  proposed common-cell boundary, added visible grid dimensions and notation,
  and rebuilt the angle-area-strain overview as a perspective 3D coordinate
  plot with candidate stems and floor projections.
- Added exact stored-force vector rendering with 2D/3D styles, scale,
  thickness, color, displayed-supercell repetition, and no implicit calculator
  evaluation.
- Corrected all-label pairwise RDF enumeration when label discovery order is
  not lexical, preserving mixed partial curves and total reconstruction.
- Added exact Hookean `rt` viewport labels and strengthened physical tests for
  inactive/engaged force behavior and the 3D helical spring.
- Rebuilt deterministic README media for commensurate cells, XY registry,
  isovalue motion, fixed-range volumetric planes, pairwise RDF, and
  trajectory-wide colorscales with force vectors; reorganized the user guide
  and canonical Agent Skill by workflow. Periodic registry maps now preserve a
  square one-cell plotting domain in wide analysis drawers.

## 0.2.1

- Added a persistent Edit-mode Add Atoms workspace for single-atom placement
  and deterministic random batches with multiple ASE elements, independent
  labels, counts, seeds, and visible insertion regions.
- Added volume-uniform fractional sampling for arbitrary triclinic unit cells
  and Cartesian-box sampling restricted to one half-open primary periodic cell.
- Added isolated pairwise repulsive placement with editable element-pair
  minimum distances, MIC, temporary host FixAtoms, progress events, and exact
  host coordinate, constraint, label, calculator, and per-atom array recovery.
- Added complete GUI, live external-agent CLI/API, Skill, scientific,
  performance, cancellation, trajectory-safety, and browser regressions for
  random insertion and placement.

## 0.1.18

- Made live AI capability names derive from the server schema so every
  advertised operation and export stays synchronized with its parameter map.
- Added exact schema/capability/browser-dispatch/Skill parity regressions and
  verified external `v_ase api` edits against the same live GUI controls,
  semantic state, and collaboration revision.
- Regenerated the AI collaboration and volumetric analysis media through the
  public CLI bridge, and updated README and canonical Agent Skill guidance for
  end-to-end external-agent verification.

## 0.1.17

- Reorganized volumetric analysis into dedicated Isosurface, Planes, and
  Combine workspaces, with accessible keyboard tabs and clearer separation of
  threshold, section, and field-arithmetic controls.
- Made cell-clipped hkl planes fully configurable in View mode through signed
  grid-origin distance and reciprocal-normal controls without changing ASE
  atom coordinates.
- Synchronized Edit-mode plane `G/R` transforms with the visible distance
  input, slider, hkl fields, and plane list while retaining reduced-resolution
  previews and full-resolution settled rendering.
- Reduced high-resolution plane-sampling memory by caching each grid cell
  inverse and generating one compact fractional-coordinate buffer directly;
  live edits now request only the selected plane rasters.
- Extended browser regressions, performance guidance, the canonical Agent
  Skill, and regenerated volumetric README media for the updated workflow.

## 0.1.16

- Added cached raw and absolute-value scalar histograms integrated with the
  isovalue slider so threshold density remains visible without remeshing.
- Added multiple cell-clipped hkl scalar-field planes with periodic triclinic
  interpolation, displayed-supercell support, Matplotlib colormaps, manual or
  fitted ranges, opacity, and atomic multi-selection editing.
- Added Edit-mode plane manipulation: `G` moves selected planes along their
  normals and `R` rotates their reciprocal-space normals with low-resolution
  live previews and full-resolution settled rendering.
- Extended the semantic Agent API, `.vase` persistence, README, canonical
  Skill, and backend/browser regressions for volumetric distributions and
  planar sections; benchmarked real 280 x 140 x 384 LOCPOT/PARCHG grids.

## 0.1.15

- Optimized large VASP scalar grids with cached statistics, bounded
  isosurface meshes, aligned binary transfer, FP32-preserving combinations,
  and lower-memory mesh smoothing while keeping FP64 available on demand.
- Recognized suffixed CHG/CHGCAR/PARCHG/LOCPOT/ELFCAR filenames and verified
  real 280 x 140 x 384 PARCHG and LOCPOT grids through backend parsing,
  isosurface generation, cache reuse, and browser rendering.
- Exposed arbitrary numeric LAMMPS atom columns to trajectory colorscales,
  added a bounded all-frame scalar cache, removed duplicate prefetch during a
  trajectory range fit, and reduced 15,000-atom cached recoloring to a direct
  instanced-buffer update.
- Added synchronized volumetric and trajectory-colorscale animations, user
  guidance, Agent Skill workflows, benchmarks, and backend/browser
  regressions.

## 0.1.14

- Added explicit current-frame, full-trajectory, and manual per-atom
  colorscale ranges with editable `vmin` and `vmax`; one resolved range now
  remains fixed through playback and every supported export.
- Added a bounded gamma contrast control that remaps the sampled colormap in
  the browser without reloading scalar values or Matplotlib lookup tables.
- Added a streaming full-trajectory extrema endpoint, current-frame-first
  loading, a bounded 64-frame cache, and one-frame idle look-ahead so large
  trajectories avoid a second complete frame-by-atom value allocation.
- Extended the live semantic API, standalone HTML export, canonical Agent
  Skill, user guide, and browser/backend regressions for trajectory-consistent
  coloring.

## 0.1.13

- Added lazy per-atom colorscales for Cartesian coordinates, stored force
  magnitude, numeric ASE arrays, and existing calculator or MLIP results,
  including scalar, component, and norm views where applicable.
- Added every colormap registered by Matplotlib, reversible automatic or
  manual ranges, a viewport legend, and all-atoms or selected-atoms-only
  scope while preserving uncolored atom appearance.
- Kept the disabled path free of scalar extraction, Matplotlib imports, LUT
  requests, and per-frame color work; disabling immediately restores the
  established label, element, material, and per-atom appearance.
- Preserved active colorscales in image, video, standalone HTML, Blender,
  OBJ, and 3DM output, and exposed catalog-driven control through the live
  semantic Agent API.

## 0.1.12

- Added a System/Light/Dark interface theme. System is the default, follows
  the browser or operating-system color preference live, and stays separate
  from the scientific viewport background.
- Added OS-user personal visualization defaults for reusable appearance,
  bonds, lighting, viewport, display replication, visual translation, render
  quality, and image-export choices, with explicit warning and confirmation
  before restoring the built-in defaults.
- Kept portable visual presets independent from automatic personal defaults,
  synchronized preference state across workspace tabs, and exposed the theme
  and default workflows through the semantic Agent API with a mandatory
  confirmation guard for deletion.

## 0.1.10

- Corrected the canonical agent trajectory validation workflow to use the
  real 42-frame C60 relaxation fixture instead of an ambiguous single-frame
  scene, with a regression that verifies the documented frame count.

- Rebuilt the commensurate workspace as a cells-first host/guest workflow:
  host-only startup, selected same-lattice guest or separately loaded guest,
  editable 3 Angstrom gap, tiled primitive vectors, optional boundary atoms
  and bonds, and preserved camera state.
- Replaced the opaque angle-area-strain chart with a layered 3D landscape
  whose horizontal rotation axis, area-depth layers, vertical strain axis,
  current-angle plane, and CSV action remain readable in the live workspace.
- Made the initial proposal the smallest admissible common cell regardless of
  a larger search ceiling, while explicit angle input continues to track the
  nearest admissible candidate; added graphene/Cu(111) browser and numerical
  regressions through area ratio 64.
- Rebuilt the external-Agent README figure around a readable Human → Agent
  Skill/CLI → v_ase → same-GUI refinement cycle with a source structure,
  explicit camera request, recognizable compatible-client marks, and a
  verified camera-aligned rendered result.
- Synchronized the user guide, canonical Agent Skill, scientific validation
  notes, examples, browser workflows, and generated README media.

## 0.1.9

- Added separate graphene-host and Cu(111)-guest validation inputs with exact
  matrices, angle, strain, and atom-count references for manual and automated
  commensurate-cell testing.
- Split the commensurate analysis graph into a conservative 3D
  angle-area-principal-strain overview and a Stradi-style mean-strain versus
  atom-count projection without changing the accepted candidate set.
- Added paper-value, full TBG integer-series, equivalent-basis,
  vectorized-versus-SVD, and accelerated-versus-complete-search regressions.
- Reworked the bounded host/guest search with descriptor-tree screening and
  batched closed-form 2D kinematics; the default area bound now completes in
  milliseconds while the exhaustive interactive limit is explicit at `128`.
- Synchronized the user guide, scientific validation notes, semantic Agent
  Skill, analysis CSV fields, and browser workflow with both strain metrics
  and actual host/guest atom counts.

## 0.1.8

- Added a bounded host/guest commensurate workspace for same-lattice twists
  and independently loaded 2D lattices, with separate integer supercell
  matrices, selectable strain target, crystallographic notation, and a
  default maximum primitive-cell area ratio of `16`.
- Added live host, guest, and suggested common-cell guides, a cells-first
  preview with optional atoms and boundary-crossing bonds, global-Z rotation
  enforcement, staged progress, and explicit materialization of a validated
  common structure.
- Added an interactive Plotly angle-area-strain landscape with live rotation
  marker and citation-bearing CSV output based on an independent bounded
  implementation of the CellMatch and Stradi matching formulations.
- Added a periodic XY registry scan for selected atoms, with short-contact or
  active-bond strain metrics, live move marker, XY-constrained translation,
  staged progress, and CSV export.
- Added a shared icon-based CSV action to every analysis graph, including RDF,
  and extended the semantic Agent API, project persistence, documentation,
  and end-to-end tests for all new workflows.
- Rebuilt the external-Agent diagram with recognizable Agent and v_ase brand
  marks, a clearer pristine-graphene vacancy request, directional data flow,
  and explicit same-document human refinement.

## 0.1.7

- Added bounded commensurate common-cell proposals after exact periodic 2D
  layer rotations. The smallest candidate inside the boundary-strain and area
  limits is shown as an opaque core plus a one-primitive-cell inspection shell
  with boundary-crossing bonds.
- Added crystallographic supercell notation, integer source/reference
  matrices, area and strain metrics, a default maximum area ratio of `16`, and
  explicit materialization of a validated proposal as the ASE unit cell.
- Kept commensurate proposals distinct from ordinary display replication and
  manual integer cell transforms, and exposed the complete workflow through
  the semantic API and canonical Agent Skill.
- Added numerical, backend, GUI, semantic-agent, camera-framing, constraint,
  and generated-media regressions for the proposal and materialization paths.
- Prevented workspace activation and browser resize events from creating
  phantom camera revisions between an Agent's `describe()` and guarded edit.

## 0.1.6

- Restored startup compatibility with ASE 3.23 and 3.24 by removing the
  unconditional import of a newer internal VASP configuration helper.
- Kept CHGCAR, CHG, LOCPOT, PARCHG, and ELFCAR grid parsing aligned at the
  first scalar-grid record across both legacy and current ASE reader layouts.
- Added an ASE 3.24 compatibility regression and verified that ordinary XYZ
  files can start a live v_ase GUI session without importing-version failures.

## 0.1.5

- Added PBC-aware Gaussian field smearing for display-only volumetric data,
  with wrapped periodic axes, reflected nonperiodic boundaries, preserved
  FP32/FP64 source arrays, and bounded persisted controls.
- Added independent boundary-preserving isosurface mesh fairing to reduce
  voxel stair-steps without opening periodic or clipped cell seams.
- Extended the GUI, semantic API, generated README example, canonical Agent
  Skill, and numerical/browser regressions for both refinement stages.
- Added strict semantic parameter validation and an inspectable generated-mesh
  summary, and stopped volumetric imports from emitting false trajectory
  collaboration events.

## 0.1.4

- Made newly opened or added volumetric datasets immediately visible at an
  in-range default isovalue, while retaining exact user control over signed
  mode, mesh detail, colors, and live isosurface opacity.
- Added a dotted `g(r) = 1` bulk-limit reference to the RDF plot and replaced
  the crystalline README analysis example with separate benzene pi-field
  isosurface and periodic amorphous Cu-Zr RDF scenes.
- Added browser and numerical regressions for automatic isosurface creation,
  live opacity material updates, and a statistically flat amorphous
  long-range RDF plateau.

## 0.1.3

- Rebuilt the external-AI-agent figure as a compact cycle centered on v_ase:
  natural-language requests enter the external Agent, structured commands and
  GUI edits enter v_ase, and live GUI output plus exact state and revisions
  leave v_ase through explicitly labeled directional arrows.
- Removed the detached feedback-loop panel and synchronized the user guide,
  canonical Agent Skill, technical documentation, and generated README media
  with the clearer shared-document model.
- Clarified that viewport and exported-image backgrounds are independent
  settings and documented the clean CLI-session shutdown order found by a
  fresh zero-context Agent evaluation.
- Prevented late video-encoding events from writing the same `100%` progress
  value repeatedly after export completion.

## 0.1.2

- Reworked the external-AI-agent documentation into a visual, four-stage
  human-to-Agent-to-structured-control-to-live-GUI workflow with an explicit
  same-document feedback loop.
- Made explicit RDF cutoffs independent of the unique minimum-image radius and
  fixed display-supercell size by enumerating every periodic image required by
  ASE's triclinic neighbor search; RDF results now report the actual image
  extent and span used.
- Added selectable FP32 and FP64 volumetric imports across the CLI, GUI,
  semantic API, combinations, and `.vase` project round trips, including
  reported storage precision and memory.
- Synchronized the canonical Agent Skill, user and technical documentation,
  generated README media, scientific regressions, and browser end-to-end
  validation with the new contracts.

## 0.1.1

- Added bounded volumetric-data loading for VASP CHGCAR/CHG, LOCPOT, PARCHG,
  and ELFCAR plus Gaussian Cube and XSF grids, including Quantum ESPRESSO
  Cube/XSF output.
- Added single and signed isosurfaces, compatible-grid linear combinations for
  charge-density differences, display supercell/translation integration, and
  physical supercell repetition with atomic Reset/Undo/Redo.
- Added total and visual-label partial radial distribution functions with
  triclinic unique-MIC cutoff protection, active/all/none pair modes, a
  resizable Plotly analysis drawer, and CSV export.
- Preserved complete custom atom labels during renaming and pair analysis,
  including labels longer than an earlier array's fixed-width dtype.
- Added volumetric arrays to self-contained `.vase` projects using validated
  bounded NPZ members without executable pickle payloads.
- Extended the vendor-neutral semantic API, live discovery schema, canonical
  Skill, user documentation, browser tests, scientific tests, and release
  validation for volumetric and RDF workflows.
- Updated the package version, scientific-discovery keywords, dependencies,
  and synchronized README media for the first analysis-focused 0.1 release.

## 0.0.120

- Removed persistent application chrome from standalone HTML previews. The
  static poster now fills the exact Preview Area frame and automatically
  cross-fades to the same unmoving live WebGL crop before camera input begins.
- Made standalone HTML poster resolution automatic and independent from live
  browser resolution, retaining a high-quality Finder/Quick Look preview while
  the interactive canvas adapts to browser size and display pixel density.
- Added `%v_ase inline`, `%v_ase browser`, and `%v_ase auto` for switching
  Jupyter display behavior without restarting the kernel, plus equivalent
  per-call `notebook=` string overrides.
- Agent capability discovery now exposes the `expectedRevision` concurrency
  guard, and the canonical Skill distinguishes lightweight HTML handoff from
  project-embedded HTML recovery.
- Reworked the README's external-agent introduction into a direct
  researcher-to-agent-to-live-GUI workflow and regenerated its synchronized
  collaboration figure.
- Expanded browser, JavaScript-disabled preview, real-kernel Jupyter, Skill,
  and documentation regressions for the revised contracts.

## 0.0.119

- Added a vendor-neutral HTTP JSON command bridge and `v_ase api` client so
  external agents can control the exact live human GUI without page-main-world
  JavaScript access. Commands include workspace tabs, semantic edits, render,
  export, revision conflicts, and protected binary output through `--save`.
- Added `v_ase api ... schema`, live operation/export parameter discovery, and
  explicit calculator state in semantic descriptions so a zero-context agent
  can plan commands without guessing.
- Reworked standalone HTML export around one shared Preview Area composition.
  HTML View defaults to a lightweight view-only file with grid off, axes and
  unit cell on; HTML Project embeds complete `.vase` recovery by default.
- Added an exact static structure poster to standalone HTML for Finder and
  Quick Look while retaining offline interactive orbit, pan, zoom, and
  trajectory playback in a browser.
- Added automatic Jupyter Notebook/Lab detection to `view()`, rendering the
  view-only interactive scene inline while ordinary Python continues to open
  the external GUI.
- Updated the README, canonical vendor-neutral Skill, compatibility guide,
  API/features/progress documentation, and release gates for the new CLI,
  HTML, and notebook contracts.

## 0.0.118

- Added revisioned same-document human-Agent collaboration. `--cli` now prints
  its discovery handshake first and then streams compact committed GUI and
  agent changes as `v_ase.collaboration.v1` NDJSON.
- Added document and workspace event streams, multi-tab event routing,
  semantic collaboration revisions, and `expectedRevision` conflict checks so
  stale agent commands cannot overwrite newer human GUI edits.
- Added a browser end-to-end collaboration workflow, a real generated
  researcher/Agent/GUI feedback-loop figure, and synchronized README,
  installed Skill, API documentation, and release gates.
- Added the event-stream HTTP client to both installation manifests and made
  expired event history trigger an explicit full-state resynchronization,
  including for newly attached listeners.
- Made CLI event polling cancel cleanly before local or tunneled servers close,
  avoiding shutdown tracebacks while preserving immediate event delivery.

## 0.0.117

- Reworked the Cu2O(111)/Cu(111) bonding example so substrate Cu, oxide Cu,
  and oxide O are separated by atom color and material instead of relying on
  an unrelated custom bond color; bonds now use the two endpoint colors.
- Made the CLI automation contract self-describing: the startup handshake now
  states that v_ase does not accept natural language or stdin commands and
  that structured control uses the browser JavaScript API.
- Rewrote the README and installed agent skill around the exact external-agent
  flow, semantic state, structured command input, verified output, and human
  handoff.

## 0.0.116

- Added an **Active atom (last selected)** rotation pivot so a selected atom
  can serve as the exact center for mouse and numeric rotations.
- Added `pivot: "active"` to semantic rotation operations, using the last
  explicit atom index as the pivot.
- Re-recorded the Ferrocene workflow with Fe as the active pivot for both Z
  rotation and X-axis ring folding.
- Increased Cu-O bond thickness and applied a high-contrast custom color in
  the Cu2O(111)/Cu(111) README scene while retaining the touching-sphere
  metallic Cu substrate.
- Synchronized README, internal documentation, and the installed agent skill.

## 0.0.115

- Aligned rotation start/current guides to the selected structure's dominant
  in-plane direction, with a unit-cell direction fallback instead of a
  corner-derived diagonal.
- Removed orbit, pan, zoom, axis alignment, and toolbar camera motion from
  `Ctrl+Z`/`Ctrl+Shift+Z`; structure and visualization-setting history remains
  chronological and undoable.
- Renamed the machine-readable automation switch to `--cli` and clarified that
  an external agent launches this local API mode itself; v_ase does not bundle
  an LLM.
- Fixed standalone HTML startup sizing, added a rendered HTML-save preview,
  and validated offline `file://` display, trajectory state, and pointer orbit.
- Updated the Cu2O(111)/Cu(111) bonding example so the Cu(111) substrate uses
  a nearest-neighbor touching-sphere radius.
- Synchronized README, user/developer documentation, and the installed
  vendor-neutral agent skill with the revised behavior.

## 0.0.114

- Replaced the persistent FixedLine dual rails with one radius-scaled center
  axis and added a longer original-position direction guide during `G`.
- Increased ordered-measurement marker and value readability and re-recorded
  the README measurement example at a closer scale.
- Removed documentation-production commentary and unnecessary construction
  details from the public README while retaining the phosphorene and
  Cu2O(111)/Cu(111) user workflows.
- Regenerated the affected README media and synchronized user, developer, and
  agent documentation.

## 0.0.113

- Reworked the README phosphorene manipulation into a shorter, wider `5 x 6`
  ribbon with nine real marquee-selection/Selection-COM edits at the
  paper-tabulated `13.85` degree H-APNR target.
- Added a camera-only above-to-below orbit after the final phosphorene edit so
  the complete three-dimensional deformation remains visible.
- Made the Cu2O(111)/Cu(111) scene's top-site interface registry explicit,
  documented its `6 x 6` primitive oxide mesh on `7 x 7 Cu(111)`, and added
  the DFT top/bridge/hollow interface reference.
- Re-recorded the Cu2O/Cu bond example from a strict top view with the complete
  coincidence cell and pairwise controls in frame.
- Updated README assets, generated examples, scientific regressions, internal
  progress notes, and the vendor-neutral agent skill.

## 0.0.112

- Replaced the simple oxygen-on-Cu bond demo with a generated coherent
  `3 x 3 Cu2O(111) / 7 x 7 Cu(111)` interface, separate substrate/oxide
  labels, and independently controlled oxide and interface Cu-O bonds.
- Added an HTML save choice between a smaller standalone view and a
  project-embedded view with complete `.vase` recovery.
- Split project save into explicit **Save .vase** and **Save HTML** actions.
- Added validated, bounded-memory reopening of project-embedded HTML through
  the CLI, Python viewer, current-tab replacement, trajectory append, and
  multi-tab file workflows.
- Updated the README, internal docs, agent skill, scene assets, and browser
  regressions for the new bond example and project formats.

## 0.0.111

- Replaced the long 11 x 3 phosphorene README ribbon with a compact 8 x 4
  model: the physical width increases, the armchair length decreases, and the
  36-degree target now takes 15 exact 2.4-degree edits instead of 21.
- Regenerated the source CIF, final CIF, trajectory, overview, and live browser
  GIF while preserving the real marquee-selection and Transform-panel workflow.
- Updated README, installed AI skill guidance, and scientific regressions for
  the 16-ridge, 8-atoms-per-ridge construction.

## 0.0.110

- Added **Exact selection rotation** controls to Structure > Transform so a
  selected set can be rotated around X, Y, or Z by a typed angle using the
  existing pivot, ASE constraints, backend commit, and undo history.
- Increased the live left-drag marquee contrast on light and dark viewport
  backgrounds.
- Re-recorded the phosphorene hero through production pointer and form events:
  the visible box selects ridge 2 through the tail, the Transform panel applies
  the exact Selection-COM/X angle, and the boundary advances to ridge 3 before
  continuing through all 21 verified edits.
- Added browser validation for panel-driven rotation commit/undo and capture
  validation for exact selected indices and the final 36-degree target.

## 0.0.109

- Added **Export HTML View**, which creates one offline, view-only 3D document
  with the saved camera, appearance, bonds, constraints, displacement vectors,
  supercell, visual translation, and trajectory playback.
- Embedded the complete validated `.vase` archive inside every HTML View so
  recipients can recover the lossless editable project without the original
  input file or a running v_ase server.
- Inlined the Three.js runtime, renderer, styles, scene data, and project
  archive without CDN or network dependencies.
- Added semantic-agent HTML export support and browser regressions covering
  GUI download, offline `file://` reopening, camera orbit, trajectory
  navigation, view-only controls, and zero network requests.
- Documented the roles and storage tradeoffs of canonical `.vase` projects
  versus shareable standalone HTML views.

## 0.0.108

- Replaced the FixedLine collar/ring marker with a straight axis and two
  compact linear rails. FixedLine and line-like FixScaled now contain no ring
  geometry, while FixedPlane and plane-like FixScaled retain their local ring,
  crosshair, and normal marker.
- Removed the separate billboard selection halo while retaining the yellow
  back-face sphere outline, so selection cannot be confused with FixedPlane.
- Rebuilt the ferrocene manipulation animation to demonstrate both an
  Origin/Z orbit and a Selection-COM/X ring fold in one reproducible workflow.
- Reframed the phosphorene and ordered-measurement media around the complete
  structure and the active geometry, without spending the frame on the control
  panel.
- Replaced the generic bond example with an oxygen-covered Cu(111) slab whose
  label-pair rules explicitly disable Cu-Cu and O-O while enabling Cu-O.
- Extended the natural-language graphene edit through atom creation: the
  verified result now contains a pyridinic N3 vacancy and a `Li_site` atom
  exactly 2.15 A above it.
- Added a vendor-neutral agent setup reference covering Codex, Claude Code,
  ChatGPT desktop agents, Gemini-based agents, agentic IDEs, generic local
  agents, live startup JSON, semantic control, and human handoff.
- Expanded scene, browser, README, and agent-contract regressions for the
  updated scientific workflows and constraint geometry.

## 0.0.107

- Added debounced visual-state history so Ctrl+Z/Ctrl+Shift+Z restores atom
  colors, radii, materials, bonds, lighting, view styling, and export display
  settings without copying large per-atom maps on every input event.
- Replaced repeated image-export completion cycles with one monotonic
  render/capture/encode/write progress bar, an estimated remaining time, and a
  single 100% state after the selected destination is complete.
- Added a semantic AI editing example that builds a pyridinic N3 graphene
  vacancy from an ASE-generated source, verifies the resulting structure, and
  publishes source/result CIF files and current-interface media.
- Added a same-geometry Standard/Metal/Rubber comparison and documented the
  optical meaning of each material without conflating it with ASE chemistry.
- Enlarged and regenerated the FixedLine documentation capture while retaining
  the nanotube channel context.
- Expanded browser, scene-asset, README, and agent-skill evaluation coverage
  for the new workflows.

## 0.0.106

- Replaced the arbitrary 15-degree phosphorene edits with the 36-degree
  H-APNR target tabulated by Jang et al., distributed across the ribbon
  instead of repeated as a per-cell angle.
- Split every armchair unit cell into its two physical puckered sublayer
  ridges, so each edit advances by one 6-atom ridge rather than rotating two
  ridges together.
- Kept the first ridge fixed, removed the initial rigid-body rotation, and
  verified that the final ridge accumulates exactly 36 degrees over 21 edits.
- Styled the upper and lower phosphorus sublayers with the green/purple
  convention used in published phosphorene structure diagrams while
  preserving phosphorus as the ASE chemical element.
- Regenerated the phosphorene example structures, trajectory, README hero, and
  browser-captured manipulation media.

## 0.0.105

- Rebuilt the README around the actual select, move, rotate, measure, and
  analyze workflows instead of presenting finished example files as the main
  manipulation demonstration.
- Replaced the phosphorene hero with cumulative tail selections: every
  15-degree Selection-COM rotation starts from the previously edited
  coordinates.
- Added current-UI ferrocene pivot and graphene/hBN commensurate GIFs, with
  world axes hidden in the latter so start, current, and candidate references
  remain readable.
- Added ordered distance/angle/torsion media and a separate trajectory
  displacement analysis image.
- Added browser regression coverage proving that live View toggles hide and
  restore the world axes and unit cell.
- Updated the agent skill, evaluation gates, and internal progress contract to
  match the published workflows.

## 0.0.104

- Kept every export modal action visible at short viewport heights by making
  the dialog body independently scrollable with a fixed action footer.
- Made PNG the image default and added JPEG and single-page PDF alongside
  lossless WebP, with correct white compositing for opaque formats.
- Rebuilt video timestamps from ordered frame number and selected FPS so
  browser rendering latency cannot cause dropped, duplicated, or shortened
  MOV/AVI playback.
- Added one monotonic video progress indicator across rendering, upload,
  encoding, and file writing, with ETA and 100% reserved for a completed save.
- Recomputed and rendered displacement vectors for every real or interpolated
  video frame.
- Opened files directly into empty documents while retaining the
  Replace/Add/New Tab chooser for populated documents.
- Documented Chrome's unavoidable selected-file permission notice and expanded
  browser, media, and agent-skill regression coverage.

## 0.0.103

- Restored an explicit FixedPlane motion surface during `G`: every constrained
  atom keeps its own original-position plane, perimeter, and in-plane axes
  while ASE remains authoritative for the committed movement.
- Added universal atom-rotation references for the active pivot axis, fixed
  start direction, and moving current direction, while keeping commensurate
  and magnetic candidates visually separate.
- Rebuilt the README around practical use, AI control, structure manipulation,
  measurement, constraints, relaxation, trajectories, and export.
- Added reproducible literature-derived phosphorene nanosheet/nanoribbon CIFs,
  a 15-degree slice-twist trajectory, an ordered ethane measurement scene, and
  an actual ASE FIRE relaxation trajectory for compressed C60.
- Regenerated and visually checked the 1920 x 1080 README media, including the
  FixedPlane motion guide, phosphorene manipulation, commensurate candidates,
  measurement, and relaxation.
- Updated the canonical vendor-neutral agent skill, implementation contracts,
  and browser regression tests for the new guide semantics and examples.

## 0.0.102

- Made whole-scene atom translation a View/Edit visual setting instead of a
  coordinate mutation. Cartesian and fractional offsets are absolute, apply
  after display replication, persist in reusable settings, and leave the cell
  and ASE coordinates unchanged.
- Repeated displacement vectors across the displayed supercell, anchored them
  at each currently visible atom position, and translated both vector
  endpoints with the scene without changing the physical displacement.
- Preserved display replication and visual translation through Reset Coords
  while keeping full Reset authoritative for returning the visual offset to
  zero.
- Simplified pairwise bond specifications to enabled/max-only rows and added a
  user-resizable label-pair column.
- Added browser and export regression coverage for translated replicated
  structures, displacement geometry, settings/project round trips, CAD and
  Blender coordinates, and reset behavior.
- Preserved `close_on_disconnect=False` through workspace lifecycle handling,
  preventing an automatically opened or transient browser tab from terminating
  an API-controlled blocking session.

## 0.0.101

- Restored the approved brown/lime atomistic logo palette while preserving the
  native 6144 x 1890 transparent render and reducing overlap between the
  spheres that form `V_ASE`.
- Increased Hookean helix readability with length-aware coil pitch, a larger
  coil-to-wire ratio, and matching live viewport and Blender geometry.
- Replaced the legacy agent guide with a standards-compliant installable skill,
  one-level progressive references, explicit safety boundaries, trigger
  evaluations, and release-time semantic/rendered end-to-end gates.
- Made the canonical skill discoverable through the AI handshake, live skill
  endpoint, README, wheel, source distribution, and release contract.

## 0.0.100

- Added lossless WebP as the compact image default and losslessly optimized PNG
  output while preserving the requested dimensions and exact RGBA pixels.
- Reduced MOV/AVI storage with quality-based H.264/MPEG-4 profiles without
  resizing rendered frames.
- Replaced the screen-plane Hookean zigzag with a shaded three-dimensional
  helical spring in the live viewport and Blender export.
- Expanded the vendor-neutral AI bridge and installed agent skill to cover
  semantic editing, analysis, camera/quality control, image/video/scientific
  exports, CAD scenes, projects, settings, and multi-document control.
- Replaced the first README figure with a graphene/hBN commensurate rotation
  scene and synchronized all current renderer captures.
- Added a repository release contract that requires README, agent skill,
  rendered assets, GitHub, and PyPI to remain synchronized.

## 0.0.99

- Rebuilt the transparent V_ASE logo with a true native-resolution render:
  `128`-segment spheres fill a `7680 x 2362` WebGL capture before a
  premultiplied-alpha supersample down to `6144 x 1890`.
- Replaced the dark-teal and gold palette with neutral graphite and restrained
  mint, and fixed the physical export scale that previously upscaled a small
  viewport render into a large PNG.

## 0.0.98

- Re-rendered the shared transparent V_ASE logo at `4800 x 1476` with Ultra
  sphere quality and restored the dark-teal and warm-gold brand palette.
- Added an asset regression check so the documentation and packaged interface
  keep the same native-resolution RGBA logo.

## 0.0.97

- Moved anti-aliasing and atom smoothness into View while keeping label and
  atom appearance controls with Structure.
- Made camera tilt and orbit derive from the live screen basis, including
  arbitrary rolled views and transformed cells.
- Reworked Metal into a stronger shared studio-reflection material and added
  persistent high-contrast atom and bond outlines in flat 2D mode.
- Enabled bonds and the commensurate guide by default, kept magnetic snapping
  opt-in, and verified the exact hexagonal angle family for graphene and h-BN.
- Added editable repulsion cutoff scale and force strength with a `0.70`
  default cutoff scale, plus stable constraint-vector keyboard entry.
- Added `--for-ai`, semantic structure state, deterministic browser control,
  exact renderer output, a machine-readable schema, and an installed
  vendor-neutral agent guide with immediate human takeover.

## 0.0.96

- Rebuilt the transparent rendered V_ASE logo with a dark-teal atom substrate,
  metallic gold lettering, and stronger studio-light definition.
- Made per-atom `FixedLine` and `FixedPlane` guides visible without selection,
  local to each constrained atom, radius-scaled, and consistent in stroke
  weight; FixedLine adds a compact axis collar for visibility at difficult
  camera angles.
- Added unit-cell color, Angstrom thickness, and material controls, using
  deduplicated instanced edges for both the base and repeated supercell cells.
- Tightened the Appearance table proportions, corrected responsive overflow,
  separated translation guidance from its action button, and refreshed common
  control surfaces.
- Reorganized the README around installation and practical workflows, with an
  explicit viewport-focus tip for atom transforms.

## 0.0.95

- Added one-command remote viewing with `v_ase gui HOST:/path`, including
  automatic remote/local endpoint allocation, SSH forwarding, browser launch,
  and cleanup after the browser closes.
- Kept remote source files and backend processing on the server and forced
  trajectory frame streaming so complete trajectory coordinate caches are
  never downloaded to the browser.
- Replaced manual port-forward instructions with the single remote-file command
  and added SSH alias and ProxyJump guidance.

## 0.0.94

- Made automatic loopback-port selection the documented default for remote
  servers and clusters, with fixed ports retained only for scripted mappings.
- Added same-port and alternate-local-port SSH forwarding examples and
  clarified that no administrator port allocation or public listener is
  required.
- Revalidated an automatically selected port with an 18-atom periodic
  structure through a live physics-cluster SSH tunnel and local browser.

## 0.0.93

- Added a first-class remote-server and cluster workflow with loopback-only
  SSH forwarding and direct login-to-compute-node examples.
- Made top-level workspace closure reliable through SSH tunnels by combining a
  per-browser keepalive close signal with WebSocket disconnect detection.
- Preserved multi-browser workspaces when one page closes and added unit,
  Chromium, and live cluster coverage for terminal release after the final tab
  closes.

## 0.0.92

- Added optional `1x`-`64x` linear video-frame interpolation with
  frame-specific cell interpolation and a minimum-image-convention toggle.
- Made browser video capture deterministic by requesting canvas frames
  explicitly and transcoding to the selected FPS and exact output frame count.
- Added WSL-aware Windows browser launch, a headless `--no-browser` workflow,
  and documented secure SSH port forwarding for remote servers.
- Rebuilt the empty white workspace around explicit high-contrast text,
  controls, focus states, and a larger rendered V_ASE mark.
- Added a consolidated user troubleshooting guide for installation, WSL,
  remote servers, file readers, browser sessions, save behavior, and optional
  exports.

## 0.0.91

- Added an Analysis workspace with previous/specific-frame displacement
  vectors, optional MIC, particle-ID mapping, summary statistics, 2D/3D
  styles, and two-batch GPU instancing.
- Preserved valid atom selections and live measurements across trajectory
  frames.
- Made all browser mutations and structure/CAD exports frame-scoped, and
  verified translation, wrapping, repetition, and matrix supercells against
  every frame's own cell and PBC.
- Made View-to-Edit transitions tolerate variable-topology trajectories by
  merging valid identity records and preserving unmatched backend atoms.
- Moved Repulsion calculator controls into Structure > Relaxation, consolidated
  the control panel into one five-workspace tab row, and refreshed the rendered
  V_ASE logo used by the application and package documentation.

## 0.0.90

- Redrew the four 3D camera-orbit controls with continuous hooked silhouettes,
  direction-specific tails, volumetric shading, and a consistent toolbar
  order; corrected the actual up/down camera directions.
- Consolidated Appearance and Bonds into a scroll-linked Structure workspace
  alongside Cell, Transform, Constraints, and Relaxation.
- Added explicit Cartesian/Angstrom and fractional whole-trajectory
  translation while keeping the unit cell unchanged.
- Extended undo/redo to camera orbit, pan, zoom, projection, toolbar rotation,
  axis alignment, and atomic-scale changes, interleaved with structural edits.
- Moved native destination selection ahead of structure, image, video,
  Blender, Rhino, OBJ, project, and settings export generation.

## 0.0.89

- Redrew the first four camera controls as depth-coded orbit arrows with a
  shaded rear tail, front face, overlap seam, and highlight. Their start and
  end geometry now follows distinct vertical and horizontal paths instead of
  rotating one flat glyph for every direction.
- Corrected the upward and downward view actions to follow the visible arrow
  direction and retained exact inverse-operation camera recovery.
- Added Chromium coverage for every volumetric icon layer, the distinct
  vertical/horizontal paths, and all six camera operations.

## 0.0.88

- Rebuilt the camera toolbar arrows to match their screen-relative motion,
  including corrected up/down tilt direction and inverse-operation browser
  coverage.
- Split View, Appearance, Bonds, and Export into independent control-panel
  workspaces.
- Replaced single pair cutoffs with live label-pair specifications containing
  enabled, minimum-distance, and maximum-distance fields; removed the separate
  bond apply action.
- Unified viewport, Blender, Rhino, and OBJ automatic bond rules and preserved
  legacy cutoff-only settings alongside the new range format.
- Refreshed the README UI, constraint media, and bond-configuration example.

## 0.0.87

- Made X/Y/Z view toggles compare the complete canonical camera pose, including
  screen-up orientation. Pressing an axis key after rolling that axis view now
  restores its canonical positive view; only another press from that exact pose
  flips to the negative view.
- Added real-browser coverage for canonical restoration and positive/negative
  toggling on all three axes.

## 0.0.86

- Open now invokes the operating system file picker immediately instead of
  showing an intermediate launch-directory file list.
- Added an explicit source/relaxation timeline selector. Playback, Space, and
  Left/Right Arrow stepping target only the selected timeline while the other
  timeline remains visible as a secondary row.
- Added serialized frame stepping so repeated keyboard input cannot race
  asynchronous trajectory loads.

## 0.0.85

- Replaced the camera toolbar glyphs with shaded, volumetric curved arrows in
  the established up/down, left/right, counterclockwise/clockwise order.
- Corrected screen-relative clockwise and counterclockwise camera roll.
- Refined automatic bonds using ASE's literature covalent radii with
  chemistry-aware pair classes: metal-metal and H-H contacts stay off by
  default while metal-ligand distances receive a practical coordination range.
- Added a unit-cell-mapped distance for selected supercell replicas and removed
  ambiguous MIC variants from angle and torsion measurements.
- Upgraded Metal to a high-metalness, low-roughness material with one shared,
  on-demand studio reflection environment; Blender, 3DM, and OBJ material
  exports use matching stronger metallic parameters.
- Added Chromium projection, Cu-Cu/Cu-O cutoff, replica-measurement, 15,000-atom
  instancing, and rendered-pixel contrast coverage.

## 0.0.84

- Preserved repeated POSCAR/CONTCAR species blocks as distinct visual labels.
  For example, `O Cu O` with counts `1 14 5` is exposed as `O1`, `Cu`, and
  `O2` while ASE chemical symbols remain `O`, `Cu`, and `O`.
- Numbered every occurrence when a species appears in three or more blocks,
  and handled multiple independently repeated species in their original file
  order.
- Added reader and browser-payload regression coverage for repeated VASP
  species groups.
- Bound local-server release to the acquired server instance so a delayed old
  session cannot stop a newer session when the operating system reuses a port.

## 0.0.83

- Made the default viewport an exact white field with lower-contrast grid
  guides and brighter, view-consistent modeling light for clearer atoms.
- Changed **Open** to begin in the directory where `v_ase gui` was launched,
  with direct local loading and a system-picker fallback for other locations.
- Restricted local browsing and loading to the launch-directory tree, including
  resolved symlink targets, and preserved that root across workspace tabs.
- Added backend path-security, browser Open, visual-state, and regression
  coverage for the new behavior.

## 0.0.82

- Added per-label atom counts after the total for selections of five or more
  atoms.
- Reordered and redrew the camera controls as three paired curved-arrow groups:
  up/down, left/right, and counterclockwise/clockwise roll.
- Corrected view-relative clockwise and counterclockwise camera roll direction.
- Set new-document defaults to `0.60x` atom radius and `0.25 A` bond diameter
  while preserving explicit values from saved projects and settings.
- Added real-Chromium coverage for the new defaults, camera order and direction,
  and multi-label selection summaries.

## 0.0.81

- Made both `Tab` and `Esc` open a collapsed control panel while retaining
  modal close, transform cancel, and open-panel close priorities for `Esc`.
- Added direct-coordinate values alongside minimum-image-convention distances,
  angles, and torsions in the inspector, persistent Measure HUD, and viewport
  measurement overlay.
- Changed new documents to a white viewport background from the first rendered
  frame while retaining the dark background option and saved project choices.
- Added real-Chromium coverage for periodic direct/MIC measurements, the
  two-way `Esc` panel workflow, and white-background initialization.

## 0.0.80

- Added explicit Open actions for replacing the current document, appending
  structures to its trajectory, or opening an independent workspace tab.
- Preserved the active camera, appearance, bonds, lighting, and current frame
  when appending files; `.vase` append imports structures only.
- Added a trajectory-wide label/type catalog so new frame labels immediately
  appear in Appearance and pairwise-bond controls.
- Moved the new-tab button directly after the resizable document tabs.
- Replaced the six camera-step icons with compact curved rotation arrows.
- Added backend, real-Chromium, and multi-document regression coverage for all
  three Open paths.

## 0.0.79

- Added a top-bar View/Edit switch that preserves the active structure,
  trajectory frame, camera, labels, bonds, appearance, and selection.
- Added Standard, Metal, and Rubber atom materials with label-level controls in
  View and selected-atom controls in Edit.
- Made exact label assignment merge selected atoms into existing groups while
  keeping ASE chemical identity synchronized.
- Converted per-atom material variants into numbered View labels without
  splitting position-only edits.
- Materialized lazy LAMMPS trajectories only when entering Edit, with a visible
  transition state and complete frame preservation.
- Matched material properties in Blender, 3DM, and OBJ exports.
- Retuned the default camera-facing lighting for clearer element separation
  across opposite views while retaining demand rendering and GPU instancing.
- Added real Chromium coverage for runtime mode transitions and a 15,000-atom
  material/render benchmark.

## 0.0.78

- Unified CLI, browser Open, and Python file input through one canonical reader.
- Added memory-mapped LAMMPS frame indexing and contiguous float32 browser
  trajectory playback.
- Reduced position-only updates to GPU instance translations and removed
  duplicate periodic bond searches.
- Replaced fixed local-server startup delay with readiness polling and added
  deterministic server shutdown for blocking and non-blocking sessions.
- Added displacement-validated bond neighbor caching, skew-cell-safe bins, and
  direct cylinder instance-buffer updates for dense live bonding.
- Removed one redundant full-trajectory copy during viewer initialization and
  skipped edit-only position snapshots in visualization mode.
- Canonicalized label-based appearance and pairwise bond setting names under
  `v_ase.visual_settings.v3`, with migration for earlier projects/settings.
- Made `view()` default to lightweight visualization mode, matching the CLI;
  interactive mode remains `view(..., viz_only=False)`.
- Removed unused mandatory IPython and Requests dependencies.
- Consolidated API, architecture, performance, shortcut, example, and release
  documentation around the current implementation.
- Added a reproducible 15,000-atom, 16-frame Chromium benchmark.

## 0.0.77

- Added independent multi-document tabs in one desktop workspace.
- Suspended inactive document rendering and movie playback.
- Kept structure, trajectory, calculator, camera, settings, history,
  relaxation, and `.vase` state isolated per document.

Earlier release details remain available in the Git history and PyPI release
artifacts.
