- Travel planner shows the compass bearing (N/NE/.../NW) of each hop,
computed from world-map coordinates (+x East, +y North, calibrated
against Bridgewatch=south, Lymhurst=east). Zone positions parsed from
world.bin into new zones.pos_x/pos_y columns.
- Agent: retry ingest POSTs with backoff + longer timeout, graceful
failure (no more uncaught crash on a transient connect timeout).
- Opportunities: state the city prices apply to in the breakdown, and
show tier+enchant as one "T4.3" chip with a tooltip.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Extract world-parse + packet capture into @albion/shared (reused by
server and a new standalone agent workspace).
- Migrate the data layer from SQLite/better-sqlite3 to shared Postgres
(async pg with a ?->$n helper; economy engine preloads the item/recipe
graph so its sync recursion still works).
- API-key auth (ALBION_API_KEY) on all /api routes except health; web UI
sends it via a fetch wrapper + key-entry gate; server serves the built
UI with a path-traversal-safe static handler (drops @fastify/static).
- Windows companion agent: pushes world map + captured market orders to
/api/ingest/*; runs on the gaming PC where the game traffic lives.
- Docker + docker-compose (external proxy + backend networks for Nginx
Proxy Manager and shared Postgres) and a Forgejo deploy workflow.
- Validated end-to-end against Postgres 16 and a full compose run.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
World map imported from the local game files (public DES key + gzip,
read-only), 485 zones / 723 portal connections, BFS router with
safe-only vs all-zones modes and danger counts, haul advisor ranking
items by trip profit per carry weight, Travel page + game-path setting.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>