<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chime/chime.el, branch main</title>
<subtitle>Emacs chimes, notifications, and modeline reminders so you don't miss events
</subtitle>
<id>https://git.cjennings.net/chime/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/chime/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/'/>
<updated>2026-04-04T20:20:41+00:00</updated>
<entry>
<title>Remove unused chime--today function</title>
<updated>2026-04-04T20:20:41+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T20:20:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=dfef5a4bb5afe6420f92ecaa43759086286285f0'/>
<id>urn:sha1:dfef5a4bb5afe6420f92ecaa43759086286285f0</id>
<content type='text'>
Defined and tested but never called from any production code.
</content>
</entry>
<entry>
<title>Bundle multiple day-wide events into a single notification</title>
<updated>2026-04-04T20:15:25+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T20:15:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=4c9730a6e88f1f0173d9712311f65f348d211f4e'/>
<id>urn:sha1:4c9730a6e88f1f0173d9712311f65f348d211f4e</id>
<content type='text'>
When all-day event alert times trigger, multiple events (overdue tasks,
birthdays, holidays) previously fired individual notifications — one
sound and one popup each. With 8-10 events this was overwhelming.

Now multiple day-wide events are bundled into a single notification
with all messages joined by newlines. Single events still notify
normally without bundling.
</content>
</entry>
<entry>
<title>Show modeline icon immediately on chime-mode enable</title>
<updated>2026-04-04T19:11:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T19:11:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=ffc9707790a3dff195bd827c17039faf0dcf44b0'/>
<id>urn:sha1:ffc9707790a3dff195bd827c17039faf0dcf44b0</id>
<content type='text'>
Previously chime-modeline-string was nil until the first async check
completed (~10-15 seconds after startup). Now the icon appears
instantly with a "waiting for first event check" tooltip.

On validation or async failure, the icon stays visible and the
tooltip updates to show the error state instead of going blank.
</content>
</entry>
<entry>
<title>Default modeline lighter to empty string</title>
<updated>2026-04-04T19:02:17+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T19:02:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=559231d91ca24a7a7b632261643b9f4eff329fbb'/>
<id>urn:sha1:559231d91ca24a7a7b632261643b9f4eff329fbb</id>
<content type='text'>
The bell emoji lighter was redundant alongside the alarm clock
event display in global-mode-string. One icon is enough. Users
who want a separate mode indicator can set chime-modeline-lighter.
</content>
</entry>
<entry>
<title>Improve defaults: 2-hour modeline window, notify at event time</title>
<updated>2026-04-04T18:59:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:59:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=7a0141f90ed214e1a7d87c2c1d04d7b0d084db09'/>
<id>urn:sha1:7a0141f90ed214e1a7d87c2c1d04d7b0d084db09</id>
<content type='text'>
Bump chime-modeline-lookahead-minutes from 60 to 120 so events
within the next 2 hours show in the modeline. The old 60-minute
default hid events most users would expect to see.

Add (0 . high) to default chime-alert-intervals so users get a
notification at event time in addition to 10 minutes before.
The single-notification default meant a missed alert had no backup.
</content>
</entry>
<entry>
<title>Add comments for non-obvious code patterns</title>
<updated>2026-04-04T18:39:52+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:39:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=028fa467ad3ba640a76a3936d00176ff5896115d'/>
<id>urn:sha1:028fa467ad3ba640a76a3936d00176ff5896115d</id>
<content type='text'>
Clarify: dash cartesian product pipeline in chime--notifications,
butlast 2 dropping USEC/PSEC from time values, Emacs time type
guard, upcoming-events item structure, rx macroexpand for async
env injection, backquoted lambda subprocess boundary, and
org-end-of-meta-data nil argument meaning.
</content>
</entry>
<entry>
<title>Remove dead code and reduce default tooltip lookahead to 1 week</title>
<updated>2026-04-04T18:32:47+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:32:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=f550d134f4a1ad30c425285c4d390f7277cbee32'/>
<id>urn:sha1:f550d134f4a1ad30c425285c4d390f7277cbee32</id>
<content type='text'>
Remove chime--agenda-buffer-name (unused variable) and
chime--extract-birthday-year (superseded by chime--parse-birthday).

Reduce chime-tooltip-lookahead-hours from 8760 (1 year) to 168
(1 week). The 1-year default caused org-agenda-list to scan a
365-day span every check cycle, which is slow for large org
collections. The tooltip only shows 5 events, so a week is
sufficient for most users.
</content>
</entry>
<entry>
<title>Hoist loop-invariant computations and remove redundant sort</title>
<updated>2026-04-04T18:31:11+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:31:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=e681fcbc92c15cbc4e01ab879c3b407c715dc824'/>
<id>urn:sha1:e681fcbc92c15cbc4e01ab879c3b407c715dc824</id>
<content type='text'>
Performance improvements with no behavioral change:
- chime--group-events-by-day: hoist decode-time calls before loop
- chime-event-has-any-passed-time: compute today-start once, not per timestamp
- chime-event-is-today: same pattern
- chime--build-upcoming-events-list: remove first sort (discarded by hash dedup)
- chime--process-notifications: use -mapcat instead of -map + -flatten
</content>
</entry>
<entry>
<title>Nil chime--timer after cancellation in chime--stop</title>
<updated>2026-04-04T18:27:30+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:27:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=6d133a26f905cf38595599eb3271563911762e2b'/>
<id>urn:sha1:6d133a26f905cf38595599eb3271563911762e2b</id>
<content type='text'>
The timer variable was left pointing at a cancelled timer object.
Now set to nil so state accurately reflects no active timer.
</content>
</entry>
<entry>
<title>Extract days-until calculation from chime--day-wide-notification-text</title>
<updated>2026-04-04T18:08:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:08:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=2ee215e1f948f3ac398f46bb995ac94ec3ce3a61'/>
<id>urn:sha1:2ee215e1f948f3ac398f46bb995ac94ec3ce3a61</id>
<content type='text'>
Move the all-day timestamp date arithmetic into chime--days-until-event.
The notification text function now reads clearly as a cond dispatch
over today/advance-notice/fallback cases.
</content>
</entry>
</feed>
