v0.10.0 — first public release
Changelog
All notable changes to TrustedOSS Portal are documented in this file.
The format follows Keep a Changelog,
and the project adheres to Semantic Versioning.
[0.10.0] — 2026-05-31
First public release of TrustedOSS Portal.
Scope
A self-hosted, Apache-2.0 SCA portal covering vulnerability tracking,
license compliance, SBOM generation, and CI/CD integration in one UI.
Highlights
Scanning
- Source scans —
cdxgengenerates a CycloneDX SBOM across 30+ language
ecosystems; Trivy correlates components against its unified vulnerability DB
(NVD + OSV + GitHub Advisory + EPSS + KEV). - Container scans — Trivy on OS packages of an image reference.
- Vulnerability re-detection — weekly Trivy DB refresh + a Celery beat
re-matches existing SBOMs against the refreshed feed, with notification
channels firing on new criticals. - Air-gapped support —
TRIVY_DB_REPOSITORYcan point at a private OCI
mirror of the Trivy DB. - Scan retention — results are keyed by project ref so each ref keeps its
latest scan + findings (superseded scans retired automatically, a beat
reclaims orphans, and manualDELETEis available) — no unbounded growth.
Compliance
- License classification — allowed / conditional / forbidden tiers,
scored against a fixed catalog. - Obligations — auto-generated
NOTICEfiles (text / markdown / HTML). - Component approval workflow — Pending → Under Review → Approved / Rejected.
- VEX — export and consumption (OpenVEX + CycloneDX VEX), 7-state triage.
- SBOM export — CycloneDX (JSON/XML) and SPDX (JSON/Tag-Value), byte-stable,
with per-component license and version fields populated. - Forbidden-license waivers — time-boxed waivers from the Compliance tab,
capped byLICENSE_WAIVE_MAX_DAYSso a waiver cannot outlive its review.
CI/CD
- GitHub Actions composite action (
actions/scan/) — trigger a scan and
gate the build on Critical CVEs or forbidden licenses (exit 1). - GitHub & GitLab webhooks — auto-trigger scans on push / PR events with
inline PR/MR comments. - REST API + API Keys — for Jenkins and other CI systems without a native
integration; a Jenkinsfile example is shipped. - EPSS prioritization — column, sort, filter, and a policy-gate threshold
(GATE_EPSS_THRESHOLD). - API key expiry presets — pick a TTL when minting a key from the
Integrations form; keys carry an explicit expiry. - Self-scan hardened via dogfooding — running our own scan-action against
this repo surfaced and fixed an API-key scope rejection on trigger/poll
(401) and a disjunctive-ORlicense misclassification.
Operations
- Multi-tenant teams + RBAC —
super_admin/team_admin/developer. - Append-only audit log — every write surfaced with diff + actor; SQL-level
immutability via aplpgsqltrigger. - Notifications — email (SMTP), Slack, Microsoft Teams.
- Admin UI — user/team management, Trivy DB monitoring + weekly refresh,
scan queue, disk dashboard, audit-log search/filter/CSV export. - Backups — daily auto-backup via Celery beat + manual backup/restore from
the Admin UI. - Self-hosted demo mode —
DEMO_READ_ONLY=truemakes the deploy read-only.
Experience
- EN + KO i18n — every UI string and every documentation page is shipped
in both languages from the first public release. - Modern enterprise design system — light theme, WCAG AA contrast,
compact 40 px tables, drawer + page navigation dual surfaces. - Filter URL persistence — every filter facet (severity, license category,
search, status, page) lives in the URL so reload / share / back-button
restores the exact view. - Global ⌘K palette — keyboard-first navigation across projects, vulns,
components, and admin surfaces. - Portfolio Dashboard — KPI cards + severity / license distribution +
recent scans / activity, on/. - Collapsible sidebar + responsive shell — the sidebar toggles to a 64 px
icon rail (persisted) and collapses to a hamburger drawer belowlg.
Distribution
- Docker Compose (dev + prod with Traefik + Let's Encrypt).
- Helm chart (
charts/trustedoss) — bundled-or-external PostgreSQL &
Redis, Ingress with cert-manager TLS, migration Job. - Hosted OpenAPI reference at
/reference/apion the docs site. /health/ready— schema-gated readiness probe;503until the Alembic
schema is at HEAD.- Chart image tags pinned to the release —
image.tagdefaults track
appVersion(0.10.0) so a defaulthelm installpulls matching images.
Quality
- Documentation UAT harness — the user/admin/CI guides are exercised
end-to-end ("does it work as written?") with 38 auto-executed assertions
across 23 enrolled docs, run nightly. - CI gates re-enabled — SAST (Semgrep / Bandit), the Playwright e2e matrix,
and supply-chain self-scan run on every change or nightly, withmain
branch protection enforcing the required checks.