<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hutch.git/Hutch/Views/Home/HomeView.swift, branch remove-splash-highlighter</title>
<subtitle>ios client for sourcehut. swiftui.
</subtitle>
<id>http://git.krz.sh/krz/hutch.git/atom?h=remove-splash-highlighter</id>
<link rel='self' href='http://git.krz.sh/krz/hutch.git/atom?h=remove-splash-highlighter'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/'/>
<updated>2026-07-16T21:59:55+00:00</updated>
<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>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: profile loading error and user-timeline prefs update</title>
<updated>2026-04-23T22:39:13+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-23T22:39:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=66601a8091a73f3e31f4fb534c38b3eca4756e93'/>
<id>urn:sha1:66601a8091a73f3e31f4fb534c38b3eca4756e93</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: user-defined time period for recent builds card</title>
<updated>2026-04-20T17:42:09+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-20T17:42:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=454c459394437f346a2d08d59a5504c0f6ec299f'/>
<id>urn:sha1:454c459394437f346a2d08d59a5504c0f6ec299f</id>
<content type='text'>
- limit Home failed-build counts to a configurable lookback window
and add the setting under Behavior.
- make the Recent and Builds rows fully tappable across the
entire cell and add coverage for the new failed-build filtering.

Fixes: https://todo.sr.ht/~ccleberg/hutch/67
</content>
</entry>
<entry>
<title>fix: change failed builds card on home tab to navigate to builds tab instead of implementing its own view</title>
<updated>2026-04-20T17:31:57+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-20T17:31:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=32c0e55b0713a15094c1640e7af70e0ed19d78d6'/>
<id>urn:sha1:32c0e55b0713a15094c1640e7af70e0ed19d78d6</id>
<content type='text'>
Fixes: https://todo.sr.ht/~ccleberg/hutch/66
</content>
</entry>
<entry>
<title>fix: remove prototype screens from developer menu</title>
<updated>2026-04-14T15:42:05+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-14T15:42:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=205c8ea9b2c6dfa62bc8b2342d1aa71e2da7d6ac'/>
<id>urn:sha1:205c8ea9b2c6dfa62bc8b2342d1aa71e2da7d6ac</id>
<content type='text'>
- removed prototype screens
- limited Recent section to 3 items
- added initial support for tips

Fixes: https://todo.sr.ht/~ccleberg/hutch/65
</content>
</entry>
<entry>
<title>fix: centralize URLs, tighten models, and polish SwiftUI bindings</title>
<updated>2026-04-14T00:44:44+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-14T00:44:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=fe1ccc69661603d419a642a450e4ac9e1258adb0'/>
<id>urn:sha1:fe1ccc69661603d419a642a450e4ac9e1258adb0</id>
<content type='text'>
- Add shared HutchDeepLinkURL constants for app, widgets, and tests.
- Bump marketing version to 3.1.2 and build to 70 (app + widget extension).
- Point Hutch stats default base URL at HutchStatsAPI; add SRHTWebURL status
  incident feed and reuse it from SystemStatusService.
- Group Project into Metadata and Resources; split ContributionStatsResponse
  into StatsWindow and StatsTotals with updated decoding and tests.
- Replace @Bindable usage with explicit Bindings in Profile, Projects list,
  and repository ACL flows; simplify Home pinned-item helper; add no-op
  bodies on cancel alert buttons where the compiler requires a statement.
- Move repository row build-status indicator next to the relative-updated
  caption and reserve a fixed 8×8 slot so the row does not jump when status
  loads.
- Use NSString.lastPathComponent for build artifact filenames; collapse
  duplicate ACL error branches; minor HutchStats HTTP and XMLParserDelegate
  cleanups.
- Point widgets at HutchDeepLinkURL helpers; align tests with the new
  response and URL types.
</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>
</feed>
