mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 22:02:17 +01:00
fix: web UI client review findings (step 2a)
- One socket at a time: a socket being replaced is let go without a word, and connect() or a new token while a reconnect waits opens no second one. A new token reconnects at once, without a refused. - Events that came before the schema go as soon as it is whole, ahead of the sync frames formatted after them, not at syncEnd over newer state. - A schema's hash counts only once it has come whole, so a sync cut short gets it again. - Feeds are subscribed again after a reconnect; an unknown feed is refused. - A long op refused as busy without its id goes again. - A sync without repeaters clears them; order changes name their list; a refused resync is called off. - refused: a listener can close() to stop the retries, which the UI does once /loginContext says a login is needed. The client itself can't tell a refused token from a device that is down. - localStorage keeps the schema by default. minify.py removes its work folder even when a bundle fails. ADR 0005 records the two bundles. - Smaller: ProtoSchema.ROWS/withoutRows, ProtoModel.ITEMS, named type numbers, unused feeds map and FakeSocket.all gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
99c6019431
commit
4415beb4f7
8 changed files with 382 additions and 147 deletions
26
minify.py
26
minify.py
|
|
@ -275,19 +275,23 @@ def minify_all():
|
|||
file_count += 1
|
||||
|
||||
bundled = set()
|
||||
# Inside data/, so it goes even when a bundle fails: left there, it would
|
||||
# end up in the LittleFS image.
|
||||
work_dir = os.path.join(dst_dir, ".bundles")
|
||||
os.makedirs(work_dir, exist_ok=True)
|
||||
for name, parts in BUNDLES.items():
|
||||
joined = os.path.join(work_dir, name)
|
||||
with open(joined, "w", encoding="utf-8") as out:
|
||||
for part in parts:
|
||||
with open(os.path.join(src_dir, part), "r", encoding="utf-8") as f:
|
||||
out.write(f.read())
|
||||
# A file without a final newline would run into the next.
|
||||
out.write("\n")
|
||||
bundled.add(os.path.normpath(part))
|
||||
report(f"{name} ({len(parts)} files)", process_file(joined, os.path.join(dst_dir, name)))
|
||||
shutil.rmtree(work_dir)
|
||||
try:
|
||||
for name, parts in BUNDLES.items():
|
||||
joined = os.path.join(work_dir, name)
|
||||
with open(joined, "w", encoding="utf-8") as out:
|
||||
for part in parts:
|
||||
with open(os.path.join(src_dir, part), "r", encoding="utf-8") as f:
|
||||
out.write(f.read())
|
||||
# A file without a final newline would run into the next.
|
||||
out.write("\n")
|
||||
bundled.add(os.path.normpath(part))
|
||||
report(f"{name} ({len(parts)} files)", process_file(joined, os.path.join(dst_dir, name)))
|
||||
finally:
|
||||
shutil.rmtree(work_dir, ignore_errors=True)
|
||||
|
||||
for root, dirs, files in os.walk(src_dir):
|
||||
for fname in sorted(files):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue