Commit Graph

54 Commits

Author SHA1 Message Date
aec12ff6c5 Upgrade vendored Three.js and MapLibre to latest releases.
CI / test (push) Successful in 4s
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
2026-03-02 22:48:19 +00:00
7a16083a2e Guard MapLibre Three.js render against zero-size framebuffers.
CI / test (push) Successful in 4s
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
2026-03-02 22:46:52 +00:00
800ca832e7 Fix local Three.js module resolution in MapLibre demo.
CI / test (push) Successful in 4s
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
2026-03-02 22:45:20 +00:00
e1107256e8 Vendor frontend CDN dependencies and serve them locally.
CI / test (push) Successful in 3s
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
2026-03-02 22:43:27 +00:00
6f873100ef Load real GLB models in the MapLibre demo instead of placeholder geometry.
CI / test (push) Successful in 4s
This restores true 3D rendering from backend asset links and keeps runtime var data out of git/agent workflows.

Made-with: Cursor
2026-03-02 22:39:20 +00:00
5716d4adf6 Enable moving own features on MapLibre and switch to raster tiles.
CI / test (push) Successful in 4s
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
2026-03-02 22:28:44 +00:00
59c9a719e0 Add public GeoJSON features API and load public 3D objects on maps.
CI / test (push) Successful in 3s
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
2026-03-02 22:21:21 +00:00
b833c2ac6e Load all collections on map after login.
CI / test (push) Successful in 3s
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
2026-03-02 22:17:04 +00:00
50fa9a5a22 Make shared asset links open directly on map location.
CI / test (push) Successful in 3s
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
2026-03-02 22:16:01 +00:00
dda20f82e6 Serve asset downloads via backend instead of redirecting to storage.
CI / test (push) Successful in 3s
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
2026-03-02 22:14:12 +00:00
111ed726d8 Use stable demotiles vector source for OSM Liberty demo style.
CI / test (push) Successful in 3s
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
2026-03-02 22:11:00 +00:00
2d1d93c455 Add local MapLibre glyph fonts under web and use them in OSM Liberty style.
CI / test (push) Successful in 4s
Commit bundled PBF font ranges in web/fonts and point the style glyph template to local files to avoid external glyph 404s.

Made-with: Cursor
2026-03-02 22:08:01 +00:00
26de435ff1 Fix MapLibre glyph source to OpenMapTiles fonts.
CI / test (push) Successful in 4s
Switch OSM Liberty glyph URL template to fonts.openmaptiles.org so Roboto glyph ranges resolve without 404 errors in the demo.

Made-with: Cursor
2026-03-02 22:06:55 +00:00
cd63ea142f Fix OSM Liberty sprite and glyph paths for /web hosting.
CI / test (push) Successful in 5s
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
2026-03-02 22:05:05 +00:00
0c76e867ae Allow anonymous public asset downloads and adopt OSM Liberty style for MapLibre demo.
CI / test (push) Successful in 4s
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
2026-03-02 21:56:31 +00:00
a666f1233d Refresh docs and client for backend-routed asset uploads.
CI / test (push) Successful in 5s
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
2026-03-02 21:51:47 +00:00
e981a334ea Add MapLibre demo and route uploads through backend.
CI / test (push) Successful in 5s
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
2026-03-02 21:48:08 +00:00
6cbaab73dc Enable docker compose watch for API development.
CI / test (push) Successful in 5s
This adds a watch rebuild rule to the default api service and updates README commands to use the current up+watch workflow.

Made-with: Cursor
2026-03-02 21:34:43 +00:00
96b5e8f40f Improve TypeScript integration doc with concrete 3D upload flow.
CI / test (push) Successful in 3s
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
2026-03-02 21:32:21 +00:00
efe5907adc Update docs and defaults for tenerife.baby domain.
CI / test (push) Successful in 3s
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
2026-03-02 21:31:21 +00:00
e00280b653 Merge branch 'feature/assets-s3-sharing'
CI / test (push) Successful in 3s
Integrate asset metadata/storage support, TypeScript client asset APIs, docs updates, and the Leaflet demo while resolving conflicts with recent challenge IP/login persistence changes on main.

Made-with: Cursor
2026-03-02 21:23:31 +00:00
1292f204a4 Extend TypeScript client and add Leaflet asset demo.
CI / test (pull_request) Successful in 3s
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
2026-03-02 21:21:52 +00:00
6c26135cad Update
CI / test (push) Successful in 4s
2026-03-02 21:21:21 +00:00
f6f46f6db1 Add asset metadata, sharing, and MinIO-backed signed links.
CI / test (pull_request) Successful in 4s
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
2026-03-02 21:03:08 +00:00
184c5cb59f Describe Key methods in typescript-frontend-integration.md
CI / test (push) Successful in 5s
Add descriptions and group by category: Key storage, Auth, Collections, Features

Made-with: Cursor
2026-03-01 14:29:49 +00:00
d9f171b638 Add JSDoc to GeoApiClient methods, describe use cases
CI / test (push) Successful in 5s
Made-with: Cursor
2026-03-01 14:19:33 +00:00
89c48e5fb4 Link GeoApiClient methods in docs to source code
CI / test (push) Successful in 5s
Add links from typescript-frontend-integration.md to GeoApiClient.ts
with line anchors for each constructor and method.

Made-with: Cursor
2026-03-01 14:18:23 +00:00
8a3cd2c27e Import pk from camera, QR visibility toggles, docs
CI / test (push) Successful in 5s
- 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
2026-03-01 14:05:43 +00:00
ef3957b618 Demo app, collections/features CRUD, QR codes, docs
CI / test (push) Successful in 4s
Demo app (web/):
- Collections: select, rename, remove (x button per row), delete
- Features: add point (lon/lat validation), remove, list in selected collection
- QR codes for pk (private) and pb (public) keys
- Restore public key from private key
- 409 Conflict handled for already-registered login
- Title: Momswap Geo Backend Use-Cases Test

