Hex explorer - #38
Merged
Merged
Conversation
…iage
Resolution:
Res 6 → Res 3 (~12,392 km²/cell, metro-region scale)
Regenerated 200 Genesis hexes: 5 regions × 40 cells, 0 duplicates
Idaho corridor: added Sun Valley + Boise as explicit anchors (cells
832886fffffffff and 832884fffffffff both confirmed in mountain region)
Background LOD simplified: Res 1 overview (zoom 0-3) + Res 3 license
grid (zoom 3+) — rendering now matches the actual purchased resolution
Region jump zoom: 9.5 → 4.5 (appropriate for Res-3 cell visibility)
HexPanel bullet icons:
Replaced <ul>/<li> (stripped by Tailwind reset) with flex rows using
explicit '•' bullets in #c4f061 accent colour. Both 'What's included'
and 'Terms of sale' sections updated.
Explorer list view (restored):
Added HexListView component with status/region/score/price columns
Map ↔ List toggle in top toolbar
Selecting a row opens HexPanel inline on the right
Typography:
html font-size: 17px (was browser default 16px)
body line-height: 1.6
Heading scale via clamp() per brand guidelines
Build warnings:
FIXED: vercel ^51.2.1 moved from dependencies → devDependencies
FIXED: @upstash/redis URL sanitizer strips stray quote chars that
caused 'must start with https' UrlError in production
TRACKED: docs/build-warning-rationale.md — rationale for 9 remaining
transitive-dep warnings (MetaMask, WalletConnect, glob chain)
and 2 open bugs (checkout reservation, list view restored)
Updated files:
scripts/seed-genesis-res3.mjs RES=3, Idaho corridor anchors
apps/web/src/data/regions.json 200 Res-3 cells
apps/web/src/lib/genesis-hexes.ts Res-3 lab IDs + h3Resolution:3
apps/web/src/explorer/components/ LOD, zoom levels, constants
apps/web/src/app/explorer/page.tsx list view, Res-3 labels, banner
apps/web/src/explorer/components/HexPanel.tsx bullet icons
apps/web/src/app/globals.css font-size, line-height, h1-h3
apps/web/src/lib/kv.ts sanitizeEnvString()
package.json vercel → devDependencies
docs/build-warning-rationale.md NEW — warning triage log
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Resolution: Res 3 → Res 4 (~1,770 km²/cell, ~60 km edge)
seed-genesis-res3.mjs RES=4, 200 unique cells, 0 duplicates
Lab IDs: 8429a1dffffffff/845d145ffffffff/8428847ffffffff/8427407ffffffff/8426cb9ffffffff
Background LOD: Res 1 overview + Res 4 license grid (rendering = license res)
Region jump zoom: 4.5 → 6.0
Hex auto-calculation (lib/hex-geo.ts, NEW):
detectRegion(lat,lng) — bounding-box US region detection, 5 regions
classifyZone(lat,lng) — urban-core/urban/suburban/rural/remote from
haversine distance to 35 major US metros with population weighting
Thresholds calibrated for Res-4 cell scale (~60 km edge)
estimateWaterCoverage(lat,lng,res) — samples centroid + 6 hex vertices
against simplified ocean/lake bounding boxes; returns 0-100%
buildManifestFromApi now calls all three — no more null zoneClassification
Phase1Hex schema:
Added waterCoveragePercent: number | null to hex-map.types.ts
Admin partners page (apps/web/src/app/admin/partners/page.tsx, NEW):
Full CRUD partner management UI
View all KOL partners with clicks/conversions/earned stats
Approve pending applications in one click
Invite new partners — email or shareable link
4 approved outreach copy templates (general intro, follow-up, social,
newsletter) with [NAME]/[REFERRAL_URL]/[COMMISSION] auto-fill
Side drawer with personalised message composer per partner
Server-side admin proxy (api/admin/partners-proxy/route.ts, NEW):
Keeps ADMIN_SECRET server-side; validates caller via Auth0/email session
Checks ADMIN_EMAILS env var (default: tyler@malamaproject.org)
GET: list, get, templates POST: invite (pre-approved), approve
User referral link (dashboard/page.tsx):
ReferralLinkSection component shown for all authenticated users
Referral ID = SHA-256(email)[0:12] — non-reversible, URL-safe
Link: /presale?ref={refId} — earns points (not % commission)
'Apply to Partner Programme' link for users who want commission
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Columns (left → right): ID node number (zero-padded 001-200) H3 Cell full H3 index, monospace Region Genesis region label Zone colour-coded badge — urban-core/urban/suburban/rural/remote ×Multi geographic multiplier (0.90×–1.60×), zone colour tinted Score data demand score /100 in accent green Water % estimated water coverage; >30% shows 'coastal' tag in blue Left border of each row = status colour (blue=available, red=reserved, green=selected) so status is always visible without a column. Filter bar: Status group (All / Available / Reserved) + Zone group (Urban Core / Urban / Suburban / Rural / Remote) with zone-matched background colours on active filter chips. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… unconfigured - auth0.ts: stripped the dummy.auth0.com / dummy_client_id fallback that was silently redirecting users to a non-existent tenant on signup. SDK now reads from env vars natively (AUTH0_DOMAIN, AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET, AUTH0_SECRET, APP_BASE_URL). - proxy.ts: added AUTH0_CONFIGURED guard so the app continues to load (email session + Magic Link still work) when Auth0 env vars are absent. /auth/* paths redirect to /dashboard instead of crashing the middleware. Required env vars to enable Auth0 auth: AUTH0_DOMAIN, AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET, AUTH0_SECRET, APP_BASE_URL Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Hex clustering: - seed-genesis-res3.mjs: rewrite to gridDisk(metro, 1) only — all 200 cells stay within ~120 km of a major city. No remote/rural fallback expansion. Anchors: LA, SF, Seattle, PHX, Portland, LV, Reno, ABQ, Tacoma, Boise (west); Honolulu, Hilo, Maui, Kauai, Anchorage, Palmer, Homer, Fairbanks, Juneau, Kodiak, Cordova, Ketchikan (pacific); Denver, SLC, Provo, Boise, Missoula, Billings, Fargo, Sioux Falls, COS, Helena, Rapid City, Riverton (mountain); Chicago, Minneapolis, Detroit, Milwaukee, Cleveland, Columbus, Indianapolis, St Louis, KC, Madison, Omaha, Des Moines (midwest); Dallas, Houston, Atlanta, Miami, DC, NYC, Austin, Nashville, Charlotte, Philly, Boston, Virginia Beach (south). 200 unique / 0 duplicates. - Inline isOverOcean / isOverLake water detection to skip 100%-water cells. - New lab cell IDs: Pacific→84464b9ffffffff (Honolulu), Mountain→84268cdffffffff (Denver), Midwest→842664dffffffff (Chicago). Explorer: - buildManifestFromApi: skip hexes with waterCoveragePercent >= 100. - MALAMA_RESERVED_HEX_LABELS updated for new lab cell IDs. - HexListView: add onDeselect prop; panel close button now actually clears selection. Remove nested double-padding wrapper in side panel — clean flex column with single overflowY: auto prevents the 'bounding scroll box' UX. Dashboard: - Remove broken Auth0 'Log in' / 'Sign up' buttons (were routing to dummy.auth0.com → 400). Email session form is now the primary auth. - sessionAuth type narrowed to 'email' | null; all auth0 branches removed. - Simplified session pill: one button (Sign out) for email sessions. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tall failure npm ci was failing silently when build cache was unavailable. Switched to npm install --no-audit --no-fund --prefer-offline which is more resilient across npm versions and lockfile formats. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Next.js route files only permit HTTP-verb exports (GET, POST, etc.). APPROVED_COPY_TEMPLATES is consumed internally and served via the ?action=templates endpoint — no named export needed. Also reverts vercel.json to npm ci (cache is warm). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…corridor - seed-genesis-res3.mjs: per-anchor diskR support ([lat,lng,diskR?] format) so Hawaiian anchors use disk=0 (island fits 1 Res-4 cell, ring-1 = ocean) - Cook Inlet bbox tightened to lng < -150.5 so Anchorage (-149.9) and Palmer (-149.4) are correctly classified as land (not ocean) - hex-geo.ts: same Cook Inlet fix; per-island Hawaii bboxes replace old broad bbox that incorrectly flagged inter-island ocean as land - Pacific anchors: + Tok, McGrath, Healy (interior AK) to reach 40 cells - Mountain anchors: Montana removed → Idaho corridor (Coeur d'Alene, Moscow, Sun Valley, Twin Falls, Pocatello, Idaho Falls) - South anchors: Virginia Beach removed → Richmond VA (VA Beach over Atlantic) - regions.json: regenerated — 200 cells, 200 unique, 0 duplicates Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…serve 5 labs - public/whitepaper.pdf: canonical Mālama Labs Whitepaper v1.0 (33p, institutional) - app/whitepaper/page.tsx: dedicated /whitepaper page with PDF embed + download btn - SiteFooter: Whitepaper link → /whitepaper (was /docs/tokenomics) - DocsLayout: add Whitepaper v1.0 entry to sidebar nav (ScrollText icon) - WhitepaperProse — Token Identity: replace bullet list with designed card table showing Name, Ticker, Decimals, Standard, Primary/Liquidity chain, Cross-chain bridge, Hard cap — dark card with header logo + per-row layout - WhitepaperProse — QuickNav sticky: remove xl:items-start from grid so aside stretches to article height; TocNav now uses IntersectionObserver with -10%/-70% rootMargin to highlight active section while scrolling - WhitepaperProse section 3.3: correct reserved node list from 'Dallas only' to all 5 cities (LA, Honolulu, Denver, Chicago, Dallas) - explorer/page.tsx: update stale Res-6 comment → Res-4 lab cell IDs - .gitignore: add exception for apps/web/public/whitepaper.pdf Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Navbar: - 'Become A Launch Partner' → 'Partners' (shorter) - Add malamalabs.com ↗ external link (hidden on sm, visible lg+) - Docs active state includes /whitepaper Footer: - Remove duplicate 'Documentation' from Product column - Product: Reserve | Explorer | Timeline | Partners - Documentation: Whitepaper v1.0 | Docs hub | MLMA Tokenomics | Pricing & ROI | Operator Guide - Community: Discord | Schedule a call (remove redundant Operator FAQ) - Legal: Legal center | Token & Rewards Risk Disclosure (moved from Docs column) - Add ← malamalabs.com link in branding column Docs hub (/docs): - Crumb '← Mālama Labs' → '← malamalabs.com' (external, opens corporate site) - Whitepaper v1.0 added to switcher tabs - Whitepaper featured card (full-width span, accent border, accent 'Read + Download →') as first item in doc-grid — before DOCS·01 through DOCS·07 - Pages count updated 8 → 9 - Meta-card pages 8 → 9 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove @auth0/nextjs-auth0 from apps/web/package.json (was causing
npm deprecation warnings on every Vercel install)
- Delete apps/web/src/lib/auth0.ts
- proxy.ts: remove auth0 import + AUTH0_CONFIGURED guard;
/auth/* routes now redirect to /dashboard directly
- api/auth/session/route.ts: remove auth0 branch entirely;
returns email session only (or null)
- api/admin/partners-proxy/route.ts: remove dynamic import('@/lib/auth0')
try-catch; admin auth is email session only
- api/wallet/magic-express/route.ts: stub returns 501 — this endpoint
requires an OIDC provider; disabled until re-configured
- Navbar.tsx: type SessionData auth: 'auth0' | 'email' | null
→ 'email' | null
- package-lock.json regenerated — 0 auth0 entries remaining
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rride packages/sdk is an uninitialized git submodule (tylermalin/malamasensorlab). Vercel does not initialize submodules, so the packages/sdk directory is empty on every build — npm ci sees malama-sdk@0.1.0 as missing and fails. Nothing in apps/web imports malama-sdk, so removing it from workspaces is safe. Lockfile regenerated; npm ci --dry-run passes cleanly. Also adds the @harmoniclabs/cbor ^1.6.0 override (was applied but not committed). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This mac-only ARM binary was declared as a direct root dependency. Vercel runs Linux x64 and rejects it with EBADPLATFORM. Next.js selects its own platform-specific SWC binary as an optional peer dep — no need to pin it in the monorepo root. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Checklist
Please verify the following before submitting your PR:
docs/audit/invariants.md.README.mdand relevant documentation insidedocs/have been updated to reflect these changes.Additional Context