crystal-studio-web

Version 1.10.0 validation

Checked on 6 October 2026. The original frontend uses a scientific workbench with compact file/history/export tools, a square central scene, a docked structure inspector and categorized tool navigation. The 27-command palette routes to existing controls and explains disabled actions. Focus scene temporarily hides both side panels while preserving project and camera state.

Use tests/scientific-workbench.py for the workbench interaction/layout checks. Reports, images, configured test builds and private deployment helpers are excluded from publication. Browser checks reported no JavaScript, console or HTTP errors and no external account, feedback, payment or scientific mutations. Deployment is checked separately after publishing; simulated account/API tests do not verify real email delivery.

Previous version 1.9.1 validation

Checked on 6 October 2026. Visible calculated/manual/periodic connections can be selected in 3D or a paginated Connections inspector, deleted with buttons or Delete/Suppr, and resized with an independent 0.25-4.00 thickness multiplier. Undo/Redo and saved projects preserve edits and selected connections. Atom and connection selections remain separate; original atomic data and calculated contact records are preserved.

No browser JavaScript, console or HTTP errors and no external scientific/account/email/feedback/payment mutations occurred. Backend/service configuration and the research clone remain unchanged. Use tests/connection-editing.py for the interaction/export checks and tests/connection-resources.py for actual WebGL cleanup. Browser artifacts and private helpers remain excluded from publication; deployment is verified separately after publishing.

Previous version 1.9.0 validation

Checked on 5 October 2026. Empty left-clicks clear the selected atoms in Select, Rotate and Connect modes; unfinished mouse connections are canceled. Empty-space rotation drags, right-button panning and wheel zoom preserve selection. The original workspace now has configurable translucent coordination polyhedra and clearer, grouped camera/selection/export controls.

The production frontend builds successfully. Browser checks reported no JavaScript, console or HTTP errors and no external account, email, feedback, payment or scientific mutations. Test artifacts remain excluded from publication. Use tests/polyhedra-workspace.py for source/compiled interaction and geometry checks, and tests/polyhedra-resources.py for real WebGL resource checks. Backend code and service configuration are unchanged; the research clone remains separate. Public deployment is verified separately after publication.

Previous version 1.8.1 validation

Checked on 5 October 2026. Every stored atom and displayed full-cell boundary image has a distinct selection ID. Plain left-click toggles atoms; plain left-drag selects a box by default. The Select/Rotate toggle preserves rotation, wheel zoom and right-drag pan. Ctrl/Command adds and Alt subtracts; Select all and workspace Ctrl/Command+A have no three-atom cap. The Atoms table identifies stored sites and image shifts. Boxes select projected centers, including atoms occluded by foreground spheres.

All 175 JavaScript tests passed and the production frontend built successfully. Thirteen native browser groups passed on source and compiled builds with normal camera damping. They cover all 14 FCC positions, actual boundary ray picking and measurements, large selections, modifier selection, capture outside the canvas, wheel suppression during dragging, Escape/blur/resize/redraw cancellation, zoom/rotation, same-site image connections, save/load, image deletion with Undo/Redo, hidden-image selection cleanup and 390/768-pixel layouts. No JavaScript, console or HTTP errors or external requests were reported.

The existing 11 history/guide browser groups passed with normal motion. GPU checks held at 19 buffers through 16 display rebuilds and four exports, then 21 buffers through 20 highlight replacements; clearing selection releases its instance buffer. Boundary coordinates retain exact integer lattice translations, including near-edge atoms in a validated large skew cell. Manual connection endpoint shifts survive project serialization and atom-ID remapping; image connections are discarded when repetitions change their coordinate frame. Deleting a boundary image removes its stored site and equivalent images, with this behavior explained in the interface; Undo restores them.

Backend code and service configuration were unchanged. Checks used isolated local structures and did not send account, feedback, donation or scientific service mutations. The research clone remains separate.

Previous version 1.8.0 validation

Checked on 5 October 2026. The original workspace now has Undo/Redo and a Quick guide, plus explicit preset Replace all atoms/Add atoms controls and a staged individual-atom editor. The research edition remains separate.

All 143 JavaScript tests passed. Eleven native browser workflow groups passed on source and compiled builds with both reduced and default smooth motion: deletion, manual connections, independent/global sizes, history branches/coalescing, exact camera restoration, immediate orbit-to-deletion boundaries, typing/dialog guards, guide and mobile layouts. Camera inertia settles before edits or history snapshots, and restored views clear residual damping; floating-point noise does not create extra selection edits or erase a redo branch.

