Agenda en planning
Control Center maakt verbinding met Google Calendar, zodat je dag naast je fleet staat. Het synchroniseert je afspraken, toont ze in de weergaven maand, week, dag en agenda, waarschuwt je voordat een vergadering begint en maakt van elke afspraak een opgenomen, samengevatte vergadering.
Wat het in Google verandert
Sectie getiteld “Wat het in Google verandert”Bijna niets. De integratie haalt afspraken op en toont ze. Hij maakt, bewerkt of
verwijdert geen afspraken en reageert niet op uitnodigingen. Elke
device-codeverbinding, ingebouwd of met je eigen client, vraagt
calendar.readonly plus openid email aan.
Afspraken worden gesynchroniseerd naar de eigen database van de werkruimte op
de server (<dataDir>/<workspaceId>/workspace.db) en door elke client via RPC
getoond. Geen enkele client bewaart een Google-referentie.
Accounts per werkruimte
Sectie getiteld “Accounts per werkruimte”Agenda-accounts horen bij een werkruimte, net als alles in Control Center. Elke werkruimte verbindt zijn eigen Google-account (of meerdere), en de afspraken en tokens van de ene werkruimte zijn nooit zichtbaar vanuit een andere. Wissel je van werkruimte, dan wisselen ook de agenda’s die je ziet.
Een werkruimte kan meerdere Google-accounts verbinden, bijvoorbeeld een werkaccount en een privéaccount, en hun afspraken worden in dezelfde weergaven samengevoegd.
Waarom aanmelden via een device-code verloopt
Sectie getiteld “Waarom aanmelden via een device-code verloopt”De headless cc_server heeft geen browser om een OAuth-redirect op te vangen.
Daarom gebruikt hij er ook geen: hij autoriseert met de
device-codetoekenning (RFC 8628). De server toont een korte gebruikerscode en
een Google-URL, jij keurt goed op een willekeurig apparaat met een browser en de
server blijft pollen tot je dat doet. Een headless installatie kan juist een
account verbinden omdat er geen redirect-endpoint te hosten is.
Wat je moet weten voordat je je eigen referenties meeneemt: het clienttype moet
het “TV and Limited Input devices” van Google zijn. Google kent aan dat
clienttype alleen een toegestane lijst met scopes toe, en een project waarin
Calendar daarvoor niet is toegestaan mislukt met invalid_scope — dan heb je een
loopback- of webclient nodig.
Tokens verlaten de server nooit. Ze worden weggeschreven naar secrets.json van
de server in zijn gegevensmap, met de sleutel
google_google:<workspaceId>:<email>, naast de databases en binnen dezelfde
vertrouwensgrens van het hostbestandssysteem. De server vernieuwt de toegang
automatisch en publiceert CalendarAuthExpired wanneer Google een account
permanent ongeldig maakt (een ingetrokken of lang verlopen sessie); in plaats van
stil te falen toont hij dan een banner Opnieuw verbinden.
Een build vanaf de broncode bevat geen enkele Google-referentie — je levert
je eigen client-id en secret aan. Officiële releasebuilds bevatten een
niet-vertrouwelijke device-codeclient, zodat de verbindingsflow meteen werkt; de
server bewaart alleen een markering die ernaar verwijst, nooit een kopie.
GOOGLE_OAUTH_CLIENT_ID (en het bijbehorende secret) in de omgeving heeft altijd
voorrang op het ingebouwde paar. Er is bewust geen --google-client-id-flag:
onbekende flags worden genegeerd, en een secret op een commandoregel is leesbaar
via ps.
Zie Een Google Calendar verbinden als je je eigen Google-project wilt draaien.
Synchronisatie
Sectie getiteld “Synchronisatie”De server haalt een rollend venster op van de afspraken van elk verbonden account — elke agenda van het account, niet alleen de primaire — elke twee minuten, en verder op verzoek (start, verbinden, handmatig verversen). Dat korte interval kost weinig omdat de ronde incrementeel is: elke agenda heeft zijn eigen synctoken, zodat een ongewijzigde agenda één vrijwel leeg antwoord kost in plaats van het opnieuw ophalen van een venster van vijf maanden.
Terugkerende afspraken worden aan de serverkant uitgevouwen, zodat geen enkele client ooit een herhalingsregel parseert. Navigeer je naar een maand buiten het huidige venster, dan wordt dat bereik pas op dat moment geladen. Verwijderde afspraken of afspraken die buiten het bereik zijn geraakt, worden bij de volgende synchronisatie opgeruimd.
Weergaven
Sectie getiteld “Weergaven”| Weergave | Wat het toont |
|---|---|
| Maand | Een volledig maandrooster (mogelijk gemaakt door het pakket kalender) |
| Week | De afspraken met tijdstip van één week in een tijdraster |
| Dag | De afspraken met tijdstip van één dag in een tijdraster |
| Agenda | Een doorloopbare lijst met aankomende afspraken |
Open de agenda op /calendar; als je een afspraak selecteert, opent de
detailweergave op /calendar/:eventId. De weergave die je kiest, wordt opgeslagen
in de eigen voorkeuren van die client en volgt je dus niet naar een ander
apparaat.
Meldingen voor vergaderingen
Sectie getiteld “Meldingen voor vergaderingen”Een planner die elke minuut draait, zoekt naar afspraken die binnen een
instelbaar voorloopvenster beginnen en stuurt dan een melding “Vergadering
begint zo” (een MeetingStartingSoon
domeingebeurtenis). De
melding bevat de deelname-URL als die er is, en als je erop klikt, opent de
detailweergave van de afspraak. Meldingen worden ontdubbeld aan de hand van
alertedAt van de afspraak, zodat dezelfde vergadering nooit twee keer meldt;
ook een afspraak waarvan het begintijdstip voorbijging terwijl de app dicht was,
wordt nooit opnieuw afgespeeld.
Twee beperkingen waar je snel over struikelt. De planner draait aan de clientkant op de desktop en alleen voor de werkruimte die je op dat moment open hebt — een werkruimte waarin je niet zit, geeft geen melding. En de webbuild heeft helemaal geen pijplijn voor OS-meldingen, dus daar komt ook niets vandaan.
Opnemen en koppelen
Sectie getiteld “Opnemen en koppelen”Vanuit een agenda-afspraak kun je een vergaderopname starten, voorgevuld met de titel van de afspraak. Control Center bewaart een een-op-eenkoppeling tussen de opname en de afspraak, zodat de notities van de vergadering en de agenda-afspraak met elkaar verbonden blijven zonder dat het ene onderdeel van het andere afhankelijk is.
Opnemen en koppelen is alleen op de desktop beschikbaar. In de webclient meldt de actie dat opnemen niet beschikbaar is — ook al werkt de opnameflow op het vergaderingscherm zelf wél in de browser.
Zie ook
Sectie getiteld “Zie ook”- Vergaderingen en transcriptie: wat er gebeurt nadat je een opname start
- Werkruimtes en isolatie: waarom agenda-accounts per werkruimte gelden
- Domeingebeurtenissen:
MeetingStartingSoonenCalendarAuthExpired - Een Google Calendar verbinden
- Een vergadering opnemen en samenvatten