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
stan
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
stan
3668c9e383
gitignore python bytecode
Deploy production / deploy (push) Successful in 1m11s
2026-10-25 14:24:50 +00:00
stan
4af041719c
start: wider spotting tile, filter narrows spotting chips
Deploy production / deploy (push) Has been cancelled
2026-10-25 14:24:11 +00:00
stan
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
stan
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
stan
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
stan
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
stan
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
stan
5e4cd83748
spotters: logo coverage script (Wikidata logo/icon, multi-language infobox, website icon fallback), cheaper planes operator queries, refresh adds logos for new orgs
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 13:54:27 +00:00
stan
7d6cee26a8
house tracker: contact status per listing (whose turn, last message, viewing) and labelled filters
Deploy production / deploy (push) Has been cancelled
2026-10-25 13:53:33 +00:00
stan
df081b8058
music: backup play log from now-playing samples (origin nowplaying; 30 s or half the track, ignoring pauses and seeks); recently-played takes those rows over with its exact timestamp
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 13:52:38 +00:00
stan
d6c5dde2c1
reading: hide book-only stats on the papers/articles tabs, site letter on articles without an image
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 13:48:05 +00:00
stan
e31e1be73f
reading: split the book tracker into books, papers and articles (kind column + migration classifying 20 papers), segmented tabs with counts, article cards that open the link, owner + add link with server-side unfurl, kind switch on detail pages, /trackers/reading alias
Deploy production / deploy (push) Successful in 1m8s
2026-10-25 13:42:51 +00:00
stan
7b5faf6e74
start: collapsible link groups (remembered per browser), links filter (f, Enter opens first match), brand marks + saved favicons for bookmarked sites
Deploy production / deploy (push) Has been cancelled
2026-10-25 13:41:59 +00:00
stan
628e5cb9b3
music poller: a 429 on recently-played pauses only the play log for the full Retry-After; now playing keeps polling every 5 s; player 429s honour Retry-After up to 24 h
Deploy production / deploy (push) Successful in 1m8s
2026-10-25 13:25:25 +00:00
stan
253cd69424
spotters: most-active-in sort with country/region selector, collection tracking (seen marks, progress, filters), refresh scripts score activity and report new NL entries
Deploy production / deploy (push) Has been cancelled
2026-10-25 13:24:37 +00:00
stan
3f294df337
music: hours tooltip opens on tap (focus no longer closes it straight away)
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 13:21:28 +00:00
stan
20ad42b247
handleError for SvelteKit 3: ids only for unknown errors, compact 404 log line; error page suggestions prefer the real parent over the section
Deploy production / deploy (push) Successful in 1m10s
2026-10-25 13:15:41 +00:00
stan
92d6da959d
daisy-hook: accept a full "Name: value" header setting, redact the key from logs, retry once; start: brand icons on link and service tiles (trimmed simple-icons + saved favicons, monogram fallback)
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 13:12:16 +00:00
stan
a89a187346
Global error page: ErrorView with per-status copy, did-you-mean suggestions, error ids from handleError, static error.html; 404 instead of 500 for bad progress ids; tolerate full header line in DAISY_TASK_WEBHOOK_HEADER and stop logging raw fetch errors
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 13:10:51 +00:00
stan
f86c8ef294
spotters: activity (per-country score) and seen (collection) tables for cars, planes, trains, wildlife
Deploy production / deploy (push) Successful in 1m7s
2026-10-25 13:09:02 +00:00
stan
85c6f89e36
music: styled hover/focus/tap tooltip with exact hours and date on the hours-per-day chart
Deploy production / deploy (push) Has been cancelled
2026-10-25 13:08:06 +00:00
stan
cc34f5751b
spotters: fix random 404 on client navigation (random is a page load, not an endpoint shadowed by [slug]); square logo tiles everywhere
Deploy production / deploy (push) Has been cancelled
2026-10-25 13:07:26 +00:00
stan
45943543c2
trackers: one-click spotting links: header flyout (hover/focus, delayed close, side-aware), chips on the spotting tile, mobile sub-links
Deploy production / deploy (push) Successful in 1m8s
2026-10-25 12:18:33 +00:00
stan
d8490ce94f
trackers: group cars, trains, planes and wildlife under one spotting tracker with /trackers/spotting landing page and category switcher
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 12:08:38 +00:00
stan
5226ed7fec
trackers: colourful tracker icons on /trackers and home tiles, 3/4-column desktop grid with lift hover
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 11:27:56 +00:00
stan
704880dc98
trains: stricter Commons photo matching (category files must name the type; no maps, class interiors, trucks)
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 00:13:30 +00:00
stan
5f940e8196
trains: pokedex pages (builders, operators, countries, detail, random) and registrations
Deploy production / deploy (push) Successful in 1m9s
2026-10-25 00:11:50 +00:00
stan
8c0fc74283
trains: Wikidata/Wikipedia import, Commons photos and refresh scripts
Deploy production / deploy (push) Successful in 1m13s
2026-10-25 00:09:07 +00:00
stan
ef9524aa0f
trains: schema and migration
Deploy production / deploy (push) Successful in 1m5s
2026-10-24 23:22:20 +00:00
stan
8515cf0e9c
wildlife: photos script without response cache (it outgrew JSON.stringify)
Deploy production / deploy (push) Successful in 1m5s
2026-10-24 22:42:26 +00:00
stan
602ea9c8e1
wildlife: fetch English names without the NL place (it localised them to Dutch)
Deploy production / deploy (push) Successful in 1m6s
2026-10-24 22:27:16 +00:00
stan
42b6b6568a
wildlife: pokedex pages (list, groups, group, species detail, random) and registrations
Deploy production / deploy (push) Successful in 1m4s
2026-10-24 22:04:15 +00:00
stan
ba44365c71
wildlife: iNaturalist/Wikidata/GBIF import, CC photos and refresh script
Deploy production / deploy (push) Successful in 1m8s
2026-10-24 21:58:35 +00:00
stan
3f251145be
wildlife: schema and migration
Deploy production / deploy (push) Successful in 1m4s
2026-10-24 21:54:25 +00:00
stan
59b35c0886
planes: pass maker sources to the maker page
Deploy production / deploy (push) Successful in 1m3s
2026-10-24 20:51:49 +00:00
stan
eccae362ec
planes: stricter photo matching, skip company articles, payload-not-pax
Deploy production / deploy (push) Successful in 1m8s
2026-10-24 20:26:13 +00:00
stan
6696bc7162
planes: pokedex tracker pages, cards, makers, random
2026-10-24 20:10:36 +00:00
stan
2259965a28
planes: wikidata/wikipedia import, commons photos and refresh script
2026-10-24 20:10:36 +00:00
stan
cc6c7c8ede
planes: schema and migration
2026-10-24 20:10:36 +00:00
stan
6249e6daeb
start: server links -> stan-ovh (Tailscale), drop Webmin from home-collector
Deploy production / deploy (push) Successful in 1m4s
2026-10-24 18:41:53 +00:00
stan
085a30bec8
pc: PC setup tracker at /trackers/pc on the hardware schema
...
Deploy production / deploy (push) Successful in 1m4s
- model the existing hardware schema in Drizzle (devices, components, new sensitivities)
- idempotent reconciling migration: new columns, checks, setup_overview view, grants, meta.tables
- seed: main PC labels/hostnames, planned AMD X3D + RTX 5090 build, stan-ovh (OVH RISE-S),
other devices, sensitivity placeholders (no invented cm/360)
- owner-only add/edit via modals; public view hides notes/order numbers
- trackers dropdown entry + icon, seo/title/sitemap, owner write prefix
2026-10-24 17:55:48 +00:00
stan
8442d59b68
cars: brand logos everywhere (search cards, brand grid, model headers), stricter logo matching + curated fixes, logo refresh in cars-photos
Deploy production / deploy (push) Successful in 2m24s
2026-10-24 17:43:47 +00:00
stan
fac49b57ba
music: near-realtime now playing (currently-playing every 5 s while playing, 30 s idle backoff, Retry-After, recent plays ~10 s after a track change, holder-based lease) and a public SSE stream /api/listening/stream feeding the listening card live with client-side progress
Deploy production / deploy (push) Successful in 2m35s
2026-10-24 17:28:33 +00:00
stan
7636f0b2bc
cars: keep MAZDA2/JAECOO7 names (no false typo strip), canonical upload.wikimedia.org thumbs, tidier gallery captions/credits
Deploy production / deploy (push) Successful in 2m34s
2026-10-24 16:54:14 +00:00
stan
bf0a1e1d2a
cars: Wikimedia Commons photos (cars.photos, card heroes, model gallery + lightbox, brand hero/logo), cars:photos + cars:refresh with --report-new, fold duplicate names (Golf VI, Peugot, Mustang Mach 1, Model 3/Y, i10/i30, Ceed, Lynk & Co)
Deploy production / deploy (push) Successful in 3m0s
2026-10-24 16:44:38 +00:00
stan
901d12f71d
Header tiles: Trackers dropdown, dashboard and quick add as hoverable monochrome tiles
...
Deploy production / deploy (push) Successful in 2m48s
Lift + tint on hover, visible focus ring, aria-current for the dashboard,
colourful icons on a black-and-white surface, prefers-reduced-motion respected.
2026-10-24 16:17:27 +00:00
stan
771f64c168
drizzle: chain osu_match_cache snapshot after tasks_auto_handle
Deploy production / deploy (push) Has been cancelled
2026-10-24 16:16:19 +00:00
stan
46703f1a6c
map finder: quick lists from my listening (top/recent/now/Spotify top/liked), Artist - Title without Spotify, owned playlists via the user token, rich beatmap cards (cover, mapper, status, BPM, length, star chips, preview, osu!direct), mode/status/star filters, DB result cache (music.osu_match_cache)
Deploy production / deploy (push) Has been cancelled
2026-10-24 16:15:56 +00:00
stan
0aa14cebf3
Quick add task from the header (owner): modal, g t shortcut, auto_handle + Daisy webhook
...
Deploy production / deploy (push) Has been cancelled
- + button next to Dashboard (desktop and mobile sheet), lazy-loaded native <dialog>
- POST /trackers/tasks/quick inserts source 'quick-add', notes, due date, priority
- tasks.tasks.auto_handle (default false) with a Daisy badge in the tracker
- DAISY_TASK_WEBHOOK_URL/KEY/HEADER: fire-and-forget POST {task_id, title}, 3 s timeout
2026-10-24 16:13:45 +00:00
stan
3903317a59
spotify: manual 302 for external redirects in /api/spotify/connect (kit refuses redirect() to external origins)
Deploy production / deploy (push) Has been cancelled
2026-10-24 16:12:10 +00:00
stan
4738f10ad1
header: trackers menu as a 2-column grid (desktop and mobile) with a coloured inline-SVG tile per tracker
...
Deploy production / deploy (push) Successful in 2m41s
TrackerIcon + #lib/tracker-icons: one gradient rounded tile and a few stroke paths per
tracker (tasks, money, books, cars, music, health, groceries, houses, energy, games, skins,
pets, lists), distinct colours, readable in light and dark. No icon library. Test checks
every tracker has a unique tile and tasks/money/books stay first.
2026-10-24 16:06:39 +00:00
stan
bc58e97776
start: show the normal site header on /start (with the owner dashboard button, highlighted there); no footer on the new-tab page
...
Deploy production / deploy (push) Successful in 2m36s
/start is no longer immersive, so it loads the lazily imported SiteChrome like other pages.
Only the book reader still skips the chrome. hidesFooter() keeps the footer off /start.
2026-10-24 16:03:06 +00:00
stan
b757269151
music: self-hosted scrobbler (Spotify poller, Last.fm + streaming-history importers, /trackers/music, homepage listening card)
...
Deploy production / deploy (push) Successful in 2m37s
- music schema: artists/albums/tracks (+album art), plays with source + dedupe, now_playing,
spotify_auth, import_state; plays_deduped view hides Last.fm scrobbles Spotify also has
- in-app Spotify poller (60s, leased) started from hooks init; no new role or env needed
- /api/spotify/connect + callback (owner only), /trackers/music public stats
- scripts: music-poll, music-import-lastfm (resumable), music-import-history
- deploy/music-collector: optional host timer with its own role
2026-10-24 15:57:40 +00:00
stan
45c124a365
cars: default to most-common-in-NL order; dex numbers oldest first with unknown years last (--renumber)
Deploy production / deploy (push) Successful in 2m41s
2026-10-24 15:47:44 +00:00
stan
9e30e4246f
cars: import handles models without years, keeps roman numerals upper-case; don't cache an empty overview
Deploy production / deploy (push) Has been cancelled
2026-10-24 15:46:25 +00:00
stan
a04e5faebe
houses: zero-pad Leefbaarometer grid cell ids (cells west of x=100 km, e.g. Zevenhuizen, Rotterdam)
Deploy production / deploy (push) Has been cancelled
2026-10-24 15:45:26 +00:00
stan
113eb54cd9
houses: Leefbaarometer liveability per listing (PDOK geocode + LBM 2024 grid/buurt), min-score filter and sort; store every regional listing (no price caps at scrape time)
Deploy production / deploy (push) Successful in 2m33s
2026-10-24 15:40:32 +00:00
stan
e95b7da1e3
cars: car pokedex tracker (brands, models, US variants from RDW + fueleconomy.gov), import script, search/filter UI, model pages
Deploy production / deploy (push) Has been cancelled
2026-10-24 15:39:08 +00:00
stan
cc4b10f239
site: owner-only dashboard link in header, mobile menu and homepage (g then d from any page); /start skips the site chrome JS
...
Deploy production / deploy (push) Successful in 2m56s
- Header/footer moved to #lib/components/SiteChrome.svelte, returned by a universal
+layout.ts load only for non-immersive pages, so /start and the book reader never
download icon libraries, dropdowns or the bits-ui Sheet. /start: 36 -> 18 JS files,
133 -> 78 KB gzip.
- Header logo is a hashed asset (inlined), so it is cached with the build.
- inlineStyleThreshold 4096: tiny page/component CSS is inlined into the HTML.
- Umami is not loaded on /start.
2026-10-24 15:35:38 +00:00
stan
2bd668bf5e
start: private new-tab dashboard at /start (tasks, notifications, backups/timers, server + containers, service status, trackers, editable links, / search)
...
Deploy production / deploy (push) Successful in 2m39s
- home schema: home.links (seeded, owner-editable) and home.snapshots (written by a host collector)
- deploy/home-collector: stdlib Python + systemd user timer (60s) that snapshots /proc stats,
docker containers, systemd timers, service HTTP checks and ntfy topics via a limited role
- extras/newtab-extension: MV3 new-tab override, zipped to static/newtab-extension.zip
- owner-only pages skip Google Analytics; /trackers/health#body anchor for weigh-ins
2026-10-24 15:21:29 +00:00
stan
61ae72e50b
money scenarios: forecast horizon 1–100y (?horizon=), today’s-euro view, scaling gridlines, career paths with job hops and plateaus, crash cycles per portfolio, retirement at 68 with withdrawals, salary path table
Deploy production / deploy (push) Successful in 2m49s
2026-10-24 15:13:20 +00:00
stan
c4689adda4
groceries: fix search 500 (pg_trgm word_similarity lives in public, app search_path is $user); guard test for unqualified trgm calls
Deploy production / deploy (push) Successful in 2m32s
2026-10-24 15:07:08 +00:00
stan
807f8af167
groceries: grouping ignores 'durum tarwe' and possessive store lines (Jumbo's), so house pasta lines up across stores
Deploy production / deploy (push) Successful in 2m49s
2026-10-24 15:03:39 +00:00
stan
8c9a08afa1
houses: set cache-control once (layout already does; the page load threw header_already_set for the owner)
Deploy production / deploy (push) Has been cancelled
2026-10-24 15:03:36 +00:00
stan
b5748e5ae5
houses: one row per listing when a hand-added link is scraped later
...
Deploy production / deploy (push) Successful in 3m0s
The nightly scraper and worker API now take over an existing row (e.g. source=manual)
whose link is the same listing (normalized URL, or the Pararius key / Funda, Kamernet,
Vesteda id in it) instead of inserting a copy; typed values are kept where the scrape has
none. house-listing update/add give manual rows with such links the site key unless
another row has it, update accepts --source/--source-id, and lookups by link ignore
tracking params. scripts/house-rekey.ts backfills existing manual rows.
2026-10-24 14:59:03 +00:00
stan
c827deb395
money scenarios: contract timing for salary extras (13th month in Nov, holiday pay in May, bonus in Aug, net estimates from the contract)
Deploy production / deploy (push) Successful in 2m32s
2026-10-24 14:46:32 +00:00
stan
8a29d5ad59
money: pessimistic/realistic/optimistic scenarios on the wealth chart (realistic by default), editable assumptions, yearly table and milestones
Deploy production / deploy (push) Successful in 2m30s
2026-10-24 14:39:26 +00:00
stan
35f78ec829
Money: private Documents page with admin-only file endpoint
...
Deploy production / deploy (push) Successful in 2m32s
Lists contracts/pension docs with written summaries, an inline viewer and
download at /trackers/money/documents. Files and summaries live on the host
(MONEY_DOCUMENTS_ROOT, bind-mounted read-only by deploy-remote.sh), never in
git or static/; the file endpoint is admin-only (401/403) and private, no-store.
2026-10-24 14:32:28 +00:00
stan
8818dde99d
houses: keep Kamernet to the Gouda region (small-city pages are padded with listings from all over NL), share GOUDA_REGION
Deploy production / deploy (push) Successful in 2m42s
2026-10-24 14:22:58 +00:00
stan
07d2c70973
health: smart-scale columns, deduped body measurement imports, quick-add form
Deploy production / deploy (push) Successful in 2m32s
2026-10-24 14:16:10 +00:00
stan
b51fef14fd
houses: nightly Kamernet + Vesteda scraper, dedupe by address, owner-only /trackers/houses
...
Deploy production / deploy (push) Successful in 2m44s
- scripts/house-scrape.ts: polite nightly scrape (honest UA, 6-10 s apart, stops a source on 403/challenge), ingest + price history + removals, ntfy alerts on a separate topic (max 5 + summary, first run seeds)
- address_key + duplicate_of: copies on another source link to one listing, manual wins
- /projects/house-tracker -> /trackers/houses (308), owner only (404 otherwise); filters for min m2, rooms, source, Gouda region default; notes, add-by-hand form, total rent, also-on links
- scripts/house-db.sh: run the house-listing CLI as the limited house_cli role
- deploy/systemd/house-scrape.{service,timer}
2026-10-24 14:13:29 +00:00
stan
ea7d64a556
Dockerfile: ship house-tracker helpers so the listings CLI runs in the prod image
Deploy production / deploy (push) Successful in 2m44s
2026-10-24 14:09:13 +00:00
stan
6e528da403
house tracker: CLI to add, update, list and remove listings by hand
...
scripts/house-listing.ts (bun run house add|update|list|remove|restore) upserts
house.listings on (source, source_id) derived from the listing URL or address,
derives city_slug, records price_history, and accepts flags or JSON.
2026-10-24 14:09:13 +00:00