Releases: banshee-data/velocity.report
v0.5.1-pre7
What's Changed
- [docs][py] homepage+overlays, release tooling by @ddol in #471
- [py][docs] pinout + render fix, version-bump plan by @ddol in #473
Full Changelog: v0.5.1-pre6...v0.5.1-pre7
v0.5.1-pre6
What's Changed
Full Changelog: v0.5.1-pre5...v0.5.1-pre6
v0.5.1-pre5
What's Changed
- Fix Raspberry Pi image CI by installing qemu-user-static by @ddol in #467
- [docs][web][py] Setup guide overhaul, rack-mount drawings & docs site styling by @ddol in #445
Full Changelog: v0.5.0-pre4...v0.5.1-pre5
v0.5.0-pre4
What's Changed
- [img] update homepage, build by @ddol in #453
- [go][js][py][sh] update (error) copy by @Copilot in #449
- [js] add symlink (worktree) for vite by @ddol in #454
- [docs] doc audit plan by @Copilot in #452
- [go] use go-version-file by @Copilot in #451
- [img] devices + home favicon by @ddol in #456
- [go][ci][mac][img] asset naming by @Copilot in #457
- [img] separate velocity service account from login user by @ddol in #458
- [docs] cleanup, plan graduation by @Copilot in #459
- [docs] graduate completed plans by @ddol in #460
- [docs] deprecate Python PDF, STYLE by @Copilot in #463
- [docs] ASCII diagram linting tool? by @Copilot in #464
- [docs] STYLE-ish by @ddol in #465
- [ci] fix asset build by @ddol in #466
Full Changelog: v0.5.1-pre1...v0.5.0-pre4
v0.5.1-pre1
What's Changed
- [docs] QUESTIONS by @ddol in #433
- [docs] update README, add some ASCII's by @ddol in #434
- [docs] split rpi image plan by @ddol in #435
- [ai] terry coaching workshop by @ddol in #438
- [html] add download to homepage by @Copilot in #437
- [html] fix homepage mobile layout by @Copilot in #439
- [js][go][py] update copy by @Copilot in #431
- [mac] fix APIError in LabelAPIClientTests by @Copilot in #440
- [docs] update ASCII art by @ddol in #442
- [docs] update README; add STYLE & apply by @ddol in #443
- [docs] fix image paths in README for clarity by @ddol in #444
- [ai] CLAUDE init 👾 by @ddol in #447
- [docs] go clock abstraction plan by @Copilot in #428
- [security] Update vulnerable dependencies across Go, npm, and Python ecosystems by @Copilot in #441
- [py] paper download script by @Copilot in #446
- [img] first rpi image 🖼️ by @Copilot in #436
Full Changelog: v0.5.0...v0.5.1-pre1
v0.5.0
velocity.report 05x 🌞 Sunny Southeast
A release principally concerned with making the LiDAR pipeline measurably correct rather than hopefully correct, giving the radar server enough structure to be maintained by someone other than the person who wrote it, and building a proper mathematical review process so the algorithms can be argued about with evidence.
LiDAR
Added
- 10-layer data model — an OSI-style refactor from raw UDP packets (L1) through frame assembly (L2), background grid (L3), perception (L4), tracking (L5), object classification (L6), analytics (L8), HTTP/gRPC endpoints (L9), and embedded dashboard clients (L10). L7 remains planned. Each layer has a clear job and boundary, which helps when you want to change one thing without surprising nine others.
- Human-Involved Numerical Tuning (HINT) — the tuning system formerly known as RLHF, now with a more honest name. Score breakdowns, coverage gates, suspend/resume with checkpoints. Long-polling so you can watch progress without wearing out the refresh button.
- VRLog recording and replay for track labelling — capture live scenes, replay with seek, pause, and rate control. Safe directory validation, because letting software write to arbitrary paths ages badly.
- Parameter sweep dashboard with heatmaps and results tables. Auto-tuning narrows the grid iteratively; settle modes let you choose between optimistic and thorough.
- Label-aware auto-tuning — scoring incorporates human labels with IoU-based confidence, so the system can tell the difference between getting it right and getting lucky.
- Deterministic run config — parameter sets separated from executed configs, with a SHA-256 hash so same build plus same params always equals identical config. Includes a backfill tool for historical data.
- gRPC visualiser service — full protobuf schema for streaming point clouds, track state, and playback control to the macOS visualiser.
- L2 dual frame representation — frames carry both Cartesian and polar points, removing repeated coordinate rebuilds through the pipeline.
- L8 analytics: track comparison, label summary, and per-run reporting.
- L9 endpoints: HTTP adapter, chart data transforms, grid plotter, debug endpoints, gRPC frame streaming, and embedded dashboard/region clients.
- Label taxonomy simplified:
car/pedreplace the verbose originals;impossibleremapped tonoise, which is more useful to everyone. - Provenance tracking for labels, with match confidence.
- Hungarian association for track-to-detection matching.
- Ground removal filtering for cleaner point clouds.
- OBB heading stability with 90° jump rejection guard and heading source tracking.
- Height band filtering, per-frame OBB dimensions, cluster size filtering, and track pruning.
- Region-adaptive parameters: per-region closeness multiplier and neighbour confirmation count.
- Settling evaluation for background grid convergence from PCAP files.
- PCAP performance hardening: deadlock fix, DBSCAN decimation with foreground point cap, local random generators for concurrent subsampling.
- Defaults loaded from config file instead of hardcoded values.
- Dependency injection for sockets, PCAP readers, and data sources.
- In-process sweep backend, replacing the HTTP client that was phoning itself.
- Schema migrations 000029–036: label vocabulary expansion, deprecated columns dropped, tables renamed for consistency, convenience views, replay annotations with integrity constraints, FK enforcement, orphan cleanup, and run config asset tables.
Changed
- Large file breakup across
internal/api,internal/db,l2frames,l3grid,l5tracks, and storage packages — narrower files, shared storage interfaces, cleaner package boundaries. - UDP listener refactored with socket factory for testability.
- Frame callbacks serialised to prevent data races.
- Configuration consolidated into a single struct with fluent setters; config restructured from flat to layer-scoped nested schema.
- Structured logging: replaced debug flags with
--log-levelflag and diagnostic/ops/trace levels. - Max frame rate raised to 25 to prevent drops; miss counter paused during frame throttle.
Fixed
- Route conflict from duplicate registrations.
- Race condition in VRLog seek.
finalizeFramedeadlock in PCAP processing.- Integer overflow in temporal spread — the kind of bug that waits patiently for large numbers.
- PCAP replay file path handling.
- Out-of-bounds error in tuning parameters.
- Context propagation and serialmux race conditions.
Radar
Added
- Interactive map component for site visualisation.
- CLI flags for config file, log level, LiDAR forwarding, gRPC listen, and PDF paths.
- Capability reporting for hardware features, used to gate unfinished UI paths.
- LiDAR integration helpers for radar startup wiring.
Changed
- Server split from one large file into focused sub-files (admin, middleware, radar, reports, sites, timeline). Easier to find things, harder to cause accidental damage.
- Serial multiplexer refactored with factory pattern and mock for testability.
- Documentation updated to match reality: Makefile targets (59 → 101), Go 1.25+, SQLite 3.51.2.
UI
macOS Visualiser
- Full macOS visualiser built from scratch: SwiftUI + Metal + gRPC, from protobuf schema to packaged DMG.
- Real point cloud ingestion at 70k+ points/30fps; split streaming cuts bandwidth from 78 Mbps to 3 Mbps.
- Algorithm and debug overlays: OBB rendering, gating ellipses, association lines, ground removal, occlusion state.
- Track labelling with run browser, keyboard shortcuts (1–9), inspector, and arrow-key navigation.
- Buffer management, reference counting, and frame rate throttling.
- Versioned DMG packaging with Finder-layout automation;
AboutViewwith licensing and build metadata. - 1,032 unit tests;
ContentViewcoverage at 86.65%.
PDF Generator
- Minimal precompiled TeX configuration.
- CI tests use a trimmed TeX tree instead of full TeX Live, saving the kind of download time that makes you reconsider your choices.
Web Frontend
- Sweep dashboard with HINT mode toggle and auto-tuning recommendation card.
- LiDAR runs, replay-cases, and sweeps pages; capability gating for unfinished paths.
- Interactive map, gap detection in track visualisations, chart rebuild with layerchart and D3.
- Shared colour palette module and CSS utility classes.
Platform
CLI Tools
- Config tools —
config-migrateandconfig-validatefor the restructured layout. - Analysis tools —
settling-eval,vrlog-analyse, andpcap-analysefor convergence evaluation, track metrics, and batch categorisation. - Dev tools —
gen-vrlog,visualiser-server, andbackfill_lidar_run_configfor synthetic data, standalone gRPC, and historical backfill.
Scripts
- CI lint checks: British spelling, doc headers, Mermaid blocks, prose width, link validation, Go import hygiene.
- Build and packaging: minimal TeX tree, DMG creation, version bumping, LFS validation.
- Agent and PM automation: planning review, standup, drift detection.
- Analysis and profiling: Xcode-to-lcov coverage conversion, macOS profiling, surface inventory tracing, schema ERD suite.
Build and CI
- Four new workflows: nightly full-CI, macOS-dedicated, documentation hygiene, and config ordering.
- Makefile expanded from 59 to 101 targets; CI TeX packages trimmed by ~500 MB.
- Schema ERD tooling with configuration-driven layout; shared web cache for worktrees.
Agent Personas
- Seven agent personas (Appius, Euler, Flo, Grace, Malory, Ruth, Terry) with Matrix Tracer for surface inventory, eight shared knowledge modules, and
TENETS.mdproject constitution.
Maths Review
- Four specifications (classification, clustering, ground-plane, background settling) plus six proposals covering unified settling, foreground extraction, vector scene maths, geometry-coherent tracking, OBB heading stability, and pose-anchor maths.
- 52-entry BibTeX bibliography; coordinate-flow audit documenting polar/Cartesian transitions per stage.
Documentation
- 10-layer data model docs, design principles, VRLOG format spec, decisions register (16 resolved), CONTRIBUTING guide, and VISION statement.
- Audit of 29 LiDAR docs — found and fixed 12 discrepancies before they could become folklore.
- Site restructured to
public_htmlwith Tailwind CSS v4; vector scene map with OSM Simple 3D Buildings.
Full Changelog: v0.4.0...v0.5.0
v0.4.0
velocity.report 0.4.0
Major release with comparison reports, enhanced site configuration, and LiDAR tracking.
🎯 Highlights
📊 Comparison Reports - Before/after period analysis with percentage change calculations and dual-period chart overlays
⚙️ Site Configuration - Historical tracking of radar mounting angle with cosine correction periods using Type 6 SCD pattern
🔄 Transit Worker Inspector - Full-history rebuild capability with deduplication detection and enhanced status tracking
🚗 LiDAR Object Tracking - Real-time foreground tracking with interactive visualisation UI, adaptive background segmentation, and ML training data export
🚀 New Features
Radar Server
- Comparison report generation (T1/T2 period analysis)
- Site configuration with cosine correction periods (SCD Type 6)
- Transit worker inspector with full-history rebuild
- Database stats API with path validation
- Hourly transit worker job with UI toggle
- Boundary hour filtering and min speed filtering
LiDAR Server
- Foreground tracking API with object detection and classification
- Interactive track visualisation UI (map, timeline, track list)
- Adaptive region segmentation for background grid
- PCAP analysis tool for ML data export
- Debug dashboard for region parameter visualisation
PDF Generator
- Comparison report generation with dual-period analysis
- Enhanced chart and table builders
- Boundary hour filtering and day boundary calculations
- Velocity unit support (mph, km/h, m/s)
Web Frontend
- LiDAR tracks page with real-time visualisation
- Reports page with comparison period selection
- Transit worker management UI
- Site configuration management
- Dark mode for LiDAR dashboards
- Settings persistence to local storage
Documentation
- Comprehensive setup guide for Citizen Radar deployment
- CLI architecture and implementation plan
- LiDAR documentation (alignment, parameters, ML pipeline)
- Security review with CVE mitigations
- Feature specifications for speed limit schedules
🔧 Improvements
- Track confirmation now requires 5 hits with plausibility checks
- LiDAR background grid thresholds tuned to <30 false positives
- Model version default: "rebuild-full" → "hourly-cron"
- Enhanced histogram aggregation with max bucket support
- Documentation site migrated to pnpm with Tailwind CSS v4
🐛 Bug Fixes
- Build failure with stub generation
- WarmupFramesRemaining initialisation in background grid
- JSON serialisation for region parameters
- XSS vulnerabilities in LiDAR dashboards (security fix)
🛠️ Build System
make set-version- Update version across codebasemake schema-sync- Regenerate schema.sql from migrationsmake format-sql- SQL formatting
Radar v0.2.0
What's Changed
- Bump golang.org/x/net from 0.34.0 to 0.38.0 by @dependabot[bot] in #2
- Bump golang.org/x/crypto from 0.32.0 to 0.35.0 by @dependabot[bot] in #1
- [go] rebase and RadarObject Parsing by @ddol in #12
- Add CODE_OF_CONDUCT.md by @patrickod in #13
- [md] add ASCII art to README by @ddol in #14
- [docs] merge in gh-pages branch by @ddol in #16
- [go] add /radar_stats API route by @ddol in #21
- [go] favicon + LoggingMiddleware by @ddol in #22
- [js] first dashboard slices by @ddol in #23
- [js] fix Svelte theme by @ddol in #24
- [js][go] serve frontend from backend server by @ddol in #25
- [go] add Flush method to loggingResponseWriter for better response ha… by @ddol in #26
- [go] move DB schema declaration to .sql file by @ddol in #27
- [go] fix RadarObjects query, migration & vscode settings by @ddol in #28
- [md] update docs by @ddol in #29
- [go] fix, bundle prod web assets by @ddol in #30
- [py] get UniFi Protect data by @ddol in #31
- [md] update docs, minimise radar language by @ddol in #32
- [py] get telraam data by @ddol in #33
- [go] init lidar parser by @ddol in #34
- [go] parse lidar packets into frames by @ddol in #35
- Dd/frontend add units velocity timezone by @ddol in #36
- [js] add velocity graph by @ddol in #37
- [go] radar+lidar merge, add background persistence by @ddol in #38
- [go] add params closeness_multiplier, neighbor_confirmation_count and multisweep tool by @ddol in #40
- [go] internal/lidarr: use os.TempDir for export destination by @patrickod in #39
- [tex] init report.pdf by @ddol in #42
- [tex] tweak report, add tests by @ddol in #44
- [pdf] cleanup by @ddol in #46
- Bump vite from 7.1.3 to 7.1.5 in /web by @dependabot[bot] in #45
- Bump vite from 7.1.5 to 7.1.11 in /web by @dependabot[bot] in #48
- [js][py][go] add sites, frontend PDF generate & download by @ddol in #47
- [go][js][py] update file prefix and timezones by @ddol in #49
- [js] update deps by @ddol in #50
- [make] add formatting/linting commands to makefile by @ddol in #51
- [go] update database path handling to use CLI flag for sqlite DB by @ddol in #52
- [go] lidar: read pcap, plot bg stats by @ddol in #54
- [js] add GIT SHA & Build time to HTML meta by @ddol in #56
- [go] move lidar pcap/live flag to API from CLI by @ddol in #55
- [ci] fix duplicate runs by @ddol in #53
- [make] update naming conventions by @ddol in #57
- [docs] update docs structure, add ai agent config by @ddol in #58
- [go] implement path validation to prevent traversal attacks by @ddol in #59
- [docs] Feature spec: Serial port configuration and testing via web UI by @Copilot in #60
- [git] add dependabot configuration for automated dependency updates by @ddol in #62
- Bump matplotlib from 3.10.6 to 3.10.7 in /tools/pdf-generator by @dependabot[bot] in #64
- Bump modernc.org/sqlite from 1.38.2 to 1.40.0 by @dependabot[bot] in #63
- Bump pillow from 11.3.0 to 12.0.0 in /tools/pdf-generator by @dependabot[bot] in #65
- Bump svelte from 5.41.2 to 5.43.4 in /web by @dependabot[bot] in #90
- Bump pandas from 2.3.2 to 2.3.3 by @dependabot[bot] in #88
- Bump charset-normalizer from 3.4.3 to 3.4.4 in /tools/pdf-generator by @dependabot[bot] in #78
- Bump scipy from 1.16.2 to 1.16.3 in /tools/pdf-generator by @dependabot[bot] in #77
- Bump tailscale.com from 1.87.0-pre.0.20250728175739-4df02bbb486d to 1.91.0-pre by @dependabot[bot] in #74
- Bump fonttools from 4.60.0 to 4.60.1 in /tools/pdf-generator by @dependabot[bot] in #68
- Bump idna from 3.10 to 3.11 in /tools/pdf-generator by @dependabot[bot] in #66
- Bump @layerstack/utils from 2.0.0-next.14 to 2.0.0-next.16 in /web by @dependabot[bot] in #85
- Bump matplotlib from 3.10.6 to 3.10.7 by @dependabot[bot] in #86
- Bump @sveltejs/kit from 2.47.3 to 2.48.4 in /web by @dependabot[bot] in #87
- Bump globals from 16.4.0 to 16.5.0 in /web by @dependabot[bot] in #79
- Bump numpy from 2.3.3 to 2.3.4 in /tools/pdf-generator by @dependabot[bot] in #72
- Bump @11ty/eleventy from 2.0.1 to 3.1.2 in /docs by @dependabot[bot] in #71
- Bump @tailwindcss/vite from 4.1.15 to 4.1.17 in /web by @dependabot[bot] in #76
- Bump @eslint/js from 9.38.0 to 9.39.1 in /web by @dependabot[bot] in #84
- Bump pandas from 2.3.2 to 2.3.3 in /tools/pdf-generator by @dependabot[bot] in #80
- Bump scipy from 1.16.2 to 1.16.3 by @dependabot[bot] in #81
- Bump numpy from 2.3.3 to 2.3.4 by @dependabot[bot] in #83
- Bump iniconfig from 2.1.0 to 2.3.0 in /tools/pdf-generator by @dependabot[bot] in #73
- Bump certifi from 2025.8.3 to 2025.10.5 in /tools/pdf-generator by @dependabot[bot] in #69
- Bump tailwindcss from 4.1.15 to 4.1.17 in /web by @dependabot[bot] in #89
- Bump @layerstack/tailwind from 2.0.0-next.17 to 2.0.0-next.19 in /web by @dependabot[bot] in #75
- Bump vite from 7.1.12 to 7.2.1 in /web by @dependabot[bot] in #70
- Bump svelte-ux from 2.0.0-next.18 to 2.0.0-next.21 in /web by @dependabot[bot] in #82
- Bump tailwindcss from 3.4.17 to 4.1.17 in /docs by @dependabot[bot] in #67
- Add Malory (security) and Thompson (communications) custom agents by @Copilot in #94
- Consolidate Python virtual environments to single repository root .venv by @Copilot in #92
- [tex] sanitise inputs with escape_latex() & [js] fix download bug by @ddol in #99
- Align Copilot instructions with documented best practices by @Copilot in #101
- Bump @eslint/compat from 1.4.0 to 1.4.1 in /web by @dependabot[bot] in #107
- Bump vite from 7.2.1 to 7.2.2 in /web by @dependabot[bot] in #108
- Bump eslint-plugin-svelte from 3.12.5 to 3.13.0 in /web by @dependabot[bot] in #110
- [ci] check repo root py/js files by @ddol in #118
- Bump layerchart from 2.0.0-next.35 to 2.0.0-next.42 in /web by @dependabot[bot] in https://githu...