Commit Graph
100 Commits
Author SHA1 Message Date
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
stan 85da5afdfe money: wishlist tier totals fit on one line (compact €, scales with card, exact amount in tooltip)
Deploy production / deploy (push) Successful in 2m54s
2026-10-24 14:09:07 +00:00
stan 427f4ed095 groceries: nightly AH/Jumbo catalogue import, unit-price normalisation, product groups and compare UI
Deploy production / deploy (push) Successful in 2m48s
2026-10-24 14:01:26 +00:00
stan 8dde5aa302 money: Revolut statement importer (CSV/Excel/PDF) with dedupe, dry run and start-balance removal
Deploy production / deploy (push) Successful in 2m34s
2026-10-24 13:48:01 +00:00
stan 5f67ad36e7 Groceries: private tracker at /trackers/groceries (stores, products, price history per store, favorites, cheapest highlighted); seeded AH, Jumbo, Lidl, Plus
Deploy production / deploy (push) Successful in 2m40s
2026-10-24 13:25:49 +00:00
stan b77c3f8cf5 Tasks: import TickTick backup CSV (csv: keys, matched against API rows, rekeyed when the API returns them)
Deploy production / deploy (push) Successful in 2m29s
2026-10-24 03:28:14 +00:00
stan 1754ea9316 Tasks: ignore placeholder checklist completion dates from TickTick
Deploy production / deploy (push) Successful in 2m34s
2026-10-24 03:10:53 +00:00
stan 6a127de950 Tasks: TickTick history sync (export + idempotent import, start_at/time_zone); trackers ordered tasks, money, books with single-noun names
Deploy production / deploy (push) Successful in 2m33s
2026-10-24 03:05:05 +00:00
stan 9d08e6af23 Lists: owner-only database browser/editor for all tables (meta.edit_log audit)
Deploy production / deploy (push) Successful in 2m33s
2026-10-24 02:52:18 +00:00
stan 941a9f16e1 data browser wip 2026-10-24 02:52:18 +00:00
stan c8205e474e Money: wish list sorted by tier then price (desc), theme-aware tier colours
Deploy production / deploy (push) Successful in 2m31s
2026-10-24 02:43:31 +00:00
stan 81ee02f11a books reader: fix the error when leaving a PDF (back button)
Deploy production / deploy (push) Has been cancelled
pdf.js 6 removed PDFDocumentProxy.destroy(), so the PdfReader teardown threw
"destroy is not a function" on every unmount, breaking the client-side
navigation back to the book page (and sometimes showing the error page).
Close the document through its loading task instead (closePdf), which also
cancels a load still in flight. Test covers the pdf.js API and closePdf.
2026-10-24 02:40:32 +00:00
stan eb80a830f5 Task + goal tracker: private tasks schema, /trackers/tasks page, idempotent seed import (daisy-import)
Deploy production / deploy (push) Successful in 2m38s
2026-10-24 02:37:48 +00:00
stan 988c6c31a9 Money: move /projects/money-tracker to /trackers/money, rename to Money, 308 redirects from old paths (bank-callback query kept)
Deploy production / deploy (push) Successful in 2m49s
2026-10-24 02:37:07 +00:00
stan 2af279e8a9 Money tracker: vertical month/year gridlines on wealth chart, keep range in ?range= URL param
Deploy production / deploy (push) Successful in 2m36s
2026-10-24 02:25:13 +00:00
stan faeb76a7e7 books reader: zoom, 1/2-page spreads, scroll vs paged mode
Deploy production / deploy (push) Has been cancelled
- Zoom buttons + Ctrl/Cmd +/-/0, Ctrl+wheel/trackpad pinch, touch pinch on PDFs;
  PDF scales the pdf.js render (sharp re-render after it settles), EPUB scales text.
  Remembered per format, and per book.
- One/two pages side by side: PDF rows with the cover alone, foliate max-column-count.
- Scroll vs Pages mode for both engines; PDF paged shows one page/spread fitted to the
  screen, prev/next move a whole spread; spreads stack when scrolling.
