Shipped: The type audit — 885 declarations, 25 drift clusters, 6 new backlog items
The E11 type audit is done. 885 TypeScript declarations across 317 files, classified into five buckets — and a few surprises.
The E11 type audit is done. 885 TypeScript declarations across 317 files, classified into five buckets — and a few surprises.
Three declarations of the same spatial type collapsed into one. The LinkML schema is now the only place `Coordinate` is defined.
One keystroke from live map to schema-validated Scene, with durable round-trip through save-close-reopen.
One Forward click walks the analyst through a recorded exercise — Scene by Scene, with viewport, time, and rectangles in lock-step.
Storyboard and Scene schemas, a headless TypeScript CRUD module, and the Article II adherence gates that every downstream slice will lean on.
One canonical bounds utility, no casts at the call site, and the silent-miss zoom bug we found next door is fixed. The review gate earned its keep.
Every parameter visible, UTC timestamps, keyboard-navigable tabs. The audit trail stops hiding things from the analyst.
A two-interface type fix grew into a seven-site refactor once we looked. The result: one schema-linked PointShape, one resolver, one exhaustive switch, and a silent-failure path closed.
The nl-demo can now call a real language model -- credential isolation baked into the architecture, not bolted on.
Editing STAC metadata now happens in-app -- no more closing the editor and hand-patching item.json when a filter surfaces the wrong plots.
One chip, one platform, multiple constraints. 'British submarines' now means exactly that — and the CQL2 round-trip is lossless.
A no-build-step React playground that lets stakeholders drive an NL catalog search offline -- no API keys, no CDN dependency, no backend.
An analyst types 'UK submarines'; the generator returns a CQL2 filter the existing engine evaluates to 17 plots. No UI yet, no live LLM -- just the plumbing and a CI harness that replays 12 phrases...
Bearing lines from towed-array sensors now originate at the array's real geographic position, with three calculation modes and cross-language parity.
A deterministic 2.7 KB vocabulary bundle gives the NL-to-CQL2 prompt the exact words analysts are allowed to use, without embedding the catalog.
A single JSON registry defines the vessel class hierarchy and all known platforms, with matching Python and TypeScript loaders.
REP files with SENSOR, SENSOR2, SENSOR3, and SENSORARC lines now import as embedded sensor data on tracks.
Tracks with sensor data now expand to show named sensors and their contacts in the Layers panel.
Sensor bearing lines, ambiguous bearings, and snail mode fading now render on the map via a custom Leaflet canvas layer.
Save a plot and get a persistent PNG thumbnail; browse your catalog gallery with arrow-key navigation.
Exercises on the map and timeline can now be colour-coded by Age, Vessel Class, or Tag — with a shared legend that explains the encoding.
The ExerciseListView component is now complete — a scrollable, virtualised exercise list with spatial thumbnails, flexible sorting, and recent-work resumption...
The Discovery UI's map view now doubles as an interactive spatial filter. Pan and zoom the map to narrow exercises by geography — the timeline updates in real...
Analysts can now save, restore, and delete named filter configurations in the STAC Browser filter bar — filter sets persist across sessions.
The STAC Stack Browser now includes an interactive Timeline/Gantt view that lets analysts discover exercises by their temporal characteristics and narrow...
Vessel class filter now has readable labels, in-menu search, live match counts, and zero new dependencies
VS Code E2E suite expanded from 8 skipped specs to 18 active files, driven by real Python services parsing real REP data.
Persistent filter bar with pill-shaped lozenges, all 10 SRD filter types, OR groups with drag-to-group, and CQL2 serialisation
A two-rule CSS fix makes the Layers section expand when sibling sections collapse.
PR preview environments are live -- reviewers can now test the VS Code extension in a browser with one click.
Every feature row now has an info button that shows geometry type and coordinates in a dialog
Analysts can now draw operational zones and patrol paths directly on the map with validated multi-vertex polygons and polylines.
Analysis results now open automatically in a tabbed bottom panel — charts render inline, images display at full resolution, files show metadata.
Maps stable result IDs to current files, emits change events when tools re-run, sets foundation for auto-refresh
Second shape manipulation spec: scaling annotations via linear interpolation with 3 golden fixtures
First track manipulation tool: derive course and speed from raw positions using great-circle math
Delivered the first E03 tool: grid and scatter reference point generation in Python and TypeScript
Multi-geometry schemas wired up: 6 new classes, 10 golden fixtures, 146 tests passing
Analysts can now annotate maps with points and rectangles. The implementation is a pure function sitting between Geoman and the schema, with 46 tests.
A shared tree view that makes STAC catalog structure visible — with change highlighting after snapshots.
Save clean GeoJSON snapshots at any timeline point, navigate history without loading files, assemble cross-snapshot timelines on demand
Narrowed undo/redo to UI display state. Data changes now tracked by Log Recording Service instead.
Playwright driving a full VS Code workbench inside Claude Code's sandbox, after four dead ends.
Analysts can now select individual positions within tracks, not just whole features
Plots opened in one session automatically restore when VS Code restarts, no manual re-opening required.
Result files now persist across sessions by reading them from STAC item assets.
Users can now create new plots directly from REP files with a single right-click action.
Double-click a STAC catalog to see every item's spatial bounds and temporal range on one screen.
Typed result system connecting calculation tools to storage, with 88 tests passing across Python and TypeScript.
The time slider in Debrief's VS Code sidebar now controls what you see on the map. Scrub to any moment and every track updates instantly.
Analysis tools now appear based on selection in VS Code, with three access points and provenance on every result.
AI-assisted breakdown of large features into deliverable backlog items with full traceability.
VS Code activity bar now shows only what matters for maritime analysis
Drag a REP file onto the map. Watch your tracks appear. That simple.
Plots now preserve your viewport and selection state — temporal windows, map bounds, and selected features all survive save/load.
Single commands for test/build/dev, checksum-based caching, zero overhead dependency checks
REP files now yield their full story — tracks, narratives, search areas, and operator notes all parsed to GeoJSON.
Standardized styling schemas enable consistent visual rendering of maritime tracks, waypoints, and annotations across all frontends
We've completed the foundational component library for Future Debrief, delivering reusable React components for maritime tactical analysis visualization.
Interactive component demos now flow automatically from Storybook to blog posts — the speckit workflow handles bundling and deployment.
Maritime tactical analysis directly in VS Code with interactive maps and track visualization.
Desktop app for loading maritime data into STAC catalogs is complete
The tracer bullet hit its first real milestone: cross-language schema validation.
Building an extensible file parser for legacy Debrief formats, starting with REP.
REP file parsing is complete. Legacy Debrief files now transform into validated GeoJSON with line-level error reporting.
Enhancing our spec workflow to detect UI features and capture interaction design details upfront.
SpecKit now detects UI features and generates interaction design sections automatically.
Building local STAC catalog operations for offline-first analysis storage in Debrief v4.x.
Local STAC catalog operations are complete. Debrief v4.x can now create catalogs, store plots, and preserve provenance — all offline.
Establishing the schema foundation for Debrief v4.x with LinkML as the single source of truth.
The schema foundation is complete. LinkML now generates Pydantic models, JSON Schema, and TypeScript interfaces from a single source of truth.