Commit Graph

151 Commits

Author SHA1 Message Date
m038 832e135e3a fix: correct stale G1-G4 comment to G1-G5 in gpx-journey spec 2026-06-20 00:54:06 +02:00
m038 0b49f90206 test: add M5–M6 integration tests for GPX connector logic 2026-06-20 00:50:19 +02:00
m038 5a52b8ff18 test: add Playwright tests G1-G5 for buildJourneySegments algorithm
Tests load italy-2025 map page to get MapUtils in scope, then exercise the
GPX proximity algorithm with synthetic data via page.evaluate.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WPJztrVGbwic2xTG7G9fjM
2026-06-20 00:39:45 +02:00
m038 2efdfbebb7 docs: add GPX connector logic implementation plan 2026-06-20 00:24:32 +02:00
m038 dfdb4d5ac3 docs: add GPX connector logic design spec 2026-06-20 00:15:10 +02:00
m038 50b64fbcb3 build: add Italy 2025 stories folder to demo-load target
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vgmzx8VTTTmCskSpQtsLTr
2026-06-19 23:44:18 +02:00
m038 640016c54f docs: add Tuscany demo stories implementation plan 2026-06-19 23:34:38 +02:00
m038 64dbcefd9b docs: add Tuscany demo stories design spec (3 story composition showcases) 2026-06-19 23:30:59 +02:00
m038 3fbba7672d test: fix M2 timing — wait for first marker before counting
Markers are added in map.on('load') which fires after the canvas
becomes visible; the old check was racy. Add an explicit waitFor
so M2 reliably passes with demo data loaded.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vgmzx8VTTTmCskSpQtsLTr
2026-06-19 23:17:05 +02:00
m038 6c378d77ca build: add story folder to demo-load and demo-reset targets 2026-06-19 23:04:14 +02:00
m038 7602b135f8 docs: add stats redesign spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RB86BaJBG3eGiMdfhmHRrQ
2026-06-19 22:31:33 +02:00
m038 46c33837ba docs: add dev server port and trip page filter bar notes to CLAUDE.md 2026-06-19 21:56:03 +02:00
m038 b1ec642d60 test: add MapLibre canvas tests (M1–M4), skip N5 (map nav link disabled)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G7CzY4z2Qm5sYE2nySRWuH
2026-06-19 21:52:38 +02:00
m038 28dc6c1f6c test: add F1–F7 Playwright tests for trip page filter bar and stats toggle 2026-06-19 21:51:13 +02:00
m038 3c35176b90 test: update N4 — filter bar replaces trip nav link to dailies 2026-06-19 21:50:41 +02:00
m038 5e864b0c03 docs: add trip page filter bar implementation plan 2026-06-19 21:24:19 +02:00
m038 c9ce336b18 docs: add trip page filter bar design spec 2026-06-19 21:20:55 +02:00
m038 e329cd4ad2 docs: update trip-switching checklist — home.alias is now permanent /home
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RB86BaJBG3eGiMdfhmHRrQ
2026-06-19 15:52:46 +02:00
m038 abd953e1f6 docs: add home and trip pages implementation plan 2026-06-19 15:26:03 +02:00
m038 dc8b7f58d2 docs: add home page & content flow design spec 2026-06-19 15:07:10 +02:00
m038 6d54092413 docs: rewrite production todo — fresh install, correct Admin2 gap, ordered steps 2026-06-19 13:26:05 +02:00
m038 ab92f3b469 docs: add production todo list 2026-06-19 13:24:13 +02:00
m038 ae17483ca4 docs: update dark mode plan — CartoDB tiles replace Stadia (no key required) 2026-06-19 13:18:47 +02:00
m038 e032292c97 docs: update CLAUDE.md, bugs log, and posting pipeline for Grav 2.0 + trip entity
- CLAUDE.md: add Grav 2.0 upgrade method, Admin2 setup, trip entity architecture, updated paths
- bugs-and-fixes.md: fix stale paths, add BUG-004 (Admin2 empty dashboard) and BUG-005 (PHP session path)
- posting-pipeline.md: update paths to trips/dailies structure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 13:11:53 +02:00
m038 e6eb93cd2c feat: trip entity restructure + Grav 2.0 upgrade
- Switch to getgrav/grav Docker image with GRAV_CHANNEL=beta (Grav 1.7.53)
- Apache runs as host UID 1000; fix-perms target handles container setup
- Rename tracker → dailies throughout (URL slug, templates, tests)
- Trip entity: /trips/<slug>/{dailies,map,stats,stories} hierarchy
- Nav driven by active_trip in site.yaml
- GPX route rendering on map via leaflet-gpx CDN
- Italy 2025 demo trip with real Tuscany GPS routes
- Admin blueprint for trip pages (date range, cover image, album URL)
- Dark mode + visual polish plan ready at docs/superpowers/plans/2026-06-19-dark-mode.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 09:09:19 +02:00
m038 2835d876cc docs: update fix-perms instructions for getgrav/grav image
Replace stale linuxserver.io paths (abc:users, /app/www/public/*)
with current approach: run make fix-perms after plugin install or
container recreation.
2026-06-19 02:01:16 +02:00
m038 2ff31f311b docs: add dark mode implementation plan 2026-06-19 01:59:17 +02:00
m038 0cb109b2a3 docs: add dark mode + visual polish design spec 2026-06-19 01:56:34 +02:00
m038 5e954d8adf fix: update paths for trips/japan-korea-2026/dailies restructure
- Update post form parent, Makefile demo targets, and test scripts to use
  new trip-scoped paths (01.trips/japan-korea-2026/01.dailies)
- Rename tracker.spec.js → dailies.spec.js and update all /tracker URLs
  to /trips/japan-korea-2026/dailies across nav.spec.js, post.spec.js,
  helpers.js, and dailies.spec.js
- Add Italy 2025 demo trip to Makefile demo-load/demo-reset targets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 01:49:38 +02:00
m038 6926b4084a docs: add trip entity implementation plan 2026-06-19 01:17:05 +02:00
m038 943026658b fix: make fix-perms idempotent and persistent across container restarts
The getgrav/grav image is Debian-based and has no uid 1000 user,
causing Apache to fail switching to APACHE_RUN_USER=#1000 on restart.
fix-perms now creates the uid 1000 user if absent, sets ownership,
then gracefully reloads Apache workers so they run as uid 1000.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 00:15:56 +02:00
m038 6702b5d9b6 feat: support GRAV_CHANNEL_SUFFIX for Grav 2.0 RC production install
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 00:14:05 +02:00
m038 b2f6cb1977 fix: update test-post.sh for Grav 1.7.53 / Login 3.x compatibility
- login-form-nonce replaces form-nonce (Login plugin 3.x)
- task value is login.login not login
- login success check uses form presence, not status code (/post returns
  200 unauthenticated)
- entry discovery searches by title, handles .en.md suffix
- cleanup uses docker exec to remove files owned by www-data

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 23:41:51 +02:00
m038 8824f79c64 feat: run Apache as host UID 1000 and add fix-perms target
APACHE_RUN_USER/GROUP=#1000 makes PHP/Apache write files owned by
the host user (mischa) instead of http. fix-perms target in setup
ensures ownership is correct after plugin install.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 23:34:57 +02:00
m038 9fd349e5ec chore: update .gitignore to allow cache-on-save plugin 2026-06-18 23:18:01 +02:00
m038 df55917347 feat: switch to getgrav/grav 2.0 RC docker image
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 23:13:53 +02:00
m038 6fe066e77d docs: fix plan commit steps for user/ git repo separation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 23:12:52 +02:00
m038 b98ae50f30 docs: add Grav 2.0 upgrade implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 23:05:13 +02:00
m038 9beb22f4c2 docs: add Grav 2.0 upgrade design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 23:00:02 +02:00
m038 edc232ae83 Merge pull request 'Playwright UI test suite (25 tests)' (#1) from experimental-polar-steps into main
Reviewed-on: #1
2026-06-18 22:41:34 +02:00
m038 a50e7f5386 feat: add comprehensive Playwright UI test suite
25 tests across auth (A1-A5), posting (P1-P5), validation (V1-V4),
tracker (T1-T5), and nav (N1-N5). Uses storageState for single login
per run. Replaces post-with-photo.spec.js with post.spec.js.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 22:34:11 +02:00
m038 545e3f5ba0 feat: add Playwright UI test for post-with-photo flow 2026-06-18 20:35:17 +02:00
m038 1fa8ff954d fix: increase PHP upload limit to 100M per file, 500M total 2026-06-18 20:26:27 +02:00
m038 fb28f09e0c test: add form config validator and HTTP integration test
test-config: static YAML validator for post-form.md — checks that the
add-page-by-form action name, pageconfig/pagefrontmatter blocks, and all
required fields are correctly wired. Fast, no server needed. Catches the
class of bug that caused silent post failures.

test-post: end-to-end HTTP test — logs in, submits the form, verifies an
entry.md was created on disk, then cleans up. Requires GRAV_TEST_USER and
GRAV_TEST_PASS in .env (see .env.example).

  make test-config   # fast, no credentials needed
  make test-post     # full e2e, needs .env credentials
  make test          # both

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 19:57:49 +02:00
m038 706d1dee21 fix: raise PHP upload limits to 25M per file for photo uploads 2026-06-18 19:40:49 +02:00
m038 618e0c707b feat: add demo-load and demo-reset make commands 2026-06-18 17:52:33 +02:00
m038 1ae383cf5d Document dev/prod mode settings and no-switching rule
Adds section 1 to CLAUDE.md covering the current development mode
config (twig.cache: false), the production mode values to restore at
launch, and an explicit rule never to flip modes mid-development to
work around bugs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:25:59 +02:00
m038 c77a5aca4c Bump GRAV_VERSION to 1.7.53 2026-06-18 00:28:15 +02:00
m038 bc6781133e Document local dev setup gotchas; fix install-plugins gpm path 2026-06-18 00:16:47 +02:00
m038 700ce04d22 Add add-page-by-form and shortcode-gallery-plusplus plugins 2026-06-17 23:55:24 +02:00