Commit Graph
100 Commits
Author SHA1 Message Date
stan d7e26a3338 math tracker: pannable 2D map of the Napkin (default), list view kept behind ?view=list
Deploy production / deploy (push) Successful in 1m18s
Chapters are nodes grouped into part regions laid out like the book's dependency chart
(roots Abs Alg, Topology, Lin Alg, Set Theory flowing down to AG, AT and ANT). Part
prereqs are routed edges, optional ones (\coreqc in the book) dotted. Status colours,
exercise rings, current-chapter glow, legend, search, minimap, pinch/drag/wheel zoom,
fit and +/- buttons. Tapping a chapter opens the existing panel (side panel on desktop,
bottom sheet on mobile). The view choice is remembered per device.
2026-10-26 12:22:38 +00:00
stan 44379b9a27 math tracker: space before the skipped count
Deploy production / deploy (push) Successful in 1m18s
2026-10-26 11:22:53 +00:00
stan f7a3bb556c math tracker: pass string classes to lucide icons (fixes owner-view 500)
Deploy production / deploy (push) Successful in 1m19s
2026-10-26 11:14:03 +00:00
stan 16684d6688 math tracker: own icon colour (blue sigma tile; indigo is games)
Deploy production / deploy (push) Successful in 1m19s
2026-10-26 11:09:36 +00:00
stan d99245e9fc Math tracker (/trackers/math): Evan Chen's Napkin, chapter by chapter
Deploy production / deploy (push) Failing after 9s
Schema math (parts, chapters, sections, activity), seeded with all 100 chapters
(Ch 0-94, appendix A-E), 647 sections, PDF pages, exercise counts and approximate
prereqs. Triggers stamp started_at/completed_at and log status/exercise/note/section
changes; math.apply_progress(jsonb) applies the JSON format bots send. Private by
default via MATH_PRIVATE in #lib/math (owner-only prefix + lock in every tracker list).
Overall + per-part progress, current chapter, prereq hints, quick status buttons,
exercises stepper, notes, optional section ticks, activity log, dependency chart.
Deploy preflight checks the math schema (4 tables, 100 chapters).
2026-10-26 10:55:16 +00:00
stan 23a43049a0 cs-prices: lime for CSFloat history so it stands apart from CSFloat listings
Deploy production / deploy (push) Successful in 1m13s
2026-10-26 09:35:36 +00:00
stan 3b75fd39b5 AI setup tab: masonry columns, even form controls, one labels-only hint
Deploy production / deploy (push) Has been cancelled
2026-10-26 09:34:38 +00:00
stan 76f063b362 cs-prices: price history backfill (Steam daily median since 2013 from the public listing page, CSFloat daily averages, ECB FX history) in separate *-history streams; labelled on item charts
Deploy production / deploy (push) Successful in 1m13s
2026-10-26 09:32:55 +00:00
stan 7396d23335 AI tracker: owner-only tabs no longer 500 (cache-control set twice: layout + page load)
Deploy production / deploy (push) Successful in 1m14s
2026-10-26 09:27:26 +00:00
stan 22279d181f deploy preflight: ai schema now has 5 tables (setup tab)
Deploy production / deploy (push) Successful in 1m13s
2026-10-26 09:23:35 +00:00
stan 8d2da984e0 AI tracker: owner-only Setup tab (per-provider connections, skills, instructions, plugins, routines, agents, plan/key labels, notes; ai.provider_setup_providers + provider_setup_entries, secrets refused)
Deploy production / deploy (push) Failing after 1m3s
2026-10-26 09:09:32 +00:00
stan 9e89a615c6 cs-prices: full ByMykel catalog, every config, daily multi-source prices, item pages with working charts
Deploy production / deploy (push) Successful in 1m18s
- cs.skins catalog (weapons, knives, gloves, stickers, cases, agents, charms, …) refreshed weekly
- every market config: wears in float range, StatTrak, Souvenir, Doppler/Gamma phases
- cs.daily_prices (one row per config/stream/day, idempotent) from Skinport, Steam, CSFloat, Buff163
- cs.price_windows for 24h/7d/30d/90d sale aggregates, cs.fx_rates (ECB)
- scripts/cs-prices.ts daily|catalog|prices; legacy ingest fixed for the new unique index
- skin browser + /projects/cs-prices/[slug] with variant/wear/phase switcher and real charts
- charts show points for short histories and pad sparse time axes
2026-10-26 08:47:57 +00:00
stan 9d79dfb43a worldwide todo list: global map (List/Map toggle, clustered category pins, Global strip, pick on map, location_precision, tasks.geojson)
Deploy production / deploy (push) Successful in 1m13s
2026-10-26 08:38:51 +00:00
stan 21b10ea894 Money forecast: name the first crash after the calm start in the explanation
Deploy production / deploy (push) Successful in 1m14s
2026-10-26 08:29:28 +00:00
stan 78b69c7d8f Money forecast: calm optimistic start, rising plateau, thin solid projected lines
Deploy production / deploy (push) Successful in 1m13s
- Optimistic: no crash or correction through 2031 (5 years from today), earning the
  9.5% average; cycle resumes after (correction 2035, crash 2040). Salary plateau
  grows 2%/yr real so pay never stalls.
