Commit Graph

394 Commits

Author SHA1 Message Date
Sacha Al Himdani
58c2415275 Align risk severity across views
Use the shared getSeverity helper from @probo/helpers in SeverityBadge
so the list view displays the same labels (Low/High/Critical) and
thresholds (0/5/15) as the detail view. Also fix the RisksChart legend
and getLevel thresholds to match.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-14 16:52:19 +02:00
Émile Ré
74d7d3ff25 Upgrade Relay to v20.1.1 and unify compiler config
Consolidate the two per-app relay configs (console and trust)
into a single multi-project relay.config.json at the repo root
with three projects: core, iam, and trust. Bump all relay
packages from v19 to v20.1.1 and move relay-compiler to the
root devDependencies. Replace per-workspace relay scripts with
a single root-level npm run relay command and update the
GNUmakefile, CI workflows, and docs accordingly.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-14 16:04:11 +04:00
Sacha Al Himdani
d40b114f0f Add document resource to n8n node and MCP sendSigningNotifications tool
Add a complete document resource to the n8n node with 21 operations
covering documents, versions, and signatures — matching the MCP
specification. Also add the sendSigningNotifications tool to the MCP
API for triggering pending signature reminders.

n8n operations: create, get, getAll, update, delete, archive,
unarchive, getVersion, getAllVersions, createDraftVersion,
updateVersion, deleteDraftVersion, publishMajorVersion,
publishMinorVersion, requestApproval, voidApproval, getSignature,
getAllSignatures, requestSignature, cancelSignature,
sendSigningNotifications.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-13 17:31:06 +02:00
Sacha Al Himdani
ab5f42ad74 Redesign document approval flow
Replace the per-approver add/remove model with a quorum-based approval
system. Documents now have default approvers that are pre-populated when
requesting approval, and the publish dialog lets users adjust the list
before submitting.

Key changes:

- Add PENDING_APPROVAL document version status with dedicated transitions
- Introduce approval quorums with request/approve/reject/void lifecycle
- Add default approvers per document (stored in document_default_approvers)
  with MERGE-based upsert for efficient sync
- Add NoDuplicates validator for slice fields
- Split ALTER TYPE ADD VALUE migrations into separate files (required by
  PostgreSQL when run inside transactions)
- Use VOIDED consistently for both quorum status and decision state enums
- Expose void/approve/reject through GraphQL and MCP, with e2e tests
- Add approval management UI: publish dialog with approver selection,
  approval list with void support, and external approve/reject page

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-09 18:18:30 +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
Émile Ré
16d4e462c8 Add list keymaps to handle backspaces
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 17:13:33 +04:00
Émile Ré
0f674d1980 Better handle list transformation
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 17:13:33 +04:00
dependabot[bot]
f4a7eb1a16 Bump vite from 7.3.1 to 7.3.2
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.3.1 to 7.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.2
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-07 11:17:05 +00:00
Émile Ré
9b473b27c2 Fix invisible drag line on Safari
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 19:18:09 +04:00
Émile Ré
e4dbf9e2bb Remove --max-warnings from lint scripts
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 13:33:51 +04:00
Émile Ré
d82ff8267e Revert change to allow for relative links
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:21:47 +04:00
Émile Ré
9ebb86ab37 Review fixes
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:11:48 +04:00
Émile Ré
b9d7beb22c Change import for bullet list in rich editor
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:07:35 +04:00
Émile Ré
5359fe9931 Update rich editor style to be lighter and closer to printed doc
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:02:42 +04:00
Émile Ré
6d1a7c846d Add bottom padding to rich editor
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:02:42 +04:00
Émile Ré
f2c39d1741 Update markdown detection to avoid regex
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:02:42 +04:00
Émile Ré
0ac3fd1f75 Handle html in markdown during conversion to prosemirror nodes
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:02:42 +04:00
Émile Ré
2a6845d884 Reimplement ts converter using marked parser
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:02:42 +04:00
Émile Ré
a850b0f77c Move markdown to prosemirror parser in packages
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:02:41 +04:00
Émile Ré
3561a6e0b7 Implement markdown parsing for copy paste
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 17:02:41 +04:00
Sacha Al Himdani
8adf26ad20 Add in-progress state to tasks
Introduce IN_PROGRESS as a new task state between TODO and DONE across
the full stack: database enum, Go backend, GraphQL, MCP, and frontend.

