You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/README.md
+4-6Lines changed: 4 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,10 @@ Internal documentation for engineers and agents working in the Compass repo.
4
4
5
5
Start with [AGENTS.md](../AGENTS.md) for repo rules and command defaults. Use this index for codebase shape, subsystem behavior, and acceptance runbooks.
6
6
7
+
## How docs get published
8
+
9
+
Markdown files in this `docs/` directory are automatically mirrored to [docs.compasscalendar.com](https://docs.compasscalendar.com). A GitHub Action detects any push to `main` that touches `docs/**` and syncs the changes to the doc site. Just edit any of the markdown in `docs/` and the doc site will update itself upon merge.
Markdown files in this `docs/` directory are automatically mirrored to [docs.compasscalendar.com](https://docs.compasscalendar.com). A GitHub Action detects any push to `main` that touches `docs/**` and syncs the changes to the doc site. Just edit any of the markdown in `docs/` and the doc site will update itself upon merge.
Copy file name to clipboardExpand all lines: docs/acceptance/auth.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -132,21 +132,21 @@ The forgot-password flow should avoid leaking whether an email exists. The reset
132
132
133
133
### UX
134
134
135
-
The auth modal should still allow Google sign in from a logged-out state. A successful Google flow should authenticate the user. Closing the popup should behave like cancellation, not like a hard auth failure.
135
+
The auth modal should still allow Google sign in from a logged-out state. A successful Google redirect flow should authenticate the user and return to Compass.
136
136
137
137
### Steps
138
138
139
139
1. Open the auth modal from `/day?auth=login`.
140
140
2. Select `Continue with Google`.
141
-
3. Complete Google OAuth successfully.
141
+
3. Complete the Google authorization redirect with the intended Google account.
142
142
4. Log out.
143
-
5. Start Google sign in again, but close the popup before finishing.
143
+
5. Start Google sign in again, but cancel at Google before finishing.
144
144
145
145
### Expected Results
146
146
147
-
-A successful Google sign-in authenticates the user and returns them to the app.
148
-
-Closing the popup clears the loading state.
149
-
-Popup cancellation does not leave the app stuck in an auth error state.
147
+
-The Google authorization redirect returns to Compass through `/auth/google/callback`.
148
+
-A successful Google sign-in authenticates the user and returns them to the saved app path.
149
+
-A canceled Google redirect returns to Compass and shows a recoverable auth error.
150
150
151
151
## Scenario 6: Password-Only Compass Usage Before Google Connect
The web auth flow intentionally treats popup-close outcomes as cancellation, not authentication failure.
85
-
86
-
Cancellation detection (`isGooglePopupClosedError`) returns true when any of these match:
87
-
88
-
-`type === "popup_closed"`
89
-
-`error`, `error_description`, or `message` equals `"popup_closed"` (case-insensitive)
90
-
-`error`, `error_description`, or `message` contains `"popup window closed"` (case-insensitive)
91
-
92
-
When cancellation is detected in the auth hooks:
78
+
Google sign-in/up and Google Calendar connect/reconnect leave Compass through a full-page Google redirect and return through `/auth/google/callback`.
93
79
94
-
- auth state is reset (`resetAuth`)
95
-
- OAuth overlay closes because `selectIsAuthenticating` becomes false
96
-
- generic auth failure state is not dispatched for that event
80
+
Before redirecting, the web app stores a short-lived authorization intent in `sessionStorage` keyed by OAuth `state`. The callback validates that state, finishes the saved intent, removes it, and returns the user to the original same-origin path or `/day`.
97
81
98
-
For non-cancellation errors, normal auth-failure handling still applies.
82
+
The old blocking overlay is not used for Google authorization.
0 commit comments