<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hutch.git/Hutch/Views/Work/WorkView.swift, 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-07-16T03:51:41+00:00</updated>
<entry>
<title>fix: let pull to refresh actually refresh Home</title>
<updated>2026-07-16T03:51:41+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T03:51:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=91023a6572354af7770309715d1d77e978298b0d'/>
<id>urn:sha1:91023a6572354af7770309715d1d77e978298b0d</id>
<content type='text'>
New mail showed as unread inside a mailing list but not on Home.

The list view reads threads with client.execute, so it always sees the server.
Home reads them with executeCached under cacheFirstThenRefresh, which returns
the cached value and only schedules a background fetch. loadDashboard had no way
to bypass that, so pulling to refresh could not surface mail that arrived after
the last fetch — it returned the same cache it already had and Home stayed a
cycle behind.

Thread forceRefresh through loadDashboard to the cached reads, and use it from
the pull to refresh on Home and Work. Matches loadSystemStatus(forceRefresh:),
which MoreView already refreshes this way.

The staleness predates the unread baseline. It was invisible while every thread
counted as unread, because Home always had a large number to show; now that Home
correctly ignores mail older than sign-in, a stale cache reads as a truthful 0.
</content>
</entry>
<entry>
<title>feat: add App Intents for Hutch navigation</title>
<updated>2026-05-14T18:27:41+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-05-14T18:18:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=51b2eb0e6296734960f37cebd40fee34a1f261f9'/>
<id>urn:sha1:51b2eb0e6296734960f37cebd40fee34a1f261f9</id>
<content type='text'>
- add read-only App Intents for core Hutch workflows
- route intents through the existing Hutch navigation/deep-link model
- expose Work Queue, Recent Activity, System Status, pinned resources, projects, failed builds, assigned tickets, saved searches, and search where supported
- keep App Intents non-mutating for the initial implementation
- preserve existing widget, Safari extension, and hutch:// routing behavior

References: https://todo.sr.ht/~ccleberg/hutch/71
</content>
</entry>
<entry>
<title>fix: add mark all read actions and avoid resending unchanged repo metadata</title>
<updated>2026-04-20T18:04:57+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-20T18:04:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=8b73fd9cd43753b36b3ab3ca5e4dc83a47ea3480'/>
<id>urn:sha1:8b73fd9cd43753b36b3ab3ca5e4dc83a47ea3480</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(theme): AMOLED true-black rows via themedRow()</title>
<updated>2026-04-14T00:06:54+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-14T00:06:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=a6ad2b9815d72575206bdca860eef9db850cdf1c'/>
<id>urn:sha1:a6ad2b9815d72575206bdca860eef9db850cdf1c</id>
<content type='text'>
Apply listRowBackground(Color.black) per row in AMOLED mode using ThemedRowStyle
and themedRow() across Lists and Forms. Use themedList() for scroll/grouped
backgrounds. Treat segmented and clear list rows with isAMOLED-aware
listRowBackground where Color.clear was required. Removes reliance on UIKit
appearance for list cells on iOS 16+.

Implements: https://todo.sr.ht/~ccleberg/hutch/24
</content>
</entry>
<entry>
<title>perf: reduce redundant fetches and improve list render efficiency</title>
<updated>2026-04-13T18:26:08+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-13T18:26:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=06b24715cd244475ded5482e926721a57278a3cf'/>
<id>urn:sha1:06b24715cd244475ded5482e926721a57278a3cf</id>
<content type='text'>
- Remove no-op per-row task from RepositoryListView; loadMoreIfNeeded
  is a stub for repos so each row was allocating a Task that did nothing
- Fix BuildListView auto-refresh stopping permanently after navigating
  away; startAutoRefresh now runs unconditionally on task so it restarts
  on every reappear, not just first load
- Add lastRefreshed tracking to HomeViewModel with a needsRefresh(after:)
  helper; HomeView and WorkView scene-activation handlers now skip
  loadDashboard() if the data is less than 60 seconds old
- Add 120-second TTL to repository build status refresh; statuses are
  no longer re-fetched on every tab appear, only when stale or when the
  user explicitly pulls to refresh (forceRefresh: true)

Implements: https://todo.sr.ht/~ccleberg/hutch/56
</content>
</entry>
<entry>
<title>release: v3.0.0 — navigation overhaul, Work view, and multi-pin support</title>
<updated>2026-04-13T18:09:57+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-13T18:09:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=f5f5757d0e1b78470429ae7cb9f742c95662849b'/>
<id>urn:sha1:f5f5757d0e1b78470429ae7cb9f742c95662849b</id>
<content type='text'>
Reworks the app's core navigation and home screen for v3.0.0:

- Replace Inbox with Work view: unified dashboard showing unread threads
  and assigned tickets, with All/Unread/Assigned scope picker
- Overhaul Home screen: redesigned with pinned items grid (trackers,
  repos, mailing lists, users), recent activity section, and system
  status banner; backed by HomePinStore supporting all resource types
- Simplify navigation bars across list screens: default toolbar shows
  only the primary action (+) and an overflow menu (…); pin, share, and
  select moved into the overflow menu; selection mode gets its own nav
  bar with Cancel / "N Selected" / All
- Consolidate repo detail toolbars: pin and share moved into the
  existing actions menu for both Git and Mercurial detail views
- Add recent activity tracking via RecentActivityStore
- Add work and inbox deep link aliases (hutch://work, hutch://inbox)

Implements: https://todo.sr.ht/~ccleberg/hutch/55
</content>
</entry>
</feed>