- Reading position is kept across zoom/spread/mode changes; progress keeps saving.
- layout.ts helpers with unit tests; old flow/fontSize/pdfZoom settings migrate.
2026-10-24 02:24:35 +00:00
stan a022c45499 Money tracker: accounts can be left out of total wealth (include_in_total)
Deploy production / deploy (push) Successful in 2m32s
Adds money.accounts.include_in_total (default true). Excluded accounts keep their own balance and line, but are left out of net worth, invested, this month, the projection and the total/All accounts lines.
2026-10-24 02:14:03 +00:00
stan 6f82d1350e deploy: write the books compose override in the deploy account home
Deploy production / deploy (push) Successful in 2m32s
Run #79 failed at "sudo tee /opt/personal-website/compose.books.yml": the deploy
account may only sudo-tee .env. Write the override to ~deploy instead; the
compose CLI runs as root and reads it from there.
2026-10-24 02:04:12 +00:00
stan 7a039b23f4 deploy: check the books dir from a root container (deploy user cannot traverse /home/stan)
Deploy production / deploy (push) Failing after 2m12s
Run #78 skipped the /books mount because [ -d /home/stan/books/library ] runs as
the deploy account, which has no access to /home/stan (0750). Check inside a
container with the dir bind-mounted instead; the mount itself is done by dockerd.
2026-10-24 01:59:11 +00:00
stan 8445eef3cf books migration: only call meta.sync() when permitted; deploy runs it as the app role
Deploy production / deploy (push) Successful in 2m35s
Run #77 failed in db-migrate with "permission denied for function sync": in prod
meta.sync() is granted to personal_app/personal_ddl, not to the schema owner
(personal) that runs migrations. The migration still registers the books tables in
meta.tables and syncs when it can (dev); deploy-remote.sh now runs
scripts/db-meta-sync.ts as DB_URL after migrating. Verified on a prod clone with
SET ROLE personal / personal_app.
2026-10-24 01:53:30 +00:00
stan 1d4cfd58c5 books: import zod as a namespace so tests pass under the Bun runtime in CI
Deploy production / deploy (push) Failing after 2m20s
The Docker build runs vitest via bun (no Node in oven/bun), where the named
`{ z }` import from zod 4 resolved to undefined; the rest of the repo already
uses `import * as z from 'zod'`.
2026-10-24 01:47:10 +00:00
stan 763d7881fb Money tracker: Knab CSV import, multi-bank linking, sum reconcile, history range
Deploy production / deploy (push) Failing after 23s
- Knab statement exports: per-account ids (knab:<account>:<Referentie>), routed by IBAN,
  transfers between own accounts merged into one tracker account are dropped (interest kept)
- Import: multiple files, hand-entered twins get the import id, hand entries equal to the
  sum of 2-3 payments within a day are replaced by them
- bank-link --bank revolut|abn|knab with per-bank default account; ASPSP notes printed
- bank-sync: longest history on an account first sync (--full to force), sum reconcile,
  per-session status so one bank failing does not mark the others