- Realistic keeps its single -30% crash in 2029; pessimistic unchanged.
- Projected lines are now thin, slightly lighter solid lines in every view; legend updated.
- Explanation text lists the crash/correction years and recovery time.
2026-10-26 08:25:52 +00:00
stan d3b9bb9ba2 money: tag interest/dividend payouts on bank sync and Revolut import (category interest|dividend, never overwrites a set category)
Deploy production / deploy (push) Successful in 1m14s
2026-10-26 07:48:47 +00:00
stan 0121071af2 Tasks goals: investment income in the €10k/month bar (trailing-12m money.transactions amount_cents>0, category dividend|interest, any account except Joint, ÷12); own segment colour + breakdown line, breakdown amounts with cents
Deploy production / deploy (push) Successful in 1m14s
2026-10-26 07:35:09 +00:00
stan 2e8658bf33 money: count real Joint recurring items before the move instead of a flat €900/mo
Deploy production / deploy (push) Has been cancelled
2026-10-26 07:34:49 +00:00
stan e33afe5387 notes: private Obsidian vault tracker at /trackers/notes
Deploy production / deploy (push) Successful in 1m19s
Vault files stay the source of truth (bind-mounted read-write at /notes):
atomic writes chowned to the vault owner, hash-checked saves (409 on a
newer file), deletes to .trash. notes.* is a full-text/link index kept
current by a recursive watcher plus a 60s rescan; live updates over the
owner-only /ws/notes channel (paths and hashes only). Wikilinks, embeds,
backlinks, tags, callouts, image paste. Owner-only everywhere (404).
2026-10-26 01:28:57 +00:00
stan 6654c0990a worldwide todo list: zod namespace import (the named import is undefined under bun in the Docker test step)
Deploy production / deploy (push) Has been cancelled
2026-10-26 01:28:23 +00:00
stan 5e812271e1 worldwide todo list: public todo list of 68 real, sourced problems (planet to street) at /projects/worldwide-todo. worldtodo schema (categories, tasks, change_requests), idempotent seed on deploy, public add/edit/delete requests with Turnstile + salted daily-rotating IP-hash rate limit, owner-only review queue (approve, edit & approve, reject) with live updates over /ws/worldtodo(-owner), JSON API, detail pages with OSM map and history; listed in projects, header, /start and sitemap
Deploy production / deploy (push) Failing after 9s
2026-10-26 01:26:17 +00:00
stan 0ee981a96b deploy preflight: tasks schema has 5 tables since tasks.metric_sources (goal metrics)
Deploy production / deploy (push) Successful in 1m12s
2026-10-26 01:23:35 +00:00
stan d5e2ec346b money: rent detection matches whole words ("living with parents" is not the rent)
Deploy production / deploy (push) Failing after 1m6s
The scenario move date came from the first Joint item matching /rent|huur/,
which since the "Groceries (living with parents)" item matched that one, so
the scenarios never moved out (no rent, the pre-move contribution forever).
2026-10-26 01:20:39 +00:00
stan 807a6b3104 money: day-by-day forecast with real payment dates
The wealth forecast now runs per day instead of per month, so it shows the
same sawtooth as the actual history:

