Connections

Microsoft Outlook Mail, Calendar and Teams. Tokens are encrypted server-side; the browser never sees them. Sync is bounded and pull-based.

Setup required
Checking…

Azure app registration

  1. Open Entra admin center → App registrations → New registration.
  2. Add a Web redirect URI matching MICROSOFT_REDIRECT_URI, e.g. https://your-app/api/public/microsoft/oauth/callback.
  3. Under Certificates & secrets, create a client secret and copy the value.
  4. Under API permissions, add delegated Microsoft Graph scopes (listed below) and grant consent.

Secrets — Project Settings → Secrets

  • MICROSOFT_TENANT_ID

    Directory (tenant) ID from Entra ID → App registration.

  • MICROSOFT_CLIENT_ID

    Application (client) ID from the same registration.

  • MICROSOFT_CLIENT_SECRET

    Client secret value (generated under Certificates & secrets).

  • MICROSOFT_REDIRECT_URI

    Must exactly match the Web redirect URI on the app registration (e.g. https://your-app/api/public/microsoft/oauth/callback).

  • MICROSOFT_TOKEN_ENCRYPTION_KEY

    32-byte AES key in base64. Generate with `openssl rand -base64 32`. Used to encrypt tokens at rest.

Database (Lovable Cloud)

  • SUPABASE_URL

    Provided by Lovable Cloud.

  • SUPABASE_SERVICE_ROLE_KEY

    Server-only. Never exposed to the browser.

Database is available. Encrypted-token schema is deployed.

Blade Audio
Not connected

Not connected. When it is, Mission Control can speak a briefing instead of making you read one.

  • Spoken Today briefings
  • Decision readouts
  • Important outcome cues

Audio stays opt-in and off by default. Text remains the primary surface — nothing will ever be spoken that you cannot also read.

Audio Operations

Foundation ready, playback not connected.

Wave 1 — Decide faster

Command Briefing
Foundation ready

Hear the same recap that is already on screen, spoken once, only when the owner asks for it.

Where: Today, decision detail, outcome detail

Guard: Speech is always click-to-play and never contains anything the screen does not already show.

Outcome Cues
Foundation ready

A short fixed sound after a decision or outcome actually changes, so the result registers without re-reading the screen.

Where: Approvals, outcomes

Guard: Five fixed cues only, resolved server-side; a cue can never carry information that is not also written on screen.

Wave 2 — Capture and follow

Voice Update
Planned

An authenticated adult speaks a short update; the words arrive as editable text in the existing form, reviewed before anything is saved.

Where: Record Update form

Guard: Transcription only, never auto-submitted, and the recording is not retained by default.

Synchronized Briefing
Planned

Follow the spoken briefing with the matching words highlighted, so listening and reading stay in step.

Where: Command Briefing playback

Guard: Timing data only decorates text that was already approved; it can never introduce new words.

Wave 3 — Reach and experiment

Multilingual Briefing
Planned

The same briefing in another language, produced in advance rather than live.

Where: Today briefing

Guard: The original text and transcript are always kept and shown, so a translation is never the only record.

Radio Update
Planned

A rare five-to-twelve second spoken alert when something genuinely blocks the owner.

Where: Owner-blocking changes only

Guard: Opt-in, rare by design, and only ever repeats text the owner can already read.

Situation Room
Experimental

A held-button voice mode for working through a queue out loud, read-only until something is explicitly confirmed on screen.

Where: Bounded review session

Guard: Push-to-talk only, never listening in the background, and no irreversible action can be triggered by voice.

Nothing here plays yet. Your saved preferences below are kept, and stay off until playback is connected and you switch them on.

Short fixed sounds for a handful of decisions and outcomes.

Lets a briefing be spoken when you click play. Never on its own.

Text stays the primary surface — nothing is ever spoken that you cannot also read. Speech is always click-to-play. When the Blade audio connection is ready, automatic fixed cues will still require both this opt-in and a prior interaction on the page, so nothing can make a sound on a page you have only just opened.