# Commit history · lucenx/codexbar-plasma

[View on GitCafe](https://git.cafe/lucenx/codexbar-plasma/commits/f8d0ce8d9fa7d9ba5c28df6ed303a69ba3f2f73f)

Repository: [lucenx/codexbar-plasma](https://git.cafe/lucenx/codexbar-plasma)

Visibility: public

Requested revision: f8d0ce8d9fa7d9ba5c28df6ed303a69ba3f2f73f

Requested commit: f8d0ce8d9fa7d9ba5c28df6ed303a69ba3f2f73f

- [fix\(insights\): skip spend comparisons from a pre-midnight cost scan \(\#340\)](https://git.cafe/lucenx/codexbar-plasma/commit/f8d0ce8d9fa7d9ba5c28df6ed303a69ba3f2f73f?format=markdown) — f8d0ce8d9fa7d9ba5c28df6ed303a69ba3f2f73f; Simone

- [feat\(insights\): add optional AI Insights usage card \(\#339\)](https://git.cafe/lucenx/codexbar-plasma/commit/04c3a1745c0109c78704bca6a348ef8df2426e90?format=markdown) — 04c3a1745c0109c78704bca6a348ef8df2426e90; Simone

- [fix\(setup\): let the quick-install prompts reach the terminal \(\#338\)](https://git.cafe/lucenx/codexbar-plasma/commit/612b981213825f3b35ebcc004dec9bb9ac3a93c5?format=markdown) — 612b981213825f3b35ebcc004dec9bb9ac3a93c5; Simone

- [fix\(update\): serialize widget upgrades and classify CLI network failures \(\#337\)](https://git.cafe/lucenx/codexbar-plasma/commit/3c9e2e02c5e5b0fd0fc91c1e2d53f5f81969bbc2?format=markdown) — 3c9e2e02c5e5b0fd0fc91c1e2d53f5f81969bbc2; Simone

- [style\(ui\): align top-right header action buttons across popup views \(\#335\)](https://git.cafe/lucenx/codexbar-plasma/commit/3f62b1b81f8f670739fa50beda8d7333abd5564f?format=markdown) — 3f62b1b81f8f670739fa50beda8d7333abd5564f; Simone

- [feat\(popup\): draw progress meters on provider detail rows \(\#336\)](https://git.cafe/lucenx/codexbar-plasma/commit/e075256bfafb6f1ac1b4d050082f2b77fee00904?format=markdown) — e075256bfafb6f1ac1b4d050082f2b77fee00904; Simone

- [feat\(providers\): review CodexBar 0.65.0 and bundle its new providers \(\#334\)](https://git.cafe/lucenx/codexbar-plasma/commit/84b5cc47842999bd46c36801547faf03fca1aa18?format=markdown) — 84b5cc47842999bd46c36801547faf03fca1aa18; Simone

- [test\(qml\): remove the qmlformat crash triggers \(\#333\)](https://git.cafe/lucenx/codexbar-plasma/commit/a1357cb121f4a794fec29271eaf38677aa03853f?format=markdown) — a1357cb121f4a794fec29271eaf38677aa03853f; Simone

- [fix\(panel\): stop brand-colored capsules from reading as warnings \(\#332\)](https://git.cafe/lucenx/codexbar-plasma/commit/392eff5328900693a749d6772004e3c3ca279d66?format=markdown) — 392eff5328900693a749d6772004e3c3ca279d66; Simone

- [fix\(tests\): use non-reserved identifier in provider wiring fixture \(\#330\)](https://git.cafe/lucenx/codexbar-plasma/commit/957f9de7aecc22ead29e374d308049f508db1cf4?format=markdown) — 957f9de7aecc22ead29e374d308049f508db1cf4; Simone

- [style\(settings\): align settings pages with the popup design \(\#331\)](https://git.cafe/lucenx/codexbar-plasma/commit/689720831090c70214125ffcdba3cc5431c5c7ea?format=markdown) — 689720831090c70214125ffcdba3cc5431c5c7ea; Simone

- [style\(ui\): refine popup visual hierarchy \(\#329\)](https://git.cafe/lucenx/codexbar-plasma/commit/348e733912cee7f74eec7ffe45ab27f8a534d4dd?format=markdown) — 348e733912cee7f74eec7ffe45ab27f8a534d4dd; Simone

- [docs: add KDE Store listing icon \(\#328\)](https://git.cafe/lucenx/codexbar-plasma/commit/181923cbece1e2466ff677ddeb692e0a5b90ed86?format=markdown) — 181923cbece1e2466ff677ddeb692e0a5b90ed86; Simone

- [style\(ui\): align provider header identity tile to top \(\#315\)](https://git.cafe/lucenx/codexbar-plasma/commit/ade6cd8eee2dcb4066daa853cc14227e5494f572?format=markdown) — ade6cd8eee2dcb4066daa853cc14227e5494f572; Simone

- [feat\(install\): add one-command release installation \(\#327\)](https://git.cafe/lucenx/codexbar-plasma/commit/a4400f1f249cc43961191075967661b8f71584d1?format=markdown) — a4400f1f249cc43961191075967661b8f71584d1; Simone

- [fix\(share\): preserve export completeness notices \(\#326\)](https://git.cafe/lucenx/codexbar-plasma/commit/a21bc795ea9ad58d83cb3be5fdd67ed4ade81691?format=markdown) — a21bc795ea9ad58d83cb3be5fdd67ed4ade81691; Simone

- [fix: protect shared provider names and qualify quota costs \(\#325\)](https://git.cafe/lucenx/codexbar-plasma/commit/001577a411cc46f22e7ae04bf956bb3913aed209?format=markdown) — 001577a411cc46f22e7ae04bf956bb3913aed209; Simone

- [fix: correct usage sharing and quota-week totals \(\#324\)](https://git.cafe/lucenx/codexbar-plasma/commit/2d132c84b7fffc61a2439c6d340e1dcd193666a6?format=markdown) — 2d132c84b7fffc61a2439c6d340e1dcd193666a6; Simone

- [feat\(share\): export local usage cards with native KDE actions \(\#323\)](https://git.cafe/lucenx/codexbar-plasma/commit/0e5be0eb4f69acbd7423dae0132b858398f006b1?format=markdown) — 0e5be0eb4f69acbd7423dae0132b858398f006b1; Simone

- [fix\(cost\): mark stale quota week totals partial \(\#322\)](https://git.cafe/lucenx/codexbar-plasma/commit/af2a22b1e1e137f9edbda773091714f62568888d?format=markdown) — af2a22b1e1e137f9edbda773091714f62568888d; Simone

- [feat\(cost\): split local cost history by weekly quota window \(\#321\)](https://git.cafe/lucenx/codexbar-plasma/commit/6ccbb5140745eda8d059319b3f4aa667627c86aa?format=markdown) — 6ccbb5140745eda8d059319b3f4aa667627c86aa; Simone

- [test\(checks\): derive doc and workflow checks instead of pinning prose \(\#320\)](https://git.cafe/lucenx/codexbar-plasma/commit/3ad47e0efe36fc08dce8dd2cd45990195be582c0?format=markdown) — 3ad47e0efe36fc08dce8dd2cd45990195be582c0; Simone

- [docs\(research\): remove parity reports superseded by the 0.56.2 audit \(\#319\)](https://git.cafe/lucenx/codexbar-plasma/commit/f7cd6600f7697bbf2377254f2b0f0f45ddc90ddc?format=markdown) — f7cd6600f7697bbf2377254f2b0f0f45ddc90ddc; Simone

- [refactor\(applet\): move quota-window labels into a component \(\#318\)](https://git.cafe/lucenx/codexbar-plasma/commit/ba0a0d86e92d2460fad82ffa1a2df27777f34c09?format=markdown) — ba0a0d86e92d2460fad82ffa1a2df27777f34c09; Simone

- [test\(checks\): make QML source assertions layout-insensitive \(\#317\)](https://git.cafe/lucenx/codexbar-plasma/commit/1762070c9958ec18ef53baa88ba65c9b86b604d1?format=markdown) — 1762070c9958ec18ef53baa88ba65c9b86b604d1; Simone

- [feat\(providers\): bundle metadata for the 0.64.1 registry \(\#316\)](https://git.cafe/lucenx/codexbar-plasma/commit/ac5367085fb51da2161d339be0007531797b9540?format=markdown) — ac5367085fb51da2161d339be0007531797b9540; Simone

- [fix\(diagnostics\): kill hung CLI children shell-side \(\#314\)](https://git.cafe/lucenx/codexbar-plasma/commit/4de929a514386748e1b6870088573a196cd3196a?format=markdown) — 4de929a514386748e1b6870088573a196cd3196a; Simone

- [test\(components\): replace the remaining covered QML greps with executed tests \(\#313\)](https://git.cafe/lucenx/codexbar-plasma/commit/f548727d2378d1bf1a2d53d2d78725f33ba39740?format=markdown) — f548727d2378d1bf1a2d53d2d78725f33ba39740; Simone

- [test\(applet\): replace covered main.qml greps with executed tests \(\#312\)](https://git.cafe/lucenx/codexbar-plasma/commit/bf944063b7f592e9fcce29023bb558525e4b6502?format=markdown) — bf944063b7f592e9fcce29023bb558525e4b6502; Simone

- [test\(providers\): replace covered settings-page greps with executed tests \(\#311\)](https://git.cafe/lucenx/codexbar-plasma/commit/281014ce4f719b4667ed6ba4ade85be0c3200219?format=markdown) — 281014ce4f719b4667ed6ba4ade85be0c3200219; Simone

- [test\(controllers\): replace covered lifecycle greps with executed tests \(\#310\)](https://git.cafe/lucenx/codexbar-plasma/commit/21fb0d580882c1000c947637822560b220b664a2?format=markdown) — 21fb0d580882c1000c947637822560b220b664a2; Simone

- [test\(settings\): replace covered general greps with executed tests \(\#309\)](https://git.cafe/lucenx/codexbar-plasma/commit/85a882c2e1bbf1a2281f3947fe160e296d0ce9d3?format=markdown) — 85a882c2e1bbf1a2281f3947fe160e296d0ce9d3; Simone

- [test\(settings\): replace covered panel/popup greps with executed tests \(\#308\)](https://git.cafe/lucenx/codexbar-plasma/commit/5d4fcfc6e22b18219490bc885ef619137fe9afb9?format=markdown) — 5d4fcfc6e22b18219490bc885ef619137fe9afb9; Simone

- [test\(settings\): replace covered notification/diagnostic greps with executed tests \(\#306\)](https://git.cafe/lucenx/codexbar-plasma/commit/7a4c2adff8b0144dccf4d58a1f5ac776a4383b14?format=markdown) — 7a4c2adff8b0144dccf4d58a1f5ac776a4383b14; Simone

- [feat\(providers\): bundle metadata for the 0.63.0 registry \(\#305\)](https://git.cafe/lucenx/codexbar-plasma/commit/754b51c93b0f21683b6ee346dc24a79571a92081?format=markdown) — 754b51c93b0f21683b6ee346dc24a79571a92081; Simone

- [test\(checks\): replace covered JS fragment assertions with executed tests \(\#304\)](https://git.cafe/lucenx/codexbar-plasma/commit/1dc7f2c5fbc834bb74c205ad4b9d5607aba597bf?format=markdown) — 1dc7f2c5fbc834bb74c205ad4b9d5607aba597bf; Simone

- [test\(providers\): replace covered descriptor greps with an executed test \(\#303\)](https://git.cafe/lucenx/codexbar-plasma/commit/cf5b828b19ac56772642c96ddae2ae79e90ab7a1?format=markdown) — cf5b828b19ac56772642c96ddae2ae79e90ab7a1; Simone

- [build\(check\): parallelize the suite and lint workflows and Python \(\#302\)](https://git.cafe/lucenx/codexbar-plasma/commit/1cb4c3503930060b156588e6ad81139eaf89d484?format=markdown) — 1cb4c3503930060b156588e6ad81139eaf89d484; Simone

- [chore\(release\): prepare 0.2.40 \(\#301\)](https://git.cafe/lucenx/codexbar-plasma/commit/7f2ab791624b803600083a23df44ae23410796b1?format=markdown) — 7f2ab791624b803600083a23df44ae23410796b1; Simone

- [docs\(parity\): review official CodexBar 0.62.0 release \(\#300\)](https://git.cafe/lucenx/codexbar-plasma/commit/47841aeb446e6611e5f0ba43d2a564e22bfc1224?format=markdown) — 47841aeb446e6611e5f0ba43d2a564e22bfc1224; Simone

- [feat\(providers\): bundle metadata and icons for the 0.61.0 registry \(\#299\)](https://git.cafe/lucenx/codexbar-plasma/commit/9205e51a3805972eaaf28965f13b57045d318fbb?format=markdown) — 9205e51a3805972eaaf28965f13b57045d318fbb; Simone

- [style\(ui\): align provider header account text typography \(\#298\)](https://git.cafe/lucenx/codexbar-plasma/commit/77016c370b644a9818b20e8a0c1c39b1bc0a8e48?format=markdown) — 77016c370b644a9818b20e8a0c1c39b1bc0a8e48; Simone

- [feat\(cli\): name managed CLI failures instead of one generic error \(\#297\)](https://git.cafe/lucenx/codexbar-plasma/commit/d418e9d9d5cd74437f6360170908e6df57879c57?format=markdown) — d418e9d9d5cd74437f6360170908e6df57879c57; Simone

- [fix\(cli\): keep managed CLI auto-updates switchable when enabled \(\#296\)](https://git.cafe/lucenx/codexbar-plasma/commit/c0c05d23e5c777a2ca068ff1acd88360641b6268?format=markdown) — c0c05d23e5c777a2ca068ff1acd88360641b6268; Simone

- [feat\(cli\): confirm managed install over a working external CLI \(\#295\)](https://git.cafe/lucenx/codexbar-plasma/commit/81ea9fa9b34d6ab14c66b1326bfc29717fe7aebe?format=markdown) — 81ea9fa9b34d6ab14c66b1326bfc29717fe7aebe; Simone

- [feat\(cli\): install and optionally auto-update a managed copy \(\#294\)](https://git.cafe/lucenx/codexbar-plasma/commit/61a33d1facbdc14f1bfcd1ae3549679282e92bb6?format=markdown) — 61a33d1facbdc14f1bfcd1ae3549679282e92bb6; Simone

- [feat\(updates\): add CLI release checks and installation guidance \(\#293\)](https://git.cafe/lucenx/codexbar-plasma/commit/7442b64aa5b4bf9a3e4cf7760b22397f48d44238?format=markdown) — 7442b64aa5b4bf9a3e4cf7760b22397f48d44238; Simone

- [style\(ui\): standardize helper label typography in settings pages \(\#292\)](https://git.cafe/lucenx/codexbar-plasma/commit/11c328ab173ffaa39fbc92c5603d14046be2f69d?format=markdown) — 11c328ab173ffaa39fbc92c5603d14046be2f69d; Simone

- [fix\(providers\): cap descriptor action URL length before opening \(\#291\)](https://git.cafe/lucenx/codexbar-plasma/commit/e0f8dc814127000f12bad5ef340bbc1c34fdfb87?format=markdown) — e0f8dc814127000f12bad5ef340bbc1c34fdfb87; Simone

- [fix\(diagnostics\): tolerate carriage returns in environment probe \(\#290\)](https://git.cafe/lucenx/codexbar-plasma/commit/93dd6e9ee41c352a70b310dd6ed936eb725b3394?format=markdown) — 93dd6e9ee41c352a70b310dd6ed936eb725b3394; Simone

- [docs: add a Ko-fi sponsorship link \(\#289\)](https://git.cafe/lucenx/codexbar-plasma/commit/8a88ee0b89215b44f485c49cf4f1d6993abe8916?format=markdown) — 8a88ee0b89215b44f485c49cf4f1d6993abe8916; Simone

- [feat\(diagnostics\): separate an unreachable CLI from provider setup \(\#288\)](https://git.cafe/lucenx/codexbar-plasma/commit/f2b47be1f1435a5ea5379b0e5b0817283e6a76e9?format=markdown) — f2b47be1f1435a5ea5379b0e5b0817283e6a76e9; Simone

- [docs\(readme\): lead with the tour animation and the install paths \(\#287\)](https://git.cafe/lucenx/codexbar-plasma/commit/a385c905fd693c53f61b72d593b84dda9283099e?format=markdown) — a385c905fd693c53f61b72d593b84dda9283099e; Simone

- [docs\(parity\): review upstream release 0.61.0 \(\#286\)](https://git.cafe/lucenx/codexbar-plasma/commit/f88020eac18d90cae90bf55635e3546d340b297b?format=markdown) — f88020eac18d90cae90bf55635e3546d340b297b; Simone

- [chore\(tools\): add an optional TODO reconciliation gate \(\#285\)](https://git.cafe/lucenx/codexbar-plasma/commit/f589bffdfc593b0d3338532cbed0349a349faa97?format=markdown) — f589bffdfc593b0d3338532cbed0349a349faa97; Simone

- [feat\(updates\): open the release page from the update notification \(\#284\)](https://git.cafe/lucenx/codexbar-plasma/commit/f1a4eb8baadc3bd618930b44fee244d655c17d95?format=markdown) — f1a4eb8baadc3bd618930b44fee244d655c17d95; Simone

- [style\(ui\): add peak reference line to charts and polish spend provider cards \(\#283\)](https://git.cafe/lucenx/codexbar-plasma/commit/618a4fd95a6e06ad04e9e3aedd8130cd46ea6f0c?format=markdown) — 618a4fd95a6e06ad04e9e3aedd8130cd46ea6f0c; Simone

- [feat\(costs\): mark totals that exclude incomplete requests \(\#282\)](https://git.cafe/lucenx/codexbar-plasma/commit/9d40913aefbe02100e034584e6d82f21a724cbe6?format=markdown) — 9d40913aefbe02100e034584e6d82f21a724cbe6; Simone

- [docs\(parity\): review upstream release 0.60.5 \(\#281\)](https://git.cafe/lucenx/codexbar-plasma/commit/5eb507c575174001e593413cb50092fb276ff413?format=markdown) — 5eb507c575174001e593413cb50092fb276ff413; Simone

- [chore: ignore test crash dumps \(\#280\)](https://git.cafe/lucenx/codexbar-plasma/commit/c69b0a0481bbf2373087658f620e0ffeab854429?format=markdown) — c69b0a0481bbf2373087658f620e0ffeab854429; Simone

- [chore\(release\): prepare 0.2.39 \(\#279\)](https://git.cafe/lucenx/codexbar-plasma/commit/6285e0b4e0d4cc89e57e72a0b333544c04533a07?format=markdown) — 6285e0b4e0d4cc89e57e72a0b333544c04533a07; Simone

- [fix\(costs\): keep the daily average for a measured-zero range \(\#278\)](https://git.cafe/lucenx/codexbar-plasma/commit/9d34963d4f221959dd6602526e1254463177b2c9?format=markdown) — 9d34963d4f221959dd6602526e1254463177b2c9; Simone

- [style\(ui\): align usage dashboard section heading hierarchy \(\#277\)](https://git.cafe/lucenx/codexbar-plasma/commit/9c1a050959ce8e73df269e1fa29dcfa8cddeb5f3?format=markdown) — 9c1a050959ce8e73df269e1fa29dcfa8cddeb5f3; Simone

- [fix\(popup\): keep oversized tabs aligned on repeated reveal \(\#275\)](https://git.cafe/lucenx/codexbar-plasma/commit/1a94893296918a2fc8a2aae2dbad8ca26c0fc115?format=markdown) — 1a94893296918a2fc8a2aae2dbad8ca26c0fc115; Simone

- [refactor\(providers\): share the display-name table \(\#276\)](https://git.cafe/lucenx/codexbar-plasma/commit/dbc5e10ee5efa08a9bd3bc530eeb716a45160a23?format=markdown) — dbc5e10ee5efa08a9bd3bc530eeb716a45160a23; Simone

- [fix\(panel\): open represented provider from standalone icon \(\#273\)](https://git.cafe/lucenx/codexbar-plasma/commit/772789c441e3b6414bb57cc01691079de85f42ae?format=markdown) — 772789c441e3b6414bb57cc01691079de85f42ae; Simone

- [fix\(costs\): show measured zero amounts in recent history rows \(\#274\)](https://git.cafe/lucenx/codexbar-plasma/commit/0c2018bab7a4db073eed334dda374ac2863752ce?format=markdown) — 0c2018bab7a4db073eed334dda374ac2863752ce; Simone

- [fix\(selection\): rank fractional usage before incident severity \(\#272\)](https://git.cafe/lucenx/codexbar-plasma/commit/d9979ebf4c1fa11fa5b59a9dc5c59d1533290d4b?format=markdown) — d9979ebf4c1fa11fa5b59a9dc5c59d1533290d4b; Simone

- [fix\(usage\): derive empty-usage identity from validated account fields \(\#271\)](https://git.cafe/lucenx/codexbar-plasma/commit/a3bee6354073b05342ec77472460939787755a57?format=markdown) — a3bee6354073b05342ec77472460939787755a57; Simone

- [fix\(usage\): keep numeric CLI reset dates parsable \(\#270\)](https://git.cafe/lucenx/codexbar-plasma/commit/38d05a9943aa0a19ba61b6c03d801140ac833983?format=markdown) — 38d05a9943aa0a19ba61b6c03d801140ac833983; Simone

- [docs\(parity\): audit upstream releases 0.59.0 through 0.60.4 \(\#269\)](https://git.cafe/lucenx/codexbar-plasma/commit/cb27eee2e6fd7639bdba5136f4b3bebad2fb445d?format=markdown) — cb27eee2e6fd7639bdba5136f4b3bebad2fb445d; Simone

- [fix\(panel\): keep visibility rule editor following external changes \(\#267\)](https://git.cafe/lucenx/codexbar-plasma/commit/8d49266166c3e892a1c52f191b57cf44374bc498?format=markdown) — 8d49266166c3e892a1c52f191b57cf44374bc498; Simone

- [fix\(ui\): add hover tooltips to provider account actions \(\#266\)](https://git.cafe/lucenx/codexbar-plasma/commit/53bde25bb30ac78818b6152042560afdb2f877c5?format=markdown) — 53bde25bb30ac78818b6152042560afdb2f877c5; Simone

- [fix\(panel\): normalize stored provider IDs when toggling selection \(\#265\)](https://git.cafe/lucenx/codexbar-plasma/commit/a72e4abd71e5839e645af48c817047c9722b1b96?format=markdown) — a72e4abd71e5839e645af48c817047c9722b1b96; Simone

- [fix\(panel\): keep quota lane combo following external changes \(\#264\)](https://git.cafe/lucenx/codexbar-plasma/commit/b52bf5f4ddc8cc757c528cf7b50d16e0a4a6db69?format=markdown) — b52bf5f4ddc8cc757c528cf7b50d16e0a4a6db69; Simone

- [chore\(release\): prepare 0.2.38 \(\#263\)](https://git.cafe/lucenx/codexbar-plasma/commit/083e84fb1731b3d89f23932b52546b99f8dab425?format=markdown) — 083e84fb1731b3d89f23932b52546b99f8dab425; Simone

- [fix\(ui\): eliminate duplicate section separators in popup detail view \(\#262\)](https://git.cafe/lucenx/codexbar-plasma/commit/511f8b3ff6c0b5b0f2c8870822d361ba2c2e04de?format=markdown) — 511f8b3ff6c0b5b0f2c8870822d361ba2c2e04de; Simone

- [refactor\(overview\): isolate row filtering and automatic selection \(\#261\)](https://git.cafe/lucenx/codexbar-plasma/commit/c9035520a9e79b5ec9013c961c062408b81c106c?format=markdown) — c9035520a9e79b5ec9013c961c062408b81c106c; Simone

- [refactor\(reset\): isolate countdown and label logic \(\#260\)](https://git.cafe/lucenx/codexbar-plasma/commit/12a4c85ddd0be7f65f85dcda1a39494800d11317?format=markdown) — 12a4c85ddd0be7f65f85dcda1a39494800d11317; Simone

- [refactor\(cost\): isolate provider cost presentation \(\#259\)](https://git.cafe/lucenx/codexbar-plasma/commit/dbba1e5d20549c553b46be1e61dc39f4671a9614?format=markdown) — dbba1e5d20549c553b46be1e61dc39f4671a9614; Simone

- [refactor\(notifications\): isolate notification delivery \(\#258\)](https://git.cafe/lucenx/codexbar-plasma/commit/2308aa12b09f3fd85cd0d759da9d300042805dbc?format=markdown) — 2308aa12b09f3fd85cd0d759da9d300042805dbc; Simone

- [refactor\(config\): isolate configuration watcher](https://git.cafe/lucenx/codexbar-plasma/commit/90bf0584fa1153c73666d80f754a06746f7da2c7?format=markdown) — 90bf0584fa1153c73666d80f754a06746f7da2c7; Simone

- [refactor\(usage\): isolate usage refresh and fallback](https://git.cafe/lucenx/codexbar-plasma/commit/0c8206d382d6b3d4952ed139f85a12addea73cb9?format=markdown) — 0c8206d382d6b3d4952ed139f85a12addea73cb9; Simone

- [refactor\(accounts\): isolate account discovery \(\#255\)](https://git.cafe/lucenx/codexbar-plasma/commit/1b44b9bb9b8ed3b2f921fa36965be35ffdebdc94?format=markdown) — 1b44b9bb9b8ed3b2f921fa36965be35ffdebdc94; Simone

- [refactor\(cost\): isolate the cost lifecycle \(\#254\)](https://git.cafe/lucenx/codexbar-plasma/commit/c1a19243df5c368b9769e296e83839e3a6381274?format=markdown) — c1a19243df5c368b9769e296e83839e3a6381274; Simone

- [refactor\(sessions\): isolate the session lifecycle \(\#253\)](https://git.cafe/lucenx/codexbar-plasma/commit/e51f2bbeff63f601f2eba77923367be99dd0be04?format=markdown) — e51f2bbeff63f601f2eba77923367be99dd0be04; Simone

- [feat\(popup\): add provider setup and usage recovery actions \(\#252\)](https://git.cafe/lucenx/codexbar-plasma/commit/35a604d3f0d104892de1601f6f2e725832bde965?format=markdown) — 35a604d3f0d104892de1601f6f2e725832bde965; Simone

- [fix\(accounts\): preserve cached usage measurement age \(\#249\)](https://git.cafe/lucenx/codexbar-plasma/commit/a1eca7eea4e830dd94a307262495834211c7dc0e?format=markdown) — a1eca7eea4e830dd94a307262495834211c7dc0e; Simone

- [fix\(ui\): reserve chart readout height to prevent layout shift \(\#246\)](https://git.cafe/lucenx/codexbar-plasma/commit/f7135dbdb5b999b6d329f2391e84b1ff8e93e1c4?format=markdown) — f7135dbdb5b999b6d329f2391e84b1ff8e93e1c4; Simone

- [fix\(providers\): reject errors without readable messages \(\#248\)](https://git.cafe/lucenx/codexbar-plasma/commit/b89542992515c64a5913f40a643053e8c9f05a9a?format=markdown) — b89542992515c64a5913f40a643053e8c9f05a9a; Simone

- [fix\(sessions\): guard activity calculation against non-string command source \(\#251\)](https://git.cafe/lucenx/codexbar-plasma/commit/e042e133da2b6dd93a51ddde58351c9599ac7666?format=markdown) — e042e133da2b6dd93a51ddde58351c9599ac7666; Simone

- [fix\(cost\): contain malformed provider error messages \(\#250\)](https://git.cafe/lucenx/codexbar-plasma/commit/5ca9e6678500677bab1c1bd0d35b188d6b98d157?format=markdown) — 5ca9e6678500677bab1c1bd0d35b188d6b98d157; Simone

- [fix\(sessions\): throttle automatic retries after failed scans \(\#245\)](https://git.cafe/lucenx/codexbar-plasma/commit/d30d2de3ec39344511cb7110e33b7dde4bc7d9e7?format=markdown) — d30d2de3ec39344511cb7110e33b7dde4bc7d9e7; Simone

- [fix\(usage\): preserve quotas with malformed plan metadata \(\#243\)](https://git.cafe/lucenx/codexbar-plasma/commit/9defb0f9ca047f629cbf0b4e1195ba54d1dba71c?format=markdown) — 9defb0f9ca047f629cbf0b4e1195ba54d1dba71c; Simone

- [fix\(overview\): ignore disabled providers in selection limit \(\#242\)](https://git.cafe/lucenx/codexbar-plasma/commit/2c3762d5d7831d59347b2f6504acd10dc72aa9a7?format=markdown) — 2c3762d5d7831d59347b2f6504acd10dc72aa9a7; Simone

- [fix\(spend\): preserve calendar gaps in activity heatmaps \(\#241\)](https://git.cafe/lucenx/codexbar-plasma/commit/4ed508f5c1bf08403fc9b57f7274eb1721ce583e?format=markdown) — 4ed508f5c1bf08403fc9b57f7274eb1721ce583e; Simone

- [fix\(cost\): show refresh errors beside retained provider costs \(\#240\)](https://git.cafe/lucenx/codexbar-plasma/commit/9acf5eba828b4dc2fac119c7871589be2412fdcb?format=markdown) — 9acf5eba828b4dc2fac119c7871589be2412fdcb; Simone

- [fix\(cost\): coalesce scans after settings changes \(\#239\)](https://git.cafe/lucenx/codexbar-plasma/commit/ae649731f2e09883d241660c0bcbc8ecc4540b96?format=markdown) — ae649731f2e09883d241660c0bcbc8ecc4540b96; Simone

- [fix\(panel\): preserve cached account forecast countdowns \(\#238\)](https://git.cafe/lucenx/codexbar-plasma/commit/2b146a3a1434548bc879eaae071ac99040cb2f4a?format=markdown) — 2b146a3a1434548bc879eaae071ac99040cb2f4a; Simone

- [fix\(usage\): preserve quotas when error messages are malformed \(\#237\)](https://git.cafe/lucenx/codexbar-plasma/commit/cfeddf6aabe2d5cceb34cc3e96e94d78849112d9?format=markdown) — cfeddf6aabe2d5cceb34cc3e96e94d78849112d9; Simone

More commits follow; continue with `GET /api/repos/lucenx/codexbar-plasma/commits?after=IjkxNWE3Mjk4NGI3N2ExYzRhYTU5MmE3ZWZiYTU5MjcyMGUxYjUwMGIi`.
