5 reviews available. Pick one to view its diff and explanations side by side.
Committing an analysis-area selection used to fit the map with a maxZoom: 5 ceiling, clamping every commit out to a multi-state view. The camera now moves only when the selection does not already fit, and when it stays put the Analyze/Cancel tooltip is anchored so it cannot land off-screen.
On the deck.gl engine the shape being drawn for an area of interest rendered underneath the mission's data layers, so placing vertices was guesswork. Deck layers are now anchored below terra-draw's MapLibre layers for the life of a drawing session; overlays with no z-index sort above the mission stack, and every startup-visible layer is ranked so a later toggle cannot invert it.
Promotes two capabilities into the public window.mmgisAPI plugin surface: building a share link (writeCoordinateURL, now a pure synchronous builder with the URL-shortener dependency removed) and capturing a map screenshot. Capture becomes engine-aware via a new IMapEngine.captureScreenshot() contract — Leaflet rasterizes its DOM with html2canvas while deck.gl reads its WebGL canvas with preserveDrawingBuffer handling — and BottomBar is refactored into a thin consumer of the same APIs.
Adds a Card tool that renders a configurable list of cards (image, title, subtitle, link) in a sidebar panel. Card data lives in mission config and rides the existing save/load path; the only new backend surface is an admin-gated image-upload route, exposed in the Configure UI through a new "upload" field type.
Adds an in-memory token-bucket limiter and applies it to /auth/login. The goal is to slow down credential-stuffing attacks without affecting legitimate users. The limiter is intentionally simple — a single-process in-memory dict — because we only need short-term throttling and we already shed traffic at the load balancer for sustained abuse.