Get the Google Cloud project out of "Testing" mode so Meridian works for non-test users without the 7-day token tax.
Why it matters
- Refresh tokens stop expiring after 7 days. This is the main pain. Note: the 7-day expiry is a property of Testing publishing status specifically — publishing to Production removes it even without verification (source). The re-auth UI exists as a workaround but it's a tax on every user.
- "Unverified app" warning goes away (only with full verification).
- Required before any non-test-user can use Meridian at scale.
Scope classification — CONFIRMED sensitive, not restricted
Google's canonical restricted-scopes list (support.google.com/cloud/answer/13464325) contains only Gmail, Drive, Fit, Chat, Data Portability, Photos Ambient, Health.
Calendar and Tasks are not on it — calendar, calendar.readonly, and all tasks scopes are sensitive, never restricted. Read-vs-write is a separate axis; full read-write calendar is still only sensitive.
➡️ CASA / third-party security assessment does NOT apply to us, ever. Verification is paperwork + a demo video, at $0.
Options (all $0, except a possible ~$10/yr domain for verification)
| Path |
Verification |
CASA |
User limit |
7-day expiry |
Notes |
| Stay in Testing (current) |
no |
no |
100 test users |
present |
status quo |
| Production, unverified |
no |
no |
100 / project lifetime, no reset (src) |
gone |
"unverified app" screen on first login |
| Production, verified |
yes |
no |
none |
gone |
clean public release |
| BYO client_id (user makes own Cloud project) |
not needed |
no |
none |
gone |
needs a setup wizard; most "in-spirit" for OSS |
Process for full verification (clean public-release path)
- OAuth consent screen filled completely: app name, logo, support + developer emails.
- App homepage describing the app (github.io works).
- Privacy policy hosted page — must include the Limited Use disclosure referencing the Google API Services User Data Policy. Our offline / no-backend design makes this short and honest (data stays in
%APPDATA%\Meridian, nothing sent anywhere).
- Domain verification in Search Console under the project-owning account. ⚠️ Only real snag:
*.github.io is GitHub's domain — we generally can't verify ownership. Likely need a cheap custom domain (~$10/yr) CNAME'd to Pages just for this.
- Demo video (YouTube): show the consent screen with client ID/URL visible + how each scope is used in-app.
- Scope justification text for each scope.
- Submit; expect weeks of back-and-forth — track here.
⚠️ Code currently requests readonly, not read-write
Meridian/Auth/GoogleOAuthClient.cs currently requests calendar.readonly + tasks.readonly + email + profile. If we want create/edit, widen scopes before Production/verification — changing scopes after users consent forces everyone to re-authorize. Decide read-vs-write first.
Recommendation
- Free offline pet tool → Production-unverified kills the 7-day pain at $0, capped at 100 lifetime users.
- Genuine public release → full verification is free (only blocker is the github.io domain snag). Makes the v1.0 milestone realistic.
- BYO client_id sidesteps Google gatekeeping entirely at the cost of a one-time user setup wizard.
Get the Google Cloud project out of "Testing" mode so Meridian works for non-test users without the 7-day token tax.
Why it matters
Scope classification — CONFIRMED sensitive, not restricted
Google's canonical restricted-scopes list (support.google.com/cloud/answer/13464325) contains only Gmail, Drive, Fit, Chat, Data Portability, Photos Ambient, Health.
Calendar and Tasks are not on it —
calendar,calendar.readonly, and alltasksscopes aresensitive, neverrestricted. Read-vs-write is a separate axis; full read-writecalendaris still only sensitive.➡️ CASA / third-party security assessment does NOT apply to us, ever. Verification is paperwork + a demo video, at $0.
Options (all $0, except a possible ~$10/yr domain for verification)
Process for full verification (clean public-release path)
%APPDATA%\Meridian, nothing sent anywhere).*.github.iois GitHub's domain — we generally can't verify ownership. Likely need a cheap custom domain (~$10/yr) CNAME'd to Pages just for this.Meridian/Auth/GoogleOAuthClient.cscurrently requestscalendar.readonly+tasks.readonly+email+profile. If we want create/edit, widen scopes before Production/verification — changing scopes after users consent forces everyone to re-authorize. Decide read-vs-write first.Recommendation