Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
96e885f
Preserve the audit inputs the redesign was scoped against
promptstudio3000 Sep 2, 2026
b20b980
feat(web): design-system foundation for the UI redesign
promptstudio3000 Sep 2, 2026
dc19b28
feat(web): rebuild the map shell around one centred command pill
promptstudio3000 Sep 2, 2026
78e3527
refactor(web): cut the balast §29.3 flagged out of planning, search a…
promptstudio3000 Sep 3, 2026
f588cdb
chore: keep TypeScript build info out of the repository
promptstudio3000 Sep 3, 2026
35f543e
feat(web): open place detail in the panel and give the map an assistant
promptstudio3000 Sep 3, 2026
746f4bc
feat(ai): a streaming assistant with real tools behind the map
promptstudio3000 Sep 3, 2026
b984fed
feat(ai): compose guides from many sources and let the assistant draf…
promptstudio3000 Sep 3, 2026
c178e7a
fix(web): let a segment's variants be picked in one click, and stop a…
promptstudio3000 Sep 3, 2026
f870111
fix(web): make every control reachable by thumb and quiet the rows th…
promptstudio3000 Sep 3, 2026
f33a48b
Phase 5: overlay legends, 3D terrain, OpenInfraMap
promptstudio3000 Sep 3, 2026
2634c80
Phase 5: render the basemap card previews
promptstudio3000 Sep 3, 2026
c239d92
Block D1+D2: GPX import with route lines, quest anchor cache and game…
promptstudio3000 Sep 3, 2026
429dffb
Stabilize shared MAPOS candidate and verify release workflow
Sep 23, 2026
95f06a9
v0.1
coinmandeer Sep 25, 2026
0856e83
Fix Prettier formatting in ai-chat-turn.v2 prompt
claude Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 16 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.git
**/node_modules
**/dist
**/.env
**/.env.*
**/*.log
**/*.tsbuildinfo
**/.DS_Store
.cache
.playwright-cli
output
test-results
playwright-report
e2e/screenshots
apps/web/public/models
progress.md
61 changes: 60 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,12 @@ CML_PROVIDER=ollama
# `curl -H "Authorization: Bearer $OLLAMA_API_KEY" https://ollama.com/v1/models` what's live.
OLLAMA_BASE_URL=https://ollama.com/v1
OLLAMA_API_KEY=
OLLAMA_MODEL=deepseek-v4-flash:0731
OLLAMA_MODEL=glm-5.3-flash
# Two model slots the AI router picks between. `fast` answers routing, suggest and short
# summaries; `strong` handles guide synthesis, plan proposals and generated layers. Both fall
# back to OLLAMA_MODEL when unset.
OLLAMA_MODEL_FAST=glm-5.3-flash
OLLAMA_MODEL_STRONG=deepseek-v4-pro:0813
# OpenAI slot — used when CML_PROVIDER=openai.
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
Expand All @@ -99,6 +104,12 @@ OPENAI_MODEL=gpt-4o-mini
# Prototype operator switch. Source-rights metadata is advisory and does not hide the layer.
PARK4NIGHT_ENABLED=1

# Overture is served as a bounded self-hosted PMTiles extract, not the global public archives
# (a single z14 tile over Prague is ~8.5 MB and cannot be drawn live). Run
# `node scripts/import-overture.mjs --theme places --bbox <w,s,e,n>` and the same for buildings,
# place the archives under the web root as /overture/{places,buildings}.pmtiles, then enable this.
OVERTURE_ENABLED=0

