v2.26.0: fix SSE fanout crash and branded logo FOUC

- Fix SSE fanout thread AttributeError when source queue is None during
  interpreter shutdown by snapshotting to local variable with null guard
- Fix branded "i" logo rendering oversized on first page load (FOUC) by
  adding inline width/height to SVG elements across 10 templates
- Bump version to 2.26.0 in config.py, pyproject.toml, and CHANGELOG.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Smittix
2026-03-13 11:51:27 +00:00
parent 00362bcd57
commit e00fbfddc1
183 changed files with 2006 additions and 4243 deletions
+5 -7
View File
@@ -12,12 +12,12 @@ Usage:
from __future__ import annotations
import argparse
import json
import random
import string
import threading
import time
from datetime import datetime, timezone
from flask import Flask, jsonify, request
app = Flask(__name__)
@@ -53,7 +53,7 @@ def generate_sensors() -> list[dict]:
"""Generate fake 433MHz sensor data."""
sensors = []
models = ['Acurite-Tower', 'Oregon-THGR122N', 'LaCrosse-TX141W', 'Ambient-F007TH']
for i in range(random.randint(2, 5)):
for _i in range(random.randint(2, 5)):
sensors.append({
'time': datetime.now(timezone.utc).isoformat(),
'model': random.choice(models),
@@ -71,7 +71,7 @@ def generate_wifi_networks() -> list[dict]:
networks = []
ssids = ['HomeNetwork', 'Linksys', 'NETGEAR', 'xfinitywifi', 'ATT-WIFI', 'CoffeeShop-Guest']
for ssid in random.sample(ssids, random.randint(3, 6)):
bssid = ':'.join(['%02X' % random.randint(0, 255) for _ in range(6)])
bssid = ':'.join([f'{random.randint(0, 255):02X}' for _ in range(6)])
networks.append({
'ssid': ssid,
'bssid': bssid,
@@ -89,7 +89,7 @@ def generate_bluetooth_devices() -> list[dict]:
devices = []
names = ['iPhone', 'Galaxy S21', 'AirPods', 'Tile Tracker', 'Fitbit', 'Unknown']
for _ in range(random.randint(2, 8)):
mac = ':'.join(['%02X' % random.randint(0, 255) for _ in range(6)])
mac = ':'.join([f'{random.randint(0, 255):02X}' for _ in range(6)])
devices.append({
'address': mac,
'name': random.choice(names),
@@ -209,9 +209,7 @@ def config():
'name': agent_name,
'port': request.environ.get('SERVER_PORT', 8021),
'push_enabled': False,
'modes_enabled': {m: True for m in [
'pager', 'sensor', 'adsb', 'ais', 'wifi', 'bluetooth'
]}
'modes_enabled': dict.fromkeys(['pager', 'sensor', 'adsb', 'ais', 'wifi', 'bluetooth'], True)
})