feat: Phase 5 — filtres, actions Ntfy, outgoing webhooks, state file
CI / test (push) Successful in 2m34s

- Filtres avancés: drop, set_priority, add_tag avec wildcard * (filter_outgoing.v)
- Notifications structurées: click_url + actions (ntfy.v + sources/event.v)
- Webhook sortant: Slack, Discord, JSON (filter_outgoing.v)
- Fichier d'état: persistance poll_state + silence_until (filter_outgoing.v)
- Config: sections filters, outgoing, state (config.v)
- Tests: 9 nouveaux tests unitaires (filter_outgoing_test.v)
- Docs: ROADMAP Phase 5 4/8, version 0.5.0
This commit is contained in:
2026-08-03 17:41:53 -04:00
parent 5d0db9478c
commit 4150c56054
9 changed files with 422 additions and 30 deletions
+26 -14
View File
@@ -2,27 +2,39 @@ module sources
pub struct Event {
pub mut:
source string
name string
topic string
priority int
tags []string
message string
raw string
source string
name string
topic string
priority int
tags []string
message string
raw string
click_url string // v0.5: URL opened when notification is clicked
actions []Action // v0.5: Ntfy action buttons
}
pub fn (e Event) clone() Event {
return Event{
source: e.source
name: e.name
topic: e.topic
priority: e.priority
tags: e.tags.clone()
message: e.message
raw: e.raw
source: e.source
name: e.name
topic: e.topic
priority: e.priority
tags: e.tags.clone()
message: e.message
raw: e.raw
click_url: e.click_url
actions: e.actions.clone()
}
}
pub struct Action {
pub:
action string // view, broadcast, http
label string
url string
clear bool // whether to dismiss notification after action
}
pub struct GiteaSource {
pub mut:
name string @[json: 'name']