<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pearl/tests/test-pearl-modified.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-07T13:07:55+00:00</updated>
<entry>
<title>style(render): space the account name from Pearl in the lighter</title>
<updated>2026-06-07T13:07:55+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-07T13:07:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/pearl/commit/?id=95209466881d3e6fd4f0d097358b16842d83ec6d'/>
<id>urn:sha1:95209466881d3e6fd4f0d097358b16842d83ec6d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(render): highlight unsaved comments and update the cues live</title>
<updated>2026-06-07T11:43:17+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-07T11:43:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/pearl/commit/?id=e2208276021def42dadd5e422aa96e9004040dd9'/>
<id>urn:sha1:e2208276021def42dadd5e422aa96e9004040dd9</id>
<content type='text'>
Completes the modified-ticket indicator (docs/modified-ticket-indicator-spec.org) on top of the field highlight and count.

A changed comment now gets its own highlight by ownership: your own comment (pushable) takes pearl-modified-highlight and bubbles up to the ticket heading; a non-own comment, which save skips, takes the muted pearl-modified-local; a comment seen before the viewer resolves takes the neutral pearl-modified-unknown until classification lands. The viewer is resolved only when a comment is actually dirty, so opening or editing a clean or field-only buffer makes no network call.

The cues update live: a buffer-local after-change hook debounces a redecorate on an idle timer (pearl-modified-idle-delay), so an edit shows within a fraction of a second instead of waiting for a save or refresh. The timer is cancelled when pearl-mode turns off or the buffer is killed. One pearl--redecorate-modified now drives the field highlights, the comment classification, and the count from a single scan, called on mode enable, fetch/refresh, and the idle tick.
</content>
</entry>
<entry>
<title>feat(render): show unsaved tickets with a field highlight and a count</title>
<updated>2026-06-07T11:31:05+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-07T11:31:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/pearl/commit/?id=c740e270721581120cc6e9317ab70dba40156820'/>
<id>urn:sha1:c740e270721581120cc6e9317ab70dba40156820</id>
<content type='text'>
Under the deferred save model a ticket can carry unsaved local edits with nothing on screen saying so. These are the first two phases of the modified-ticket indicator (docs/modified-ticket-indicator-spec.org).

A pushable-dirty ticket gets a background highlight (pearl-modified-highlight, inheriting the theme's diff-changed) on its heading line, and on the description body when the description changed. The mode-line lighter gains a count rendered with the ticket glyph: "Pearl[work] 3 🎫 changed". Both ride the existing dirty scan and redecoration pass, clear on the next pass after a save, and never touch buffer text.

The count is tickets, not fields: each ticket counts once however many of its fields changed, and only when it has pushable work (a dirty field, or an own comment once the viewer resolves), so it matches what save-all would push. Per-comment highlighting and the live after-change trigger come next.

diff-changed was picked over diff-refine-changed after a cross-theme legibility survey; pearl now requires diff-mode for that face.
</content>
</entry>
</feed>
