<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hutch.git/Hutch/Views/Repositories/ReadmeView.swift, branch v3.9.0</title>
<subtitle>ios client for sourcehut. swiftui.
</subtitle>
<id>http://git.krz.sh/krz/hutch.git/atom?h=v3.9.0</id>
<link rel='self' href='http://git.krz.sh/krz/hutch.git/atom?h=v3.9.0'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/'/>
<updated>2026-08-07T07:45:31+00:00</updated>
<entry>
<title>Add multi-language syntax highlighting (#16)</title>
<updated>2026-08-07T07:45:31+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-07T07:45:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=b410fd16b76146f4116538c5b82330818dd47da9'/>
<id>urn:sha1:b410fd16b76146f4116538c5b82330818dd47da9</id>
<content type='text'>
Splash (Swift-only, since removed) left code rendering unhighlighted
everywhere. Add Highlightr (highlight.js) behind a small SyntaxHighlighter
service and use it on both surfaces:

- Native file viewer: highlight NSAttributedString by language inferred
  from the filename, picking a light/dark theme from the trait style and
  re-highlighting on style changes. Falls back to plain text for unknown
  languages or very large files.
- Markdown/org code blocks in the WKWebView (READMEs, tickets, comments):
  the web view disables JavaScript, so highlight server-side into inline
  color-styled spans. The color scheme is now part of the render/cache
  key since colors are baked into the HTML.

Covered by unit tests for language mapping and highlighted output.
</content>
</entry>
<entry>
<title>Fix checklist rendering with inline code (#18)</title>
<updated>2026-08-07T06:44:10+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-07T06:44:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=5e4e259d8bfd9b062aa39af793ec3a59b70ad7f0'/>
<id>urn:sha1:5e4e259d8bfd9b062aa39af793ec3a59b70ad7f0</id>
<content type='text'>
The .task-list-item CSS used display: inline-flex, which turned each
text run and inline &lt;code&gt; into separate rigid flex items so a bullet
mixing code with text rendered malformed instead of flowing inline.
The checkbox is already centered via vertical-align, so switch to plain
inline display and let the fragments flow and wrap naturally.
</content>
</entry>
<entry>
<title>fix: render code span contents literally</title>
<updated>2026-07-16T00:29:57+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-16T00:29:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=c5247f7021090358e8db70daa9ed09521e9f206a'/>
<id>urn:sha1:c5247f7021090358e8db70daa9ed09521e9f206a</id>
<content type='text'>
processInline protected allowlisted HTML tags before it handled code spans, so
a `&lt;b&gt;` written inside backticks was carried through as a live tag and applied
formatting instead of rendering as text. Every other inline pass ran against
code span contents for the same reason, so `**x**` in backticks was emitted as
bold.

Protect code spans first with their contents escaped, which takes them out of
reach of the tag, emphasis, and link passes.
</content>
</entry>
<entry>
<title>fix: fixes dead relative links in md/org with a new single-file viewer when tapped</title>
<updated>2026-04-15T21:07:09+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-15T21:07:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=7d5ca0607c091f76aa29cd6fa8c76cfeb1e02ac8'/>
<id>urn:sha1:7d5ca0607c091f76aa29cd6fa8c76cfeb1e02ac8</id>
<content type='text'>
Fixes: https://todo.sr.ht/~ccleberg/hutch/63
</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: 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>feat: add power user actions</title>
<updated>2026-04-13T14:57:23+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-13T14:57:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=0e461a382257979037e8927e5f6b468635b0a7fe'/>
<id>urn:sha1:0e461a382257979037e8927e5f6b468635b0a7fe</id>
<content type='text'>
Implements: https://todo.sr.ht/~ccleberg/hutch/52
Implements: https://todo.sr.ht/~ccleberg/hutch/53
Implements: https://todo.sr.ht/~ccleberg/hutch/54
</content>
</entry>
<entry>
<title>feat: add in-app man pages browser</title>
<updated>2026-04-03T20:18:38+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-03T20:18:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=0914829ad4cfdbe85db9d54c4e5cc1fdd44b82be'/>
<id>urn:sha1:0914829ad4cfdbe85db9d54c4e5cc1fdd44b82be</id>
<content type='text'>
Add a native Man Pages section to the More tab with in-app browsing for
man.sr.ht documentation and srht.site pages.

- add ManPageService for fetching and extracting public docs content
- add ManPageBrowserView and ManPageDetailView
- add More tab navigation for Man Pages
- support in-place navigation for internal documentation links
- allow HTMLWebView to intercept internal links and use a base URL
- support man.sr.ht and srht.site content extraction
- remove heading permalink "#" anchors from man page rendering
- fix relative links, fragment links, and srht.site CTA/icon layout
</content>
</entry>
<entry>
<title>Fix nonisolated table alignment lookup in Readme View</title>
<updated>2026-03-30T22:20:15+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-30T22:20:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=d897109d0d23560bf19ece6ea1122b1229f3b164'/>
<id>urn:sha1:d897109d0d23560bf19ece6ea1122b1229f3b164</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(org): improve org-mode rendering support</title>
<updated>2026-03-30T22:10:58+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-30T22:10:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=da81b67dc8b74fdef6691d79ba06b28712c8b046'/>
<id>urn:sha1:da81b67dc8b74fdef6691d79ba06b28712c8b046</id>
<content type='text'>
</content>
</entry>
</feed>