- recurring items hit on the day the bank history shows (most common day of
  the last four months, clamped to month end), else their start date
- "every N weeks" items (Basic-Fit, haircut) run on an exact N-day cadence
  from the last charge; yearly items on their renewal date
- salary and its extras (holiday pay in May, 13th month in November, bonus,
  settlement) land on the payday from history (contract 25th as fallback),
  moved to the Friday before a weekend; toeslagen move to the Monday after
- variable budgets are spread per day, the vacation budget over Jul-Aug
- excess above the buffer is invested the day after payday; returns
  compound daily
- long horizons stay fast (~35 ms for 100 years): the chart thins each
  pixel bucket to its low and high
2026-10-26 01:20:39 +00:00
stan 5d732fc750 Tasks goals: auto metrics (tasks.goals.metric_key/metric_detail/metric_computed_at, tasks.metric_sources cache). €10k/month goal gets a live progress bar: Revolut recurring income (excl. Zorgtoeslag/Joint) computed on page load + trailing-12m paid Moneybird invoices / 12 cached by a daily goal-metrics user timer; stacked bar with %, amount vs target, salary/side-income breakdown, last-updated
Deploy production / deploy (push) Failing after 1m14s
2026-10-26 01:17:29 +00:00
stan 5c6ce75409 osu! goals: actually pass my play counts into the refresh (most-played list, weekly or on force)
Deploy production / deploy (push) Successful in 1m13s
2026-10-26 01:00:39 +00:00
stan 5e10ecf525 osu! goals: real play counts from my most-played list (weekly), BPM range from the .osu timing points
Deploy production / deploy (push) Successful in 1m14s
2026-10-26 00:44:12 +00:00
stan 9f8d54d9e3 osu! goals: games.osu_goals (maps to pass/FC from the old list) with osu! API v2 metadata (stars NM/DT/HR/HD, BPM, length, AR/OD/CS/HP, combo, objects, tags, community tags, streams from .osu), my best scores and pass/FC via hourly in-app refresh; Goals section on /trackers/games/osu; retired list URL 301s there
Deploy production / deploy (push) Successful in 1m15s
2026-10-26 00:36:06 +00:00
stan 45841d6f6c stats: core-7 economy page with CPI index levels, rebase and categories
Deploy production / deploy (push) Successful in 1m13s
- /stats/economy defaults multi-country charts to CAN KOR CHN JPN USA NLD CUW,
  with add-a-country chips and an EU 27 comparison line
- CPI index levels rebased to a chosen base year, index/YoY toggle,
  categories (food, energy, housing, core) where the source has them
- new no-key collectors: oecd (CPI categories, 10y yields), statcan (CPI);
  bis WS_LONG_CPI, FRED US CPI categories, Eurostat prc_hicp_minr, WB FP.CPI.TOTL