- Timeline: 1 year / 3 years / All history range
2026-10-24 01:37:40 +00:00
stan 2cada618bf books: regenerate migration as 20261024013208_books after money_bank_balance (old 010449/010518 would sort before the applied 011919 and be skipped)
Deploy production / deploy (push) Failing after 27s
2026-10-24 01:35:04 +00:00
stan 7914b0140b books-ingest: --no-move rehearsal mode, stable cover filenames, finished status, module-level log 2026-10-24 01:31:57 +00:00
stan 178fa8ddce books-ingest: safer title/ISBN matching, junk-author filter, GB quota breaker 2026-10-24 01:31:57 +00:00
stan 9c8f20a618 books: immersive reader route, PDF resume fix, scalable placeholder covers, read-only books mount in prod deploy, README 2026-10-24 01:31:57 +00:00
stan 9c46e281c2 books-ui: library, detail page, EPUB/PDF reader, reading status/rating/sessions migration, progress/notes APIs, owner gating and tests 2026-10-24 01:31:57 +00:00
stan 8b2dfed239 books: schema, migration and ingest script (rebased onto main; migration regenerated after money_bank_sync) 2026-10-24 01:31:57 +00:00
stan 2da375451a Money tracker: bank balance is the source of truth for synced accounts
Deploy production / deploy (push) Successful in 2m43s
Sync stores the bank-reported balance (ITAV preferred) on the account and keeps
one Bank balance adjustment row so the tracker total equals the bank balance.
Accounts panel shows the bank balance and flags any drift.
2026-10-24 01:20:20 +00:00
stan e4de2dcec3 Add privacy and terms pages
Deploy production / deploy (push) Successful in 2m28s
2026-10-24 00:50:46 +00:00
stan 00c1e8b1e7 money: quick-add bar, server-filtered transactions page, CSV import dedupe + Revolut statements 2026-10-24 00:50:46 +00:00
stan 9a1b21ec39 money: Enable Banking client, bank-link consent CLI, bank-sync with reconcile, systemd timer (not installed) 2026-10-24 00:50:45 +00:00
stan b1ce715ec7 money: bank-sync schema (account scope/iban/external uid, transaction external id/source, bank_sessions) 2026-10-24 00:50:45 +00:00
stan 064d41595f preflight: verify health grants and energy data
Deploy production / deploy (push) Successful in 2m20s
2026-10-24 00:27:29 +00:00
stan fa2456b99e Merge branch 'energy-tracker' into energy-merge 2026-10-24 00:25:34 +00:00
stan 8aa689af64 health: drop hair_progress; owner = Stan's account email only
Deploy production / deploy (push) Successful in 2m22s
Regenerated the (not yet deployed) health migration without hair_progress.
2026-10-24 00:22:24 +00:00
stan 8275f1fb22 Add private health tracker (owner-only)
- health schema: vaccinations, body_measurements, workouts, nutrition_daily,
  sleep (generated hours), medications, hair_progress, appointments
- migration with updated_at triggers; grants to personal_app only
- /trackers/health overview with add/edit/delete, owner-gated (404 otherwise),
  noindex + private no-store, hidden from listings for non-owners
- owner-only JSON/CSV import endpoint and scripts/health-import.ts
2026-10-24 00:14:07 +00:00
stan 0cf5d44062 Add energy tracker (/projects/energy)
Public, read-only page over the ned-collector energy schema: latest-hour
mix and per-source utilization, generation vs consumption with CO2
intensity (day/week/month/12 months/all years), NED forecast, gas storage
by year and per site, and gas-fired power share vs storage fill.
Incomplete hours (sources not summing to the NED total) are left out and
partial days/months/years are marked.
2026-10-23 23:11:27 +00:00
stan 88837af624 Rename repo/image path to stan/website; retag legacy images on rollback
Deploy production / deploy (push) Successful in 2m23s
2026-10-23 22:53:23 +00:00
stan 45f2bbb198 db-refresh-dev: own dev DB as personal_dev, no prod grants; PG_CONTAINER mode
Deploy production / deploy (push) Successful in 3m49s
2026-10-23 22:27:17 +00:00
stan 36af5675e9 Merge db-schemas: Drizzle schemas, prod-only pipeline, trackers
Deploy production / deploy (push) Failing after 14s
2026-10-23 22:09:54 +00:00
stan 7e69d1e888 ui: separate trackers from projects; keep header dropdown on top
- /trackers index, Trackers section on the homepage and in the header nav;
  /projects lists only projects (tracker URLs unchanged)
- header is its own z-50 layer and <main> is isolated, so maps, charts and
  sticky tables no longer paint over the nav dropdowns
2026-10-23 22:03:59 +00:00
stan 2915135ed8 deploy: prod-only pipeline with Drizzle migrations; dev refresh + preview
- push to main builds, backs up prod (pg_dump 17), runs db-migrate + seeds,
  preflights and deploys; rollback = workflow_dispatch with rollback_tag
- staging workflow, promote step and migrate-*.ts / old SQL removed
- DB_URL = app role, DB_MIGRATE_URL = owner role
- scripts/db-refresh-dev.sh (prod dump -> local dev DB), scripts/preview.sh <branch>
2026-10-23 22:03:59 +00:00
stan 4cfe6bad6c app: lists on meta tables, schema-qualified SQL, typed columns
- lists read/write real lists.* tables via meta.tables/meta.columns and the
  SECURITY DEFINER meta functions; typed extra columns in the item forms