Eight new manual editor browser groups and all six existing preset regression groups passed on the compiled build. Tests cover all ten presets without silent row changes, complete FCC/BCC bases, reference assignments, all 118 elements, optional occupancy, duplicate/conflict rejection, comment preservation and 320/390/768-pixel layouts. New checks use synthetic local structures and intercepted community responses; no account, feedback or payment actions were performed. They reported no browser JavaScript, console or HTTP errors or external requests.

The owner’s four intervening GitHub HTML edits were audited and preserved, including the hidden Support button. Initialization now tolerates that missing button. Backend code and service configuration are unchanged.

Previous version 1.7.5 validation

Checked on 4 October 2026. The a, b and c reference axes now have thick solid cylinder shafts and broad cone arrowheads, alongside the existing very bold labels. Their geometry scales with the cell and export resolution.

The production build passed. Native browser geometry checks passed for cubic and skew triclinic cells: shafts start at the origin, meet their arrowheads without a gap and point along the correct lattice vectors. Axis colors, lengths and label positions are preserved. The axes remain separate from atom selection and atom-based legend spacing, and the Crystal axes control removes both shafts and arrowheads. Shared cone geometry is released exactly once during rebuilds. The existing GPU regression passed with 19 buffers throughout 16 display rebuilds and four figure exports; reusable sphere/cylinder geometry is preserved. No backend code or dependencies changed.

Actual production-build raster checks confirmed thick shafts and wider tapered heads for all three axes in both viewer themes, fitted figure PNGs and transparent current-scene PNGs. The very bold labels remain present, and turning Crystal axes off removes both the geometry and labels from the viewer and both exports. Export dimensions, live camera and display settings remain correct. No JavaScript, console or HTTP errors occurred, and no account, feedback or payment actions were performed.

Previous version 1.7.4 validation

Checked on 4 October 2026. The reference-axis labels a, b and c now use extra-heavy lettering and a matching outline in the viewer and exported images.

The production build passed. Native browser checks confirmed weight 900 and the outline in both viewer themes. Actual figure and transparent scene PNG exports draw all three labels with the heavy font and a resolution-scaled stroke; independent glyph measurements show 40–62% more ink than regular lettering. Both 472 × 472 exports preserve the camera and display settings. Turning Crystal axes off hides the viewer labels and omits their drawing from both exports. No browser JavaScript, console or HTTP errors occurred, and no backend mutations or account/feedback/payment actions were performed. This styling change adds no production test files or backend changes; the existing JavaScript suite remains part of deployment CI.

Previous version 1.7.3 validation

Checked on 4 October 2026. Selected stored atoms can be removed with Delete / Suppr or the toolbar action. Connections render as three equal sections: the first endpoint’s effective element color, neutral grey, and the second endpoint’s effective element color.

Run tests/atom-editing.py --url <local frontend> with native Python Playwright for the synthetic browser checks. It blocks external requests and intercepts local scientific/community responses; no accounts, feedback or payments are submitted. Browser artifacts and private deployment helpers remain excluded from publication. This release updates the frontend only; deployment is verified separately after publishing.

Previous version 1.7.2 validation

Checked on 4 October 2026. This release fixes reproduced failures in service checks, account callbacks, administrator loading/pagination, project imports, boundary-atom calculation and viewer resource cleanup.

Use tests/bug-regressions.py --url <frontend> for focused browser checks, tests/viewer-resources.py --url <source-frontend> for actual GPU-buffer cleanup, and tests/skew-boundary.py --url <frontend> --api <scientific-api> for the synthetic stateless calculation regression. Browser artifacts remain excluded from publication. This release requires both frontend and Python API deployment. Private feedback storage, delivered account emails and donation destinations retain their configuration status in ACCOUNTS_AND_SUPPORT.md and ADMIN_AND_FEEDBACK.md.

Previous version 1.7.1 validation

Checked on 4 October 2026. The direct /admin address now opens the existing server-verified password prompt. The production build contains a real admin/index.html entry for static hosting.

Previous version 1.7 validation

Checked on 4 October 2026. This release adds optional private feedback and separate administrator access for moderation and website announcements. Scientific project data and existing account roles are unchanged.

See ADMIN_AND_FEEDBACK.md for the migration and private server settings. Deployment and actual administrator login are verified separately after publishing. Account email delivery and optional payments retain their earlier setup status.