- Canada added as a region; CBS Curacao fallbacks for growth/unemployment
- timers stats-oecd and stats-statcan
2026-10-26 00:34:27 +00:00
stan 28140bd425 lists: movies-shows-to-watch moves into /trackers/movies (301 to the watchlist once archived)
Deploy production / deploy (push) Successful in 1m13s
2026-10-26 00:31:45 +00:00
stan 71e015d1d0 Add movies & TV tracker: movies schema, Netflix/Letterboxd/Plex/JSON/recs importers, TMDB matching, stats, owner visibility 2026-10-26 00:31:23 +00:00
stan 75571bbfe0 lists: retire scientific-papers (items live in /trackers/books?kind=papers) and cars-trains-planes-to-spot (-> /trackers/spotting); archived list URLs 301, books-to-read too
Deploy production / deploy (push) Successful in 1m15s
2026-10-26 00:24:27 +00:00
stan d71e39f40a stats: world opinions moves to /stats/opinions/world, the energy tracker merges into /stats/energy (live NED section), 301s from /projects/world-opinions and /projects/energy, tracker-style icons for the stats header, nav, sub-tabs and home grid
Deploy production / deploy (push) Successful in 1m18s
2026-10-26 00:16:08 +00:00
stan be3473caa0 pubg map: built-in intel layers (vehicle spots, drops, loot density, Blue Chip towers, secret rooms) per map
Deploy production / deploy (push) Successful in 1m12s
Read-only layers from static/pubg-intel/<map>.v1.json (scripts/build-pubg-intel.py):
positions from pubg.gs (game level files), drops from guides, secret rooms and Deston
keys as approximate rings on the named place. Layer panel (K), per-player choices in
localStorage, drawn below room markers; clicks still place markers.
2026-10-26 00:05:46 +00:00
stan b1edf7761c Dockerfile: ship src/lib/server/ai-import.ts so the AI tracker import scripts run in the app image
Deploy production / deploy (push) Successful in 1m13s
2026-10-26 00:01:36 +00:00
stan 3d3f008037 pc tracker: Megekko new build (9950X3D/X870E), dated ordered/leaving badges, future slider
Deploy production / deploy (push) Successful in 1m15s
2026-10-25 23:59:15 +00:00
stan cf0fec973c AI tracker: /trackers/ai with public news, owner-only bots and usage; ai schema (news_items, bot_status, usage_entries); idempotent import scripts; preflight ai grants check
Deploy production / deploy (push) Has been cancelled
2026-10-25 23:58:39 +00:00
stan 9b21220280 stats: /stats/history and History, Politics and Culture sections on NL, Gouda, Curaçao, US and KR pages (step 4)
Deploy production / deploy (push) Successful in 1m13s
Long-run charts (Maddison, HYDE, UN via OWID; CBS and Pew religion), a filterable
sourced timeline, Wikidata office holders and turnout, Nager.Date holidays, UNESCO
sites, Wikidata people by sitelinks, curated food and cultural exports. Wikidata
labels now fall back to mul.
2026-10-25 23:39:34 +00:00
stan e0bcd63ce3 deploy preflight: 55 stats tables (step 4 history tables)
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 23:27:46 +00:00
stan 0088e5202e stats: history and culture collector (step 4): events, offices, people, holidays, UNESCO, religion, long-run series
Deploy production / deploy (push) Failing after 1m0s
2026-10-25 23:25:46 +00:00
stan fa3aa25f0b house-scrape: re-check huispedia, huislijn, huurportaal and rentola rows and mark clearly gone ones removed
Deploy production / deploy (push) Successful in 1m15s
2026-10-25 23:14:42 +00:00
stan 241b90d2f9 stats elections: distinct colour for the SP family
Deploy production / deploy (push) Successful in 1m15s
2026-10-25 22:48:55 +00:00
stan 0fe0d36f87 PUBG drop map: live squad map with WebSocket rooms
Deploy production / deploy (push) Successful in 1m15s
- server.js wraps Bun.serve to add /ws/<channel> upgrades (same server and port) and
  serve the map tiles from the host mount; Dockerfile now runs bun ./server.js
- ws hub (channel registry, origin check) + pubg-map channel: rooms by unguessable
  code, validated + rate-limited messages, per-room write queue, presence
- games.pubg_rooms / pubg_matches / pubg_markers; per-match sessions with history
- /trackers/games/pubg/map hub (owner: rooms, landings over time, history) and
  /trackers/games/pubg/map/<code> fullscreen Leaflet map (all 11 maps)
