76bfb3dcec
stats: /stats overview, economy, energy and Gouda pages; CBS series map; nav, homepage, /start and sitemap links
...
Deploy production / deploy (push) Successful in 1m10s
- CBS_SERIES: CPI, household tariffs (2007-now), energy balance, renewables, heat pumps,
solar, cars, population (monthly, since 1942, components), house prices, housing stock,
municipal levies for Gouda and its neighbours
- shared StatChart/Kpi/chart helpers with per-chart source attribution
- drop Eurostat nrg_pc_20x_h (404; CBS covers that history)
2026-10-25 20:50:47 +00:00
6dcbcfee25
groceries stats: fix array/json params for the app client (live store filter 500), CPI axis, header spacing
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 20:48:00 +00:00
8e35a58095
groceries stats: quote day alias in shrinkflation query
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 20:42:32 +00:00
a6ef263c7e
groceries: stats page with nightly snapshot (battles, basket, promos, CPI, range)
Deploy production / deploy (push) Successful in 1m19s
2026-10-25 20:39:35 +00:00
c4397e9d59
stats: fix role-name quoting in the stats migration grants; add deploy/stats-collector (systemd user timers for CBS, Eurostat, FRED, BIS)
Deploy production / deploy (push) Successful in 1m15s
2026-10-25 20:36:00 +00:00
8ef291f586
stats: new public stats schema (source/series/obs/region/fetch_run + raw CBS, Eurostat, FRED, BIS tables) and the stats collector (scripts/stats-fetch.ts); preflight checks the stats tables
Deploy production / deploy (push) Failing after 54s
2026-10-25 20:27:21 +00:00
902b1cadd5
header: sharper moon logo (112px webp from full-res photo, tight crop); regenerate favicons/app icons with tight moon crop
Deploy production / deploy (push) Successful in 1m12s
2026-10-25 20:26:05 +00:00
3ad13e5828
games: active vs non-active games (games.library.active, owner toggles on the dashboard and each game ⋯ menu; nothing deleted). Header flyout and mobile menu list every game split into active / non-active; /trackers and home tiles show active chips and open both sections on hover; /start shows active with a non-active toggle. Games dashboard moved from /projects/game-tracker to /trackers/games (dashboard of active games only; old URL and /credits 301); deep trackers stay put
Deploy production / deploy (push) Successful in 1m13s
2026-10-25 20:23:15 +00:00
60370d4572
groceries: relevance-ranked search (plain/basic products first)
...
Deploy production / deploy (push) Successful in 1m13s
- search.ts: score on the core name (brand/size stripped): exact or query+base suffix
(kipdij+filet), head-final compounds, prefix, inside; penalties per extra word and per
flavour/processing word (search-words.ts, editable); bonuses for store brands, the
query's dominant category, store count, favourites; trigram tiebreak
- groceries.synonyms table (seeded: kipdij/kippendij, pasta → spaghetti, …) expands queries
- list rows show all pack sizes of a group; group picker uses the same ranking
- scripts/groceries-search-eval.ts prints top results + latency; preflight now 8 tables
2026-10-25 20:20:34 +00:00
5028524537
chore: bump bun to 1.4.4 (CVE-2026-111497)
Deploy production / deploy (push) Successful in 1m24s
2026-10-25 20:08:51 +00:00
27abff569c
start: drag and drop links to reorder within a section or move them to another section (view and edit mode); orderLinks can also change the dragged link's section
Deploy production / deploy (push) Successful in 1m14s
2026-10-25 20:03:54 +00:00
1cfbe6486a
groceries: Action importer (allowed category listings: price, unit price, EAN from image name; food/drinks, personal care, pets, household consumables) + store row
Deploy production / deploy (push) Successful in 1m13s
2026-10-25 19:40:53 +00:00
0e98acd0a8
groceries: Lidl — search API only public for CDN-cached URLs (401 otherwise); later pages best-effort, off the nightly run
Deploy production / deploy (push) Successful in 1m13s
2026-10-25 19:31:39 +00:00
e2af941b88
deploy preflight: groceries schema now has 7 tables (categories, manual_prices)
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 19:12:23 +00:00
707f07efd4
groceries: mobile-first tracker redesign — compact rows per product group (cheapest store badge, unit price, spread, promo), tap to compare stores; category tree (23 tops, subcategories, icons/colours) with chips, store tiles, sort and non-food toggle; owner shelf prices (manual source with date, photo, note)
Deploy production / deploy (push) Failing after 1m1s
2026-10-25 19:10:10 +00:00
67d74f39b8
groceries: ALDI importer (category pages SSR Algolia hits, offers; no EANs) + store row
Deploy production / deploy (push) Successful in 1m13s
2026-10-25 19:04:37 +00:00
cce6ec3f2b
groceries: Vomar importer (public product gateway, EANs; regular prices only) + store row
Deploy production / deploy (push) Successful in 1m21s
2026-10-25 18:57:21 +00:00
1bab96c20d
games: chain the split migration snapshot after hoogvliet; games flyout tooltip shows the full game name
Deploy production / deploy (push) Has been cancelled
2026-10-25 18:57:06 +00:00
e4162d3a78
games: split Call of Duty into one entry per title and Pokémon into one per generation (remakes and spin-offs separate), full names, official logo for each (Steam icons / English logos); data migration moves bo2 status+aliases to black-ops-2; /trackers/games/bo2 and /pokemon redirect; three-column games flyout
Deploy production / deploy (push) Successful in 1m16s
2026-10-25 18:54:50 +00:00
942c436d03
groceries: Hoogvliet importer (sitemap SKUs + storefront GraphQL, EANs, promo labels) + store row; Lidl retries transient CDN 401s
Deploy production / deploy (push) Successful in 1m24s
2026-10-25 18:52:01 +00:00
c897ae3d14
start: live server stats over SSE (1 s): CPU, RAM, net, disk IO with 60 s sparklines, per-container CPU/mem/state; one shared netdata poller that runs only while /start is open (owner-only /start/live)
Deploy production / deploy (push) Successful in 1m29s
2026-10-25 18:49:00 +00:00
ce8b545f60
groceries: Lidl importer (online range), Dirk importer + store row, generic per-store GTIN backfill
Deploy production / deploy (push) Successful in 1m36s
2026-10-25 18:41:12 +00:00
5d3e8d0261
games: official logos for all 16 game trackers (self-hosted, one map in #lib/game-logos) shown by TrackerIcon everywhere games appear; coloured tile stays as fallback; logo credits on the artwork credits page
Deploy production / deploy (push) Successful in 1m24s
2026-10-25 18:35:21 +00:00
eba5f9eda3
start: one-container stacks as a single row (project · service), groups only for multi-container stacks; same memory units in rows and headers
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 17:41:10 +00:00
48ec29beac
start: group Docker containers by compose project (collapsible stacks with running count, health dot, CPU/mem); collector captures compose labels
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 17:38:23 +00:00
3f30bb883f
groceries: add PLUS, Xenos and Amazing Oriental stores, is_food flag, PLUS EAN backfill
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 17:17:53 +00:00
b23f7b3475
docs: prod host is stan-ovh (comments still said stan-vm)
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 17:01:50 +00:00
5a87a079eb
pc setup: hero falls back to the case present on the chosen day; add-ons (tilt pivot) are not counted as extra units in a slot card
Deploy production / deploy (push) Successful in 1m6s
2026-10-25 16:35:30 +00:00
ec4d3fd79e
pc setup: 2017 build (GTX 1070, i7-6700K, B150, HyperX Fury, 212 EVO, 850 EVO + WD Blue, SPEC-01, 650 G1, SickleFlow, AS5) images, Ergotron HX arm images; add-ons sort after their base item in a slot card; SEO says since 2017
Deploy production / deploy (push) Successful in 1m6s
2026-10-25 16:32:28 +00:00
676ac2ad64
trackers: lock icon after owner-only tracker names (header dropdown, mobile menu, home, /trackers, /start, error suggestions) from one locked flag in #lib/projects; drop the private: subtitle prefix
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 16:22:25 +00:00
eff5a24985
pc setup v2: one-screen layout with a time slider, photo grid and lightbox
...
Deploy production / deploy (push) Successful in 1m7s
- hardware: slots, sections, usage, install/removal dates, images and a hidden flag on
components and devices; setup_photos table; setup_overview view gains the new columns
- data: hide the 2021 friends-PC build and the wrong 140mm / unknown fans (kept, not deleted);
7x SL-INF + 3 Kraken stock fans; mice, audio, desk extras; MacBook Pro 16 M2 Pro 1 TB;
dates for every swap so the slider can rebuild the setup on any day
- self-hosted product images in static/hardware (webp + thumbs)
- prices and order details are owner-only (in a popover)
2026-10-25 16:16:38 +00:00
d414e7190e
games ingest: send dates as ISO strings (the app pool uses drizzle's date serializers), pause Leetify on 429 and resume next poll, FACEIT 403 from the server is a skip (history imported by backfill), weekly FACEIT
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 16:15:13 +00:00
0b7509bbbc
money: room under the €0 baseline so it sits clear of the chart edge and small dips below zero show
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 16:11:09 +00:00
772e699655
data holders: private tracker of every organisation holding my address, email, phone or IBAN
...
Deploy production / deploy (push) Has been cancelled
dataholders schema (orgs + identity) with migration and personal_app grants,
idempotent CSV import (upsert on name+login, never wipes, keeps site edits and
ticks), owner-only /trackers/data-holders with search, filters, pagination,
inline edit/add and a moving checklist per identifier
2026-10-25 16:10:24 +00:00
fd4a34b495
money: thick €0 baseline on the wealth charts (all modes) so dips toward zero or below stand out
Deploy production / deploy (push) Successful in 1m8s
2026-10-25 16:06:48 +00:00
80803ef5ac
games: automatic CS2 / PUBG / R6 match history — games.matches, match_players, seasons, snapshots, accounts; in-app poller (Leetify, FACEIT, Steam share codes, PUBG API, Ubisoft) every 20 min plus scripts/games-ingest.ts for backfills; match history, stats, maps and seasons on the per-game pages
Deploy production / deploy (push) Successful in 1m6s
2026-10-25 16:00:48 +00:00
9114b5433b
money: archived accounts (accounts.archived) — closed banks stay in history, net worth and charts but leave the quick balances, quick add and account pickers; archived section in the accounts panel; quick add defaults to Revolut
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 15:42:40 +00:00
968ec34ac5
games: collapse non-featured game chips behind +N more; slide-only flyout animation
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 15:25:41 +00:00
d79b73ad83
games: per-game pages, games.library table, games group in header/tiles/start
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 15:20:45 +00:00
037a525f91
spotters: brands, makers and operators with a logo first, activity order kept inside each group
Deploy production / deploy (push) Successful in 1m6s
2026-10-25 15:05:11 +00:00
8045362852
money: left-align accounts list rows (undo Button centring, fixed height and nowrap)
Deploy production / deploy (push) Successful in 1m6s
2026-10-25 15:00:49 +00:00
152880f5ab
spotters: 120 website-icon logos for makers and operators without a free Commons logo
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 14:51:33 +00:00
7aeb31c46a
spotters: stricter logo checks (no photos, plates, insignia or old names; --recheck), planes operator bonus weighted down for historic types, Türkiye for iNat
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 14:44:27 +00:00
3668c9e383
gitignore python bytecode
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 14:24:50 +00:00
4af041719c
start: wider spotting tile, filter narrows spotting chips
Deploy production / deploy (push) Has been cancelled
2026-10-25 14:24:11 +00:00
27987fb8e7
reading: owner archive / restore / delete / merge for books (⋯ menu on cards, rows and detail pages), archived filter, tombstones so merged ids redirect and the ingest never recreates deleted works, books-quarantine.py for deleted files
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 14:22:40 +00:00
8a8ed1642e
start: trackers section mirroring the header dropdown (same order and icons, spotting chips, f filter)
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 14:21:23 +00:00
11fa8ec006
spotters: fix 500 on detail pages of seen items (timestamp comes back as text); logos script uses small separate Wikidata queries
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 14:10:53 +00:00
0f8db8e432
music: fix tooltip and streak spacing, sort genre tooltip, shorter clock cells
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 14:06:43 +00:00
516bc15545
music: Last.fm-style stats with 7d/30d/1y/all ranges and genres
...
Deploy production / deploy (push) Successful in 1m14s
- Range picker (?range=7d|30d|1y|all) drives every section; the hours chart
covers the whole range (daily for 7d/30d, weekly for 1y, monthly for all).
- Genres from Last.fm artist top tags (music.artist_tags, normalised and
filtered), split by artist listening time, with a per-bucket stacked chart.
- Listening clock, new artists, comparison with the previous period and top
movers, streaks, milestones, top albums with art, rank changes.
- music.play_facts materialized view (refreshed by the app when plays arrive)
plus a per-range cache keep the page fast.
- scripts/music-fetch-tags.ts backfills tags, most-played artists first.
2026-10-25 14:03:39 +00:00