| @@ -1,25 +1,26 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | 3 | * OpenStation — "Seen intros" registry. |
| 4 | 4 | * |
| 5 | - * Tracks which one-time introduction dialogs the current user has | |
| 6 | - * already dismissed, so the shell can show a "what's new in this | |
| 7 | - * native app" dialog the first time a ported native window opens | |
| 8 | - * and never bother the user again afterwards. | |
| 5 | + * Tracks which one-time announcements the current user has already | |
| 6 | + * dismissed, so each is shown once and never bothers them again. | |
| 9 | 7 | * |
| 10 | - * Today the surface is the native Posts window. The same key is | |
| 11 | - * intentionally generic — any future ported native app (Pages, | |
| 12 | - * Comments, Users, Plugins, …) registers its own slug and reuses | |
| 13 | - * this storage. OS Settings → Features exposes a "Reset what's-new | |
| 14 | - * dialogs" button that clears the whole list so the user can see | |
| 15 | - * every intro again from scratch. | |
| 8 | + * Two surfaces use it today: the activation welcome dialog | |
| 9 | + * (`includes/welcome-dialog.php`, slug `activation-welcome`), shown | |
| 10 | + * in the classic admin while OpenStation is disabled, and the rebrand | |
| 11 | + * notice (`src/rebrand-notice.ts`, slug `openstation-rebrand`). The | |
| 12 | + * key is intentionally generic, so anything else that needs | |
| 13 | + * show-once semantics registers its own slug and reuses this storage. | |
| 14 | + * OpenStation Preferences → Features exposes a "Reset what's-new | |
| 15 | + * dialogs" button that clears the whole list. | |
| 16 | 16 | * |
| 17 | 17 | * Storage shape: |
| 18 | 18 | * user meta `desktop_mode_seen_intros` → array<string> of slugs. |
| 19 | - * `[ 'posts' ]`, `[ 'posts', 'pages' ]`, etc. Slug values pass | |
| 20 | - * through `sanitize_key()` and the list is capped at 64 entries | |
| 21 | - * so a runaway client cannot bloat user-meta indefinitely. | |
| 19 | + * `[ 'activation-welcome' ]`, `[ 'openstation-rebrand' ]`, etc. | |
| 20 | + * Slug values pass through `sanitize_key()` and the list is capped | |
| 21 | + * at 64 entries so a runaway client cannot bloat user-meta | |
| 22 | + * indefinitely. | |
| 22 | 23 | * |
| 23 | 24 | * @package OpenStation |
| 24 | 25 | */ |
| 25 | 26 | |
| @@ -186,10 +187,11 @@ | ||
| 186 | 187 | |
| 187 | 188 | /** |
| 188 | 189 | * Permission gate for the seen-intros routes. |
| 189 | 190 | * |
| 190 | - * In-shell intros (slug `posts`, `pages`, …) are only ever shown to a | |
| 191 | - * user who has already entered OpenStation, so they keep the strict | |
| 191 | + * In-shell announcements (the rebrand notice, and anything a plugin | |
| 192 | + * registers) are only ever shown to a user who has already entered | |
| 193 | + * OpenStation, so they keep the strict | |
| 192 | 194 | * {@see openstation_rest_require_enabled()} gate — `read` alone is |
| 193 | 195 | * insufficient (every role, Subscriber included, carries `read`). |
| 194 | 196 | * |
| 195 | 197 | * The one exception is the first-run welcome dialog |