Commit Graph

1665 Commits

Author SHA1 Message Date
Bryan Frimin
63dffe801e Store full portal titles as home headings
The UI composed "Compliance at {{name}}." via i18n while the
DB only held the org name. Persist the full heading, backfill
existing rows, and drop the unused heroTitle locale keys.

Also use clientip.Extract for NDA signing events and default
the portal base domain to probopage.localhost for local runs.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:29 +02:00
Bryan Frimin
d0090e8c65 Use portal visibility fields in console lists
Stop aliasing compliancePortalVisibility to compliancePageVisibility in
document, file, and audit list items so the console matches the renamed
GraphQL field.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:28 +02:00
Bryan Frimin
0aec27adf5 Remove magic-link auth strings from portal locales
OAuth /initiate replaced magic-link sign-in, but eleven non-English
locale files still carried the old auth copy. Drop those keys so every
catalog matches en-US and fr-FR.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:27 +02:00
Bryan Frimin
3f6795001a Finish compliance portal rename leftovers across portal, trust, and n8n.
Update mailing list queries to currentCompliancePortal, and include regenerated console resolvers plus sorted n8n/frontend imports from the rename.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:27 +02:00
Bryan Frimin
d914cb9ac7 Rename portal and trust frontends
Update visitor-facing apps to Compliance Portal
types, hooks, and resolvers so they match the
backend GraphQL rename.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:26 +02:00
Bryan Frimin
53cc6c487e Update console for compliance portal
Point compliance-page screens and Relay graphs
at the renamed Compliance Portal API fields and
mutations.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:26 +02:00
Bryan Frimin
69a7c5fca7 Port data-request feature after main rebase
Main's new compliance-portal data-request pages (rights request
submission and listing) still referenced the sign-in dialog and
package names the earlier rebase's OAuth /initiate migration and
compliancepage -> complianceportal rename had already replaced.
Gate the "New Request" button behind OAuth like the rest of the
portal and point resolvers at the flattened visitor.Service methods.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:23 +02:00
Bryan Frimin
4b4e7ea1f8 Fix OAuth code exchange and go lint
Authorization-code exchange used ExternalClientID, which
is empty for registered clients and broke e2e token
grants. Pass the authenticated client's GID instead.

