<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs-wttrin/tests, branch release/0.4.0</title>
<subtitle>Emacs frontend for Igor Chubin's wttr.in weather service
</subtitle>
<id>https://git.cjennings.net/emacs-wttrin/atom?h=release%2F0.4.0</id>
<link rel='self' href='https://git.cjennings.net/emacs-wttrin/atom?h=release%2F0.4.0'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/'/>
<updated>2026-06-28T10:52:52+00:00</updated>
<entry>
<title>test: cover wttrin--reset-font-height</title>
<updated>2026-06-28T10:52:52+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T10:52:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=95a5e130deb4c73242c370ce239b3ba9a97e6ef5'/>
<id>urn:sha1:95a5e130deb4c73242c370ce239b3ba9a97e6ef5</id>
<content type='text'>
Restores the base height when a remap cookie exists, no-op without one.
</content>
</entry>
<entry>
<title>fix: don't auto-fit the loading placeholder to a huge font</title>
<updated>2026-06-28T10:42:00+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T10:42:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=16be44154cf823332332d1df995ae1ed50ff43c4'/>
<id>urn:sha1:16be44154cf823332332d1df995ae1ed50ff43c4</id>
<content type='text'>
With auto-fit on, the one-line "Loading..." placeholder was sized to fill the
window height (capped huge), and a reused buffer kept the previous weather's
auto-fitted font while loading. Auto-fit now runs only once real weather has
rendered, and the placeholder resets to the base font.
</content>
</entry>
<entry>
<title>fix: don't steal focus when an async weather response renders</title>
<updated>2026-06-28T08:11:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T08:11:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=da7ee0841924dfbd91c9a944e0bfeff6903bd8a1'/>
<id>urn:sha1:da7ee0841924dfbd91c9a944e0bfeff6903bd8a1</id>
<content type='text'>
wttrin--display-weather ran switch-to-buffer from the async callback, so a
response arriving after the user moved to another buffer yanked them back to
*wttr.in*. It now renders with set-buffer; selecting the buffer is the
interactive command's job (wttrin-query already does it at invocation), so a
late response updates the buffer in place without changing the selected window.
</content>
</entry>
<entry>
<title>fix: drop stale async weather responses that overwrite a newer query</title>
<updated>2026-06-28T08:06:12+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T08:06:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=ce74e30562dfac3f599a94a45ac16c3c2319ab41'/>
<id>urn:sha1:ce74e30562dfac3f599a94a45ac16c3c2319ab41</id>
<content type='text'>
wttrin-query reuses the single *wttr.in* buffer, so requesting Paris then Berlin
and having Paris return last overwrote the Berlin buffer. Each query now stamps
a monotonic request id on the buffer; the callback displays only when its
captured id still matches, so a superseded response is ignored.
</content>
</entry>
<entry>
<title>fix: stop the mode-line cleanly when disabled before startup fires</title>
<updated>2026-06-28T08:01:06+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T07:56:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=19e103fea2e55a3e3bc3a777b4c618e644b57760'/>
<id>urn:sha1:19e103fea2e55a3e3bc3a777b4c618e644b57760</id>
<content type='text'>
The delayed initial fetch was scheduled with run-at-time but the one-shot timer
was discarded, and when the mode is enabled before after-init the start is
queued on after-init-hook. Disabling the mode before either fired could still
start timers, hit the network, or mutate mode-line state after the user turned
it off. Stop now cancels the stored startup timer and removes the after-init
hook, and the startup callback no-ops when the mode is off.
</content>
</entry>
<entry>
<title>fix: always evict at least one cache entry when over max</title>
<updated>2026-06-28T07:53:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T07:53:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=ec38418d6d3eb4342363af1714f0073a74d52fbc'/>
<id>urn:sha1:ec38418d6d3eb4342363af1714f0073a74d52fbc</id>
<content type='text'>
wttrin--cleanup-cache-if-needed removed floor(count * 0.20) entries, which is 0
for a small cache (e.g. two entries at max one), so the cache could sit over its
advertised maximum indefinitely. It now removes at least one whenever it is over.
</content>
</entry>
<entry>
<title>fix: key the cache on all response-shaping settings</title>
<updated>2026-06-28T07:50:53+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T07:50:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=944a52f0e33087dafba383edb3d97ec19a06d361'/>
<id>urn:sha1:944a52f0e33087dafba383edb3d97ec19a06d361</id>
<content type='text'>
wttrin--make-cache-key keyed only on location and unit system, but the request
body also depends on wttrin-display-options and wttrin-default-languages.
Changing display options or language mid-session served the old cached response,
and the staleness header then claimed it was current for the new settings. The
key now includes every setting that shapes the response.

Cache-key tests rewritten to assert behavior (distinct key per varying setting,
stable key for identical settings) instead of an exact key string.
</content>
</entry>
<entry>
<title>feat: fit and center the weather buffer in its window</title>
<updated>2026-06-28T07:20:12+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-28T07:20:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=e8ea03ecc8c1a2499046b34f785bca4f871531df'/>
<id>urn:sha1:e8ea03ecc8c1a2499046b34f785bca4f871531df</id>
<content type='text'>
Centering and auto-fit share one resize hook (wttrin--update-layout on
window-configuration-change-hook).

Centering is always on. The block centers via the window's left margin,
measured in pixels from the buffer font so it stays exact under a font-height
remap. It centers against the available width including the current margin, so
the margin shrinking the body can't make the value oscillate.

Auto-fit is opt-in (wttrin-auto-fit-font, off by default). When on, the font is
sized so the whole buffer fits top to bottom (down to the row past the footer's
last menu item) without the widest line truncating, clamped to
wttrin-font-height-min and -max.

The pixel-exact measurement needs window-font-width and window-font-height, so
the minimum is now Emacs 25.1.
</content>
</entry>
<entry>
<title>fix: drop the alias query from history when making it the default</title>
<updated>2026-06-26T17:25:41+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-26T17:25:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=ee8fdeb692d666c12ce068a2b1ee90e9451ac892'/>
<id>urn:sha1:ee8fdeb692d666c12ce068a2b1ee90e9451ac892</id>
<content type='text'>
Making a location the default saved it and dropped the favorite name from history, but not the underlying query. For an alias whose query differs from its name, that query lingered as a separate history candidate. Both saving branches now drop the name and the query, matching wttrin-save-location.
</content>
</entry>
<entry>
<title>fix: keep saved locations and search history disjoint</title>
<updated>2026-06-26T16:52:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-26T16:52:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/emacs-wttrin/commit/?id=06143c61c3782b24c738587ae5e1f427ceb0518c'/>
<id>urn:sha1:06143c61c3782b24c738587ae5e1f427ceb0518c</id>
<content type='text'>
Pressing d cleaned the location from history, but saving with s did not. A place saved under a friendly name kept its raw query as a separate history candidate, and removing the saved entry let that query resurface in the picker.

wttrin-save-location now drops the saved name and its query from history, and wttrin-remove-location drops both the removed name and its query (captured before removal). A new wttrin--drop-from-location-history helper does the work. A place now lives in the directory or in history, never both.
</content>
</entry>
</feed>
