Commit 6d11464fff
Unsigned
Layout: unified · split
ROADMAP.txt +35 −18
| @@ -79,13 +79,14 @@ were never called. Each removes a "why can't I do this here?" moment. | ||
| 79 | 79 | - ~~`updatePreferences`~~ (todo.sr.ht and lists.sr.ht) — `notifySelf` and |
| 80 | 80 | `copySelf`, surfaced as an Email section in Settings. |
| 81 | 81 | |
| 82 | `mailingListSubscribe` is deliberately not wired up. `MailingList` has no | |
| 83 | `subscription` field, unlike `Ticket` and `Tracker`, so per-list state is only | |
| 82 | `mailingListSubscribe` was left unwired here because `MailingList` had no | |
| 83 | `subscription` field, unlike `Ticket` and `Tracker`, so per-list state was only | |
| 84 | 84 | knowable from the `subscriptions` query — which by definition lists what the |
| 85 | user is already subscribed to. Subscribing needs a list the user is *not* | |
| 86 | subscribed to, and sr.ht exposes no discovery API to find one (see | |
| 87 | [SCOPE.txt](SCOPE.txt) on hub.sr.ht). Revisit if hub.sr.ht ever gains an API, or | |
| 88 | alongside Phase 2, which surfaces lists through patchsets. | |
| 85 | user is already subscribed to. **That has since changed:** live introspection | |
| 86 | during the ingest shows `MailingList.subscription` now exists (type | |
| 87 | `MailingListSubscription`, present when subscribed), so per-list state is | |
| 88 | readable and the `mailingListSubscribe` / `mailingListUnsubscribe` toggle can | |
| 89 | reflect it. Now buildable — see "mailing list subscribe" below. | |
| 89 | 90 | |
| 90 | 91 | ### Refactors folded in |
| 91 | 92 | |
| @@ -144,8 +145,9 @@ so "breaking change" does not apply. These buckets track *user-visible scale*. | ||
| 144 | 145 | | v3.8.1 | SonarCloud triage; housekeeping | No behaviour change at all | |
| 145 | 146 | | v3.8.2 | Home system status moved to a title-bar status badge | Small UI relocation, no new surface | |
| 146 | 147 | | v3.9.0 | ~~hub.sr.ht project writes + discovery (#12–#15); multi-language highlighting (#16); App Intents expansion (#17); man-page catalog sync (#7); checklist / recent-activity / pull-to-refresh fixes (#18, #11, #9)~~ | Shipped — the cut this session | |
| 147 | | v3.10.0 | ~~git.sr.ht deploy keys~~ (shipped); "What's cooking" ingest; doc truth-up; revisit `mailingListSubscribe` | Ships one feature, corrects the map | | |
| 148 | | v3.11.0 | Accessibility | Independent, device-verified | | |
| 148 | | v3.10.0 | ~~git.sr.ht deploy keys~~ (shipped); ~~"What's cooking" ingest + doc truth-up~~ (done) | Ships one feature, corrects the map | | |
| 149 | | v3.11.0 | Mailing list subscribe/unsubscribe toggle | Ingest-surfaced; `MailingList.subscription` now exists | | |
| 150 | | v3.12.0 | Accessibility | Independent, device-verified | | |
| 149 | 151 | | v4.0.0 | Localization *with* translations | The only true re-presentation | |
| 150 | 152 | | — | Swift 6 language mode; cache reads | Internal; ride along, no tag | |
| 151 | 153 | |
| @@ -295,8 +297,7 @@ flags two openings: | ||
| 295 | 297 | resources. ~~Rechecked and shipped~~: project create/edit, resource |
| 296 | 298 | link/unlink, and public discovery landed (#12–#15) — see "hub.sr.ht writes" |
| 297 | 299 | below. `SCOPE.txt`'s "hub has no public API / no discovery" claim has since |
| 298 | been corrected. `mailingListSubscribe` was *not* unblocked — that needs a | |
| 299 | per-list subscription field lists.sr.ht still lacks. | |
| 300 | been corrected. | |
| 300 | 301 | - ~~git.sr.ht deploy keys are complete~~ — **shipped** (v3.10.0). |
| 301 | 302 | `createDeployKey` / `deleteDeployKey` (and `Repository.deployKeys`) are wired |
| 302 | 303 | into the repository actions menu, owner-only, alongside ACLs. |
| @@ -305,9 +306,26 @@ Start from Q1 2026 forward — that is roughly when the current `Docs/API` dumps | ||
| 305 | 306 | were captured. |
| 306 | 307 | |
| 307 | 308 | Deploy keys — the one self-contained feature the ingest had already surfaced and |
| 308 | that the SDL confirmed — shipped in v3.10.0, so this bucket is now the ingest | |
| 309 | itself: research that files what changed rather than building. Everything else it | |
| 310 | turns up gets filed, not built. | |
| 309 | that the SDL confirmed — shipped in v3.10.0. | |
| 310 | ||
| 311 | **Ingest run (2026-08, Q1–Q2 posts + live schema introspection with a test | |
| 312 | token):** everything else the posts flagged is already in Hutch — RIDs (used | |
| 313 | throughout), pronouns and avatars (queried and displayed, avatar upload/delete | |
| 314 | in Settings), hub project writes and discovery (shipped), deploy keys (shipped). | |
| 315 | Planned-but-not-yet-shipped upstream, so nothing to build: anonymous API access | |
| 316 | and "standardized / connections-spec" GraphQL (Q2 named both as future work). | |
| 317 | The one *new* opening the introspection turned up is below. | |
| 318 | ||
| 319 | ### Mailing list subscribe — buildable | |
| 320 | ||
| 321 | `MailingList` gained a `subscription` field (type `MailingListSubscription`, | |
| 322 | present when the viewer is subscribed) — confirmed live. That removes the exact | |
| 323 | blocker Phase 1 named: per-list state is now readable, so a subscribe / | |
| 324 | unsubscribe toggle can reflect real server state using the existing | |
| 325 | `mailingListSubscribe` / `mailingListUnsubscribe` mutations (unsubscribe already | |
| 326 | shipped in Phase 1). Surface it wherever a list is shown — Lookup results, | |
| 327 | `ProjectMailingListView`, the inbox list header. Small, self-contained write | |
| 328 | feature; its own minor. | |
| 311 | 329 | |
| 312 | 330 | ### hub.sr.ht writes — projects and discovery done |
| 313 | 331 | |
| @@ -326,11 +344,10 @@ confirmed without a token (introspection there is auth-gated), so the mutations | ||
| 326 | 344 | degrade to a visible error rather than a crash if a field is not yet deployed. |
| 327 | 345 | Verify on a signed-in device. |
| 328 | 346 | |
| 329 | `mailingListSubscribe` stays out. `MailingList` still has no `subscription` | |
| 330 | field, and public *project* discovery does not help find a mailing list the user | |
| 331 | is *not* subscribed to — the reason Phase 1 declined it. Revisit only if | |
| 332 | lists.sr.ht gains per-list subscription state. `SCOPE.txt` still needs its | |
| 333 | "hub has no public API / no discovery" claim corrected. | |
| 347 | `mailingListSubscribe` is now buildable: the ingest found `MailingList` gained a | |
| 348 | `subscription` field, so per-list state is readable and the subscribe/unsubscribe | |
| 349 | toggle can reflect it — see the "mailing list subscribe" bucket below. `SCOPE.txt` | |
| 350 | has since had its "hub has no public API / no discovery" claim corrected. | |
| 334 | 351 | |
| 335 | 352 | ### App Intent gaps — unscheduled |
| 336 | 353 | |
SCOPE.txt +4 −4
| @@ -31,10 +31,10 @@ | ||
| 31 | 31 | unaffected because it filters on `ev.ticket_id`, which is why ticket timelines |
| 32 | 32 | work. Nothing a client can do fixes this; revisit only if sr.ht changes the |
| 33 | 33 | resolver. |
| 34 | - Subscribe to a mailing list (`mailingListSubscribe` exists, but `MailingList` | |
| 35 | has no `subscription` field, and hub.sr.ht's new discovery lists *projects*, | |
| 36 | not mailing lists, so there is still no way to find a list you are not already | |
| 37 | subscribed to) | |
| 34 | - ~~Subscribe to a mailing list~~ — **now buildable**. `MailingList` gained a | |
| 35 | `subscription` field (confirmed live during the Q1–Q2 2026 ingest), so per-list | |
| 36 | subscribe state is readable and `mailingListSubscribe` / `mailingListUnsubscribe` | |
| 37 | can drive a real toggle. Moved to ROADMAP.txt ("mailing list subscribe"). | |
| 38 | 38 | - Submitting patches (a `git send-email` flow, not a GraphQL mutation; Hutch |
| 39 | 39 | reviews patchsets but cannot send them) |
| 40 | 40 | |