summaryrefslogtreecommitdiff
path: root/ROADMAP.md
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-07-15 21:50:30 -0500
committerChristian Cleberg <[email protected]>2026-07-15 21:50:30 -0500
commit22c7a0e45a5cc344e2fa0635431d95c23024ad63 (patch)
tree61f293daa3bdb4f8ee8ff8a8d08fadf5dc327065 /ROADMAP.md
parent0eceec357b7ef5251ed0ae9d42b513c17380e0af (diff)
downloadhutch-22c7a0e45a5cc344e2fa0635431d95c23024ad63.tar.gz
hutch-22c7a0e45a5cc344e2fa0635431d95c23024ad63.tar.bz2
hutch-22c7a0e45a5cc344e2fa0635431d95c23024ad63.zip
chore: bump to 3.7.0 and record Phase 2
MARKETING_VERSION 3.6.0 -> 3.7.0, build 88 -> 89. The README feature list also picks up Phase 1's ticket editing, subscriptions, and email preferences, which it never gained.
Diffstat (limited to 'ROADMAP.md')
-rw-r--r--ROADMAP.md37
1 files changed, 23 insertions, 14 deletions
diff --git a/ROADMAP.md b/ROADMAP.md
index e86ddb0..66e56cf 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -74,24 +74,33 @@ Known follow-up: `BuildListViewModel`, `RepositoryListViewModel`, and
two different cache keys. That predates `APICacheKeys` and should be folded into
`cachedPayload`.
-## Phase 2: Patchsets
+## Phase 2: Patchsets — done (v3.7.0)
-The flagship gap. There is currently no reference to `patchset` anywhere in the
-Swift source, yet lists.sr.ht exposes a full `Patchset` type (subject, version,
-prefix, status, coverLetter, patches, tools, mbox), a `patchset` query, and an
-`updatePatchset` mutation. Sending and reviewing patches over email is the
-SourceHut contribution model, and Hutch cannot currently participate in it.
+The flagship gap. Sending and reviewing patches over email is the SourceHut
+contribution model, and Hutch had no reference to `patchset` anywhere.
-Scope this as review-and-triage, not submission:
+Scoped as review-and-triage, not submission:
-- Patchset list per mailing list.
-- Patchset detail: cover letter, per-patch diffs (reuse the existing
- `DiffView`), version and superseded-by chain.
-- Status transitions via `updatePatchset`.
+- ~~Patchset list per mailing list~~ — see the caveat below.
+- ~~Patchset detail~~: cover letter, per-patch diffs (via the existing
+ `DiffView`), checks, and the version / superseded-by chain.
+- ~~Status transitions via `updatePatchset`~~.
-Patch *submission* is an email / `git send-email` flow and is likely out of
-reach from the app. Treat that boundary as explicit rather than half-building
-it.
+Two schema facts shaped the result, and are worth knowing before extending this:
+
+- **`MailingList` has no `patchsets` field.** A list's patchsets cannot be
+ queried directly; they are reachable only through thread roots. The existing
+ threads query now also selects `root.patchset`, so the Patches tab costs no
+ extra request — but it also means patchsets cannot be filtered by status
+ server-side, and only patchsets whose thread appears in the current page are
+ listed.
+- **`Patch` carries no diff.** It has only `index`, `count`, `version`,
+ `prefix`, `subject`, and `trailers`. The diff exists solely inside the email
+ body, so it is recovered with `InboxThreadUtilities.segmentMessageBody` — the
+ same splitter the inbox thread view uses.
+
+Patch *submission* remains out of reach: it is a `git send-email` flow, not a
+GraphQL mutation. Treat that boundary as explicit rather than half-building it.
## Phase 3: Polish and reach