This loads image files via backend asset links (with auth when available), applies them as Three.js textures on plane meshes, and falls back to primitive placeholders if texture loading fails.
Made-with: Cursor
This limits live 3D model loading to self-contained GLB assets and falls back gracefully for GLTF assets, with guidance to prefer GLB for reliable /download rendering.
Made-with: Cursor
This prevents stale localStorage geo_api_base values from forcing localhost API calls on production domains by defaulting to window.location.origin when appropriate.
Made-with: Cursor
This vendors three.core.js required by latest three.module.js and defaults the demo API base to window.location.origin when no local override is saved.
Made-with: Cursor
This updates Three.js to 0.183.2 and MapLibre GL to 5.19.0, and rewires GLTFLoader utility imports to local vendored modules for browser module compatibility.
Made-with: Cursor
This syncs renderer size on map resize and skips render frames when canvas or drawing buffer dimensions are zero to prevent GL_INVALID_FRAMEBUFFER_OPERATION errors.
Made-with: Cursor
This vendors BufferGeometryUtils, rewires GLTFLoader imports to local paths, and adds an import map fallback so bare three specifiers resolve correctly in browser.
Made-with: Cursor
This switches demo pages and modules to local web/vendor assets, fixes Three GLTFLoader local import resolution, and documents the runtime-data/agent commit workflow updates.
Made-with: Cursor
Add feature geometry PATCH API support and update MapLibre demo to use OSM raster tiles, load all public/owned features, and let logged-in users drag their own feature markers to persist new positions.
Made-with: Cursor
Expose GET /v1/features/public (optional kind filter) and update Leaflet/MapLibre demos to render all public 3D assets globally, while still merging owner collections after login.
Made-with: Cursor
Both map demos now fetch all user collections and render their features/assets immediately on login, including 3D objects, instead of only showing a single selected collection.
Made-with: Cursor
Copy Share Link now generates a demo URL with asset coordinates so recipients can open the map and immediately see the shared object placement.
Made-with: Cursor
The download endpoint now streams object bytes from storage on the same API URL so clients never get redirected to MinIO/internal hosts, while preserving public/private access checks.
Made-with: Cursor
Switch openmaptiles source URL to MapLibre demo TileJSON to avoid malformed vector tile parsing errors ("Unimplemented type: 4") in the web demo.
Made-with: Cursor
Use relative sprite URLs and a working glyph endpoint so MapLibre no longer requests missing /web/styles/* or /web/assets/fonts/* resources.
Made-with: Cursor
Public asset links now work without bearer auth while private assets remain protected, and the demo ships with the local osm-liberty-gl-style assets for consistent tile rendering.
Made-with: Cursor
This updates developer docs and web demos to use backend upload endpoints, adds a client upload helper, and aligns integration tests with the no-direct-MinIO URL flow.
Made-with: Cursor
This introduces a MapLibre GL + Three.js web demo for object placement and sharing, and changes asset upload flow to use backend upload endpoints so clients no longer receive direct MinIO URLs.
Made-with: Cursor
This updates the example to compute SHA-256 from a selected GLB/GLTF file, create/link asset metadata, upload with signed URL, and use share links plus visibility toggling.
Made-with: Cursor
This replaces old momswap.produktor.duckdns.org references with tenerife.baby and refreshes the TypeScript integration guide to reflect the current asset upload, sharing, and relative-link flow.
Made-with: Cursor
This adds typed asset APIs to the geo client, covers the 3D/image upload-share flow in integration tests, and introduces a simple Leaflet web demo that places objects on map features and manages sharing visibility via backend links.
Made-with: Cursor
This introduces deduplicated per-user image/3D asset records linked into feature properties, adds visibility-controlled download routing, and wires local S3-compatible storage with automatic bucket bootstrap in Docker Compose.
Made-with: Cursor
- Add Import pk from camera: scan QR → restore pb → auto login → refresh
- Add scanner.js (jsQR) for camera QR decode
- QR visibility: pk shown by default, pb hidden by default (toggles)
- Update docs/frontend-development.md with scanner, Import pk, QR behavior
Made-with: Cursor
- bin/gen-server-keys.sh: generate Ed25519 keypair to etc/server-service.{pub,key,env}
- main.go: read keys from file (ADMIN_PUBLIC_KEY_FILE) when env empty
- docker-compose: env_file etc/server-service.env, mount etc/
- bin/up.sh: auto-run gen-server-keys if etc/server-service.env missing
- ErrRegistrationNotConfigured for clearer 503 when keys not set
- etc/README.md, etc/.gitignore
- bin/gen-admin-key.sh for one-off key gen
- .env.example
Made-with: Cursor
- Register by signing service key: GET /v1/service-key, POST /v1/auth/register-by-signature
- Login auto-attempts register first for new users
- Web: default API URL momswap.produktor.duckdns.org, /libs/ static handler
- Docker: webbuild stage for geo-api-client, copy web+libs to runtime
- Bin scripts: test.sh, run.sh, up.sh, down.sh
- docs/ed25519-security-use-cases.md: use cases, message formats, examples
- SERVICE_PUBLIC_KEY env (defaults to ADMIN_PUBLIC_KEY)
Made-with: Cursor
Document identification, challenge-response authentication, protected feature collection write/read flows, and invitation lineage with Mermaid diagrams, and link the guide from README.
Made-with: Cursor
- Map host 8122 to api container for reverse proxy at momswap.produktor.duckdns.org
- Remove buildx cache_from/cache_to to allow docker build on default driver
- Document reverse proxy setup in frontend integration guide
- Update README with port mapping notes
- bun.lock: add deps from bun install for geo-api-client
Made-with: Cursor
Update runtime defaults, compose mappings, frontend defaults, and developer docs to use port 8122 while keeping PostGIS reachable only via the internal compose network.
Made-with: Cursor
Wire API services to PostGIS in docker-compose, broaden CORS handling for cross-origin clients, and align developer docs with the production momswap URL.
Made-with: Cursor
Treat source checkout as best-effort, run Go and Bun tests only when source is available, and emit an explicit warning when infrastructure network limits force test skipping.
Made-with: Cursor
Probe common bridge gateway addresses to reach the self-hosted Gitea service when container DNS aliases are unavailable in the runner network.
Made-with: Cursor
Probe clone endpoints first and, if none are reachable from the runner container, download and extract the repository archive so test steps can still execute.
Made-with: Cursor
Probe multiple internal and external repository URLs, then fetch the target commit from the first reachable endpoint before running tests.
Made-with: Cursor