Every logger call in the automation module was a failure path, so a working
automation and a misconfigured one looked identical: nothing happened either
way, as far as the user could see.
Two channels, because they answer different questions. A new AUTOMATION log
origin says what happened and when. A coalesced socket message feeds a "last
fired" column in the panel, which answers whether an automation is alive at
all: one that stays blank while its neighbours tick is the clearest sign that
a filter or a trigger is wrong.
Flood control is the whole difficulty here. onClock fires every second and the
logger queue holds 100 entries, so per-fire logging on a continuous lifecycle
would evict everything else within two minutes. Those cycles log a single
notice per load explaining the silence and nothing after; the rest dedupe
inside a one second window so a rapid reload does not spam. The socket message
still goes out for continuous cycles, throttled to once a second, because the
panel needs it to show the automation is running.
Log.tsx carried six copies of the same twelve line button. Adding a seventh
origin was the moment to collapse them, so the next one is free. The client
log store was also unbounded while the server queue is capped; it now holds
500 entries.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LpbLJVVT26tzWkduck1M9H
* chore: migrate eslint to oxlint
* chore: migrate prettier to oxfmt
* chore: migrate typescript
* chore: toThrow should have a expected value
* chore: cast test value as Day
* chore: small title fix
* chore: mocks should be hoisted
* chore: incorrect async useage
* chore: test should be inside description
* chore: test sohuld include an expeced
* chore: oxfmt
---------
Co-authored-by: alex-Arc <omnivox@LAPTOP-RC5SNBVV.localdomain>
* Fix(automation): Handles undefined values in conditions (#1933)
* Fix(automation): Handles undefined values in conditions
Addresses an issue where conditions with the 'not_equals' operator incorrectly evaluated undefined values. This change ensures that empty string comparisons correctly identify missing values in automation rules.
* Fixes automation "not equals" logic
Simplifies the 'not_equals' condition evaluation in automations by reusing the 'equals' condition, improving code readability and consistency.
Fixes#1932
* Test(automation): Expanding filter condition testing
Expanding test cases to cover various data types and edge case for each operators.
Unexpected behavior have been mark with a TO_DO.
* Fix(automation): Handles default filter case
- Ensures that their is a default scenario.
- Fixing Deepsource issue "No default cases in switch statements JS-0047"
* Test(automation): Remove abstraction in test
* move to test.each
* extract a isEquivalent function
* lowercase contains test
---------
Co-authored-by: Philippe Allard-Rousse <philrousse@gmail.com>
* switch to base ui
* ensure all action types is part of the valitation
* update test
* atempt to do it in the base-ui way
* fix fixing
* allow undefide visible on set timer message
* fix set time not showing
* correct time data for aux set automation
---------
Co-authored-by: Carlos Valente <carlosvalente@pm.me>