<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hutch.git/Hutch/Views/Inbox/ThreadViewModel.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-16T02:42:38+00:00</updated>
<entry>
<title>refactor: share the email body diff splitter</title>
<updated>2026-07-16T02:42:38+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T02:42:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=ccec322f8eac4d14638f5abdae7dae7abc95eb7e'/>
<id>urn:sha1:ccec322f8eac4d14638f5abdae7dae7abc95eb7e</id>
<content type='text'>
segmentMessageBody and its helpers were private to ThreadViewModel, reachable
from tests only through a segmentMessageBodyForTesting shim. Patchset review
needs the same splitting, because sr.ht's Patch type carries no diff — the diff
only exists inside the email body — so this has to be shared rather than
duplicated.

Moved to InboxThreadUtilities. The shim is gone; the existing test calls the
real function directly now.

Also adds the Patchset model layer that the coming views build on.
</content>
</entry>
<entry>
<title>fix: mercurial parity and graphql handling</title>
<updated>2026-04-13T19:20:27+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-13T19:20:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=5e63048ab6a741ae947f7fe42efcb5206a3f3963'/>
<id>urn:sha1:5e63048ab6a741ae947f7fe42efcb5206a3f3963</id>
<content type='text'>
- implements consistent UX between repo types
- ensures centralized services and routes are used between repo types
- graphql error handling is centralized
- error messages are consistent

Implements: https://todo.sr.ht/~ccleberg/hutch/58
Implements: https://todo.sr.ht/~ccleberg/hutch/59
</content>
</entry>
<entry>
<title>fix: route executeGraphQLRequest through SRHTClient instead of URLSession.shared</title>
<updated>2026-03-24T21:49:04+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-24T21:49:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=1a4338ac9fa4392a3b1d04d6fe1316f4c9804802'/>
<id>urn:sha1:1a4338ac9fa4392a3b1d04d6fe1316f4c9804802</id>
<content type='text'>
</content>
</entry>
<entry>
<title>v2.1: bundled polish and fixes</title>
<updated>2026-03-19T21:59:16+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-19T21:59:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=b82bbeeea48ad27832a355c2a41408559c411104'/>
<id>urn:sha1:b82bbeeea48ad27832a355c2a41408559c411104</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add inbox threads and move builds under more</title>
<updated>2026-03-19T06:53:46+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-19T06:53:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=1e3c748119c6e9eec27f02146f17ea0302ff648a'/>
<id>urn:sha1:1e3c748119c6e9eec27f02146f17ea0302ff648a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add support for reading inbox messages (emails) and replying in-app</title>
<updated>2026-03-19T06:17:49+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-19T06:17:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=441b69afae30ee6b662be38004fd7b5de1e47302'/>
<id>urn:sha1:441b69afae30ee6b662be38004fd7b5de1e47302</id>
<content type='text'>
</content>
</entry>
</feed>
