<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hutch.git/Hutch/Networking/ProjectService.swift, branch v3.4.0</title>
<subtitle>ios client for sourcehut. swiftui.
</subtitle>
<id>http://git.krz.sh/krz/hutch.git/atom?h=v3.4.0</id>
<link rel='self' href='http://git.krz.sh/krz/hutch.git/atom?h=v3.4.0'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/'/>
<updated>2026-05-07T01:41:49+00:00</updated>
<entry>
<title>feat(cache): persist read-only API responses</title>
<updated>2026-05-07T01:41:49+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-05-07T01:41:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=205cf2687ce48f3d004792ff223422a86cc6bdbc'/>
<id>urn:sha1:205cf2687ce48f3d004792ff223422a86cc6bdbc</id>
<content type='text'>
Add a bounded stale-while-revalidate cache at the Sourcehut API boundary with
stable keys, centralized TTLs, request coalescing, payload hashing, and LRU disk
pruning.

Cache high-value read-only repo, build, ticket, project, profile, paste, and
Home/Work Queue data while keeping mutations network-only and invalidating
related prefixes after successful writes.

Add focused cache tests and implementation notes.
</content>
</entry>
<entry>
<title>fix: sonarqube code smell fixes</title>
<updated>2026-04-14T01:07:53+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-14T01:07:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=312e535f400f31714b3750de5222a1f6a8e5bcda'/>
<id>urn:sha1:312e535f400f31714b3750de5222a1f6a8e5bcda</id>
<content type='text'>
</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: polish read-only project views and home integration</title>
<updated>2026-04-13T03:06:16+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-13T03:06:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=86bcd9452d3107f68aca085e03e69b02667c0dbb'/>
<id>urn:sha1:86bcd9452d3107f68aca085e03e69b02667c0dbb</id>
<content type='text'>
Refs: https://todo.sr.ht/~ccleberg/hutch/36
Refs: https://todo.sr.ht/~ccleberg/hutch/37
Refs: https://todo.sr.ht/~ccleberg/hutch/38
</content>
</entry>
<entry>
<title>feat: add projects list, detail view, and home pinning</title>
<updated>2026-04-13T00:58:20+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-13T00:58:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a'/>
<id>urn:sha1:9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a</id>
<content type='text'>
Implements: https://todo.sr.ht/~ccleberg/hutch/26
Implements: https://todo.sr.ht/~ccleberg/hutch/27
Implements: https://todo.sr.ht/~ccleberg/hutch/28
</content>
</entry>
<entry>
<title>fix: ensure projects in Home tab are sorted by last updated date</title>
<updated>2026-04-01T16:52:40+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-01T16:52:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=c22287d5e256f5b23528114c5efec63069f9c2b5'/>
<id>urn:sha1:c22287d5e256f5b23528114c5efec63069f9c2b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: implement support for projects, lists, and pastes</title>
<updated>2026-03-19T20:17:38+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-19T20:17:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=6ba4e967d5dfb5d3c7bb97a0f2662f3180595563'/>
<id>urn:sha1:6ba4e967d5dfb5d3c7bb97a0f2662f3180595563</id>
<content type='text'>
</content>
</entry>
</feed>
