Repository navigation
Conversation
kazad
force-pushed
the
20261014-guided-tutorial
branch
from
October 14, 2026 13:24
99751d3 to
092f09c
Compare
kazad
force-pushed
the
20261014-guided-tutorial
branch
from
October 14, 2026 17:14
092f09c to
03c3ed4
Compare
Author
|
Note on attribution: this PR is Jonathan Fremerman's (@jfremerman). It was opened through a shared Claude account that is signed in as @kazad, so GitHub lists that account as the opener. The commits have been re-authored under @jfremerman, who directed, tested on hardware and signed off each change, with the Co-Authored-By trailer recording Claude's part. Nothing here was created unsupervised. Generated by Claude Code |
The Configuration page had grown a section at a time, and its order no longer matched how an owner works through a node. Node Claim sat near the bottom of a long Administration group, the centre frequency lived in Capture while the tower it belongs to was two sections up, and the side menu's group headings looked the same as the links under them. The page is now five groups: Node (Identifiers, Mode, Node Claim, Network), Radar (Cached Towers, Tower, Capture, Tracking), ADS-B (ADS-B Truth, tar1090), Other (SSH Access, Setup Wizard) and Support (Cloud Services, Remote Support, How We Reach You). Each group is titled in the page itself with a rule running out to the right, the side menu's group titles carry the same rule, and a section has one name, written the same in the menu, in its heading and in the wizard hints that point at it. What was "Tower" is "Cached Towers" and what was "Location" is "Tower". Center Frequency moves into Tower's transmitter block, after Name, because it is a property of the tower and not of the capture. Tower shows the receiver's name read-only; it is changed under Identifiers, which also shows the server's identifier for the node beside the local one. The form Apply changes submits now wraps exactly the Radar and ADS-B groups. That is the property the regrouping must not break: a radar field left outside the form is missing from the POST, which the server reads as that setting having been cleared. tests/test_config_layout.py is new and holds the order, the group titles, the form's membership and the centre frequency's new home. test_app.py, test_claim.py, test_contact.py and test_node_name.py follow the renamed sections. Docs: config-editor.md gains a Page layout section and uses the new names throughout; setup-wizard.md, device-state-and-telemetry.md and remote-access.md follow the renames. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AoHZhvWU7Ge89Cm6YgrExB
A new owner finishes the setup wizard and lands on pages nobody has explained: which card opens what, what the dots on the radar display mean, which Configuration settings are worth touching and how to tell a good signal from an overloaded one. /tutorial starts a tour drawn over the real pages. Each step dims the page, lights one region, points an arrow at it and says a sentence or two in a card placed in the margin, with Previous, Next and Skip Tutorial. The server owns the steps (src/tutorial.py) and every step is a URL, so a reload or the Back button keeps the place, and a stale or hand-edited link shows the plain page. Moving between pages is done by the owner clicking the lit card or tab, so the tour teaches the navigation it depends on. Steps about the radar views and the signal meter carry an example picture, so the step can point at what to look for. The Summary steps only run on a network with more than one node; every run ends on a closing Summary step that points back at Resources and Help. There are 29 steps with the Summary steps and 24 without. The wizard's last page recommends the tour, and Configuration gains a Tutorial section under Other that launches it at any time. While the wizard is in progress /tutorial redirects to it, because Home and Configuration both bounce there and a tour would lose its place. The card and arrows stay hidden until a smooth scroll has settled. Laid out mid-scroll they flashed up in the wrong place before jumping to the right one. The example pictures in static/tutorial are real screenshots, apart from signal-overload.png, which is rendered from the page with simulated readings and should be replaced with a real capture when there is one. The Minimum SNR step states the default as 7; that default is set in retina-node and was not verified from this repository. The margins only fit the card beside the Configuration page in a window of about 1580 px or wider; narrower than that the card sits over part of the page, and at phone width several steps have no arrow. tests/test_tutorial.py is new: step order and numbering, one or two sentences per step, every target present on its page, image sizes matching the files, the single-node run, the wizard redirect and stale links. The overlay's drawing is not covered by the tests: it was checked in a browser at 1920, 1280 and 390 px wide, and by eye on a test node with a radio attached. Docs: new features/tutorial.md, added to the map in docs/README.md; architecture.md, config-editor.md, fleet-and-naming.md and setup-wizard.md updated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AoHZhvWU7Ge89Cm6YgrExB
kazad
force-pushed
the
20261014-guided-tutorial
branch
from
October 15, 2026 14:23
03c3ed4 to
95b494f
Compare
Contributor
|
Re-opened as #120 under @jfremerman so the PR and the commits carry the same author, as requested. Same branch and code. Generated by Claude Code |
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.
Split out of #113 at the reviewer's request (4 of 4). Same code as commit eb1e309 there, rebased onto current
main. This branch contains the other three (#115, #116 and #117 are merged into it), because the tour points at things those PRs add; once they merge, this PR reduces to the one tutorial commit.What
/tutorialstarts a guided tour drawn over the real Summary, Home and Configuration pages. Each step dims the page, lights one region, points an arrow at it and says a sentence or two in a card, with Previous, Next and Skip Tutorial. The wizard's last page recommends it, and Configuration gains a Tutorial section under Other that launches it at any time.Why
A new owner finishes the setup wizard and lands on pages nobody has explained: which card opens what, what the dots on the radar display mean, which settings are worth touching, and how to tell a good signal from an overloaded one.
How it works
src/tutorial.py) and every step is a URL, so a reload or the Back button keeps the place and a stale or hand-edited link shows the plain page./tutorialredirects to it, because Home and Configuration both bounce there.For the reviewer
static/tutorial/adsb-map.jpgis a real capture, used as is. Jonathan and Josh agreed to keep it uncropped.signal-overload.pngis rendered from the page with simulated readings and should be replaced with a real capture when there is one.Testing
test_an_unwritable_location_reports_rather_than_raises, the root-only sandbox failure that also fails on untouchedmain).ruff check .and the vulture hook pass.tests/test_tutorial.py(step order and numbering, one or two sentences per step, every target present on its page, image sizes matching the files, the single-node run, the wizard redirect, stale links).mainon hardware.Docs
New
docs/features/tutorial.md, added to the map indocs/README.md;docs/architecture.md,docs/features/config-editor.md,docs/features/fleet-and-naming.mdanddocs/features/setup-wizard.mdupdated.After this
A real overload capture, and the setup wizard update to match the regrouped Configuration page.
🤖 Generated with Claude Code
https://claude.ai/code/session_01AoHZhvWU7Ge89Cm6YgrExB
Generated by Claude Code