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
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
…e floor AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…itor AI-assisted: Claude Opus 5.5
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #346 +/- ##
==========================================
+ Coverage 88.21% 88.56% +0.35%
==========================================
Files 227 245 +18
Lines 36147 40086 +3939
Branches 2324 3126 +802
==========================================
+ Hits 31886 35502 +3616
- Misses 4257 4577 +320
- Partials 4 7 +3
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 #345 (station boxes), and through it on #330, #329, #328, #327, #326, #315 and the LH2 stack to #343. Merges after #345; until then the diff also carries their commits.
Two additions to the site editor, both aimed at fitting a site to the robots as they actually sit on the floor.
Live robots in the console panel. When the editor is opened from the console, it draws the console's robots over the site: positions and headings from the fleet stream the console already has, no new subscription. Positions are only meaningful in the frame of the calibration that produced them, so the layer is hidden, with a note saying why, when the calibration the controller serves records another site or another anchor; robots holding a calibration of another site are left out and counted in the note. With a station box selected (#345), robots are tinted by whether they sit inside it. To make the frame check possible,
GET /controller/sitenow names the served calibration'ssiteandanchorin its calibration block. The standalonedotbot site edithas no fleet, so it has no layer.Turn site on floor. A site is sometimes drawn rotated relative to how it sits in the room. Turning it moves the frame with everything in it, so no number in site.toml changes except the anchor line: the anchor describes where zero is, and zero has moved. What does change is every calibration of the site, since each maps sweeps to site coordinates. Each chosen calibration is re-expressed by the inverse rigid move (homographies and placement points; station rectangles and fence are site numbers and stay) and saved as a new calibration with
edited_fromset and a-turnedtag. The source files are never written.dotbot site turn [SITE] --rotate DEG [--about x,y] (--anchor TEXT | --note) [--calibration ID|TAG ...] [-y].self-defined, or a calibration was collected at points measured from it, the turn takes zero off something measured in the room. The CLI asks (or takes-y); the editor asks for a confirmation. Points landing outside the extent, and boxes leaving out spin circles, are warnings.calibrate-lh2 pushline is printed; robots keep the old frame until those are pushed.Validation. pytest (the reframing math round-trips, every refusal, nothing written on refusal, the anchor-only site.toml edit, CLI and route) and vitest (live layer frame check and hiding note, the turn panel 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 live layer and the turn on copies of a real two-station site, with the simulator running 6 robots. The developer then used the turn on a real site, producing calibration806d1242; beyond that there was no robot-side test of these features.dotbot/tests/test_site_turn.pydotbot/calibration/site_turn.pydotbot/console-web/src/siteEditor/TurnPanel.tsxdotbot/console-web/src/siteEditor/siteEditor.test.tsxdotbot/cli/site_cmd.pydotbot/console-web/src/siteEditor/Canvas.tsxdotbot/console-web/src/siteEditor/SiteEditor.tsxdotbot/site_placement.pydotbot/console-web/src/siteEditor/live.tsdotbot/console-web/src/siteEditor/live.test.tsdotbot/console-web/src/siteEditor/types.tsdotbot/console-web/src/siteEditor/api.tsApp.tsx,Inspector.tsx,types.ts,models.py,site_editor.py,site_toml.py,test_server.py