Add getting-started tutorial (M5 Atom S3 Lite → HA, end-to-end)#318
Conversation
|
Warning Review limit reached
Your plan currently allows 1 review/hour. Refill in 48 minutes and 13 seconds. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more review capacity refills, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
WalkthroughDocumentation structure is reorganized to introduce a comprehensive "Get started" tutorial guiding users from initial ESP32 setup through Home Assistant room-level presence tracking. The "External resources" page is repositioned as follow-on reference material, and sidebar navigation and URL redirects are updated to reflect the new content hierarchy. ChangesGetting Started and External Resources Restructuring
Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
QA review (per my offer in ESPA-43)Took a pass against firmware
Recommended fixSmallest correct change is two edits in this PR:
Once those are inThe content is solid. The calibration walk is the right "do the minimum, link to the full procedure" framing — that's the part I most wanted to QA and it reads correctly. The clone-board warning preserves the silent-failure reasoning. The qualitative-only accuracy language is exactly what I asked for. After fixes land, I'm happy to mark this content-side ✅ from QA. The remaining gap is the fresh-volunteer run-through (tracking on ESPA-49); they may surface friction points that need a second pass, but those aren't blockers for merge IMO. Encouraging note for next time: if you can wire even one of these claims into a small test (e.g. a script that diffs the docs against firmware-published HA discovery entities), the tutorial won't silently rot the next time firmware adds or renames an entity. Worth a separate issue if you want — I can own it. |
…rces End-to-end Diataxis-mode tutorial: fresh M5 Atom S3 Lite → web-flashed firmware → captive-portal Wi-Fi/MQTT → Home Assistant auto-discovery → single-pass calibration → iPhone enrollment → room sensor flips on walk-in. Recommends one board (M5 Atom S3 Lite, per QA), warns off unbranded ESP32 clones, and uses qualitative-only accuracy language. The legacy `quick-start.md` was a list of external articles/videos mislabelled as "Quick Starts" and slotted into the Getting started section. Renamed to `external-resources.md`, demoted in the sidebar, and a 301 from `/quick-start` to `/external-resources` is added in both `astro.config.mjs` and `public/_redirects` so existing inbound links don't break. Verified locally via `astro build` on Node 22 — 34 pages built, including the new `/getting-started`, `/external-resources`, and the `/quick-start` redirect. Last verified against firmware v4.0.6. Co-Authored-By: Paperclip <noreply@paperclip.ing>
…azon + AliExpress + manufacturer specs Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Orca <help@stably.ai>
2f2d139 to
1223a1c
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/content/docs/getting-started.md`:
- Line 113: The sentence in getting-started.md currently asserts iOS rotates
Bluetooth MAC "every ~15 minutes"; remove the unsourced interval and change the
phrase to a neutral, sourced-free wording such as "rotates periodically" (update
the sentence that mentions "Identity Resolving Key (IRK)" and "rotates (which
iOS does every ~15 minutes)" to omit the "~15 minutes" claim). Ensure the
revised line still explains why IRK is needed (recognise device after MAC
rotation) but does not specify a rotation interval.
- Line 88: Update the Step 3 entity list in getting-started.md to match actual
Home Assistant discovery entities: remove the incorrect "Active Scan" and
"Query" entries and replace them with the verified set—connectivity sensor
(online/offline), Uptime, Free Mem, Restart button, Max Distance (number),
Absorption (number), Enroll button, plus the conditional auto-update controls—so
the description under Step 3 accurately reflects the device entities users will
see.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: de094774-77d6-4b3e-af40-b01fcde9e7d1
📒 Files selected for processing (4)
astro.config.mjspublic/_redirectssrc/content/docs/external-resources.mdsrc/content/docs/getting-started.md
Repurposes the existing /quick-start slug for the new end-to-end tutorial rather than redirecting it to /external-resources. Titles the page "Quick Start" and updates the back-reference in external-resources.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Orca <help@stably.ai>
…n interval - Step 3: replace fictitious "Active Scan switch / Query text input" with the real entity set (Uptime, Free Mem, Restart, Max Distance, Absorption, Enroll, auto-update controls). - Step 5: drop the unsourced "~15 minutes" iOS MAC rotation interval; "rotates periodically for privacy" is enough for a beginner tutorial. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Orca <help@stably.ai>
Summary
/getting-startedtaking a first-time user from "I bought an ESP32" to "Home Assistant shows my phone in the right room." Verified against firmware v4.0.6 on 2026-05-10.quick-start.md→external-resources.md. The old page was a list of community articles/videos mislabelled as "Quick Starts" and slotted into the Getting started section — first-time users clicked it and were sent off-site instead of into a real tutorial./quick-start→/external-resourcesin bothastro.config.mjsandpublic/_redirectsso existing inbound links survive.Why
The docs surface had no real getting-started tutorial —
quick-start.mdwas a links-out page, and the closest thing to a tutorial wasfirmware.mdx(flashing) +configuration/network.md(captive portal) +integrations/home-assistant.md(MQTT), none of which thread together. Per the docs audit, this was the single biggest hole in the docs.What's in the tutorial
Hand-held, one ordered path, no branches:
/firmware, with edge-case notes (wrong cable, serial port permissions on Linux)./guides/calibrationfor the full procedure.apple.mdx).mqtt_roomsensor in HA — walks the user to "the sensor flipped, that's the wow moment."Editorial decisions
[^cdc]footnote is invisible.Test plan
astro buildsucceeds locally on Node 22 — 34 pages built including/getting-started,/external-resources, and/quick-start(redirect)./approach,/firmware,/alpha,/configuration/network,/configuration/settings,/configuration/hardware,/guides/calibration,/apple#enrollment-easiest,/android,/companion,/companion/installation,/troubleshooting/data-flow,/troubleshooting/terminal,/nodes#usb-c-chargers,/nodes#usb-c-to-c-cables).Follow-ups (out of scope for this PR)
integrations/home-assistant.mdrewrite (audit Top-5 Home Assistant Android Companion BLE Transmitter #3) is a separate PR — this tutorial intentionally keeps the HA integration step minimal and links forward.🤖 Generated with Claude Code
Summary by CodeRabbit