Commit Graph

86 Commits

Author SHA1 Message Date
Sacha Al Himdani
b603d04d8d Assets as document: replace snapshot with publish workflow
Remove assets from the snapshot system and replace with a publish-based
document workflow that generates versioned ProseMirror documents.

- Remove snapshot_id/source_id from asset and asset_vendor models
- Delete AssetFilter (no longer needed without snapshot filtering)
- Add PublishAssetList service, GraphQL mutation, MCP tool, CLI command,
  and n8n operation
- Add asset_list_document_id column to generated_documents table
- Generate ProseMirror documents with asset inventory tables
  (name, type, amount, data types stored, owner, vendors)
- Add AssetListDocument resolver on Organization type
- Update frontend to remove snapshot routes/params and add publish dialog
- Add e2e tests for asset publish (immediate, with approvers, reuse, RBAC)
- Add migration script for converting legacy asset snapshots to documents
- Exclude ASSETS from snapshot type lists and e2e snapshot tests
- Move generated_documents SQL to coredata methods on Datum and Asset
- Clear generated document and SOA references on soft delete and archive

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-21 19:36:17 +02:00
Alejandro Juan
da91afc2a7 Add CMMI maturity level to compliance controls
Adds an optional CMMI 0-5 maturity level field to Control to support
ISO 27001 clause 9.1 effectiveness measurement and HITRUST CSF maturity
requirements. The field is nullable, framework-agnostic, and exposed
across all four API surfaces (GraphQL, MCP, CLI, n8n) plus the
generated SoA document.

Signed-off-by: Alejandro Juan <alejandrojuan@alejandrojuan.com>
2026-04-21 11:06:36 +02:00
Sacha Al Himdani
55563226cb Data as document: replace snapshot with publish workflow
Mirror the SOA-to-document migration for the data list. Remove data
from the snapshot system and add a publish workflow that generates a
ProseMirror document for the full organization data inventory.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-20 14:44:00 +02:00
Sacha Al Himdani
c635492f75 SOA as document: replace export with publish workflow
Statements of Applicability are no longer exported as one-off PDFs.
Instead, each SOA owns a persistent document that accumulates versions
over time, following the same publish/approve lifecycle as authored
documents.

Publishing without approvers publishes immediately; publishing with
approvers creates a draft pending approval via the existing quorum
system. SOAs can also store default approvers that are pre-populated in
the publish dialog.

The SOA is removed from the snapshot system — applicability statements
are now queried directly (snapshot_id IS NULL) rather than through
snapshot copies.

A standalone migration script (cmd/migrate-soa-snapshots-to-documents)
converts existing SOA snapshots into documents with proper ProseMirror
content, preserving version history and approval decisions.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-16 00:01:13 +02:00
Sacha Al Himdani
5fd580e995 Rename State of Applicability to Statement of Applicability
Rename the entity across the full stack: database table
(states_of_applicability → statements_of_applicability), Go model,
GraphQL types, MCP specification, CLI commands, frontend components,
routes, and display labels. Includes a migration to rename the table
and its foreign key column.

