Skip to content

v0.8.0: Specification, catalog and project delivery

Latest

Choose a tag to compare

@onixus onixus released this 14 Oct 16:49
· 3 commits to main since this release
88b382b

EvaCal v0.8.0

This release delivers the specification and catalog contour (#101), the project delivery contour (#103) and commercial pricing fixes (#102), merged in PRs #96–#135.

Changes

  • Catalog and specification. Vendors, technical products and revision-bound price offers live in the database. Vendor GPL imports are reviewed, use reusable profiles and can be compared between snapshots; selected updates are applied to a project as a new draft. Specifications gain totals, XLSX, revision diff, a lifecycle with confirmed release and BOM import. Product relations, typed attributes, catalog suggestions, explicit replacement, bundles and subscriptions are supported.
  • Compliance evidence. Registry entries and certificates are stored per catalog product. SPEC and PZ print only current confirmed evidence; otherwise «Не подтверждено». The static vendor registry is removed.
  • Sizing. Versioned sizing profiles and runs show their impact on the specification and propose catalog candidates. Specification rows link to GOST package requirements and appear in the traceability matrix.
  • Commercial offer. Target margin is separated from markup and historical quotes are preserved. Offers support variant comparison, profit forecast, supply and cost items, exchange rates and a margin threshold with discount approval.
  • Review and inbox. Personal review stage assignments, comment lifecycle, the «Требует моего действия» queue with in-app notifications, and delay reasons for overdue projects.
  • Change requests and acceptance. Change request card, impact and estimate, decisions with a versioned result; acceptance checks bound to an approved package edition, commission decision and PSI/act generated from recorded facts.
  • Planning. Production calendars, exceptions and role reservations; explicit stage dependencies, nearest available start and what-if plan variants; actuals ledger with idempotent sync and template norm proposals from actuals.
  • Solution library. Versioned project solutions and solution kits applied to projects with update proposals.
  • GOST 34 documents. PZ/TZ no longer invent platforms or supply items, and presale sizing defaults are treated as unconfirmed assumptions.
  • Platform. Tailwind CSS 4, updated runtime dependencies, Prettier enforced in CI and a PostgreSQL credential preflight in the installer. nginx bind mounts are relabeled for SELinux, so installations on SELinux-enforcing hosts work.

Upgrade notes

The upgrade applies 25 new PostgreSQL migrations automatically through the migration image. update backs up the database first unless --skip-backup is given; S3 deployments still need a coordinated external backup. Read these behaviour changes before rolling out:

  • Gantt dates are computed in UTC with a 09:00 UTC working window. On servers with TZ other than UTC, Gantts rebuilt after the upgrade may shift relative to previously stored dates. Existing stage dates are not rewritten.
  • Applying what-if shifts reschedules the Gantt from the new start date using the production calendar and stage dependencies. Holidays and weekends in the new window may move the end date by more or fewer days than the shift.
  • Editing stages or the start date updates stage rows in place. Actuals, ledger entries, tracker mappings and dependencies are kept.
  • GOST package document types are stored sorted. Versions of one calculation that differ only in document order now form a single review line.

Installation

Download evacal-0.8.0-deploy.tar.gz and its .sha256 file from this release, then:

sha256sum -c evacal-0.8.0-deploy.tar.gz.sha256
tar -xzf evacal-0.8.0-deploy.tar.gz
cd evacal-0.8.0-deploy
bash install.sh install --version 0.8.0

To upgrade an existing installation, run bash install.sh update --version 0.8.0 from the unpacked archive. Use --local for a loopback-only HTTP test installation. Linux Docker Engine and Compose v2 are required.

Images: ghcr.io/onixus/evacal:0.8.0 and ghcr.io/onixus/evacal-migrate:0.8.0. Both are released together for Linux amd64 and arm64.

Validation

The release commit's parent passed the local Jenkins pipeline on main: dependency audit, lint, format, typecheck, unit tests, GOST 34 verification and production build. Release publication builds both images from the tag, runs a Linux container smoke test before promoting version and latest tags, and produces a checksummed deployment archive.

Release verification results

  • Release commit: 88b382be05881540e3d50a78af4cc0e457757cab.
  • Linux Jenkins publication: evacal-publish #26 — SUCCESS on the SELinux-enforcing Fedora node gaming-amd64. Both runner and migrate built for linux/amd64 and linux/arm64; 79/79 deployment checks passed, 0 failed. Native amd64 runtime smoke covered migration rerun, non-root execution, writable storage and nginx HTTP/TLS.
  • Application manifest digest: sha256:ca1d7ee5e757bd152f621bfd2aeec94ac76b3e1fbf6c912225675fe27ec9156d (0.8.0 and latest).
  • Migration manifest digest: sha256:ef997832cadfa963e701a3e99009e803fb9e51d72d8ec9ea91b27f40c1afdc93 (0.8.0 and latest).
  • Deployment archive SHA-256: 6dafdd8a8fc690abc0ae7394b4956c458afc27b8aaca70baabef77bbf5e82b9f.