- old numeric list URLs 308-redirect to the slug
- include_recurring is boolean, osu accuracy/pp/rate numeric
- raw SQL qualified with the new schemas
2026-10-23 22:03:42 +00:00
stan 64fb8df262 db: Drizzle schemas on domain Postgres schemas, baseline migration, reorg SQL
- pgSchema tables for auth, money, house, ref, games, cs, animaldex, site, meta
  (lists excluded via schemaFilter; runtime list tables are managed by meta.*)
- drizzle/ baseline matches the reorged DB exactly (catalog diff = 0 on rehearsal)
- db/reorg: one-time SQL that moves the flat public schema (rehearsed on a prod copy)
- scripts/db-migrate.ts: migrator with --init to record the baseline and a guard
  against running the baseline on a non-empty, unrecorded database
2026-10-23 22:03:42 +00:00
stanandClaude Opus 5.5 f94e3dc8ac fix: use namespace zod import in house tracker types
Test and deploy staging / staging (push) Successful in 2m46s
`import { z } from 'zod'` is undefined when vitest runs under Bun (as in the
Docker build), matching the earlier fix in eca43c8.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 22:20:22 +00:00
stanandClaude Opus 5.5 54924b39f0 feat: upgrade to SvelteKit 3 and adapter-bun
Test and deploy staging / staging (push) Failing after 43s
Run the sveltekit-3 migration and finish its manual tasks:

- Move kit config into the sveltekit() Vite plugin; drop svelte.config.js
- Replace $lib with #lib subpath imports
- Declare env vars in src/env.ts and import them from $app/env/{private,public}
- Consolidate param matchers into src/params.ts
- Use error(status, message), Response.json, refreshAll and goto reset/shallow
- Fall back to a full page load when goto rejects a login return path

Switch from adapter-node to adapter-bun: the build script runs Vite under
Bun (the adapter requires it) and the image starts with `bun ./build`.
Runtime env names (PORT, BODY_SIZE_LIMIT, ADDRESS_HEADER, ...) are unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 22:17:30 +00:00
stan b52e9188f4 house worker 2026-10-11 22:05:05 +00:00
stan ecd49fc410 fix: parse real Pararius search titles correctly 2026-10-11 21:38:47 +00:00
stan 4ea0ba2d48 fix: enforce house worker request spacing and ignore local secrets 2026-10-11 21:14:41 +00:00
stanandClaude Opus 5.5 0846cf7d77 feat: house tracker with home worker, alerts and listing map
Collects Pararius rent/buy listings into Postgres via a worker that runs on a
residential connection, sends Discord/ntfy alerts for new listings matching
rules, and shows an admin-only map, market stats and worker log.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013HfF5tnChi8tkCx9svJP6D
2026-10-11 20:57:20 +00:00
stanandClaude Opus 5.5 0ee9ed0abb feat: roomier BO2 companion with +/- rank stepping
Test and deploy staging / staging (push) Successful in 2m29s
- Scale the COD page to the screen: larger gun art, text and progress
  ribbon, sized from one viewport unit so it fills a MacBook Pro 16"
  and big monitors and still fits 1280x720 without scrolling.
- Five columns on wide screens and four below, picked by CSS, so the
  server-rendered page already has the final layout.
- Replace the tabs/filters/overview rows with one toolbar of matching
  controls.
- Player and weapon ranks step with + and -: level 55 + 1 is the next
  prestige at level 1, up to max prestige. Presses show at once, batch
  while a save is running, and stepRank does the arithmetic in SQL.
