• v1.0.4 d5c4e75dad

    v1.0.4
    All checks were successful
    Deploy ntfy2vikunja / test (push) Successful in 14s
    Deploy ntfy2vikunja / deploy (push) Successful in 7s
    Stable

    ralf released this 2026-02-23 10:52:38 +00:00 | 0 commits to main since this release

    Features

    • Backend wählbar: Nextcloud Deck (Standard) oder Vikunja – Über BACKEND=deck (Standard) oder BACKEND=vikunja wählbar. Deck-Konfiguration (NEXTCLOUD_*, DECK_*) wird bei BACKEND=deck benötigt; bei BACKEND=vikunja reichen VIKUNJA_*.
    • Nextcloud Deck – Karten werden per Deck REST-API angelegt. Board und Stack per ID oder Name konfigurierbar; optional DECK_STACK_HIGH_PRIO für Nachrichten mit führendem ! ohne due:.
    • DUE_TIME konfigurierbar – ENV DUE_TIME (HH:MM oder HH:MM:SS, Default 10:00 UTC) für Fälligkeitsdatum bei reinem Datum ohne Uhrzeit. Gilt für Vikunja und Deck.

    Fixes

    • Deck 403-Fehlermeldung – Bei Zugriffsverweigerung wird nun explizit auf falsches Board oder fehlende Berechtigung hingewiesen.

    Dokumentation

    • Vikunja obsolet – README markiert Vikunja als eingestellt; Deck ist das einzige gepflegte Backend.
    • README und .env.example: BACKEND, Deck-Variablen, DUE_TIME, optionale Vikunja-Config beschrieben.
    Downloads
  • v1.0.3 30d5e9b2d7

    v1.0.3
    All checks were successful
    Deploy ntfy2vikunja / test (push) Successful in 14s
    Deploy ntfy2vikunja / deploy (push) Successful in 7s
    Stable

    ralf released this 2026-02-13 22:17:44 +00:00 | 4 commits to main since this release

    Release Notes

    v1.0.3 (2026-02-10)

    Features

    • ! ohne due: Fälligkeit = Erstellungstag – Tasks mit führendem ! und ohne explizites due: erhalten automatisch das Fälligkeitsdatum des Erstellungstags.
    • ! aus Titel entfernt – Nur das führende Ausrufezeichen (Steuerzeichen) wird aus dem Titel entfernt; ! mitten im Text bleibt erhalten.

    Fixes

    • Deploy: Services nicht neu gestartetsystemctl enable --now startet laufende Dienste nicht neu. Explizites restart nach jedem Deploy, damit der neue Code geladen wird.

    CI/CD & Deployment

    • Sudoerssystemctl restart und enable --now (beide Dienste) in deploy/sudoers/ntfy2vikunja-deploy.sudoers ergänzt. Nach Update: sudo cp current/deploy/sudoers/ntfy2vikunja-deploy.sudoers /etc/sudoers.d/ntfy2vikunja-deploy auf dem Server ausführen.
    Downloads
  • v1.0.2 daacf0078d

    v1.0.2
    All checks were successful
    Deploy ntfy2vikunja / test (push) Successful in 14s
    Deploy ntfy2vikunja / deploy (push) Successful in 7s
    Stable

    ralf released this 2026-02-13 10:57:45 +00:00 | 10 commits to main since this release

    Release Notes

    v1.0.2 (2026-02-14)

    Features

    • Listen als ProjekteVIKUNJA_BUCKET_HIGH_PRIO kann ein Projekt-Name sein (z. B. „Heute“). Wenn der Bucket-Lookup fehlschlägt, wird der Name als Projekt aufgelöst.

    Fixes

    • Normale Tasks in falscher Liste – Worker übergibt explizit project_id/bucket_id; create_task nutzt bei expliziten Werten nicht mehr VIKUNJA_BUCKET_HIGH_PRIO aus der ENV. Normale Tasks landen wieder in VIKUNJA_PROJECT.
    • Fehlkonfiguration sichtbar – Wenn VIKUNJA_BUCKET_HIGH_PRIO gesetzt ist und weder Bucket noch Projekt gefunden werden, startet der Worker nicht mehr still; Fehler wird ausgelöst.
    • Graceful Fallback – Wenn Bucket nicht gefunden und nicht konfiguriert: Warnung mit verfügbaren Bucket-Namen, Worker läuft weiter.

    Dokumentation

    • README: Klarstellung, dass nur !-Tasks in VIKUNJA_BUCKET_HIGH_PRIO landen
    • create_task: Docstring zu use_env_bucket ergänzt
    Downloads
  • V1.0.1 2e9da0bed5

    V1.0.1
    All checks were successful
    Deploy ntfy2vikunja / test (push) Successful in 14s
    Deploy ntfy2vikunja / deploy (push) Successful in 7s
    Stable

    ralf released this 2026-02-13 10:34:39 +00:00 | 15 commits to main since this release

    Release Notes

    v1.0.1 (2026-02-13)

    Features

    • Projekt- und Bucket-Namen in ENVVIKUNJA_PROJECT und VIKUNJA_BUCKET_HIGH_PRIO akzeptieren jetzt Namen statt nur IDs (werden per API aufgelöst)

    Fixes

    • Cache-Normalisierung – Projekt-/Bucket-Lookup konsistent
    • Priorität und Bucket – Bei explizitem prio:/priority: wird is_bang nicht mehr gesetzt; Bucket-Zuordnung nur für Tasks ohne due: (führendes !)

    CI/CD & Qualität

    • Unit-Tests – Tests für queue_store, bridge_worker (Message-Parsing), bridge_ingestor (Event-Filter)
    • CI-Test-Job – Tests laufen vor dem Deploy im debian-bookworm-Container
    • Security-Scanspip-audit (Dependencies) und bandit (Code) im CI
    • Security-Pins – urllib3 und wheel auf sichere Versionen gepinnt

    Dokumentation

    • README: Abschnitt „Tests“ mit Befehlen ergänzt
    Downloads
  • V1.0 514213e749

    V1.0
    All checks were successful
    Deploy ntfy2vikunja / deploy (push) Successful in 7s
    Stable

    ralf released this 2026-02-13 09:03:46 +00:00 | 25 commits to main since this release

    Release Notes

    v1.0.0 (2026-02-14)

    Erstes stabiles Release der ntfy2vikunja-Bridge.

    Übersicht

    ntfy2vikunja verbindet ntfy mit Vikunja: Nachrichten aus einem ntfy-Topic werden per WebSocket empfangen, in einer Queue zwischengespeichert und als Tasks in Vikunja angelegt.

    Features

    • WebSocket-Subscriber – ntfy-Integration mit Reconnect und Backoff
    • Persistente Queue – SQLite für zuverlässige Verarbeitung
    • Retry mit Exponential Backoff – bis zu 8 Versuche bei Fehlern
    • Dead-letterdead-Status nach maximaler Retry-Anzahl
    • Entkoppelte Architektur – Ingestor + Worker getrennt oder kombiniert
    • Optionales ntfy-Feedback – „Task erstellt“-Nachricht an eigenes Topic
    • Healthcheck – Queue-Status als JSON für Monitoring

    Task-Mapping

    Nachricht Ergebnis
    Backup prüfen Task ohne Priorität, ohne Fälligkeit
    Backup prüfen due:2026-03-10 Task mit Fälligkeitsdatum
    Backup prüfen prio:5 Task mit Priorität 5
    ! Backup sofort due:2026-03-10 Task mit Priorität 5 und Fälligkeit
    • Priorität: prio:1..5, priority:low|medium|high|urgent oder führendes !
    • Fälligkeit: due:YYYY-MM-DD in Title oder Body
    • Android: Leere triggered-Events werden ignoriert

    Voraussetzungen

    • Python 3.11+ (3.10 sollte funktionieren)
    • ntfy-Instanz mit Token
    • Vikunja-Instanz mit API-Token (minimal: Tasks -> Create)

    Installation

    pip install -r requirements.txt
    cp .env.example .env
    # .env bearbeiten
    python bridge_run.py   # Lokal: alles in einem Prozess
    

    Linux / Deployment

    • systemd: Ingestor + Worker als separate Services oder bridge-run kombiniert
    • Forgejo CI/CD: Automatischer Deploy via .forgejo/workflows/deploy.yml
    • Dokumentation: DEPLOY.md, OPERATIONS.md

    Projektstruktur

    ntfy_subscribe.py     # WebSocket-Client
    create_task.py        # Vikunja Task-API
    queue_store.py        # SQLite Queue
    bridge_ingestor.py    # ntfy -> Queue
    bridge_worker.py      # Queue -> Vikunja
    bridge_run.py         # Kombinierter Runner
    healthcheck.py        # Queue-Monitoring
    deploy/systemd/       # systemd Units
    deploy/sudoers/       # Deploy-Berechtigungen
    
    Downloads