diff --git a/channel_modes.go b/channel_modes.go index 8ee805a..c5e7484 100644 --- a/channel_modes.go +++ b/channel_modes.go @@ -24,6 +24,11 @@ const ( ModeMixed ChannelMode = "mixed" ) +// DefaultChannelMode is applied to channels that do not yet have an explicit +// configuration. Mixed lets the dashboard dispatch locally while still +// forwarding client frames to the live target when one is configured. +const DefaultChannelMode = ModeMixed + type ChannelConfig struct { Channel string `json:"channel"` Mode ChannelMode `json:"mode"` @@ -72,7 +77,7 @@ func (r *ChannelModeRegistry) Get(channel string) ChannelConfig { if ok { return cfg } - return ChannelConfig{Channel: channel, Mode: ModeMock} + return ChannelConfig{Channel: channel, Mode: DefaultChannelMode} } func (r *ChannelModeRegistry) Set(cfg ChannelConfig) error { @@ -101,7 +106,7 @@ func (r *ChannelModeRegistry) Set(cfg ChannelConfig) error { } } if cfg.Mode == "" { - cfg.Mode = ModeMock + cfg.Mode = DefaultChannelMode } r.channels[cfg.Channel] = cfg snapshot := r.snapshotLocked() @@ -140,7 +145,7 @@ func (r *ChannelModeRegistry) Delete(channel string) error { r.mu.Unlock() listenerCfg := previous - listenerCfg.Mode = ModeMock + listenerCfg.Mode = DefaultChannelMode listenerCfg.UpdatedAt = now eventCfg := listenerCfg diff --git a/channel_modes_test.go b/channel_modes_test.go index 7f13c5f..8b39ffa 100644 --- a/channel_modes_test.go +++ b/channel_modes_test.go @@ -18,8 +18,8 @@ func TestChannelModeRegistryGetSetSnapshotAndPersistence(t *testing.T) { if err != nil { t.Fatalf("NewChannelModeRegistry() error = %v", err) } - if got := reg.Get("/scores").Mode; got != ModeMock { - t.Fatalf("default mode = %s, want mock", got) + if got := reg.Get("/scores").Mode; got != DefaultChannelMode { + t.Fatalf("default mode = %s, want %s", got, DefaultChannelMode) } if err := reg.Set(ChannelConfig{Channel: "/scores", Mode: ModeMixed, RateCapHz: 25}); err != nil { t.Fatalf("Set() error = %v", err) diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx index e06658f..28a0bd6 100644 --- a/frontend/src/components/Sidebar.tsx +++ b/frontend/src/components/Sidebar.tsx @@ -329,7 +329,7 @@ function SavedChannelsPanel({ showToast }: { showToast: (message: string, kind?: const confirm = useConfirm() const [adding, setAdding] = useState(false) const [channel, setChannel] = useState('') - const [mode, setMode] = useState('mock') + const [mode, setMode] = useState('mixed') const [saving, setSaving] = useState(false) const savedChannels = useMemo( @@ -339,7 +339,7 @@ function SavedChannelsPanel({ showToast }: { showToast: (message: string, kind?: const resetForm = useCallback(() => { setChannel('') - setMode('mock') + setMode('mixed') setAdding(false) }, []) @@ -452,7 +452,7 @@ function SavedChannelsPanel({ showToast }: { showToast: (message: string, kind?: {cfg.channel} - {cfg.mode || 'mock'} + {cfg.mode || 'mixed'}