<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs-wttrin/tests/test-wttrin--mode-line-update-display.el, branch v0.3.1</title>
<subtitle>Emacs frontend for Igor Chubin's wttr.in weather service
</subtitle>
<id>https://git.cjennings.net/emacs-wttrin/atom?h=v0.3.1</id>
<link rel='self' href='https://git.cjennings.net/emacs-wttrin/atom?h=v0.3.1'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/'/>
<updated>2026-04-04T18:26:10+00:00</updated>
<entry>
<title>fix: emoji dimming can disagree with tooltip staleness</title>
<updated>2026-04-04T18:26:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:26:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=de99a2930bbe65d7c2ea04656caa18823068c182'/>
<id>urn:sha1:de99a2930bbe65d7c2ea04656caa18823068c182</id>
<content type='text'>
The emoji face (dimmed/normal) was frozen at the last update-display
call, but the tooltip computes staleness dynamically. Between
refreshes, data could cross the stale threshold — tooltip says "Stale"
while the emoji is still normal.

Track the rendered staleness state. When the tooltip detects a
transition, trigger a re-render so the emoji dimming matches.
</content>
</entry>
<entry>
<title>fix: mode-line tooltip always shows "Updated just now"</title>
<updated>2026-04-04T18:07:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T18:07:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=f526cf641181e9cdb533a1f8a278de1fad49ca25'/>
<id>urn:sha1:f526cf641181e9cdb533a1f8a278de1fad49ca25</id>
<content type='text'>
The tooltip was a static string computed at fetch time. Since every
successful fetch sets the cache timestamp to now and immediately
renders the tooltip, it was always "just now".

Extract wttrin--mode-line-tooltip as a named function that computes
age from the cache at call time. Set help-echo to this function so
Emacs invokes it on hover, producing an accurate age like
"Updated 12 minutes ago".
</content>
</entry>
<entry>
<title>doc: update copyright years to 2026 and add missing author field</title>
<updated>2026-04-04T17:51:32+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T17:51:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=622ae39ad1e2544980cff73af8a5d5b2a64dacc8'/>
<id>urn:sha1:622ae39ad1e2544980cff73af8a5d5b2a64dacc8</id>
<content type='text'>
Update copyright headers across all 37 .el files to include 2026.
Add missing Author field to testutil-wttrin.el for consistency.
</content>
</entry>
<entry>
<title>feat: unified cache and staleness handling for mode-line and buffer</title>
<updated>2026-02-21T13:11:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-21T13:06:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=b74b98f177d92d50ddbede900ba41212e07c5f63'/>
<id>urn:sha1:b74b98f177d92d50ddbede900ba41212e07c5f63</id>
<content type='text'>
Replace TTL-based cache invalidation with proactive scheduled refresh.
Both mode-line and buffer systems now follow: timer refreshes cache,
display reads from cache, staleness indicated when data is old.

Phase 1 - Mode-line cache formalization + staleness display:
- Replace wttrin--mode-line-tooltip-data with wttrin--mode-line-cache
  as (timestamp . data) cons cell matching buffer cache pattern
- Add wttrin--format-age helper for human-readable age strings
- Rewrite wttrin--mode-line-update-display to take no arguments,
  read from cache, compute staleness (age &gt; 2x refresh interval),
  dim emoji gray when stale, show staleness info in tooltip
- Rewrite wttrin--mode-line-fetch-weather to write cache on success,
  show stale display on failure with cache, error placeholder without
- Add wttrin--mode-line-update-placeholder-error for first-launch failure

Phase 2 - Remove TTL, add proactive buffer refresh:
- Rename wttrin-cache-ttl to wttrin-refresh-interval (default 3600s)
  with define-obsolete-variable-alias for backward compatibility
- Change wttrin-mode-line-refresh-interval default from 900 to 3600
- Remove TTL check from wttrin--get-cached-or-fetch; serve cached data
  regardless of age, background timer keeps it fresh
- Add buffer refresh timer (wttrin--buffer-cache-refresh)

Phase 3 - Buffer staleness display:
- Add wttrin--format-staleness-header for buffer age display
- Insert staleness line in wttrin--display-weather before instructions

Phase 4 - Cleanup:
- Remove all references to wttrin--mode-line-tooltip-data
- Update README.org cache settings and mode-line documentation
- Update tests for new API (198 tests across 21 files, all passing)
</content>
</entry>
<entry>
<title>feat: mode-line: show hourglass placeholder before first weather fetch</title>
<updated>2026-02-20T13:31:41+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-20T13:31:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=ec8130cfe1a7390e9939b311c8db39907a3f7f44'/>
<id>urn:sha1:ec8130cfe1a7390e9939b311c8db39907a3f7f44</id>
<content type='text'>
Display ⏳ with "Fetching weather..." tooltip immediately when
mode-line mode starts, so the user sees wttrin is active before
the first API response arrives.
</content>
</entry>
<entry>
<title>fix: mode-line: validate API response before updating display</title>
<updated>2026-02-20T13:06:47+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-20T13:06:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=30fe3ab230a66f98dd8ece253bf79c61c2fbf6e1'/>
<id>urn:sha1:30fe3ab230a66f98dd8ece253bf79c61c2fbf6e1</id>
<content type='text'>
Reject empty or malformed wttr.in responses to prevent blank icon and
tooltip. Fix tooltip lambda to treat empty string as falsy. Add debug
logging for nil-location and invalid-response paths.
</content>
</entry>
</feed>
