trails/openspec/changes/changelog/design.md
Ullrich Schäfer c7c1c275df
Add 8 proposed changes and old trails analysis
Proposed changes (all with proposal, design, specs, tasks):
- app-navigation (9 tasks) — nav bars for both apps
- planner-landing-page (7 tasks) — standalone landing page
- planner-multiplayer-awareness (13 tasks) — participants, cursors, names
- changelog (13 tasks) — public changelog with "what's new"
- transactional-emails (15 tasks) — magic link + welcome emails
- planner-features (18 tasks) — no-go areas, notes, recovery, rate limits
- komoot-import (23 tasks) — Komoot tour import
- route-features (37 tasks) — sharing, multi-day, spatial, photos

Also adds docs/old-trails-analysis.md with feature analysis from the
older trails project.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:57:20 +01:00

65 lines
2.3 KiB
Markdown

## Context
trails.cool ships features regularly but has no user-facing changelog. The
project philosophy values transparency and simplicity. We need a changelog
that's low-friction to write (just add a markdown file), works in-app, and
produces shareable social links.
## Goals / Non-Goals
**Goals:**
- Zero-friction authoring: drop a `.md` file, deploy, done
- Public page at `/changelog` listing all entries newest-first
- Individual entry pages at `/changelog/:slug` with OG meta for social sharing
- "What's New" indicator in nav for returning users
- Works without JavaScript (SSR)
**Non-Goals:**
- CMS or admin interface for writing entries
- RSS feed (future, not now)
- Email notifications for new entries
- Per-entry images or rich media (just markdown text)
- Bilingual entries (English only for now)
## Decisions
### D1: Markdown files in the repo, loaded at build time
Changelog entries live in `apps/journal/changelog/` as markdown files named
by date: `2026-03-25.md`. Vite's `import.meta.glob` loads them at build time.
No runtime file system access needed.
Each file has YAML frontmatter:
```yaml
---
title: "Collaborative route planning goes live"
date: 2026-03-25
---
```
### D2: Single route with dynamic slug
`/changelog` shows all entries. `/changelog/:date` shows a single entry.
Both are one route file using an optional param or two route files. The list
page shows titles + dates + first paragraph preview.
### D3: "What's New" via localStorage timestamp
Store `changelog:lastSeen` timestamp in localStorage. If the newest entry's
date is after this timestamp, show a dot on the nav "Changelog" link. Clicking
the changelog page updates the timestamp. No server state needed.
### D4: Open Graph meta for social sharing
Each `/changelog/:date` page sets `og:title`, `og:description` (first
paragraph), and `og:url`. No og:image for now — text previews are fine.
## Risks / Trade-offs
- **Build-time loading means deploy to publish** → Acceptable. We deploy on
every merge to main. Adding a changelog entry is: write file, PR, merge,
deployed.
- **No rich media** → Keeps it simple. Can add images later if needed.
- **localStorage "what's new" doesn't sync across devices** → Fine for now.
Server-side tracking would require auth and a DB table — overkill.