Widen sidebar from 260px to 280px to fit the longer label.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-09 13:06:06 +02:00
Sacha Al Himdani
9a418a7711 Move document type from document to document version
Follow the same pattern used for classification: document type now lives
exclusively on DocumentVersion. A migration copies existing values from
documents to their versions. The document filter uses a subquery on the
latest version. All three API surfaces (GraphQL, MCP, CLI), resolvers,
frontend, and e2e tests are updated accordingly.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-02 16:32:38 +02:00
Bryan Frimin
a2f0a37b7b Add UNKNOWN and NOT_IMPLEMENTED measure states
Introduce two new measure states across the full stack: database
migration, Go coredata, GraphQL schema, MCP specification, and
frontend UI (labels, badge variants, and colors).

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-02 10:59:25 +02:00
Émile Ré
bd3869e0f0 Remove gif from allowed image types
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-03-31 19:05:46 +04:00
Émile Ré
687148e2c1 Unify dropzone accept prop with accept helpers
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-03-31 19:05:46 +04:00
Sacha Al Himdani
851e585b9b Add ISC license headers to Go, TypeScript, and SQL files
Add ISC license headers to all .go, .ts, .tsx, and .sql files
using each file's git history to determine the correct copyright
year or year range. Trademarked icons (brand logos, vendor logos,
compliance framework logos) are excluded.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-31 13:31:30 +02:00
Bryan Frimin
4f54241382 Add document types filtering and rename ISMS to GOVERNANCE
Adds 5 new document types (PLAN, REGISTER, RECORD, REPORT, TEMPLATE), renames ISMS to GOVERNANCE, and implements type-based filtering across GraphQL, MCP, and frontend. Includes migration, enum updates, filter implementation with SQL array support, and frontend dropdown UI with Relay refetch pattern.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 12:31:39 +01:00
Bryan Frimin
c8df8b0c87 Update TS types for nullable audit framework
The console GraphQL schema made Audit.framework nullable which
requires updating the TrustCenterDocumentAccess type and its
helper to handle the optional framework field.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-17 15:05:33 +01:00
Bryan Frimin
a82e353a47 Update shared helpers for findings
Add new finding statuses (RISK_ACCEPTED, MITIGATED, FALSE_POSITIVE)
to the registry status helper. Update snapshot type references to
use FINDINGS instead of NONCONFORMITIES and CONTINUAL_IMPROVEMENTS.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-17 15:05:33 +01:00
Sacha Al Himdani
fe241fc136 Add social links
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-11 12:10:57 +01:00
Sacha Al Himdani
66a7d6c3e8 Update vendor compliance report UI
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-11 10:28:39 +01:00
Émile Ré
a42fc4fa61 Reimplement remove / create in console
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:57 +04:00
Émile Ré
ad122f8b2e Rework the UI of vendor row on compliance page
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-04 18:38:48 +04:00
Émile Ré
baad2f8a34 Display URL host on compliance page organization sidebar ENG-53
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-28 09:40:03 +04:00
Bryan Frimin
e5c8d83219 Fix missing relay provider employee page
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:35:50 -08:00
Émile Ré
6a97be5d8e Replug custom domain setting
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2026-01-17 10:27:45 -08:00
Émile Ré
433c081d22 OrganizationsPage switch to MembershipCard and add membership session state
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2026-01-17 10:10:20 -08:00
Sacha Al Himdani
4ed3f5a067 Change state of applicability
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-01-16 22:56:00 +01:00
Sacha Al Himdani
9626e24370 Add right requests
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-01-15 16:40:17 +01:00
Sacha Al Himdani
6ab5ace353 Fix task display
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-01-09 15:47:13 +01:00
Sacha Al Himdani
91b42c6cd1 Add new gdpr registries
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-12-19 18:11:25 +01:00
Émile Ré
8c772661bf Use framework logo on console & trust
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-16 19:05:34 +01:00
Sacha Al Himdani
f77676c88c Add auditor role
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-12-12 14:58:32 +01:00
Émile Ré
421a4cebbd Clean active and requested
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-11 16:24:35 +01:00
Émile Ré
15b3493bc9 Fix merge and handle display of unpersisted trusct center document access status
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-11 16:24:35 +01:00
Émile Ré
eab3af5f26 Handle document list state + API payload
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-11 16:24:35 +01:00
Sacha Al Himdani
c355f1c307 Make employee role assignable
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-12-09 17:28:13 +01:00
Sacha Al Himdani
975d16c623 Add employee page
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-12-09 15:33:05 +01:00
Émile Ré
6462de597b Fix @probo/trust lint errors
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-04 17:27:48 +04:00
Émile Ré
57caa9d28f Move route utils to packages/routes
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-04 17:27:48 +04:00
Émile Ré
209a7e5983 Fix lint
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-02 18:40:38 +04:00
Émile Ré
e65097f248 Fix permissions handling with react context
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2025-12-02 18:40:38 +04:00
Jonathan
7e8222d9b5 Fix cubic review
Signed-off-by: Jonathan <contact@grafikart.fr>
2025-12-01 18:23:11 +04:00
Jonathan
218566505b Handle keyboard navigation
Signed-off-by: Jonathan <contact@grafikart.fr>
2025-12-01 18:23:11 +04:00
Sacha Al Himdani
21c4b7cd9d Add role management
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-11-13 17:11:22 +01:00
Sacha Al Himdani
9a33f7b771 Manage errors
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-10-31 15:14:56 +01:00
Bryan Frimin
c7cabf23de Add document classification
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-22 17:02:39 +02:00
Bryan Frimin
f26989c2fe Add EU as possible contry code for vendor
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-14 11:55:42 +02:00
Bryan Frimin
c4c4fda49f Support ID-based trust center URLs with slug fallback
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-13 23:23:08 +02:00
Bryan Frimin
0c4a7169df Add procedure document type
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-13 22:36:37 +02:00
Bryan Frimin
f808a90bba Remove criticity on assets
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-13 22:06:49 +02:00
Sacha Al Himdani
a7d129a41c Fix custom domain trust center design
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-10-10 15:38:59 +02:00
Sacha Al Himdani
8504830c4b Add public trust center documents
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-10-06 11:04:47 +02:00
Jonathan
55e85e5f67 Add trust center v2
Signed-off-by: Jonathan <contact@grafikart.fr>
2025-09-30 16:23:22 +02:00
Sacha Al Himdani
98d7e7b7b9 Update obligations
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-09-25 15:21:37 +02:00
Sacha Al Himdani
c56563a850 Add trust center references
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-09-24 15:53:10 +02:00