The task state icon now cycles forward on click (TODO → IN_PROGRESS →
DONE → TODO), and the action dropdown provides explicit "Move to"
options for any state transition. The "All" tab supports drag-and-drop
between state sections to change a task's state.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-03 08:33:37 +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
Aurélien Sibiril
b396359162 Add access review frontend
Add campaign and source management pages with detail
views, bulk decision and flag controls, connector
provider dialog with OAuth/API-key/client-credentials
flows, vendor logos, shared helpers, and campaign
lifecycle UX (start, complete, cancel).

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
2026-04-02 14:37:29 +02:00
Sacha Al Himdani
324f4ce793 Add task priority enum and rename priority to rank
The existing integer priority field represents positional ordering
within a state, not semantic importance. Rename it to rank and
introduce a new priority field with enum values URGENT, HIGH,
MEDIUM and LOW across the entire stack.

Rank is now scoped to (state, priority) so tasks are ordered
within each priority group. A generated priority_rank column
combines both fields into a single sortable integer for cursor
pagination.

Dragging a task across priority groups updates its priority
automatically based on the drop position neighbors. The backend
first moves the task to the new group then repositions it at the
target rank.

The migration defaults existing rows to MEDIUM priority and
backfills ranks per (state, priority) group.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-04-02 13:35:39 +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é
821f66cc20 Review fixes
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 19:53:25 +04:00
Émile Ré
aac4d9d12e Fix mermaid rounded corners in edit mode
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:04:37 +04:00
Émile Ré
84adb5409d Make mermaid toolbar invisible in preview mode
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:04:36 +04:00
Émile Ré
9bbcba68c0 Add mermaid tiptap extension
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:04:36 +04:00
Émile Ré
8a25ca27b6 Do not display editor block placeholder when disabled
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:04:36 +04:00
Émile Ré
3d1d794a84 Fix first rendering save
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:04:36 +04:00
Émile Ré
d73263f7e8 Handle disabled editor after version publishing
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:04:35 +04:00
Émile Ré
37e17c370f Support all headings in tiptap
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:26 +04:00
Émile Ré
0a0b01fa05 Fix menu shadows
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:24 +04:00
Émile Ré
96168cbfb0 Fix listeners cleaning on unmount
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:24 +04:00
Émile Ré
f3b0842206 Fix bubble menu positioning when scrolling
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:23 +04:00
Émile Ré
62d13a1539 Handle table selection style with an overlay element
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:23 +04:00
Émile Ré
cc93378996 Split menu components for better responsibility handling
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:23 +04:00
Émile Ré
0b02171e4a Fix link menu z-index
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:23 +04:00
Émile Ré
7897871659 Refactor actions using builtin editor methods
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:23 +04:00
Émile Ré
cf5ffc319a Fix review
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:23 +04:00
Émile Ré
aef0da4c52 Refactor duplicated code
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:22 +04:00
Émile Ré
48fbca6b04 Add split cells action
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:22 +04:00
Émile Ré
935e650991 Fix style of the drop cursor
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:22 +04:00
Émile Ré
525f1e4473 Fix lit item paragraph must be full size
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:21 +04:00
Émile Ré
d0592df676 Ensure caret is always visible
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:21 +04:00
Émile Ré
67273fe1b6 Fix table dragging
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:21 +04:00
Émile Ré
48206cbc36 Add header row / column option
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:21 +04:00
Émile Ré
4840dd510d Select all column / row cells on menu trigger click
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:21 +04:00
Émile Ré
d75edca6b1 Add TableRowMenu
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:21 +04:00