Repository navigation
Conversation
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
… page Any web page in the browser can send requests to 127.0.0.1 with a valid Host header, and behind a permissive CORS policy read the replies, so the Host check alone let it save site.toml; a server bound beyond loopback took any Host. The peer address, Origin and Sec-Fetch-Site are checked. AI-assisted: Claude Opus 5.5
…ng tables A patched file is read back and must give the model that was sent, so a layout the patcher does not follow is refused rather than written. AI-assisted: Claude Opus 5.5
…adable files AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…e saving AI-assisted: Claude Opus 5.5
Breaking: schema 3 calibration files are refused, so a calibration is collected again. swarmit's own calibration reader still expects schema 3 and needs its matching change before the dashboard reads these files. AI-assisted: Claude Opus 5.5
… block AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…'s next round AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…tangle Breaking, cross-repo: the messages and the config page (magic SWRP, 872 bytes) only match a swarmit bootloader and net core that store stations by mask, and swarmit's Python must accept mask messages before it relays them. Robots below device info 4 are refused with a reflash. AI-assisted: Claude Opus 5.5
…y-run AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…s of their own AI-assisted: Claude Opus 5.5
Breaking wire change, landing with DotBot-libs' 16-bit calibrated field: every advertisement field after the mask moves by one byte and the vendored dotbot_control.wasm is rebuilt at ABI 3 from that change. With the one-byte mask, a calibration naming station 8 or above read every sandbox robot as missing it and resent homographies on each advert. AI-assisted: Claude Opus 5.5
…obots AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…s zero AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
… join AI-assisted: Claude Opus 5.5
…on stills AI-assisted: Claude Opus 5.5
…on save AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…moving ones AI-assisted: Claude Opus 5.5
…leave omitted tables AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…s charger AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
… name AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…ite pack AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
… panel AI-assisted: Claude Opus 5.5
…anged placed_from keeps naming the free-frame spin calibration that `--append` points back to; the calibration an edit was made from is edited_from. AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #345 +/- ##
==========================================
+ Coverage 88.21% 88.52% +0.31%
==========================================
Files 227 243 +16
Lines 36147 39642 +3495
Branches 2324 3012 +688
==========================================
+ Hits 31886 35092 +3206
- Misses 4257 4545 +288
- Partials 4 5 +1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #330 (site editor as a console panel), on #329, #328, #327, #326, #315 and the LH2 stack to #343 that #326 carries. Merges after them; until then the diff also carries their commits.
Each LH2 station of a calibration carries a
valid_mmrectangle, the part of the site its fixes are trusted in. Until now that rectangle came out of the solve and the only way to change it was to edit the TOML by hand, which changes the file without changing its id. This adds a way to redraw those rectangles and save the result properly, as a new calibration.dotbot/calibration/station_boxes.py):reboxedreturns the source with the named stations' rectangles replaced, the fence recomputed as their union, and everything else, homographies included, unchanged. The result gets a new id,edited_fromset to the source id (a new metadata field;placed_fromkeeps naming the free-frame spin calibration that--appendpoints back to), and a tag of<tag>-boxes, numbered when taken. The source file is never written. Refused, with the reason: a rectangle that is empty, reaches below zero, reaches outside the site's extent or does not fit the wire encoding; a calibration not in the site's frame (free mode, or another site or anchor); a hand-edited source (file id does not match content); no rectangle changed. A rectangle that leaves out spin circles or placement points its station was calibrated on gives a warning, not a refusal.dotbot swarm calibrate-lh2 rebox SOURCE --station N=RECT [--station ...] [--tag T] [--site S], where RECT isx,y,w,hin mm or a site area name such asfield+staging. It prints each station's old and new rectangle, the warnings, the saved path, and thecalibrate-lh2 pushline. It sends nothing./api/calibrations/{spec}/boxesroute, which refuses with 409 when site.toml changed since the page loaded it, and shows the new id, the warnings and the push line. The calibration list now says which entries are in the site's frame. Works in the standalonedotbot site editand in the console panel from dotbot/console-web: open the site editor as a console panel #330, since both mount the same routes.Validation. pytest (calibration, CLI and route tests: each refusal, the warning, tag numbering, the saved file reading back with the source untouched) and vitest (box geometry, the tool's draw, undo and save flow); typecheck, lint and build pass. Two failures in the full run are not from this branch:
test_camera_service::test_a_registration_without_controls_warns_about_nothing, and ninetest_calibration_sessiontests that needopencv-python, which the local venv lacks; both fail on the base too. By hand: headless browser smoke tests of the tool on copies of a real two-station site, with the simulator running 6 robots. No robot-side test of this feature.dotbot/console-web/src/siteEditor/StationBoxesPanel.tsxdotbot/tests/test_calibration_station_boxes.pydotbot/calibration/station_boxes.pydotbot/console-web/src/siteEditor/siteEditor.test.tsxdotbot/console-web/src/siteEditor/SiteEditor.tsxdotbot/console-web/src/siteEditor/Canvas.tsxdotbot/cli/swarm_lh2.pydotbot/tests/test_site_placement.pydotbot/site_placement.pydotbot/console-web/src/siteEditor/boxes.tsdotbot/console-web/src/siteEditor/boxes.test.tslighthouse2.py,placement.py,api.ts,types.ts,test_site_editor_panel.py