<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hutch.git/ROADMAP.md, branch main</title>
<subtitle>ios client for sourcehut. swiftui.
</subtitle>
<id>http://git.krz.sh/krz/hutch.git/atom?h=main</id>
<link rel='self' href='http://git.krz.sh/krz/hutch.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/'/>
<updated>2026-08-02T20:35:23+00:00</updated>
<entry>
<title>convert readme to nfo; convert docs to txt; relicense to 0bsd</title>
<updated>2026-08-02T20:35:23+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-02T20:29:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=fbcb4113f110a7db9cf21d18510cb59c2e90ba23'/>
<id>urn:sha1:fbcb4113f110a7db9cf21d18510cb59c2e90ba23</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update SonarCloud project id, contact emails, and bump to 3.8.5 (93)</title>
<updated>2026-08-02T14:28:56+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-02T14:27:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=1156ab1b314b9b69e16fdc5fc9ff6eb3861b4588'/>
<id>urn:sha1:1156ab1b314b9b69e16fdc5fc9ff6eb3861b4588</id>
<content type='text'>
- Point README badges and ROADMAP query at the krazywarez_hutch SonarCloud project
- Change user-facing contact emails to root@krz.sh (README, SECURITY, About screen)
- Bump MARKETING_VERSION to 3.8.5 and CURRENT_PROJECT_VERSION to 93
</content>
</entry>
<entry>
<title>update org name</title>
<updated>2026-08-02T14:18:08+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-02T06:51:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=8bbed38fa7e868e9a35587ca43cab68450d003e8'/>
<id>urn:sha1:8bbed38fa7e868e9a35587ca43cab68450d003e8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move Home system status into a title-bar status badge</title>
<updated>2026-07-16T21:59:55+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T21:59:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=7b817a1d2aed0e8b89f36b410f2779f4a6b35407'/>
<id>urn:sha1:7b817a1d2aed0e8b89f36b410f2779f4a6b35407</id>
<content type='text'>
Replace the disruption-only banner on the Home tab with a persistent
circular status indicator in the navigation bar, next to the "Home"
title. The badge reflects the existing status logic — green/check when
operational, orange/exclamation on disruption, gray otherwise — and taps
through to System Status. SystemStatusSummaryRow is unchanged and still
used by the More tab.

Resolve the system-status result first in HomeViewModel.loadDashboard so
the badge settles from cache immediately instead of waiting on the
slower projects/jobs/tickets/inbox loads, which had left it spinning for
several seconds.

Bump MARKETING_VERSION to 3.8.2 and record it in ROADMAP.
</content>
</entry>
<entry>
<title>chore: track the two HutchIntents TODOs in the roadmap (S1135)</title>
<updated>2026-07-16T16:17:45+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T16:17:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=f3c70e04148c57dcafead89b4e02b83e5f5635f8'/>
<id>urn:sha1:f3c70e04148c57dcafead89b4e02b83e5f5635f8</id>
<content type='text'>
SearchHutchIntent's route-to-Lookup stopgap and the absent
OpenSavedSearchIntent are both gated on a global search/persistence
layer Hutch lacks. Promote both to ROADMAP § "App Intent gaps" and
replace the inline TODOs with plain references, clearing those two
S1135 issues without losing the design intent.
</content>
</entry>
<entry>
<title>chore: record the SonarCloud + housekeeping pass, bump to 3.8.1</title>
<updated>2026-07-16T16:07:17+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T16:07:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=3854761b48d893ac4b5d8d9c257dd3cbdc7214d6'/>
<id>urn:sha1:3854761b48d893ac4b5d8d9c257dd3cbdc7214d6</id>
<content type='text'>
Update the roadmap's SonarCloud section to the live 53-issue / 10-rule
reality and mark what v3.8.1 fixed, silenced-as-bug, and left Won't Fix.
Bump MARKETING_VERSION on the app, widget, and Safari extension.
</content>
</entry>
<entry>
<title>docs: bucket the Phase 3 backlog into semantic versions</title>
<updated>2026-07-16T15:04:33+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T15:04:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=6a26c6de827e56a57d9a8c600b26354e280df383'/>
<id>urn:sha1:6a26c6de827e56a57d9a8c600b26354e280df383</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: record the SonarCloud backlog and the What's cooking task</title>
<updated>2026-07-16T06:33:49+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T06:31:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=784d9bcc7dffe36525767c86e768d4a877585718'/>
<id>urn:sha1:784d9bcc7dffe36525767c86e768d4a877585718</id>
<content type='text'>
Two additions to Phase 3.

SonarCloud, with the breakdown rather than the headline: 51 open issues are 0
bugs, 0 vulnerabilities and 51 code smells, and 35 of those are hardcoded-URI
warnings against a deep-link mapper's test fixtures and a one-forge client's
endpoint constants. Those want triaging as Won't Fix, not refactoring. The part
worth real thought is the 3 hotspots — the sr.ht token is stored without a
SecAccessControl, so an unlocked phone hands it over, which is a product
decision rather than a lint nit.

Ingesting sr.ht's quarterly "What's cooking" posts, because nothing here tracks
the API's evolution and this repo's assumptions rot silently. Already proven
worthwhile: SCOPE.md claimed pronouns were not in the schema while AppState
queries them and UserProfileView displays them. That entry is struck through and
kept as evidence. Q2 2026 also reports a writable hub.sr.ht API and finished
deploy keys, both of which contradict what is written here.
</content>
</entry>
<entry>
<title>fix: push mailing lists locally, fix upload menu, drop the events feed</title>
<updated>2026-07-16T05:42:38+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T05:42:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=77cd5b5e56ec054b451a6165162fef655873a5d6'/>
<id>urn:sha1:77cd5b5e56ec054b451a6165162fef655873a5d6</id>
<content type='text'>
Opening a mailing list from More → Projects still blanked. The cause was not in
handleTabNavigation: the row called openMailingList and then dismiss(), so a
path rebuild and a pop of this very view raced each other. Projects already
lives in the More tab, so there is nothing to navigate to — push
MailingListDetailView directly, which also lands back on the project rather than
on Mailing Lists. Sources and trackers keep routing, because they really do land
in other tabs.

The upload controls did nothing. Two .confirmationDialog modifiers on one view
leave one silently dead, and this view already had one for delete, so the tag
picker never presented. It is a Menu now, which also puts the tags one tap away
instead of two.

The ticket activity feed is removed. todo.sr.ht's root events resolver joins
event.participant_id, which references participant(id), against
participant.user_id — different id spaces — so it returns an empty list for
every user. The rows exist; that join cannot find them. Ticket.events is
unaffected because it filters on ticket_id, which is why ticket timelines work.
No client can fix this, and a screen that is permanently empty while blaming the
token's scopes is worse than no screen. Recorded in SCOPE.md with the query.
</content>
</entry>
<entry>
<title>chore: bump to 3.8.0 and record Phase 3 API features</title>
<updated>2026-07-16T05:03:06+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T05:03:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=76cb006b87d30928ec23a3c4bf95bd145aad8e9c'/>
<id>urn:sha1:76cb006b87d30928ec23a3c4bf95bd145aad8e9c</id>
<content type='text'>
MARKETING_VERSION 3.7.0 -&gt; 3.8.0, build 89 -&gt; 90.

SCOPE.md gains the items that did not survive contact with the API: archiveMessage
and mailingListSubscribe are blocked, while webhooks, shareSecret, and build
groups are reachable but declined on judgement. The reasoning is recorded so
they do not get re-proposed as gaps.

ROADMAP.md notes that Phase 3 is several releases rather than one, with the
measured size of each.
</content>
</entry>
</feed>
