What We Built
REP file import now works inside the VS Code extension. Two ways to get data in:
- Drag-and-drop — drop a
.repfile directly onto the map panel - Context menu — right-click any REP file in the Explorer, pick your target plot
Either way, the file is parsed, stored as a STAC asset (for provenance), and the tracks appear on the map. The view automatically zooms to fit everything.
The Flow
Drop a file. Watch the progress:
- Checking for duplicates…
- Parsing REP file…
- Storing asset…
- Storing features…
Then: tracks on screen, map zoomed to fit. For a typical REP file, under 5 seconds total.
If something goes wrong, you get a message that actually helps. Invalid format at line 42? The error says so. Already imported that file? Warning dialog asks what you want to do. Tried to drop three files at once? Polite rejection with explanation.
Architecture Decision
IoService is storage-agnostic. It parses REP files and returns GeoJSON features. Full stop.
The VS Code extension acts as orchestrator:
- Call IoService to parse
- Call StacService to store the asset
- Call StacService to store the features
- Update the map
This separation matters. When we add different storage backends later (local files, S3, whatever), IoService stays unchanged. Parsing is parsing. Storage is storage. The orchestrator decides where data goes.
User drops file
|
v
MapPanel (orchestrator)
|
+-- IoService.parseRep() --> GeoJSON features
|
+-- StacService.addAsset() --> store original file
|
+-- StacService.addFeatures() --> merge into plot
|
v
Map updates, zooms to fit
Error Handling
We wrote 24 tests just for error messages. Each error code has a template:
| Error | Message |
|---|---|
| INVALID_FORMAT | “Invalid REP format in {file} at line {line}” |
| DUPLICATE_IMPORT | “File has already been imported to this plot” |
| PARSE_FAILED | “Could not parse {file}: {cause}” |
| STORAGE_ERROR | “Failed to store data. Check disk space and try again.” |
Line numbers matter. Field names matter. When an analyst sees an error, they should know what to fix.
By The Numbers
- 114 tests passing across 11 test files
- 24 new tests for bounds calculation, error messages, IoService types
- 522ms total test runtime
- 0 network calls — works completely offline
What’s Next
This completes the tracer bullet for VS Code extension data import. The pipeline now runs from REP file to STAC storage to map visualization. Next milestone: analysis tools integration, so imported data becomes the input for calculations and queries.
View the spec See evidence