Commit Graph
4 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås 2af41c4dbd Join labs from https invite links
Parse https invite links (luma.frida.re/l/<code>) alongside the
luma:// scheme and route them to the join queue. On iOS deliver
universal links via NSUserActivity and open a project from the
welcome screen so the queue is consumed. Add the
associated-domains entitlement on iOS and macOS.
2026-06-25 13:18:09 +02:00
Ole André Vadla Ravnås 93ff0a5005 luma-gtk: Mint tokens and hand off to the browser
LumaCore exposes requestPushEnrollmentToken() on
CollaborationSession — a thin request/response wrapper around
.create on /users/<id>/push_enrollment_tokens — and Engine
wraps it with webPushEnrollmentURL() that folds the returned
token plus VAPID public key into
https://luma.frida.re/push-enroll#token=…&vapid=… .

The GTK collaboration panel grows an "Enable notifications"
button next to the Participants heading that mints a ticket
and hands the URL to the system browser via UriLauncher. The
Mac app deliberately skips this — it will register APNs
natively (next pass) rather than farm push out to Safari.
2026-04-20 00:42:37 +02:00
Ole André Vadla Ravnås 58f7fd446b Move to portal.luma.frida.re:27042
Point BackendConfig at portal.luma.frida.re:27042 and ship the
matching self-signed Ed25519 cert (LumaPortal.pem) as the only
trust anchor. The Let's Encrypt root (ISRG Root X1) is removed
along with the CA-based trust model.

Invite links now use https://luma.frida.re/l/<roomID> — the
portal server renders an HTML landing page for those paths so
shared links have a preview. The URL prefix lives in
BackendConfig so it only needs updating in one place.

The portal server uses the same cert on both control (for this
client) and cluster (for frida-join) endpoints, so the app never
trusts anything else for the portal and we're off the 90-day LE
renewal treadmill.
2026-04-18 01:48:03 +02:00
Ole André Vadla Ravnås 875a19cfc2 Delete Workspace+Collaboration
CollaborationSession is now @Observable. Views read its
state directly via workspace.engine.collaboration. The
notebook entry methods live on Engine. The portal cert
is a LumaCore SwiftPM resource via Bundle.module.

Workspace keeps only the auth-flow glue (showing the
sign-in sheet, signOut clearing UI state) and the deep
link join handler.
2026-04-07 07:47:39 +02:00