- Clicking a rank still opens exact entry for big jumps.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 21:50:19 +00:00
stan 8eec207f2d fix: create deployment backups with allowed Docker permissions
Test and deploy staging / staging (push) Successful in 2m26s
2026-10-08 21:10:21 +00:00
stan c2bc9050c2 feat: build compact BO2 grind companion with cumulative ranks
Test and deploy staging / staging (push) Failing after 2m50s
2026-10-08 21:06:19 +00:00
stan c2ba8febb4 Expand website and game trackers
Test and deploy staging / staging (push) Failing after 5m29s
2026-09-25 22:43:04 +00:00
stan f6b34150d4 add ai slop warnings
Test and deploy staging / staging (push) Successful in 12m6s
2026-09-25 16:41:45 +00:00
stan abac077541 ui changes and cs prices
Test and deploy staging / staging (push) Successful in 11m52s
2026-09-25 00:44:06 +00:00
stan c757d0882a add icons to lists and solve money tracker bugs
Test and deploy staging / staging (push) Successful in 2m30s
2026-09-24 19:24:09 +00:00
stanandClaude Opus 5.5 a10585a4d2 add game tracker with owned pokemon data and call of duty mastery
Test and deploy staging / staging (push) Successful in 18s
Fold catchemall into /projects/game-tracker (old URL redirects) and add
Call of Duty tracking for Black Ops through WWII.

- Pokémon catalog is now owned: locations, encounters and per-game
  evolution methods are built from the pinned PokéAPI snapshot and seeded.
- Pokémon you can evolve or breed in a game count as obtainable; mythicals
  without another route are marked event-only.
- Detail dialog with evolution chain and where to find it, location pages
  with admin notes and pictures, and admin corrections that survive reseeds.
- Call of Duty weapons, milestones and Steam achievements per game, with
  derived Diamond / Dark Matter / Solar / Black Sky / Chrome tiers.
- New migration (db:migrate:game-tracker), seeds (db:seed, db:seed:cod) and
  deploy preflight checks for them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 17:36:18 +00:00
