8403d751b6
doc: add godoc
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-25 19:19:54 +02:00
2f1cadcf40
refactor(app): add DestinationWentOffAirEvent
2025-04-25 18:10:22 +02:00
1f4a931903
fix(app): event ordering
...
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
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-04-25 17:42:49 +02:00
94623248c0
refactor(app): async startup check
2025-04-25 17:42:49 +02:00
4a16780915
fixup! refactor: add event bus
2025-04-25 04:46:32 +02:00
3019387f38
refactor(app): add StartDestinationFailedEvent
2025-04-25 04:44:36 +02:00
f4021a2886
refactor(app): add destination error events
2025-04-24 21:45:53 +02:00
b8550f050b
refactor(app): add AppStateChangedEvent
2025-04-24 21:45:53 +02:00
4029c66a4a
refactor(app): extract more events
2025-04-24 21:45:53 +02:00
cdf41e47c3
refactor(app): extract handleCommand
2025-04-22 16:28:38 +02:00
d7f8fb49eb
refactor(app): add App type
2025-04-22 16:06:37 +02:00
4b464c680d
refactor: add event bus
2025-04-22 15:50:49 +02:00
add511e3dd
refactor: extract commands to domain package
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
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
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
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
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
...
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
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
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
af4410c4cf
feat(ui): prefer "source" to "ingress"
2025-04-08 13:06:43 +02:00
18d5ef3db1
fix(container): do not error on pull image failure
2025-04-08 13:03:29 +02:00
3523a1a34e
feat(mediaserver): update MediaMTX image
ci-build / lint (push) Has been cancelled
ci-build / build (push) Has been cancelled
ci-build / release (push) Has been cancelled
2025-04-06 09:25:50 +02:00
5735b2d73a
refactor: consistent naming
2025-04-06 06:43:25 +02:00
0fbbe25e1b
refactor: extract test helpers
2025-04-06 06:43:25 +02:00
1c742426ed
chore: fix typo
2025-04-05 21:42:36 +02:00
e778c3c443
fix(ui): mediaserver error modal improvements
2025-04-05 21:42:36 +02:00
e14cfdee85
refactor: startup check
...
ci-build / lint (push) Has been cancelled
ci-build / build (push) Has been cancelled
ci-build / release (push) Has been cancelled
- separate mediaserver create and start
- avoid blocking main app loop during startup check
- remove ui.allowQuit
- add integration test
2025-04-05 09:43:11 +02:00
266a9307d2
fix(config): ensure log file path is set
...
Fix a bug introduced in 6952516 which led to the app being unable to
start if logging was enabled but no explicit path was set. In this case,
the expected behaviour is to fallback to a log file in the XDG file
hierarchy, but this was lost due to broken config file defaults
handling.
This commit separates the behaviour when setting defaults when reading
an existing configuration, from those set when creating a brand new
configuration.
2025-04-04 20:49:05 +02:00
cd2c339c10
fix(ui): close UI from main goroutine
...
This seems to have been unnecessary and can actually cause the app to
hang on closing if ctrl-c is pressed when the "add destinations" page is
visible.
2025-04-04 15:59:34 +02:00
54cfe3a55f
feat(ui): add "no destinations" page
2025-04-04 15:59:34 +02:00
2eeb809e6e
chore(ui): update copy
2025-04-03 20:10:36 +02:00
522be621ee
refactor: replicator
2025-04-03 17:23:27 +02:00
6952516204
chore: config fixes
...
- remove example config file
- don't set default values on read
- omit empty fields
- indent yaml 2 spaces
2025-04-01 21:06:31 +02:00