Previous version 1.6 validation

Checked on 4 October 2026. Manual crystal definitions now show complete conventional-cell boundaries by default. FCC has 14 visible sphere positions, BCC 9 and Simple cubic 8. Scientific structure data retain their 4/2/1 periodic representatives; the Python API is unchanged.

Run python tests/full-cell.py --url http://127.0.0.1:5180 with Python Playwright and installed Chrome for UI and independent source-module renderer checks. Add --ui-only for a built or deployed frontend. Screenshots, exported PNGs and reports remain excluded from publication. Deployment is verified separately after publishing. Optional email-delivery and payment setup status remains recorded below and in ACCOUNTS_AND_SUPPORT.md.

Previous version 1.5 validation

Checked on 3 October 2026. This release makes email Login/Create account visible in the header and adds a validated community-settings deployment helper. The Python API is unchanged.

Supabase connection deployment

On 3 October 2026, the owner’s actual public Supabase URL/key were validated, applied as SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY Actions variables, and deployed successfully through workflow 37149654825, using application commit 48603ba873cfe841d6823766d8ba43bee5d1af81. PYTHON_API_URL was preserved. The workflow reran all 90 JavaScript tests and the production build successfully.

Activation instructions are in ACCOUNTS_AND_SUPPORT.md. The existing tests/community.py default/–public-only checks require an unconfigured app; its –auth-url uses only the dummy provider host, so it must not target production.

Previous version 1.4 validation

Checked on 3 October 2026. This release adds seven constrained cell presets and FCC/BCC/Simple cubic reference templates to the manual editor. The Python API and optional account integration are unchanged.

tests/crystal-presets.py uses native Python Playwright and installed Chrome; use --url for production/deployed checks. Browser artifacts remain excluded from publication. Email registration still requires the owner’s Supabase connection/public project configuration and email delivery setup. No live accounts or donation recipients have been fabricated.

Previous version 1.3 validation

Checked on 3 October 2026. This release adds a current-view transparent scene export and optional managed-account/hosted-payment integrations. The Python API is unchanged.

Run tests/community.py with Python Playwright and installed Chrome. Full account checks use the isolated mock-provider Vite server described in ACCOUNTS_AND_SUPPORT.md; --public-only --url <site> checks transparent downloads and unconfigured optional services. The production site still requires the owner’s public Supabase configuration, public-user SMTP delivery setup and real recipient-owned payment links to activate registration and payments. No placeholder recipient or fake account system is published.

Previous version 1.2 validation

Checked on 3 October 2026. This release adds direct mouse connections, independent element sizes and genuine 5,000 DPI browser exports. The Python API is unchanged.

The native Playwright test tests/mouse-and-sizing.py creates synthetic input locally and requires no Python service. It accepts --url for a built or deployed frontend. Browser downloads/screenshots/reports are excluded from publishing. The preceding Python validation remains recorded below; no backend source or dependency changed in version 1.2.

Previous version 1.1 validation

Checked on 3 October 2026 with Python 3.14.7, Node.js 24.21.0 and installed Google Chrome on Windows. Browser checks use the real WebGL viewer and the real local FastAPI service.

No uncaught browser script errors occurred. The bundled structures and test inputs are synthetic demonstrations and regression cases. Manual entry requires the full unit-cell contents; it does not infer symmetry operations. Automatic contacts use covalent-radius cutoffs and should be reviewed for the structure’s chemistry. Manual connections join the exact displayed positions selected by the user; they are retained where endpoints remain in a resized supercell, without automatically copying them into new tiles.

The public project uses GitHub Pages, the GitHub source repository, and a Python API on Render. The Render service is on the Free plan in Frankfurt; its first request after inactivity can take longer while it starts. Free hosting was verified for the preceding live release. Version 1.1 local and production-path checks are recorded above; deployment is verified separately after publishing.

Reproduce the checks with the commands in README.md. tests/improvements.py accepts --url and --api to check a deployed site. For the GitHub Pages path, build with VITE_BASE_PATH=/crystal-studio-web/, preview on port 5175, then run node tests/pages.mjs; PAGES_URL can override that preview address. The standard browser regression accepts CRYSTAL_URL and CRYSTAL_API_URL.

After building frontend/dist, run python scripts/package.py from this folder to create a verified source archive. It includes the production frontend and excludes dependency folders, environments, local uploads and test artifacts.