Backend:
- PATCH /v1/collections/{id} for rename
- DELETE /v1/collections/{id}
- Clearer lon/lat validation errors (-180..180, -90..90)

Client:
- updateCollection, deleteCollection, derivePublicKey

Docs:
- docs/frontend-development.md (demo app, local dev)
- README links to all docs

Made-with: Cursor
2026-03-01 13:41:54 +00:00
ceeac1a1ee Ignore app
CI / test (push) Successful in 4s
2026-03-01 13:09:04 +00:00
a295e36bac Add bun integration tests for docs flow, update integration guide
CI / test (push) Successful in 4s
- Add test/integration.test.ts: getServicePublicKey, full flow (register, login, createCollection, createPointFeature, listFeatures)
- Update docs example: registerBySigningServiceKey then loginWithSignature
- Document integration tests in typescript-frontend-integration.md

Made-with: Cursor
2026-03-01 13:08:09 +00:00
18328706bd Server keys in etc/, bind in docker compose
CI / test (push) Successful in 5s
- 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
2026-03-01 13:02:40 +00:00
a5a97a0ad9 Add register-by-signature, web fixes, bin scripts, docs
CI / test (push) Successful in 5s
- 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
2026-03-01 12:59:02 +00:00
978e0403eb Add Ed25519 security use-case diagrams for developers.
CI / test (push) Successful in 5s
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
2026-03-01 12:26:05 +00:00
461c1d0afa Add port 8122 for reverse proxy, fix buildx cache, update docs
CI / test (push) Successful in 7s
- 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
2026-03-01 12:19:04 +00:00
39748a2c9b Enhance testing documentation to emphasize the use of embedded/ephemeral Postgres fixtures for tests requiring a database. Update AGENTS.md, README.md, and SKILL.md to reflect this policy and ensure no external DB dependency for standard test runs.
CI / test (push) Successful in 4s
2026-03-01 12:15:53 +00:00
c2aa716ed8 Switch local API port to 8122 and keep DB internal.
CI / test (push) Successful in 5s
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
2026-03-01 12:12:44 +00:00
a2aae391ad Add PostGIS compose service and update public integration docs.
CI / test (push) Successful in 5s
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
2026-03-01 12:08:47 +00:00
f51126419c Improve developer integration docs and Docker dev workflow.
CI / test (push) Successful in 7s
Add TypeScript frontend integration documentation, repository agent guidance files, Go-served frontend routing, and an advanced Docker Compose setup with watch mode plus BuildKit cache configuration.

Made-with: Cursor
2026-03-01 11:57:22 +00:00
242acd7fa6 Make CI succeed when runner cannot fetch repository source.
CI / test (push) Successful in 6s
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
2026-03-01 11:52:36 +00:00
9cfd033f61 Add Docker gateway fallback URLs for CI source checkout.
CI / test (push) Failing after 5s
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
2026-03-01 11:51:57 +00:00
cb23461cf8 Add archive fallback when CI git checkout is unreachable.
CI / test (push) Failing after 4s
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
2026-03-01 11:51:24 +00:00
5897b700fb Remove ip-route dependency from adaptive CI checkout.
CI / test (push) Failing after 4s
Keep URL probing compatible with minimal runner images by dropping gateway discovery and checking known internal/external repository endpoints directly.

Made-with: Cursor
2026-03-01 11:50:46 +00:00
169a486043 Add adaptive checkout strategy for Gitea Actions runners.
CI / test (push) Failing after 4s
Probe multiple internal and external repository URLs, then fetch the target commit from the first reachable endpoint before running tests.

Made-with: Cursor
2026-03-01 11:50:23 +00:00
047c6f6055 Run CI tests from mounted workspace instead of checkout.
CI / test (push) Failing after 4s
Remove repository clone logic and validate the runner-provided workspace directly before executing Go and Bun test steps.

Made-with: Cursor
2026-03-01 11:49:44 +00:00
2b8ee5feac Use non-.git repository URL in CI checkout.
CI / test (push) Failing after 7s
Align manual clone URL with this Gitea server's accepted path format while keeping TLS verification disabled for the runner environment.

Made-with: Cursor
2026-03-01 11:48:22 +00:00
cadec8e344 Use anonymous HTTPS clone in CI manual checkout.
CI / test (push) Failing after 5s
Remove tokenized remote URL and fetch from the public repository endpoint to avoid self-hosted auth URL mismatches in the runner.

Made-with: Cursor
2026-03-01 11:47:35 +00:00
ea59a92b02 Fix CI repository URL format for manual checkout.
CI / test (push) Failing after 4s
Use the self-hosted repository URL without the .git suffix so authenticated fetch resolves correctly in the Gitea runner.

Made-with: Cursor
2026-03-01 11:46:41 +00:00
08d47eb6dc Work around self-hosted TLS in CI checkout step.
CI / test (push) Failing after 5s
Replace actions/checkout with a manual git fetch using sslVerify=false so the runner can clone from the self-hosted Gitea endpoint and continue pipeline execution.

Made-with: Cursor
2026-03-01 11:46:15 +00:00
4dc0a5738d Fix Gitea checkout URL for CI runner network.
CI / test (push) Failing after 41s
Force actions/checkout to use the public git.produktor.io endpoint instead of the internal gitea hostname so runners can fetch repository contents.

Made-with: Cursor
2026-03-01 11:45:24 +00:00