# ---------------------------------------------------------------------------
# Optional enrichment
# ---------------------------------------------------------------------------
Expand All @@ -117,6 +128,9 @@ MAPOS_CONTACT=
OPENCHARGEMAP_API_KEY=
# Street-level imagery — https://www.mapillary.com/dashboard/developers
MAPILLARY_ACCESS_TOKEN=
# Live ships worldwide (AISstream). Without it the vessel layer covers Finnish waters via the
# keyless Digitraffic feed. https://aisstream.io/account
AISSTREAM_API_KEY=
# Satellite fire detections — https://firms.modaps.eosdis.nasa.gov/api/map_key/
NASA_FIRMS_MAP_KEY=
# Reference air quality stations — https://explore.openaq.org/register
Expand Down Expand Up @@ -149,3 +163,48 @@ VITE_DETAIL_SURFACE_V2=
VITE_GAME_AVATAR_V2=
# Revert only the Phase 18 shared registry/style lifecycle; data and legacy handles stay intact.
VITE_MAP_RUNTIME_V2=

# Aavegotchi world pilot: one authoritative API process; keep test movement off in production.
MAPOS_WORLD_ENABLED=1
MAPOS_GAME_TEST_MOVEMENT=0
MAPOS_GOTCHI_LIVE_ENABLED=1
MAPOS_GOTCHI_CACHE_DIR=.cache/mapos-gotchi
MAPOS_BASE_RPC_URL=https://mainnet.base.org
# Comma-separated MapOS account IDs allowed to hide reported public threads.
MAPOS_WORLD_MODERATORS=
# Optional exact development origin when the memory pilot runs on another port.
MAPOS_WORLD_ORIGIN=
# Optional dedicated routing graphs; each URL ends at /route/v1.
# Foot/bike must use their own graph, not the car graph with a different path label.
OSRM_CAR_URL=
OSRM_FOOT_URL=
OSRM_BIKE_URL=

# Commercial Places integration stays disabled until its free allocation is verified in PostgreSQL.
# Account is a non-secret budget identifier, not the API token. Existing FSQ_API_KEY stays server-only.
FSQ_PLACES_ENABLED=0
FSQ_BUDGET_ACCOUNT=

# Overview facts work without a model. Outbound synthesis additionally requires a verified T07 allocation.
MAPOS_AI_OVERVIEW_V2=1
MAPOS_AI_BUDGET_ACCOUNT=

# Explicit operator-managed Ollama subscription; allocation mode retains database grants.
MAPOS_AI_BUDGET_MODE=allocation
OLLAMA_MODEL_FAST_FALLBACK=deepseek-v4-flash:0731
OLLAMA_MODEL_STRONG_FALLBACK=glm-5.3-flash

# Cloud reasoning effort for supported thinking models; low keeps interactive work responsive.
OLLAMA_REASONING_EFFORT=low

# Optional unscaled WGS84 Float32 World Atlas 2015 regional GeoTIFF, CC BY-NC 4.0.
# Production volume: /data/sky-atlas; see docs/sky-atlas.md before staging.
MAPOS_SKY_ATLAS_PATH=

# Use provider only when external providers enforce the account limits.
# Google always requires a verified allocation, regardless of this setting.
MAPOS_PROVIDER_BUDGET_MODE=allocation

# Optional server-only data providers
GOLEMIO_API_KEY=
EUROPEANA_API_KEY=
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,10 @@ e2e/screenshots/
# Fetched by scripts/fetch-models.mjs (npm run models), kept out of git as binary assets.
apps/web/public/models/
# Personal deployment log — contains host paths and release notes specific to one operator.
progress.md
# Anchored so the tracked redesign ledger in docs/plans/progress.md is not swept up with it.
/progress.md
*.tsbuildinfo

