Commit Graph
458 Commits
Author SHA1 Message Date
stan e1e2bee590 groceries/picnic: label the Picnic Family member discount
Deploy production / deploy (push) Successful in 1m22s
2026-10-27 09:19:40 +00:00
stan c094754c5b groceries: add Picnic store (picnic.app storefront API, full range via category pages)
Deploy production / deploy (push) Successful in 1m24s
- picnic.ts: crawls the category tree, subcategory and overview pages (RSC), maps
  Picnic categories to the shared list; no EANs, so matching is by name/brand/size
- picnic-auth.ts + scripts/picnic-login.ts: one-shot login from
  /etc/grocery-tracker/picnic.env, token kept in ~/.config/groceries/picnic.env;
  2FA is never requested unattended (run picnic-login.ts by hand)
- migration: store row picnic; Picnic as own brand in stats
2026-10-27 09:04:26 +00:00
stan 079399635d trackers: media hub with webtoons, podcasts and videos; shows and anime filters
Deploy production / deploy (push) Successful in 1m22s
- /trackers/media: one card per child (reading, movies, shows, webtoons, music, podcasts,
  videos) with quick stats, a combined currently-consuming feed and a mixed watchlist
- webtoons, podcasts, videos: new owner-editable trackers on one generic media.items table,
  JSON import (owner form or scripts/media-run.sh)
- shows: /trackers/shows -> /trackers/movies?type=show; anime flag on movies.titles
  (backfilled, set from TMDB, owner toggle) and ?type=anime filter
- nav: media replaces the top-level reading, movies and music entries; their URLs are kept
2026-10-26 23:34:22 +00:00
stan 4ef75f9d25 stats: bare theme URLs (/stats/jobs) open the core selection
Deploy production / deploy (push) Successful in 1m20s
2026-10-26 18:10:12 +00:00
stan b566a1244f stats: jobs & cost of living theme (unemployment by age, vacancies, JOLTS, graduates, job quality, wages, price levels, housing), grad view cards, Beveridge curve; jobs collector (OECD SDMX, Big Mac index, derived series) + Eurostat/World Bank/FRED jobs series, stats-jobs.timer
Deploy production / deploy (push) Successful in 1m20s
2026-10-26 18:08:06 +00:00
stan f2f7bd0a19 stats: place × theme matrix (/stats/<place>/<theme>), sticky place/theme selector, generic metric engine with comparisons, 301s from the old section URLs
Deploy production / deploy (push) Successful in 1m19s
2026-10-26 17:37:47 +00:00
stan 7ba26f132d radio: quiet hours default 00:00-08:00; banks 1-3 fill script (ISS, calling, Gouda-area repeaters); docs
Deploy production / deploy (push) Successful in 1m20s
2026-10-26 17:24:03 +00:00
stan f954881bcc radio: quiet hours for reminders (default 23:00-07:30 Amsterdam, RADIO_QUIET_HOURS overrides)
Deploy production / deploy (push) Successful in 1m21s
2026-10-26 17:18:59 +00:00
stan 95a8b76562 radio: fix quick log insert (timestamp param), 'ch 16' falls back to the marine channel, ISS list fits half-width cards
Deploy production / deploy (push) Successful in 1m26s
2026-10-26 17:15:29 +00:00
stan 03574a95a7 radio: private radio tracker (/trackers/radio): frequencies, UBC125XLT banks + CSV, nets, ISS passes over Gouda, listening log, ntfy reminders
Deploy production / deploy (push) Successful in 1m26s
2026-10-26 16:58:29 +00:00
stan e24ee7f95d plant: private Cargill Gouda tracker (/trackers/cargill)
Deploy production / deploy (push) Successful in 1m19s
Owner-only tracker for learning the Cargill Bioindustrial plant in Gouda:
schema plant (entries, links with confidence, pending refs), plant.apply_entries
bulk import, overview with clusters and flow diagram, kind tabs, glossary,
questions, detail pages and owner inline editing. Docs in docs/plant-tracker.md.
2026-10-26 13:42:37 +00:00
stan fda21554cc math: make tracker public (read-only for visitors)
Deploy production / deploy (push) Successful in 1m18s
2026-10-26 12:35:15 +00:00
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