89 Commits

Author SHA1 Message Date
c706a41acd fixup! wip: refactor: API 2025-05-10 21:47:10 +02:00
59b0a060ba fixup! wip: refactor: API 2025-05-10 21:18:42 +02:00
116623f386 fixup! wip: refactor: API 2025-05-10 21:14:40 +02:00
aa6f50715d fixup! wip: refactor: API 2025-05-10 08:15:23 +02:00
7706bb363f fixup! wip: refactor: API 2025-05-10 07:46:58 +02:00
888ac7d67d fixup! wip: refactor: API 2025-05-10 07:36:39 +02:00
c6f21b194a fixup! wip: refactor: API 2025-05-09 06:47:27 +02:00
6ceb286e6b fixup! wip: refactor: API 2025-05-08 07:08:43 +02:00
0a6b9fad90 fixup! wip: refactor: API 2025-05-07 20:32:27 +02:00
f67a456d1e wip: refactor: API 2025-05-06 21:38:14 +02:00
d4e136c8d6 feat: headless mode (experimental) 2025-05-06 01:19:47 +02:00
2bdb5335dc refactor(app): add Dispatch method 2025-05-06 01:11:18 +02:00
d1efffc937 refactor(app): internalize dispatch channel 2025-05-06 01:11:18 +02:00
d3171c6251 refactor: extract commands from domain 2025-05-06 01:11:18 +02:00
d9dbb7fc8f doc: add godoc 2025-05-06 01:11:18 +02:00
8c4974e0c1 refactor(app): add DestinationWentOffAirEvent 2025-05-06 01:11:18 +02:00
6bcd5d05c7 fix(app): event ordering
Use a single channel per consumer, instead of one channel per
consumer/event tuple. This ensures that overall ordering of events
remains consistent, and avoids introducing subtle race conditions.
2025-05-06 01:11:18 +02:00
c6ce8be5b1 refactor(app): async startup check 2025-05-06 01:11:18 +02:00
9c16275207 refactor(app): add StartDestinationFailedEvent 2025-05-06 01:11:18 +02:00
a80e891b75 refactor(app): add destination error events 2025-05-06 01:11:18 +02:00
9e2f6649eb refactor(app): add AppStateChangedEvent 2025-05-06 01:11:18 +02:00
de0ecb1f34 refactor(app): extract more events 2025-05-06 01:11:18 +02:00
d96d26c29c refactor(app): extract handleCommand 2025-05-06 01:11:18 +02:00
4a2857e310 refactor(app): add App type 2025-05-06 01:11:18 +02:00
e8be872047 chore: remove stray file 2025-05-06 01:10:33 +02:00
4b464c680d refactor: add event bus 2025-04-22 15:50:49 +02:00
add511e3dd refactor: extract commands to domain package
Some checks failed
ci-build / lint (push) Has been cancelled
ci-scan / Analyze (go) (push) Has been cancelled
ci-scan / Analyze (actions) (push) Has been cancelled
ci-build / build (push) Has been cancelled
ci-build / release (push) Has been cancelled
2025-04-20 20:55:10 +02:00
7afa84505e fix(mediaserver): handle custom hostname with self-signed certs 2025-04-20 18:59:27 +02:00
4a863a3212 feat(mediaserver): custom TLS certs 2025-04-20 11:27:17 +02:00
98d93ad286 feat(mediaserver): RTMPS
Some checks are pending
ci-build / lint (push) Waiting to run
ci-build / build (push) Blocked by required conditions
ci-build / release (push) Blocked by required conditions
ci-scan / Analyze (go) (push) Waiting to run
ci-scan / Analyze (actions) (push) Waiting to run
2025-04-19 22:05:55 +02:00
5f026be769 refactor(config)!: update config file schema
BREAKING CHANGE: YAML schema
2025-04-18 18:00:28 +02:00
d35dedb15b test(integration): fix typo 2025-04-18 09:59:40 +02:00
e49bbb6800 refactor(mediaserver): simplify API interactions
Some checks are pending
ci-build / lint (push) Waiting to run
ci-build / build (push) Blocked by required conditions
ci-build / release (push) Blocked by required conditions
ci-scan / Analyze (go) (push) Waiting to run
ci-scan / Analyze (actions) (push) Waiting to run
2025-04-18 09:51:56 +02:00
b147da6d9b feat(mediaserver): configurable RTMP host and bind address 2025-04-17 11:15:08 +02:00
b8389eceb0 feat: improve Docker connection error handling 2025-04-16 14:53:47 +02:00
b05ae25809 fix(ui): allow multiple destination error modals
Some checks failed
ci-build / release (push) Has been cancelled
ci-build / lint (push) Has been cancelled
ci-build / build (push) Has been cancelled
2025-04-15 09:23:01 +02:00
52b0616d5f chore(config): rename streamKey field 2025-04-15 08:11:53 +02:00
df9724afa7 feat: container logs
Some checks are pending
ci-build / lint (push) Waiting to run
ci-build / build (push) Blocked by required conditions
ci-build / release (push) Blocked by required conditions
2025-04-14 11:17:10 +01:00
579dfeef22 test(integration): extract app startup logic 2025-04-13 11:31:00 +02:00
5f6b6fa3a9 test(integration): add t.Helper() 2025-04-13 11:00:18 +02:00
c4bc32b3e8 refactor(container): restart handling
Some checks failed
ci-build / lint (push) Has been cancelled
ci-build / build (push) Has been cancelled
ci-build / release (push) Has been cancelled
- display error modal if container exits in first 15 seconds
- restart containers manually
- allow more flexible restart policies
- extend integration tests
2025-04-13 09:26:31 +01:00
f7f9843c4b test(integration): add coverage for custom stream key 2025-04-11 09:57:45 +02:00
524dafd800 security(mediaserver): bind to 127.0.0.1 2025-04-11 09:28:30 +02:00
b257f456ba feat(config): tighten RTMP URL validation
Some checks failed
ci-build / lint (push) Has been cancelled
ci-build / build (push) Has been cancelled
ci-build / release (push) Has been cancelled
2025-04-10 22:00:37 +02:00
045498a2ce fix(ui): handle table wraparound on k binding
Some checks are pending
ci-build / lint (push) Waiting to run
ci-build / build (push) Blocked by required conditions
ci-build / release (push) Blocked by required conditions
2025-04-10 07:38:05 +02:00
08a5690d30 test: add container debug logs 2025-04-10 07:38:05 +02:00
d332a78af1 fix(ui): further key handling improvements
Avoids losing user destination selection when re-rendering the page,
especially after adding or removing a destination.
2025-04-10 07:37:24 +02:00
f791125c02 feat(ui): update key bindings 2025-04-09 21:05:06 +02:00
30da888184 feat(ui): improve error handling on startup 2025-04-09 06:50:35 +02:00
2fbf2176cf feat(ui): improve key handling
- handle add-destination input in own handler func
- handle CTRL-C when modal is visible
- fix destination wraparound on key-up
2025-04-08 13:39:17 +02:00