Repository navigation
Conversation
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
The Retina network map and the Retina dashboard are now one site, so the Summary page offered two links where there is one place to go, and the banner button still named the map alone. The only chat link under Help was the blah2 project's Discord, which is not where to ask about a Retina node. Resources is now Offworld Labs, Retina Wiki, Network Map and Dashboard (app.retina.fm), Passive Radar News and the blah2 Discord, running from ours out to the wider field. Help is our own channels only: the Retina Discord first, then the support email. The banner button is Network Map and Dashboard and goes to the same address as the card. The Retina Discord link is an invite that expires on 6 November 2026. It needs replacing with a permanent invite before a release carries this. tests/test_fleet.py covers the banner link, the Resources order, Help holding our own channels only and the blah2 Discord being a resource. Docs: fleet-and-naming.md (Resources and Help links). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AoHZhvWU7Ge89Cm6YgrExB
The simulator on the Summary page drew the sky and the delay-Doppler plot side by side, each too small to read, and at its widest the antenna's beam ran off the edge of the sky panel. Nothing said the beam could be steered, and after a mouse grab the handle kept a black focus box. The two panels are now stacked at full width, sky first. The sky is drawn 1.3 times further out, so the node, the tower and the beam at its widest fit in the panel with room around them, and the beam reaches a fixed range instead of the edge of the drawing. The aircraft's heading is smoothed along the drawn path, which at the larger size had shown as a sawtooth in the Doppler trace. The handle is labelled "Grab to Aim" and the label moves with it. It is revealed by the script, so the page without JavaScript does not promise something that cannot be done. A mouse or touch grab no longer leaves a focus box; keyboard focus thickens the ring instead, so the handle is still findable by Tab. The section is titled Doppler Mapping Tool. One limit remains: steered far to one side at its widest, the beam still runs off the bottom of the panel. tests/test_fleet.py covers the section title, the stacked layout, the view box, the label being hidden until the script runs and the missing focus box. The drawing itself was checked in a browser, not by the tests. Docs: architecture.md (the simulator's geometry and the handle). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AoHZhvWU7Ge89Cm6YgrExB
…eeps Home listed Controller third, between the live radar views and the map. Controller is the way into everything the other cards do not cover, so it reads better as the last card: Passive Radar, Max-Hold, ADS-B Map, Tracker, Controller. The Tracker card now says it keeps up to 4 hours of history. tests/test_home_services.py is new and holds the order and the Tracker wording. Docs: architecture.md (Home's service cards). 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
Purple10101
left a comment
There was a problem hiding this comment.
Thanks for this. Before I review in depth, could you split it into four PRs, one topic each? The commits already line up:
- Group the Configuration page (3206489)
- Summary links and the Doppler Mapping Tool (cafb558 + f84f2a6)
- Home card order (f498ced)
- The guided tutorial (eb1e309). This one depends on the other three, so please open it last, on top of them.
PRs 1-3 each apply cleanly to current main and pass the full suite on their own.
Two things will block merging, so it's worth fixing them while you split:
- PR 2: the Retina Discord invite expires on 6 November. It needs to be a permanent invite before this merges, not just before a release.
fleet-and-naming.mdalready says it must be permanent. - PR 4:
static/tutorial/adsb-map.jpgshows where a real node is. Please crop it so the receiver marker and the town names can't be seen.
I've tested this branch on a node and found issues that need fixing in the Configuration and tutorial changes. I'll leave detailed notes on each PR once they're open.
|
Split into four PRs as requested: #115 (Configuration page), #116 (Summary links and the Doppler Mapping Tool), #117 (Home card order) and #118 (the guided tutorial, which carries the other three until they merge). All four are rebased onto current Generated by Claude Code |
What
A guided tutorial that walks a new owner through the Summary, Home and Configuration pages, together with the page changes the tour was written around: a regrouped Configuration page, updated Summary links, a larger Summary simulator and a reordered Home.
It is one branch with five commits, one per topic, so each can be read on its own. The first four each stand alone on
main; the tutorial sits on top of all four.Why
An owner who finishes the setup wizard 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. Writing the tour showed where the pages themselves were in the way, so those are fixed first.
The five commits
1. Group the Configuration page around how an owner uses a node
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).
tests/test_config_layout.pyholds this.2. Link Summary to the combined dashboard and to our own Discord
app.retina.fm), Passive Radar News, blah2 Discord.3. Stack the Summary simulator and name it Doppler Mapping Tool
4. Put Controller last on Home and say how much the Tracker keeps
Cards run Passive Radar, Max-Hold, ADS-B Map, Tracker, Controller. The Tracker card says it keeps up to 4 hours of history.
5. Add a guided tutorial across Summary, Home and Configuration
/tutorialstarts 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, with Previous, Next and Skip Tutorial.src/tutorial.py) and every step is a URL, so a reload or the Back button keeps the place and a stale link shows the plain page./tutorialredirects to it.Testing
main(which has gained 20261008 - Stop blah2 before restarting the SDRplay service #111 and 20261008 - Rename routes/mode.py to routes/sdr.py #112 since the branch was made): 1090 passed, 1 failed. The one failure istests/test_node_name.py::test_an_unwritable_location_reports_rather_than_raises, which fails in the sandbox the suite ran in because it runs as root there, and fails the same way on untouchedmain.ruff check .and the vulture hook pass. The branch merges without conflicts.tests/test_config_layout.py,tests/test_home_services.pyandtests/test_tutorial.py;tests/test_fleet.pygains the links and simulator tests.mainas of 20261005 - Say what each notch filter blocks and when to leave it on #109 plus 20261007 - Show when the radio is overloaded, now that it keeps running #110: the service restarted cleanly with no traceback or HTTP 500 in its log, all 29 step pages loaded with something to highlight, the page layouts matched, the settings files were unchanged and the radar stack stayed up. The tour was then looked over by eye in a browser on that node.Not verified
For the reviewer
static/tutorialare real captures, used unaltered, exceptsignal-overload.png, which is rendered from the page with simulated readings and should be replaced with a real capture when there is one. Please confirm you are content for the captures to be public.Docs
docs/features/tutorial.md, added to the map indocs/README.md.docs/features/config-editor.md(new Page layout section, renamed sections),docs/features/fleet-and-naming.md(Resources and Help links),docs/architecture.md(simulator, Home cards, tutorial),docs/features/setup-wizard.md,docs/features/device-state-and-telemetry.mdanddocs/features/remote-access.md(renamed sections).After this
🤖 Generated with Claude Code
https://claude.ai/code/session_01AoHZhvWU7Ge89Cm6YgrExB
Generated by Claude Code