Commit 0cf4c36a2e
Unsigned
Layout: unified · split
Hutch/App/HutchIntents.swift +4 −2
| @@ -134,7 +134,8 @@ struct SearchHutchIntent: AppIntent { | ||
| 134 | 134 | |
| 135 | 135 | var route: HutchRoute { |
| 136 | 136 | let normalized = query.trimmingCharacters(in: .whitespacesAndNewlines) |
| 137 | // TODO: Route to global local search once Hutch has one. | |
| 137 | // Routes to Lookup for now; repoint at a global content search when Hutch | |
| 138 | // gains one — tracked in ROADMAP.md § "App Intent gaps". | |
| 138 | 139 | return normalized.isEmpty ? .lookup : .search(query: normalized) |
| 139 | 140 | } |
| 140 | 141 | |
| @@ -145,7 +146,8 @@ struct SearchHutchIntent: AppIntent { | ||
| 145 | 146 | } |
| 146 | 147 | } |
| 147 | 148 | |
| 148 | // TODO: Add OpenSavedSearchIntent when Hutch has global saved-search persistence. | |
| 149 | // An OpenSavedSearchIntent belongs here once Hutch has global saved-search | |
| 150 | // persistence — tracked in ROADMAP.md § "App Intent gaps". | |
| 149 | 151 | |
| 150 | 152 | // MARK: - App Entities |
| 151 | 153 | |
ROADMAP.md +22 −2
| @@ -244,8 +244,10 @@ Won't Fix, with reasons (resolve in SonarCloud's web UI, not in code): | ||
| 244 | 244 | - **`javascript:S7785`** — prefers top-level `await` for `injectBannerIfEnabled()`, |
| 245 | 245 | but `content.js` is a classic content script, not a module. Top-level `await` |
| 246 | 246 | would be a syntax error. Not applicable. |
| 247 | - **5× `swift:S1135`** — TODO comments (INFO). Two in `HutchIntents` name real | |
| 248 | gaps; leave them until those features land. | |
| 247 | - **5× `swift:S1135`** — TODO comments (INFO). The two in `HutchIntents` named | |
| 248 | real gaps and are now promoted to "App Intent gaps" below, with the inline | |
| 249 | `TODO`s replaced by plain references — so those two clear. The remaining three | |
| 250 | (`DeepLink`, `NotificationPreferencesViewModel` ×2) stay until addressed. | |
| 249 | 251 | |
| 250 | 252 | The 3 hotspots are the part actually worth thought: |
| 251 | 253 | |
| @@ -315,6 +317,24 @@ sequenced after the ingest rather than planned now. Read | ||
| 315 | 317 | `api/graph/schema.graphqls` in `hub.sr.ht` before committing the version number. |
| 316 | 318 | The bucket may be empty. |
| 317 | 319 | |
| 320 | ### App Intent gaps — unscheduled | |
| 321 | ||
| 322 | Two App Intents in `HutchIntents.swift` are placeholders for features Hutch does | |
| 323 | not have yet. Both are gated on the same missing capability — a global | |
| 324 | search/persistence layer — so neither is schedulable until that lands. (These | |
| 325 | were the two `swift:S1135` TODOs; promoted here so the code carries a reference | |
| 326 | rather than a bare `TODO`.) | |
| 327 | ||
| 328 | - **Global content search.** `SearchHutchIntent` accepts a query but routes to | |
| 329 | the Lookup screen — sourcehut entity resolution — because Hutch has no | |
| 330 | full-text search across tickets, repos, and lists. Its own description says | |
| 331 | "Opens Hutch lookup with a search query." When a real search exists, repoint | |
| 332 | the `.search` route in `SearchHutchIntent.route`. | |
| 333 | - **`OpenSavedSearchIntent`.** Saved searches are per-tracker only | |
| 334 | (`TicketSavedFilterStore`, `ScopedSearchHistoryStore`); there is no global | |
| 335 | saved-search store for an intent to open. Add the intent once global | |
| 336 | saved-search persistence exists. | |
| 337 | ||
| 318 | 338 | ### Swift 6 language mode — no release of its own |
| 319 | 339 | |
| 320 | 340 | The project builds in Swift 5 language mode with |