# Reproducible validation writes evidence here; summaries belong in docs/releases.
/.cache/
/output/
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ apps/web/public/
e2e/screenshots/
test-results/
playwright-report/
.cache/
.playwright-cli/
output/
/progress.md
package-lock.json
LICENSE
infra/*.inc
Expand Down
13 changes: 11 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,23 @@

FROM node:22-alpine AS base
WORKDIR /app
COPY package.json package-lock.json* ./
COPY package.json package-lock.json ./
COPY packages/layer-sdk/package.json packages/layer-sdk/
COPY packages/adapter-sdk/package.json packages/adapter-sdk/
COPY packages/map-runtime/package.json packages/map-runtime/
COPY apps/api/package.json apps/api/
COPY apps/web/package.json apps/web/
RUN npm install --workspace=@mapos/layer-sdk --workspace=@mapos/map-runtime --workspace=@mapos/api --workspace=@mapos/web 2>/dev/null || npm install
RUN npm ci --workspace=@mapos/layer-sdk --workspace=@mapos/adapter-sdk --workspace=@mapos/map-runtime --workspace=@mapos/api --workspace=@mapos/web

COPY tsconfig.base.json ./
COPY packages/layer-sdk packages/layer-sdk
COPY packages/adapter-sdk packages/adapter-sdk
COPY packages/map-runtime packages/map-runtime
COPY apps/api apps/api
COPY apps/web apps/web

RUN npm run build -w @mapos/layer-sdk
RUN npm run build -w @mapos/adapter-sdk
RUN npm run build -w @mapos/map-runtime

# --- API ---
Expand All @@ -26,18 +29,24 @@ COPY --from=base /app/node_modules ./node_modules
COPY --from=base /app/package.json ./
COPY --from=base /app/tsconfig.base.json ./
COPY --from=base /app/packages/layer-sdk ./packages/layer-sdk
COPY --from=base /app/packages/adapter-sdk ./packages/adapter-sdk
COPY --from=base /app/apps/api ./apps/api
COPY scripts/copy-ai-assets.mjs ./scripts/copy-ai-assets.mjs
RUN npm run build -w @mapos/api
EXPOSE 4033
CMD ["node", "apps/api/dist/index.js"]

# --- Web ---
FROM node:22-alpine AS web-build
WORKDIR /app
ARG MAPOS_RELEASE=development
ENV MAPOS_RELEASE=$MAPOS_RELEASE
ARG VITE_API_BASE_URL=/api
ARG VITE_MAP_RUNTIME_V2=
ARG VITE_DISCOVER_BOUNDARIES=
ENV VITE_API_BASE_URL=$VITE_API_BASE_URL
ENV VITE_MAP_RUNTIME_V2=$VITE_MAP_RUNTIME_V2
ENV VITE_DISCOVER_BOUNDARIES=$VITE_DISCOVER_BOUNDARIES
COPY --from=base /app ./
RUN npm run build -w @mapos/web

Expand Down
23 changes: 23 additions & 0 deletions apps/api/data/WEB-CAMERAS-LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Webcam catalogue attribution

webcams-catalog.json is a derived OpenStreetMap database supplied via CartoCams / WebcamMap.
© OpenStreetMap contributors. Database license: ODbL 1.0.
https://www.openstreetmap.org/copyright
https://opendatacommons.org/licenses/odbl/1-0/

Source revision, checksum and modifications are recorded in the JSON manifest.
Repository: https://github.com/wvanderp/WebcamMap
The repository's MIT software license does not replace the ODbL database license.
Webcam imagery and linked websites are not included and have their own terms.
Retain this notice and provide the derived database under ODbL when distributing it.

## Additional independent catalogues

`digitraffic-webcams-catalog.json`: Fintraffic / digitraffic.fi, CC BY 4.0.
https://www.digitraffic.fi/en/terms-of-service/
Derived station metadata: only collecting stations, first active preset, geographic coordinates and public image link. Images are not included. Metadata update time is not the capture time.

`odh-webcams-catalog.json`: Open Data Hub and original providers, license and author retained per feature (`metadataLicense`, `attribution`). Only explicitly open metadata with a usable geographic position is included. Webcamurl imagery is excluded from this dataset and does not inherit the parent metadata license.
https://docs.opendatahub.com/licensing/

Separate files retain their original licenses and provenance. Combining viewport results does not relicense either catalogue or their linked imagery. Source checksums, revisions and import times are in each file.
Loading
Loading