feat(app): nearby tide by current location (model) — v0.4.0 Wires the arbitrary-coordinate tide backend into the app so users can see tide for where they actually are ("내 근처 항"): - My Spots: "📍 현재 위치 조석 보기" resolves GPS and selects a coordinate spot; the old GPS button becomes "가까운 관측소 정렬". - api.tide(spot, date): branches to lat&lon for coordinate spots, station for official DT_ stations. - spots.ts: coordSpot()/isCoordSpot() helpers (id MDL:lat:lon). - Today: source badge — "🛰 예측 모델 · 상대조위" for model, "📍 가까운 관측소 OO 기준" for fallback. TideTimeline hides absolute cm when the level is MSL-relative (model). - types.ts: TideDay gains source/datum/relativeLevel/noisy/fallbackFrom. - version bump 0.3.1 -> 0.4.0 (versionCode 6). Constraint: coordinate spots use the unofficial KHOA model; non-large-tide coasts auto-degrade to the nearest official station, so the app never shows model noise as truth. Confidence: high Scope-risk: module Reversibility: moderate Directive: Next, add a named-port list (geocode 국가어항 113) so users pick ports by name, reusing this same coordinate path. Tested: app build (tsc -b && vite) clean; APK assembled; live coord tide via sea.lucas-ai.cc returns model for 인천, fallback for 묵호. Not-tested: on-device GPS permission flow + visual badge rendering on a real phone. Related: docs/checklist.md, proxy feat (arbitrary-coordinate tide) 🐙 Autopus