<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pearl/tests/test-pearl-single-issue.el, branch main</title>
<subtitle>Pearl Edits and Reflects Linear — manage Linear.app issues as org-mode in Emacs
</subtitle>
<id>https://git.cjennings.net/pearl/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/pearl/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/pearl/'/>
<updated>2026-06-24T03:40:27+00:00</updated>
<entry>
<title>feat(sources): single-issue source (favorites + open-issue-by-id)</title>
<updated>2026-06-24T03:40:27+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-24T03:40:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/pearl/commit/?id=8869a083c3cc28c20efa63e8932347329b2865f4'/>
<id>urn:sha1:8869a083c3cc28c20efa63e8932347329b2865f4</id>
<content type='text'>
I wired the issue kind into the same pipeline every other source uses, so a favorited issue renders in the buffer as its own subtree instead of the v1 browser punt. The new pearl-open-issue-by-id command does the same for an issue you type by identifier or id. It's handy when someone hands you ENG-123 and you'd rather read it in Pearl than a browser.

Linear's issue(id:) accepts both the UUID and the human identifier, so there's no resolution step. I fetch by whatever was given and build the :type issue source from the returned node, so the stored id and identifier stay authoritative. Refresh re-fetches the one issue and merges by LINEAR-ID like the filter and view sources.

Tests cover the source constructor, the header round-trip, and the fetch/render and command paths across Normal, Boundary, and Error.
</content>
</entry>
</feed>
