Skip to content

Commit 0791f00

Browse files
fix: pulsating effect belongs to overhead light, not flames (#67)
* Initial plan * fix: pulsating effect is for overhead light, not flames Co-authored-by: deviantintegral <255023+deviantintegral@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: deviantintegral <255023+deviantintegral@users.noreply.github.com>
1 parent 2e1a2fe commit 0791f00

7 files changed

Lines changed: 28 additions & 26 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ seconds. Key bindings:
205205
| `e` | Toggle flame effect |
206206
| `c` | Set flame color |
207207
| `b` | Toggle brightness (high/low) |
208-
| `g` | Toggle pulsating effect |
208+
| `g` | Toggle pulsating overhead light effect |
209209
| `m` | Set media theme |
210210
| `l` | Toggle media light |
211211
| `d` | Set media color (RGBW) |

src/flameconnect/cli.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,16 @@ def _display_flame_effect(param: FlameEffectParam) -> None:
136136
print(f" Flame: {flame}")
137137
print(f" Flame Speed: {param.flame_speed} / {MAX_FLAME_SPEED}")
138138
brightness = display_name(param.brightness)
139-
pulsating = display_name(param.pulsating_effect)
140139
print(f" Brightness: {brightness}")
141-
print(f" Pulsating: {pulsating}")
142140
color = display_name(param.flame_color)
143141
print(f" Flame Color: {color}")
144142
theme = display_name(param.media_theme)
145143
rgbw = _format_rgbw(param.media_color)
146144
print(f" Media Light: {theme} | {rgbw}")
147145
light = display_name(param.light_status)
146+
pulsating = display_name(param.pulsating_effect)
148147
print(f" Overhead Light: {light}")
148+
print(f" Overhead Pulsating: {pulsating}")
149149
print(f" Overhead Color: {_format_rgbw(param.overhead_color)}")
150150
ambient = display_name(param.ambient_sensor)
151151
print(f" Ambient Sensor: {ambient}")
@@ -372,7 +372,7 @@ async def cmd_status(client: FlameConnectClient, fire_id: str) -> None:
372372
"pulsating": _FlameEffectSetter(
373373
"pulsating_effect",
374374
dict[str, object](_PULSATING_LOOKUP),
375-
"Pulsating effect",
375+
"Pulsating overhead light effect",
376376
),
377377
"flame-color": _FlameEffectSetter(
378378
"flame_color",

src/flameconnect/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class Brightness(IntEnum):
3232

3333

3434
class PulsatingEffect(IntEnum):
35-
"""Pulsating flame effect."""
35+
"""Pulsating overhead light effect."""
3636

3737
OFF = 0
3838
ON = 1

src/flameconnect/tui/app.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ class _ControlCommand(NamedTuple):
109109
_ControlCommand("Flame Color", "Set flame color", "set_flame_color"),
110110
_ControlCommand("Flame Speed", "Set flame speed", "set_flame_speed"),
111111
_ControlCommand("Brightness", "Toggle brightness high/low", "toggle_brightness"),
112-
_ControlCommand("Pulsating", "Toggle pulsating effect", "toggle_pulsating"),
112+
_ControlCommand(
113+
"Pulsating", "Toggle pulsating overhead light effect", "toggle_pulsating"
114+
),
113115
_ControlCommand("Media Theme", "Set media theme", "set_media_theme"),
114116
_ControlCommand("Media Light", "Toggle media light on/off", "toggle_media_light"),
115117
_ControlCommand("Media Color", "Set media color", "set_media_color"),
@@ -472,7 +474,7 @@ def action_toggle_flame_effect(self) -> None:
472474
)
473475

474476
def action_toggle_pulsating(self) -> None:
475-
"""Handle the 'g' key binding to toggle pulsating on/off."""
477+
"""Handle the 'g' key binding to toggle pulsating overhead light on/off."""
476478
from flameconnect.models import PulsatingEffect
477479

478480
result = self._get_current_param(FlameEffectParam)

src/flameconnect/tui/widgets.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,6 @@ def _format_flame_effect(
176176
display_name(param.brightness),
177177
"toggle_brightness",
178178
),
179-
FormattedParam(
180-
" Pulsating: ",
181-
display_name(param.pulsating_effect),
182-
"toggle_pulsating",
183-
),
184179
FormattedParam(
185180
" Media Theme: ",
186181
display_name(param.media_theme),
@@ -201,6 +196,11 @@ def _format_flame_effect(
201196
display_name(param.light_status),
202197
"toggle_overhead_light",
203198
),
199+
FormattedParam(
200+
" Overhead Pulsating: ",
201+
display_name(param.pulsating_effect),
202+
"toggle_pulsating",
203+
),
204204
FormattedParam(
205205
" Overhead Color: ",
206206
_format_rgbw(param.overhead_color),

tests/test_cli_commands.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ def test_all_fields_displayed(self, capsys):
255255
assert "Flame: On" in out
256256
assert "4 / 5" in out
257257
assert "Low" in out
258-
assert "Pulsating: On" in out
258+
assert "Overhead Pulsating: On" in out
259259
assert "Blue" in out
260260
assert "Prism" in out
261261
assert "RGBW(10, 20, 30, 40)" in out
@@ -778,7 +778,7 @@ async def test_dispatch_pulsating(self, capsys):
778778
client.get_fire_overview.return_value = overview
779779
await cmd_set(client, FIRE_ID, "pulsating", "on")
780780
out = capsys.readouterr().out
781-
assert "Pulsating effect set to on" in out
781+
assert "Pulsating overhead light effect set to on" in out
782782

783783
async def test_dispatch_flame_color(self, capsys):
784784
client = AsyncMock()

tests/test_widgets_format.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,8 @@ def test_basic_flame_effect(self):
265265
param = _sample_flame_effect()
266266
result = _format_flame_effect(param)
267267
# Should have 11 tuples (flame_effect + color + speed + brightness
268-
# + pulsating + media_theme + media_light + media_color
269-
# + overhead_light + overhead_color + ambient_sensor)
268+
# + media_theme + media_light + media_color
269+
# + overhead_light + pulsating + overhead_color + ambient_sensor)
270270
assert len(result) == 11
271271

272272
def test_flame_effect_labels_and_actions(self):
@@ -278,11 +278,11 @@ def test_flame_effect_labels_and_actions(self):
278278
assert labels_and_actions[1][1] == "set_flame_color"
279279
assert labels_and_actions[2][1] == "set_flame_speed"
280280
assert labels_and_actions[3][1] == "toggle_brightness"
281-
assert labels_and_actions[4][1] == "toggle_pulsating"
282-
assert labels_and_actions[5][1] == "set_media_theme"
283-
assert labels_and_actions[6][1] == "toggle_media_light"
284-
assert labels_and_actions[7][1] == "set_media_color"
285-
assert labels_and_actions[8][1] == "toggle_overhead_light"
281+
assert labels_and_actions[4][1] == "set_media_theme"
282+
assert labels_and_actions[5][1] == "toggle_media_light"
283+
assert labels_and_actions[6][1] == "set_media_color"
284+
assert labels_and_actions[7][1] == "toggle_overhead_light"
285+
assert labels_and_actions[8][1] == "toggle_pulsating"
286286
assert labels_and_actions[9][1] == "set_overhead_color"
287287
assert labels_and_actions[10][1] == "toggle_ambient_sensor"
288288

@@ -302,16 +302,16 @@ def test_flame_effect_values(self):
302302
assert result[1][1] == "Blue" # FlameColor.BLUE
303303
assert result[2][1] == "5/5" # flame_speed
304304
assert result[3][1] == "Low" # Brightness.LOW
305-
assert result[4][1] == "On" # PulsatingEffect.ON
306-
assert result[5][1] == "Prism" # MediaTheme.PRISM
307-
assert result[6][1] == "Off" # media_light OFF
305+
assert result[4][1] == "Prism" # MediaTheme.PRISM
306+
assert result[5][1] == "Off" # media_light OFF
307+
assert result[8][1] == "On" # PulsatingEffect.ON
308308
assert result[10][1] == "On" # ambient_sensor ON
309309

310310
def test_flame_effect_media_color_format(self):
311311
color = RGBWColor(red=10, green=20, blue=30, white=40)
312312
param = _sample_flame_effect(media_color=color)
313313
result = _format_flame_effect(param)
314-
assert result[7][1] == "R:10 G:20 B:30 W:40"
314+
assert result[6][1] == "R:10 G:20 B:30 W:40"
315315

316316
def test_flame_effect_overhead_color_format(self):
317317
color = RGBWColor(red=50, green=60, blue=70, white=80)
@@ -322,7 +322,7 @@ def test_flame_effect_overhead_color_format(self):
322322
def test_overhead_light_status_display(self):
323323
param = _sample_flame_effect(light_status=LightStatus.OFF)
324324
result = _format_flame_effect(param)
325-
assert result[8][1] == "Off" # Overhead Light uses light_status
325+
assert result[7][1] == "Off" # Overhead Light uses light_status
326326

327327

328328
# ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)