stanandClaude Opus 5.5 438623d857 add language learner project
Test and deploy staging / staging (push) Has been cancelled
Dutch and Korean (explained in English) and English (explained in Dutch)
from A1 to C1, with a Hangul level for Korean. Lessons with notes, words
and sentences generate multiple-choice, typing, sentence building, cloze,
listening and matching exercises. Endless challenges: a seeded daily
challenge, sprint, survival, mixed practice, level tests, spaced-repetition
reviews and generated drills (numbers, clock times, de/het, plurals, Dutch
and Korean conjugation, particles, Hangul reading, irregular verbs).
Progress is stored in localStorage with export/import.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 17:34:56 +00:00
stanandClaude Opus 5.5 afb1f191df add world opinions project
Test and deploy staging / staging (push) Successful in 1m49s
World map with switchable layers (what "liberal" means, what left vs right
is about, traditional/secular and survival/self-expression values), country
cards, a shared-scale party compass, a values scatter and national
narratives of major events.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 16:24:40 +00:00
stan 499dd94cbb update money tracker
Test and deploy staging / staging (push) Successful in 30s
2026-09-23 18:06:20 +00:00
stan 2466db74cd fix csv import for money tracker
Test and deploy staging / staging (push) Successful in 1m44s
2026-09-23 17:23:14 +00:00
stan 0638ead87f add money tracker
Test and deploy staging / staging (push) Successful in 1m46s
2026-09-23 17:02:32 +00:00
stan 753b2e5d6a add animal modal and page
Test and deploy staging / staging (push) Successful in 1m54s
2026-09-23 16:56:19 +00:00
stan 3691a85fdf add projects dropdown
Test and deploy staging / staging (push) Successful in 1m48s
2026-09-23 16:44:21 +00:00
stan 4b63e9ca11 remove emojis with real icons
Test and deploy staging / staging (push) Successful in 1m46s
2026-09-23 16:12:41 +00:00
stan f1cd0ef849 add catchemall progress bars and hide uncatchable pokemon by default
Test and deploy staging / staging (push) Successful in 28s
2026-09-23 04:59:22 +00:00
stan eca43c82d0 fix zod imports in bun test build
Test and deploy staging / staging (push) Failing after 1m39s
2026-09-23 04:47:27 +00:00
stan 1d0b96e7bc optimize building and deploying
Test and deploy staging / staging (push) Failing after 13s
2026-09-23 04:36:58 +00:00
stan d0c7b6548b beeeeg update
Test and deploy staging / staging (push) Has been cancelled
2026-09-23 04:16:50 +00:00
stan 487eff5bb2 Merge pull request 'update homepage experience min width' (#43) from dev into staging
build / build (push) Successful in 44s
build / deploy (push) Successful in 3s
Reviewed-on: stan/personal-website#43
2026-09-22 14:42:50 +00:00
stan 379b21cb93 update homepage experience min width 2026-09-22 14:42:28 +00:00
stan b8b366b542 Merge pull request 'staging' (#42) from staging into main
build / build (push) Successful in 34s
build / deploy (push) Successful in 13s
Reviewed-on: stan/personal-website#42
2026-09-22 13:51:54 +00:00
stan 8ad422083e Merge pull request 'update home page' (#41) from dev into staging
build / build (push) Successful in 51s
build / deploy (push) Successful in 3s
Reviewed-on: stan/personal-website#41
2026-09-22 13:51:44 +00:00
stan 0991a9585f update home page 2026-09-22 13:51:04 +00:00
stan 6ed508702e Merge pull request 'staging' (#38) from staging into main
build / build (push) Successful in 37s
build / deploy (push) Successful in 3s
Reviewed-on: stan/personal-website#38
2026-09-20 02:26:53 +00:00
stan e8d6c8de4b Merge pull request 'dev' (#37) from dev into staging
build / build (push) Successful in 50s
build / deploy (push) Successful in 3s
Reviewed-on: stan/personal-website#37
2026-09-20 02:24:50 +00:00
stan 7f04896ff8 update blog index page ui 2026-09-20 02:24:13 +00:00
stan 8ea36dd515 add projects page 2026-09-20 02:23:30 +00:00
stan 6ec596bc24 add derby page 2026-09-20 02:23:12 +00:00
stan 97cbf90c3d remove drizzle and vscode files 2026-09-19 18:23:19 +00:00
stan 953b2744bd add header border 2026-09-19 18:20:05 +00:00
stan 46ab4a0adb Merge pull request 'staging' (#34) from staging into main
build / build (push) Successful in 36s
build / deploy (push) Successful in 13s
Reviewed-on: stan/personal-website#34
2026-09-17 05:47:09 +00:00
stan a4d583e241 Merge pull request 'dev' (#33) from dev into staging
build / build (push) Successful in 49s
build / deploy (push) Successful in 13s
Reviewed-on: stan/personal-website#33
2026-09-17 05:46:56 +00:00
stan e93db1dbe7 remove blog link in homepage 2026-09-17 05:40:01 +00:00
stan 3f9190041f set dev title + setup for future logic 2026-09-17 05:39:44 +00:00
stan 08ab1f2716 Merge pull request 'staging' (#31) from staging into main
build / build (push) Successful in 36s
build / deploy (push) Successful in 3s
Reviewed-on: stan/personal-website#31
2026-09-17 05:03:40 +00:00
stan d831afac15 Merge pull request 'dont use postgis for animaldex' (#30) from dev into staging
build / build (push) Successful in 40s
build / deploy (push) Successful in 13s
Reviewed-on: stan/personal-website#30
2026-09-17 05:01:22 +00:00
stan 247e65324e dont use postgis for animaldex 2026-09-17 05:00:59 +00:00
stan e039f69afd Merge pull request 'staging' (#29) from staging into main
build / build (push) Successful in 32s
build / deploy (push) Successful in 12s
Reviewed-on: stan/personal-website#29
2026-09-17 03:24:39 +00:00
stan a543ceb4d1 Merge pull request 'update umami url' (#28) from dev into staging
build / build (push) Successful in 36s
build / deploy (push) Successful in 13s
Reviewed-on: stan/personal-website#28
2026-09-17 03:24:24 +00:00
stan dff5c98e37 update umami url 2026-09-17 03:24:03 +00:00
stan 1ff6bb859e Merge pull request 'staging' (#27) from staging into main
build / build (push) Successful in 32s
build / deploy (push) Successful in 3s
Reviewed-on: stan/personal-website#27
2026-09-17 03:19:35 +00:00
stan a58bf74321 Merge pull request 'dev' (#26) from dev into staging
build / build (push) Successful in 48s
build / deploy (push) Successful in 4s
Reviewed-on: stan/personal-website#26
2026-09-17 03:17:31 +00:00
stan ff5661a635 add umami analytics 2026-09-17 03:16:53 +00:00