b0c4bf91d7
Layer catalog now has 3 actions per layer: - Sync: downloads from eTerra, stores in PostgreSQL (GisFeature table), incremental — only new OBJECTIDs fetched, removed ones deleted - GPKG: direct download from eTerra (existing behavior) - Local export: generates GPKG from local DB (no eTerra needed) New features: - /api/eterra/export-local endpoint — builds GPKG from DB, ZIP for multi-layer - /api/eterra/sync now uses session-based auth (no credentials in request) - Category headers show both remote + local feature counts - Each layer shows local DB count (violet badge) + last sync timestamp - 'Export local' button in action bar when any layer has local data - Sync progress message with auto-dismiss DB schema already had GisFeature + GisSyncRun tables from prior work.