Releases: amorphous-engineering/OPAL
Release list
v1.4.0-beta.1
OPAL 1.4.0, coming soon!
BETA 1!
A lot of new features in this run. Highlights:
- Work order executions support collaboration now! Several people can work at once on any WO. In general, executions have really been overhauled - supporting a large scrolling log-like display. Op sequencing, redlining, notes, and caution blocks all saw some upgrades here.
- Quality (Issues and Risks) have been completely overhauled! OPAL imposes real, rigid structure seamlessly to encourage best practices across the board. Issues can gate steps in real time and require actual engineering authority to release a WO. Everything's formatted to actual engineering standard.
- Systems engineering! OPAL allows for full tracking of program-level requirements - stuff that'll make your design reviews a lot easier to keep track of. These can be bound to specific parts too. Still a nascent feature, but one that'll hopefully be pretty powerful.
- Parts and purchasing menus also saw some redesigns.
- As for OPAL in general: we have real auth now. Few other cool things. LOTS of bug fixes.
Also - the demo function has been pretty significantly overhauled! Going into settings will allow you to spin up the demo database at any time - a completely separate database preloaded with data from Half Cat's Mojave Sphinx to show off the various OPAL features. Poke around at this! Let us know what you think. You can exit the demo DB at any time and re-roll it whenever you want, but changes should be persistent on that DB until re-rolled. Nothing you do in the demo impacts your real data (and a banner will remind you this.)
Have fun, and if it breaks, let us know! Otherwise you get to keep both pieces.
-Lavie
Automated changelog below:
Features
Execution & manufacturing
- The multiplayer execution document (#52): presence = focus with live cursors, in-place row updates (poll + SSE), docked action bar, floating rails (issues/holds, evidence, reference docs), minimap, per-step typed data capture (numbers, selects, checkboxes, photos), authored step reference images.
- Redline (ad-hoc rework) ops authorized from NCs; contingency ops (off-nominal paths render after the nominal sequence).
- Op sequencing: op-level dependencies (WAITING ON gating) and strict-sequence sub-steps.
- Work order semantics: CUT / IN WORK statuses, batch cut with generated WO numbers, WO-first list, version rides the procedure name.
- Timestamped step notes (#62): append-only, authored, on any step at any time — including terminal steps and closed WOs.
- Step safety fields (#7): required role, caution blocks.
Quality
- Nonconformance capture at the step (#49): SHOULD BE / IS, priority, evidence photos at discovery, containment ladder (advisory / step / op / wo), RESOLVE BY boundary.
- Derived holds: holds computed from undispositioned issues, released live at the disposition signature; WO close-out blocked while any containment-bearing issue is open.
- Disposition flow with signature; residual trace stays on the step after resolution.
- Gated controls register (#61): held/gated COMPLETE and SKIP render disabled with the reason (linked issue numbers), everywhere.
Systems engineering
- Requirements (#15, #25): full lifecycle (draft → preliminary → baselined → superseded/cancelled), baseline queue + events with readiness gates, lint, tree UI, redline diffs, TBD/TBR with owner + due, flow-down + staleness, part allocations, YAML import.
- Risk module (#42, #51): structured scenarios (condition/departure/asset/consequence), P×I + residual scoring, dispositions, formal acceptance with readiness gate + signature, risk↔issue links, view-mode-default pages.
Parts, purchasing, inventory
- Part lifecycle (#31–#35): draft → active with blockers-only activation.
- Parts UI redesign (#36, #48): the tag + ledger page, procurement-driven section relevance.
- Purchasing: tier-driven lot/serial enforcement at receive (#12), SupplierPart vendor PNs (#16), expense ledger (#17), receive-form location autocomplete + carry-down.
- Inventory traceability (#66): OPAL# item pages in the part-page grammar with full history; execution kitting shows the exact physical items (PN + OPAL# + lot) consumed; consume-from selectors carry item identity.
- Config-derived tiers (#46) and project config in the DB (#20).
Platform
- Accounts & auth (#26+): username/password (argon2), sessions, passkeys/WebAuthn, API tokens, local vs proxy auth modes.
- Instance lifecycle (#20): in-app demo database (enter/resume/exit), factory reset.
- Mojave Sphinx demo (#64, #67, #69): demo rebuilt from Half Cat Rocketry's HCR-5100 (GPL): 182 parts / real BOMs / 7 vendors, 6 procedures incl. launch ops with 20 signoff hold-points + 2 contingency ops, 15 requirements, 17 risks, live quality-hold demo state.
- MCP (#13 + R2): ~80 tools across executions, holds, issues, risks, requirements.
- TUI on the focus model (#59).
- Startup revision guard (#57): refuses to serve a database stamped by an unknown branch, with remedies.
- Windows-1252 config tolerance (#18); Onshape part-studio sync.
Bug fixes
Security
- Stored XSS eliminated (#54 + R2): the
tojson-in-double-quoted-attribute class fixed across every template and permanently banned by a template lint test (#47, #55; also killed silently-dead ATTACH/ISSUE buttons). opal seedhardened: refuses to run against a configured instance (was: could overwrite live project config and insert a known-password admin) —--forcefor the deliberate case.- MCP hold re-bind no longer loses its work-order adoption to a session rollback.
Correctness — quality model
- A work order could close COMPLETED over an undispositioned NC (terminal-anchor and boundary holds weren't consulted at close-out) — close-out is now authoritative on the open-issue set.
- A hold bound to the wrong (or no) work order reported success while blocking nothing — instance derived/validated from the anchor at create and bind.
- SKIP bypassed the redline-rework gate, and later the parent-OP children gate — both now block SKIP like COMPLETE.
- Manual COMPLETE of a parent OP was allowed with open sub-steps — refused, with correctly-labeled sub-step numbers.
- A mis-bound RESOLVE BY boundary was immutable — explicit-null clear, API and UI.
- Held rows rendered an active COMPLETE the server would reject; op-header HELD BY didn't update after disposition and had two disagreeing derivations — one derivation, live updates.
Correctness — API/data
- Requirements PATCH couldn't clear nullable fields (#30); same fix earlier for parts PATCH explicit-null rejection (#53).
- Step-image uploads 500'd (Form-sentinel defaults leaked into queries).
- Instances list had an N+1 on notes; kitting/consumption queries eager-loaded.
enter_demointerrupted mid-seed left a permanently blank demo (freshness now derived from content).- Migration FK safety (#43/#58): batch migrations run FK-off; startup FTS-trigger integrity check with self-heal; full-chain migration smoke test in CI.
- PyInstaller bundle: frozen server crashed on missing fido2 package data.
Fit & finish
- TUI couldn't drive any sub-stepped procedure (targeted the OP header) and read nonexistent kit-availability fields.
- Output-only procedures lost the KITTING tab (FINALIZE unreachable).
- Raw database ids purged from lists/titles/search results (#65 + kit/output/receive tables, "Execution #N",
PO-{id}titles,PO-PO-0001doubling). - Receive form silently dropped lines that had a quantity but no location.
- Issue #4 (stuck holds without redlines) obsolete under the derived-hold model; #37 (step attachments) shipped.
Full Changelog: v1.3.1...v1.4.0-beta.1
v1.3.2
What's Changed
- Release v1.3.2: BUILD REPORT, Onshape settings UI, hierarchical seed templates by @abbyfluoroethane in #5
Full Changelog: v1.3.1...v1.3.2
v1.3.1
v1.3.0b2
Full Changelog: v1.3.0b1...v1.3.0b2
v1.3.0b1
Full Changelog: v1.3.0-beta...v1.3.0b1
v1.3.0-beta
Full Changelog: v1.2.8...v1.3.0-beta