Releases: itsDNNS/docsight
v2026-02-28.6 — Regional Threshold Profiles
Regional Threshold Profiles (#130)
Signal thresholds are now a module — the built-in VFKD profile ships as docsight.thresholds_vfkd, and community members can contribute their own regional profiles.
New
- Threshold modules — new
contributes: thresholdstype in the module system - Dynamic thresholds —
set_thresholds()API replaces static file loading at import time - 3-tier format — good / warning / critical (replaces old 4-tier format)
- OFDMA upstream support — separate thresholds for SC-QAM and OFDMA channels
- Percent-based error thresholds — uncorrectable errors assessed as percentage of total codewords
- Mutual exclusion — only one threshold profile active at a time; enabling a new one auto-disables the previous; disabling the last returns 409
- Active Profile badge — visual indicator in Settings > Modules for the active threshold profile
- Community template —
TEMPLATE-THRESHOLDS/in docsight-modules with full schema documentation - Module grouping — Settings > Modules now groups by enabled/disabled with section headers
Fixed
- Module card template used non-existent attribute for badge check
- Modules without
menuconfig (like threshold profiles) caused 500 error on dashboard due to missingmenu.orderduring Jinja2 sort
Stats
- 715 tests passing
v2026-02-28.5
Community Module Registry & Module System Completion
This release completes the module system (Epic #128) — DOCSight is now fully modular and community-extensible.
What's New
Community Module Registry (#127)
- New repository: docsight-modules
- Starter template — copy, rename, customize
- Comprehensive module development guide covering all 8 contribution types
registry.jsonwith JSON Schema validation for community submissions
Documentation Updates
- New Module System wiki page — installing, managing, and building modules
- Updated Roadmap with complete Module System section
- Updated Contributing with module development links
- CONTRIBUTING.md and README.md updated with registry references
Module System Summary (Epic #128)
The full module system delivered across v2026-02-28.1 through v2026-02-28.5:
| Component | Issue | Release |
|---|---|---|
| Core Loader Framework | #122 | v2026-02-28.1 |
| Frontend Integration | #123 | v2026-02-28.2 |
| Management API & Settings UI | #124 | v2026-02-28.2 |
| Pilot Migration: Weather | #125 | v2026-02-28.3 |
| Migrate All Features (8 modules) | #126 | v2026-02-28.4 |
| Community Module Registry | #127 | v2026-02-28.5 |
8 built-in modules: Backup, BNetzA, BQM, Incident Journal, MQTT, Reports, Speedtest, Weather
For module developers: See the docsight-modules repository to get started.
v2026-02-28.4 — Complete Module Migration
What's New
Complete Module Migration (#126) — CLOSED
All migratable features are now self-contained built-in modules with their own manifests, storage, routes, and i18n. 8 modules total:
| Module | Type | Batch |
|---|---|---|
| Backup & Restore | integration | 1 |
| Reports & Complaints | analysis | 1 |
| MQTT / Home Assistant | integration | 1 |
| Speedtest Tracker | integration | 2 |
| ThinkBroadband BQM | integration | 2 |
| BNetzA Broadband Measurement | integration | 2 |
| Weather Integration | integration | Pilot |
| Incident Journal | analysis | 3 |
Each module can be individually disabled via Settings > Modules.
Key Changes
- Standalone storage: Each module has its own Storage class (no more core mixins). Speedtest, BQM, BNetzA, and Journal all manage their own tables.
- Publisher contributes: New
publisherkey in module manifests for MQTT-style publishers. - Module loader fix: Dynamic imports now use real package paths (
app.modules.*) instead of synthetic ones, fixing relative imports in all modules. - i18n backward compatibility: Module translation keys are available both namespaced (
docsight.journal.icon_auto) and un-namespaced (icon_auto) for existing JS code.
What Stays Core (by design)
- DOCSIS Signal Analysis (IS the core domain)
- Events (core infrastructure used by all modules)
- Correlation Analysis (thin layer, tightly coupled)
Stats
- 693 tests passing
- 8 built-in modules discovered, 0 failures
- E2E verified: Dashboard, Journal, Settings/Modules
v2026-02-28.2 — Module Frontend Integration
What's New
Module Frontend Integration (#123)
Modules can now contribute UI elements that render dynamically:
- Sidebar: Extensions section with module tabs (sorted by order)
- Dashboard: Dynamic view containers + card injection
- Settings: Extensions section with module settings panels (desktop + mobile)
- Assets: Convention-based CSS/JS loading (
static/style.css,static/main.js) - i18n: Extensions section labels in en/de/es/fr
- JS refactor: Generic view-switching (no more hardcoded view list)
Bug Fixes
- Fixed
validViews is not definederror in hash-based routing
v2026-02-28.1 — Core Module Loader Framework
What's New
Module Loader Framework (#122)
Complete foundation for the plugin/module system:
- Manifest-first auto-discovery — modules declare capabilities via
manifest.json - Dynamic loading — routes, collectors, i18n, static files, templates
- ModuleLoader orchestrator — wired into app startup with enable/disable support
- Built-in + community paths —
app/modules/and volume-mountable/modules/ - 33 new tests (678 total passing)
v2026-02-27.4
Monolith Refactoring (#119)
Major codebase restructuring for better maintainability:
Frontend
- Extracted 9 JavaScript modules from
index.html(7,947 → 2,435 lines, -69%)chart-engine.js,correlation.js,journal.js,bqm.js,speedtest.js,events.js,trends.js,channels.js,integrations.js,utils.js
- Made translations variable
Tglobal (#116)
Backend
- Split
web.pyinto 9 Flask Blueprints (2,741 → 646 lines, -76%)config_bp,polling_bp,data_bp,analysis_bp,journal_bp,integrations_bp,events_bp,backup_bp,reports_bp
- Split
storage.pyinto 10 Mixin classes (1,648 lines → 12 files)StorageBase+SnapshotMixin,BqmMixin,SpeedtestMixin,WeatherMixin,JournalMixin,EventMixin,BnetzMixin,AnalysisMixin,TokenMixin,CleanupMixin
Event System Improvements
- Event type filter for Correlation Analysis with badge counts and popover (#117)
- Hide operational events toggle in Event Log (#118)
- Fixed popover click propagation in correlation chart
Other
v2026-02-27.3 — Temperature Overlay
Weather/Temperature Integration (Issue #62)
Backend
- Open-Meteo API client (free, no API key) for hourly outdoor temperature
- WeatherCollector with automatic 90-day historical backfill
- API endpoints:
/api/weather,/api/weather/current,/api/weather/range - Settings UI panel with enable toggle + coordinates input
- Demo mode with 270 days synthetic temperature data
- i18n support (EN, DE, FR, ES)
Frontend Overlay
- Signal Trends: Dashed orange temperature line on secondary Y-axis (°C) on all 4 charts, with toggle button and zoom modal support
- Correlation Analysis: Toggleable temperature line with own scaling, legend entry, tooltip values, and highlight dots
29 new tests, 637 total passing.
v2026-02-27.2
What's Changed
Bug Fixes
- Fix PDF report crash with nullable channel values — Modems like Arris CM3500B can return
Nonefor channel fields (power, frequency, SNR). The complaint PDF generator now handles these gracefully instead of crashing with a 500 error. (#112) - Replace logout emoji with Lucide icon — The sidebar logout button now uses a consistent
log-outLucide icon instead of a Unicode emoji. - Fix CI version for non-tag builds — Docker images from non-tag pushes now use date-based versions instead of stale git tags.
New Features
- Speedtest quality classification —
/api/speedtestand/api/speedtest/<id>now includespeed_health,download_class, andupload_classfields (good/warn/poor) based on booked speeds. (#113)
Documentation
- Updated Wiki API Reference with all new endpoints and speedtest quality fields
- Bumped README documentation version
v2026-02-27.1
API Completeness
Extended
GET /api/channels— now includessummaryobject withhealth,health_issues, and all signal aggregates (#106, #107, #108)GET /health— now includesversionfield (#109)
New Endpoints
GET /api/device— modem model, manufacturer, firmware, uptimeGET /api/thresholds— active analysis thresholds (read-only)GET /api/snapshots+GET /api/snapshots/<timestamp>— historical snapshot dataGET /api/speedtest/<id>— full speedtest details by ID
Fixes
- CI: non-tag builds now use date-based version instead of stale git tag (#110)
v2026-02-23.1
Bug Fixes
- Upstream power labels now differentiate between too low and too high (#99): The analyzer previously reported "elevated" or "critically high" regardless of whether the upstream power was above or below the threshold window. Users with low transmit power (e.g. <40 dBmV) got misleading messages. The assessment now emits directional labels ("too low" / "too high") with matching descriptions in all four languages (EN, DE, FR, ES). Reported via Discussion #98.