- deploy-remote.sh bind-mounts ~/pubg-maps; scripts/build-pubg-tiles.py rebuilds it
2026-10-25 22:46:30 +00:00
stan d93374bca2 stats step 3 pages: /stats/elections (NL 1918→, turnout, seats, Gouda per polling station, US by state) and /stats/opinions (NL/US/KR polls, Eurobarometer issues and trust, WHR, Google Trends, GDELT themes, CHES and V-Party); nav, cards, sitemap; scatter in the chart wrapper
Deploy production / deploy (push) Successful in 1m15s
2026-10-25 22:44:09 +00:00
stan e1fcd4f321 stats elections: CBS 37278 percentages to votes; Kiesraad municipal votes and turnout from EML kieskring counts; ballots include blank/invalid
Deploy production / deploy (push) Successful in 1m14s
2026-10-25 22:24:15 +00:00
stan 42c9351ebd stats step 3: elections, party positions and opinion feeds (schema, collectors, timers); world-opinions data moved into stats.wo_*
Deploy production / deploy (push) Successful in 1m12s
2026-10-25 22:16:25 +00:00
stan 030f3c08ee PC tracker: Intel AX201 Wi-Fi image
Deploy production / deploy (push) Successful in 1m12s
2026-10-25 21:51:46 +00:00
stan 031ee4baf2 stats §8: Curaçao from ILOSTAT (SDMX), OWID, UN SDG 531, UN Comtrade 531 (cwintl + weekly timer), EU trade with CW (Eurostat ext_lt_maineu); CBS Curaçao LFS file pick fix; Curaçao detail panels on /stats/countries/CUW
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 21:47:06 +00:00
stan a6b4f9931d pc: drop shared brand from grouped card label
Deploy production / deploy (push) Successful in 1m15s
2026-10-25 21:39:11 +00:00
stan ff1520ae8b stats §8: CBS Curaçao collector (topic-page scrape, sha256 manifest, CPI since 1970 from PDF, GDP by industry, government finance, population since 1900, LFS, tourism) into cw_cbs_* + stats.obs region CUW; cw_cbcs_bop for manual uploads; weekly timer
Deploy production / deploy (push) Has been cancelled
2026-10-25 21:38:30 +00:00
stan 27a15f0428 pc: grouped ×N cards list each item on its own line, shared brand in label
Deploy production / deploy (push) Successful in 1m14s
2026-10-25 21:34:33 +00:00
stan 3c5ef605df pc: self-hosted images for Samsung 970 EVO 1TB (Windows 11 drive)
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 21:29:03 +00:00
stan fa58e5c661 stats B11: EP-Online energy labels (monthly total file → homes per label for NL, Gouda, Gouda PC4s; aggregates only), stats.ep_label_agg, monthly timer with key from ~/.config/stats/ep-online.env, charts on /stats/energy and /stats/gouda
Deploy production / deploy (push) Has been cancelled
2026-10-25 21:28:37 +00:00
stan 2a4466cb82 stats: /stats/countries comparison and /stats/countries/[iso3] profiles (Curaçao via World Bank), more WB indicators, Countries + Curaçao cards, nav/sitemap/start links
Deploy production / deploy (push) Successful in 1m13s
2026-10-25 21:22:20 +00:00
stan d19313035f stats: Eurostat pre-2007 household energy bands (nrg_pc_204_h/202_h folded into nrg_pc_204/202), stitched on /stats/energy; IMF revenue/spending from Fiscal Monitor codes
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 21:14:50 +00:00
stan 02734607cc stats: cast jsonb chunk param via text so jsonb_populate_recordset gets an array (step 2 loads)
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 21:12:12 +00:00
stan 8958d3ff8f stats step 2: World Bank, IMF WEO, OWID, Energy-Charts, Rijksfinanciën, US Treasury, USAspending collectors + tables, timers
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 21:05:51 +00:00
stan 7e905b1651 stats: index neighbour growth from 2016 (after mergers), clearer tariff and levy labels
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 20:56:29 +00:00
stan 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
stan 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
stan 8e35a58095 groceries stats: quote day alias in shrinkflation query
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 20:42:32 +00:00
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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
stan 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