repurpose sv string as an ok flag. nil when ok, non-nil for error.
consistent return state when exiting settings callback w/ raii helper
differentiate between errors and reconnects
consistent with string_view::substr behaviour, without the 'throw'ing part
allow to distinguish sv pointing to nothing and sv originating from some
kind of string (here, result of a slice) by comparing its pointer with nullptr
- customize will topic qos and retain, ref. #2616
- allow to fully replace will and json topics.
empty string means the default <root>/<name>
replacement is taken as-is, after applying placeholders
- validate will and data topic structure before connecting
- validate {suf,post}fix as {suf,post}fix, not as topic
- track 'network' connection, not wifi specifically
currently, there is only wifi, hence register a callback after sta event
- initial timer setup was counting from millis() zero when booting
count from network connection instead, like it would after disconnect
using timed flags for both skip and retry timers
- probe for double and missing hours when daylight saving time happens
this is specific to local time schedules, utc should remain unaffected
- try to stay consistent with current pattern matching happening in loop
when an hour is missing, simply skip to the next schedule
when hour is repeated, make sure to recheck 'earlier' matches
- clean-up tests previously using very-very internal structs
try to handle everything (sic) using `handle_*` functions
from the corresponding namespace
get rid of ptr calculations, use fixed offset & len on the string
cherry-pick char -> int conversion funcs from build .h
adjust datetime struct to be able to use aggregate ctor pre-c++17
> (node:1916) Warning: Closing file descriptor 31 on garbage collection
> (Use `node --trace-warnings ...` to show where the warning was created)
> (node:1916) [DEP0137] DeprecationWarning: Closing a FileHandle object on garbage collection is deprecated. Please close FileHandle objects explicitly using FileHandle.prototype.close(). In the future, an error will be thrown if a file descriptor is closed during garbage collection.
> (node:1916) Warning: Closing file descriptor 32 on garbage collection
per https://nodejs.org/api/deprecations.html#DEP0137
explicitly close after reading
- replace 'pulse #ID TIME TOGGLE' TOGGLE param with 'timer #ID TIME'
- drop timers list command, use 'pulse' or 'timer' interchangeably
- adjust api to use new command string, allow mqtt & http to pulse without 'toggle'
amends 530b64b1
Reference calendar time of other schedules, user-created named events
or the sun{rise,set} (when enabled)
For example
- '15m before sunset'
- '30m after cal#0'
- '1h15m after "foobar"'
Empty time spec is allowed, defaults to '1m'
'before sunrise' is the same as '1m before sunrise'
Internals are reworked to handle a more generalized 'Event' type, based
on the 'time point' and 'event' base classes fron sunrise and sunset
Sunrise and sunset should also track 'last' event as well as 'next
(not currently displayed anywhere, though)
ffs -> clz minus int size, otherwise multiple match order is broken
experiment with future masking, using ffs correctly this time
update tests to handle all branches of closest_delta, both future and past
- distinguish heading and selected menu item, apply menu item
background color after panel item is selected
for now, both heading and :first-child use a different color
- add x3 transition time to stall animation from hover & focus
otherwise, background colors may linger between clicks