• v0.7.1 c4fd4604e7

    v0.7.1 – Vollständige DB-Konfiguration & Companion-Admin
    All checks were successful
    Deploy docs / deploy (push) Successful in 1m6s
    Tests / test (push) Successful in 2m23s
    Build and Push Docker Image / build (push) Successful in 11s
    Stable

    ppfeiffer released this 2026-04-17 22:26:35 +02:00 | 77 commits to main since this release

    Was ist neu

    Companion-Node Admin-Seite (/settings/companion)

    • Neue Admin-Seite für Node-Identität, Verbindungseinstellungen, GPS-Position, Advertising, Channels & Kontakte und Lokalisierung
    • Interaktive Leaflet.js-Karte mit ziehbarem Marker, Klick-zum-Setzen und Nominatim-Reverse-Geocoding
    • Browser-Standort-Button für automatische GPS-Koordinaten
    • Bot-Identität aus /settings/bot entfernt (jetzt ausschließlich unter /settings/companion)

    config.ini als Build-Zeit-Seed

    • config.ini wird in das Docker-Image eingebaut — kein Runtime-Volume-Mount mehr nötig
    • Beim ersten Start werden alle config.ini-Werte einmalig in bot_config importiert
    • Ab dem zweiten Start ist bot_config alleinige Quelle der Wahrheit
    • docker-compose.yml: ./data/config-Volume-Mount entfernt
    • Generierter secret_key wird in bot_config persistiert — keine Session-Invalidierung mehr bei Restarts

    Geändert

    • bot_config ist alleinige Quelle für alle Einstellungen (ersetzt runtime config.ini)
    • Alle Settings-Speicher-Routen: DB-Sync vor config.ini-Schreiben
    • _load_config() wendet bot_config-Overlay immer an — GET-Routen zeigen Live-Werte
    • Scheduler-Routen synchronisieren Scheduled_Messages-Section in bot_config
    • api_settings_users_save() (SMTP): DB-Sync nachgezogen
    • api_settings_mqtt_save(): Schreibreihenfolge korrigiert

    Behoben

    • Einstellungen gingen nach Neustart verloren: Web-UI schrieb nur in config.ini
    • enabled-Boolean-Konflikt in PostgreSQL bei monitored_repeaters/webhook_config (INTEGER-Typ)
    • packet_stream-Duplicate-Key: PostgreSQL-Sequenzen nach Migration nicht synchronisiert
    Downloads
  • v0.7.0 3c8d93ca14

    v0.7.0 – PostgreSQL-Backend
    All checks were successful
    Deploy docs / deploy (push) Successful in 1m7s
    Tests / test (push) Successful in 2m53s
    Build and Push Docker Image / build (push) Successful in 7s
    Stable

    ppfeiffer released this 2026-04-17 21:16:29 +02:00 | 86 commits to main since this release

    Was ist neu

    PostgreSQL-Backend (modules/pg_adapter.py)

    Transparenter Drop-in-Ersatz für sqlite3 — alle 17 datenbanknutzenden Module importieren jetzt from modules import pg_adapter as sqlite3.

    • Automatische SQL-Übersetzung: ?%s, AUTOINCREMENTGENERATED ALWAYS AS IDENTITY, datetime(now, ...)NOW() + INTERVAL, PRAGMA table_infoinformation_schema.columns, sqlite_masterinformation_schema.tables, INSERT OR REPLACE/IGNOREON CONFLICT, COLLATE NOCASE entfernt
    • Psycopg2-Thread-Connection-Pool (2–20), CompatRow für Dict+Index-Zugriff
    • Vollständiger SQLite-Fallback wenn DATABASE_URL nicht gesetzt — keine Änderung für bestehende SQLite-Setups

    Config-in-Datenbank (modules/config_store.py)

    bot_config-Tabelle als Overlay für ConfigParser. DB-Werte überschreiben config.ini. Beim ersten Start werden alle config.ini-Werte als Defaults importiert.

    Docker mit PostgreSQL (docker-compose.yml)

    PostgreSQL 16 Alpine als separater Service mit Healthcheck. Bot startet erst nach pg_isready. Passwort über ${DB_PASSWORD:-meshcore_secret} konfigurierbar.

    Dashboard-API (GET /api/dashboard)

    Neuer öffentlicher Endpoint: bot_name, version, uptime, Kontakte, Nachrichten, Top-5-Commands, zuletzt gehörte Kontakte.

    Migrationsskript (scripts/migrate_sqlite_to_postgres.py)

    Idempotentes SQLite→PostgreSQL-Migrationsskript für beide Datenbanken, mit --dry-run-Flag.

    Behoben

    • PgCursor.execute: lastrowid-Fetch konsumierte SELECT-Rows → Login schlug stets fehl
    • Web-Viewer-Subprocess: fehlende cwd+PYTHONPATH verhinderten modules-Import
    • sqlite_master: fehlende Übersetzung zu information_schema.tables
    • /api/dashboard: falscher Spaltenname command statt command_name

    Upgrade-Hinweis

    SQLite-Nutzer: Keine Änderung erforderlich — der Bot fällt automatisch auf SQLite zurück wenn DATABASE_URL nicht gesetzt ist.

    PostgreSQL-Migration:

    DATABASE_URL=postgresql://user:pass@host:5432/meshcore_bot \
      python3 scripts/migrate_sqlite_to_postgres.py \
      --sqlite-main data/databases/meshcore_bot.db \
      --sqlite-telemetry data/databases/telemetry_data.db
    

    Vollständiges Changelog: CHANGELOG.md

    Downloads
  • v0.6.0 5285602ed3

    v0.6.0
    All checks were successful
    Deploy docs / deploy (push) Successful in 57s
    Tests / test (push) Successful in 2m16s
    Build and Push Docker Image / build (push) Successful in 5s
    Stable

    ppfeiffer released this 2026-04-16 21:21:28 +02:00 | 96 commits to main since this release

    Änderungen

    Entfernt

    • Discord Bridge entfernt — war als tot markiert, kein produktiver Einsatz, keine Tests (Issue #14)
    • Earthquake Service entfernt — Config-Platzhalter ohne Implementierung
    • Docs, Navigation und README entsprechend bereinigt

    CI/CD

    • Forgejo Actions Workflows auf den selbst gehosteten Runner angepasst
    • actions/setup-python entfernt, pip via apt-get installiert
    • docker-build.yml: Registry auf git.pfeiffer-privat.de umgestellt, native Docker-Befehle
    • Test test_directory_not_writable_warns wird als root übersprungen
    • Alle drei Workflows laufen erfolgreich: test docs docker-build

    Hinweis: Für vollständige Docker-Builds benötigt der Forgejo Runner docker_host: automount und valid_volumes: ["/var/run/docker.sock"] in /opt/forgejo-runner/config.yml sowie das Secret REGISTRY_TOKEN im Repository.

    Downloads