Skip to content

Releases: itsDNNS/docsight

v2026-02-28.6 — Regional Threshold Profiles

28 Feb 18:01

Choose a tag to compare

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: thresholds type in the module system
  • Dynamic thresholdsset_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 templateTEMPLATE-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 menu config (like threshold profiles) caused 500 error on dashboard due to missing menu.order during Jinja2 sort

Stats

  • 715 tests passing

v2026-02-28.5

28 Feb 15:20

Choose a tag to compare

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.json with 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

28 Feb 13:27

Choose a tag to compare

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 publisher key 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

27 Feb 23:54

Choose a tag to compare

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 defined error in hash-based routing

v2026-02-28.1 — Core Module Loader Framework

27 Feb 23:24

Choose a tag to compare

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 pathsapp/modules/ and volume-mountable /modules/
  • 33 new tests (678 total passing)

v2026-02-27.4

27 Feb 20:42

Choose a tag to compare

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 T global (#116)

Backend

  • Split web.py into 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.py into 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

  • PWA manifest for installable web app
  • Updated favicon to v2 logo (#120)
  • Fixed weather_enabled checkbox bug (#114)
  • Fixed translations scope in Correlation Analysis
  • Added .gitattributes for LF line endings in shell scripts

v2026-02-27.3 — Temperature Overlay

27 Feb 12:04

Choose a tag to compare

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

27 Feb 11:23

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix PDF report crash with nullable channel values — Modems like Arris CM3500B can return None for 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-out Lucide 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/speedtest and /api/speedtest/<id> now include speed_health, download_class, and upload_class fields (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

27 Feb 08:46

Choose a tag to compare

API Completeness

Extended

  • GET /api/channels — now includes summary object with health, health_issues, and all signal aggregates (#106, #107, #108)
  • GET /health — now includes version field (#109)

New Endpoints

  • GET /api/device — modem model, manufacturer, firmware, uptime
  • GET /api/thresholds — active analysis thresholds (read-only)
  • GET /api/snapshots + GET /api/snapshots/<timestamp> — historical snapshot data
  • GET /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

23 Feb 09:56

Choose a tag to compare

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.