Also satisfy wsl_v5 blank-line rules, wire the delete
reference dialog through its mutation hook, and name the
filemanager logger.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:23 +02:00
Bryan Frimin
43ce3a7c53 Harden compliance portal auth and TLS
Align console references and OAuth branding with the
compliance-page model, and fix certificate cache eviction,
portal OAuth handlers, and magic-link edge cases left after
the trust-center rename.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:22 +02:00
Bryan Frimin
cb1d7c274b Unblock CI generate, test, and e2e
Generate MCP types before complianceportal, stub apps/trust
dist for embed, fix domains section indent, and start the
compose stack only after bin/probod is built.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:22 +02:00
Bryan Frimin
17d877a8bd Fix CI for compliance portal rename
Workflows still stubbed apps/trust/dist after the rename, so
go:embed and frontend builds failed. Also make step-ca writable
on Linux CI and fix domains section indent lint.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:22 +02:00
Bryan Frimin
caeb6d9225 Resolve custom domain SSL via certificate
Replace flattened SSL fields with a certificate
relation loaded through certmanager, and resolve
domain slots from IDs already on the trust center
instead of reloading the compliance page.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:21 +02:00
Bryan Frimin
bc128ec516 Port trust center features after main rebase
Move Emile's commitment CRUD into complianceportal management,
wire console and visitor GraphQL, and drop portal magic-link
sign-in in favor of OAuth /initiate while keeping documents,
NDA/full-name gates, and access-request resume markers.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:21 +02:00
Bryan Frimin
89f999d55c Restore TrustCenter reference hooks in console
Keep GraphQL-aligned TrustCenterReferenceGraph naming, drop the
unused domain redirect route, and tighten related compliance
page UI review nits around magic-link navigation and links.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:18 +02:00
Bryan Frimin
36bc636a08 Unify console sign-in for connect authorize
Remove the separate portal login page, show OAuth client branding on
sign-in, and preserve authorize continue URLs across auth methods.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:18 +02:00
Bryan Frimin
27e012e47a Point compliance portal frontend at portal OAuth API
Update Relay schema paths and HTTP endpoints so the portal app
talks to the compliance portal GraphQL and OAuth routes.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:14 +02:00
Bryan Frimin
ee3ce94a73 Add console portal login and magic-link error pages
Surface dedicated routes when a portal magic link is expired or
already used, and add the portal login entry point in console.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:14 +02:00
Bryan Frimin
2fd0fbe3d7 Replace trust magic-link flow with OAuth connect
Redirect visitors through the compliance portal OAuth initiate
endpoint and remove the verify-magic-link page and routes.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:14 +02:00
Bryan Frimin
ba53c94bdc Move trust center profile onto the page
Store website, email, and headquarters on the trust center so
public and admin surfaces read branding from one place. Drop the
trust API organization type and wire console, MCP, CLI, and apps
through the updated schema.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:10 +02:00
Bryan Frimin
ec80798243 Update public apps for dedicated host routing
Stop relying on the /trust/{id} path prefix in the public trust app and
serve it from the host root, reading contact and profile data from the
trust center instead of the organization. Mirror the same fragment
ownership change in the compliance portal hero.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:10 +02:00
Bryan Frimin
de367f032f Restructure console brand and overview pages
Decompose the brand page into profile, domains, visual identity, and
custom link sections, and move frameworks and the NDA card onto the
overview page as dedicated fragment components. Remove the standalone
domain page and redirect its route to brand, where domains now live.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:09 +02:00
Bryan Frimin
db24d17455 Add console useMutation and rename compliance graphs
Introduce the app-bound useMutation primitive and rename the trust center
graph and reference hooks to compliance page, moving the shared reference
dialogs alongside them. Sweep the compliance page subpages onto the new
mutation hook and the compliance-portal permission strings, and strip the
profile fields from the organization settings form.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-21 15:44:09 +02:00
Cursor Agent
a3fac4f543 Add rights requests to webhooks
Emit lifecycle events for rights requests created through either the
console or compliance portal. Keep webhook subscription choices in sync
across every API and client surface.

Signed-off-by: Cursor Agent <cursoragent@cursor.com>

Co-authored-by: Sacha Al Himdani <SachaProbo@users.noreply.github.com>
Signed-off-by: Cursor Agent <cursoragent@cursor.com>
2026-07-21 13:24:23 +02:00
Émile Ré
854b405979 Align PDF preview with header content
Size desktop pages to HeaderBand's max-w-5xl column so
they line up with the title and toolbar. Mobile gutter is
unchanged.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 19:37:46 +02:00
Émile Ré
f62cb82387 Match PDF desktop gutter to hero padding
Fit-to-width at 100% used a phone-sized inset on all
viewports. Use the HeaderBand px-8 gutter on desktop so
the page aligns with the hero; keep mobile unchanged.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 19:37:46 +02:00
Émile Ré
895f484cf2 Update translation
Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 19:37:46 +02:00
Émile Ré
e7e33b9d99 Match list skeletons to the card surface
ListItemSkeleton reused a sand-2 fill that read as a
different card; use the real row shell with pulse bars
instead, and shrink the updates skeleton to five rows.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 19:37:46 +02:00
Émile Ré
311639ae98 Add z-index scale and overview redirect
Introduce a v2 z-1…z-6 stacking scale so portaled
menus sit above in-page media, and redirect the
legacy /overview trust-app URL to home.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 19:37:46 +02:00
Émile Ré
26595b724f Serve compliance-portal instead of trust
Embed and build @probo/compliance-portal for the
/trust path and custom-domain SPA so production
ships the v2 portal. Keep apps/trust in the repo
for local use on port 5175; portal takes 5174.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 17:38:45 +02:00
Cursor Agent
70d0424022 Rename document approval button to Approve
The previous label implied review plus approval, but the action only
approves. Update the consent text to match the new button wording.

