From 38ac6d2854f451a55ab2866f5ff6ee35b30ab60f Mon Sep 17 00:00:00 2001 From: Nir Nave Date: Sat, 20 Jun 2026 09:42:39 +0300 Subject: [PATCH] Document deleting feature branches after PR merge in CLAUDE.md --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 321749e..caaa592 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,7 +15,7 @@ python3 build.py # regenerate data/attractions.{json,js} after data - **`data/attractions.{js,json}` are generated** — never hand-edit; change a scraper or `data/raw/*.json` and run `build.py`. **Exception:** `tags`/`duration_min` are planning *state* held inline in `attractions.json` (filled by the `tag-places` skill / `enrich/tag_places.py`); `build.py` preserves them across rebuilds. `attractions.js` is always a generated mirror. - **Parse `data/attractions.json`, not `.js`** — `attractions.js` is `window.ATTRACTIONS = [...];` (JS assignment, not JSON; `JSON.parse` fails). Use the `.json` twin for programmatic reads. - **Duplicate places across sources** — the same spot appears from multiple sources at near-identical coords; dedupe by rounded coords (e.g. `lat.toFixed(3)`) when aggregating. -- **Deploy = merge to `main`** → GitHub Pages at https://amnir.github.io/maptiyul/ (absolute OG/`og:url` point there). `main` is protected: push a branch + open a PR (`gh pr create`), direct pushes are rejected. +- **Deploy = merge to `main`** → GitHub Pages at https://amnir.github.io/maptiyul/ (absolute OG/`og:url` point there). `main` is protected: push a branch + open a PR (`gh pr create`), direct pushes are rejected. **After a PR merges, delete its feature branch** (local `git branch -D` + remote `git push origin --delete`, plus `git worktree remove` if it was a worktree) — squash merges mean `git branch -d` won't auto-detect the merge. - **RTL layout** (`dir="rtl"`): logical CSS props are mirrored — `inline-start` = right, `inline-end` = left. - **`sw.js` cache** `maptiyul-v1`: page + `attractions.js` are network-first; bump the cache name when changing which shell assets are precached. - **Trip planner has two modes**: deterministic client-side generator (default, no backend) and an optional Supabase Edge Function (`supabase/functions/plan/`) for a real LLM, vendor-agnostic via `LLM_BASE_URL`/`LLM_API_KEY`/`LLM_MODEL`. The LLM path falls back to the deterministic one on any error. `SUPABASE_URL`/`SUPABASE_ANON_KEY` in `index.html` are public-by-design; real provider/service keys live only in Supabase secrets (`.env` is gitignored) — never commit them. See README "Trip planner (LLM backend)".