docs: clean up research notes, add production backlog and working docs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vgmzx8VTTTmCskSpQtsLTr
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Milestone 2: Template Refactor — Session Brief
|
||||
|
||||
Use this as the starting point for the brainstorm in a new session.
|
||||
Invoke the brainstorming skill (`/brainstorm`) and hand it this file as context.
|
||||
|
||||
---
|
||||
|
||||
## What this milestone is about
|
||||
|
||||
The asset pipeline (Milestone 1) is done — CDN dependencies eliminated, JS deduplicated into shared bundles. The templates themselves still have structural problems that make them hard to maintain and extend.
|
||||
|
||||
## Problems to solve
|
||||
|
||||
### 1. `trip.html.twig` mixes three concerns
|
||||
|
||||
Currently ~384 lines after Milestone 1 cleanup. Still mixes:
|
||||
- Twig data-building loops (collecting `map_entries`, building entry lists, GPX URL arrays)
|
||||
- HTML structure (cards, panels, filter bar)
|
||||
- Inline JS (map init, GPX stats block)
|
||||
|
||||
Goal: split into focused, readable sections or partials.
|
||||
|
||||
### 2. `map_entries` loop is duplicated across 4 templates
|
||||
|
||||
Near-identical Twig loop that builds `[{lat, lng, title, slug, url, type, ...}]` appears in:
|
||||
- `trip.html.twig`
|
||||
- `dailies.html.twig`
|
||||
- `stories.html.twig`
|
||||
- `map.html.twig`
|
||||
|
||||
Candidate for a Twig macro so a change only needs to happen once.
|
||||
|
||||
### 3. Stats computation is slow Twig loops
|
||||
|
||||
Country counting, temperature range, days on road — currently computed in Twig on every uncached page load. At 60–80 entries this is noticeable.
|
||||
|
||||
**Stronger option:** Move to a small PHP Grav plugin that exposes a single `{{ trip_stats }}` Twig variable. PHP loops are significantly faster than Twig loops. This is also the prerequisite for showing stats on other pages (homepage, story pages) in future.
|
||||
|
||||
### 4. Date range formatting duplicated
|
||||
|
||||
Same date formatting logic in both `story.html.twig` and `stories.html.twig`.
|
||||
|
||||
### 5. Latent bugs on inactive pages (fix while touching templates)
|
||||
|
||||
While refactoring, fix these two issues on pages not yet in active use:
|
||||
- `map.html.twig`: inline map init needs `DOMContentLoaded` wrapper; `{% block map_assets %}` nested inside `{% block content %}` (double-registers assets)
|
||||
- `feed-map.html.twig` (partial): `{% do assets.addCss %}` registers after `{{ assets.css()|raw }}` has rendered; inline map init also needs `DOMContentLoaded`
|
||||
|
||||
---
|
||||
|
||||
## Key constraint
|
||||
|
||||
Mischa wants stats and cycling data (distance, elevation gain/loss, moving time) visible on other pages in future (homepage, story pages). Centralising the computation — whether as Twig macros or a PHP plugin — is the prerequisite for that.
|
||||
|
||||
## What NOT to do in this milestone
|
||||
|
||||
- Don't touch JS or asset pipeline (that's Milestone 1, done)
|
||||
- Don't redesign the visual layout
|
||||
- Don't activate `dailies.html.twig`, `stories.html.twig`, or `map.html.twig` as new features — just fix their structural bugs while you're in the templates
|
||||
|
||||
## Relevant files
|
||||
|
||||
- `user/themes/intotheeast/templates/trip.html.twig` — main template (~384 lines)
|
||||
- `user/themes/intotheeast/templates/partials/base.html.twig` — base layout
|
||||
- `user/themes/intotheeast/templates/partials/feed-map.html.twig` — mini-map partial
|
||||
- `user/themes/intotheeast/templates/map.html.twig` — full-page map (inactive)
|
||||
- `user/themes/intotheeast/templates/dailies.html.twig` — journal feed (inactive)
|
||||
- `user/themes/intotheeast/templates/stories.html.twig` — stories grid (inactive)
|
||||
- `user/themes/intotheeast/templates/story.html.twig` — single story page
|
||||
- `user/plugins/` — where a new stats plugin would live
|
||||
|
||||
## Open question for the brainstorm
|
||||
|
||||
The biggest design decision: **PHP plugin vs Twig macro for stats computation.**
|
||||
|
||||
- Twig macro: simpler, no new plugin, but still slow Twig loops
|
||||
- PHP plugin: faster, reusable across pages, but adds a plugin to maintain
|
||||
|
||||
Mischa's stated preference leans toward the PHP plugin given the future-reuse goal, but hasn't committed yet.
|
||||
Reference in New Issue
Block a user