Signed-off-by: Cursor Agent <cursoragent@cursor.com>

Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
2026-07-20 17:27:12 +02:00
Émile Ré
07645e6251 Fix document row a11y and PDF page sync
Expose pending access status to assistive tech on
mobile rows, and recompute the visible PDF page
after fit-to-width reflow without writing refs
during render.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 17:07:51 +02:00
Émile Ré
d047f1b323 Extract Base UI Drawer into the v2 kit
Promote the portal burger shell into a reusable
Drawer matching Dialog (thin Base UI + tv slots).
TopBarMobileNav now composes the kit parts.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 16:47:47 +02:00
Émile Ré
ea8377a0cc Localize TopBar menu strings for all locales
The responsive burger drawer added openMenu, closeMenu,
and menuTitle only in en-US and fr-FR. Mirror those keys
across the remaining compliance-portal catalogs.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 16:41:54 +02:00
Émile Ré
89b780c6aa Make compliance portal layout responsive
Add a burger drawer below md, fix document-flow
scrolling so PoweredBy sits after content, and
collapse home grids, list rows, toolbars, and
dialogs for smaller viewports. PDF viewer fits
width; updates skeleton mirrors stacked meta.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 16:39:46 +02:00
Émile Ré
9291cee2a0 Localize subscribe strings for new portal locales
Fill in user-menu and subscribe-dialog copy for the
locales added on main so missing keys do not fall back.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 15:54:35 +02:00
Émile Ré
e9542bc1a5 Harden subscribe resume and sign-out paths
Address PR review: avoid reintroducing cleared URL markers,
treat already-closed sessions as successful logout, and stop
stale subscribe/sign-out completions from racing the UI.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 15:52:10 +02:00
Émile Ré
855a486790 Wire subscribe-to-updates in compliance portal
Visitors can subscribe after sign-in via the Updates
CTA or user menu. Also add trust signOut so Log out
works from the menu.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-20 15:52:10 +02:00
Bryan Frimin
8d95c1d59a Add Simplified Chinese (zh-CN) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:40 +02:00
Bryan Frimin
dbcb47bd8f Add Ukrainian (uk-UA) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:40 +02:00
Bryan Frimin
cc7a5ce3e6 Add Turkish (tr-TR) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:39 +02:00
Bryan Frimin
97e34cabdd Add Portuguese (pt-PT) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:39 +02:00
Bryan Frimin
80bb03cee4 Add Polish (pl-PL) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:39 +02:00
Bryan Frimin
b49c64b180 Add Korean (ko-KR) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:38 +02:00
Bryan Frimin
fa9603d52e Add Japanese (ja-JP) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:38 +02:00
Bryan Frimin
720dc49be3 Add Italian (it-IT) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:38 +02:00
Bryan Frimin
f081c8fe70 Add Indonesian (id-ID) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:37 +02:00
Bryan Frimin
1774d29591 Add Spanish (es-ES) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:27 +02:00
Bryan Frimin
6ff2cf9946 Add German (de-DE) translation for compliance portal
Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:27 +02:00
Bryan Frimin
c61ff9721e Register eleven new compliance-portal locales
Add German, Spanish, Indonesian, Italian, Japanese, Korean, Polish,
Portuguese, Turkish, Ukrainian, and Simplified Chinese to
SUPPORTED_LANGUAGES, and map each one's browser language-tag prefix to
its canonical locale in resolveLanguage() so i18next can be asked to
load it. Catalog JSON for these locales lands in the following
commits.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:15 +02:00
Bryan Frimin
177a5d0361 Rename trust center wording to compliance portal in copy
The English and French compliance-portal strings referred to "trust
center" in a few spots (back-navigation link, empty states) while the
rest of the app already calls this surface the "compliance portal".
Standardize on that term everywhere it appears in copy, and rename the
backing i18n key (backToTrustCenter -> backToCompliancePortal) to
match. Also fixes two spots where the French translation had left
"Compliance Portal" and "trust center" untranslated in English.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-07-20 15:48:02 +02:00