Skip to content

Release: Throttle Setup Wizard 0.1.0 - #17

Merged
Flazzarious merged 40 commits into
mainfrom
develop
Oct 11, 2026
Merged

Flazzarious merged 40 commits into
mainfrom
develop

Conversation

@Flazzarious

Copy link
Copy Markdown
Owner

Release of Throttle Setup Wizard 0.1.0 (AG-TrbSt, spec 002), merged into
develop in #16.

  • Guided turbine throttle setup on one CUT/RUN safety switch, with the
    recommended values (Max -80/80, Throttle-Idle 20%, Throttle-Cut -100%,
    -125% for Xicoy) and Open buttons for each menu
  • Verify: output check and the four switch/stick positions, with diagnosis
  • Failsafe hand-test confirmation and summary
  • Optional "Turbine off/on" voice callouts for Sounds on Event
  • Pilot guide, JETI Studio page, icon, README section

After merge: tag AG-TrbSt-v0.1.0 on main, then publish Apps.json.

🤖 Generated with Claude Code

Flazzarious and others added 30 commits October 2, 2026 15:54
Pre-spec notes for a one-time setup wizard that guides the native
Throttle Cut / Throttle Idle / endpoint / failsafe setup for turbines
and verifies the throttle output. Includes the manual procedure,
success criteria, edge cases, open research items, and API findings
(Lua can't write model settings; it can read servo outputs and open
menus via system.openExternal). Run /speckit-specify from this file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfkMcX3ESwF8EsaLrEGRxz
Add a constraint that the app installs on its own (its script and
asset folder only), with any shared lib modules listed in the plan
and bundled in install instructions, plus SC-009 to test it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfkMcX3ESwF8EsaLrEGRxz
Bring the turbine draft branch up to date (Speed Gauge 0.3.0, Flameout
Alarm 0.1.0, current constitution and lib modules) before specifying.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfkMcX3ESwF8EsaLrEGRxz
/speckit-specify from docs/drafts/turbine-throttle-setup.md. A one-time
setup wizard: guided native setup (endpoints, Throttle Cut/Idle on one
safety switch, failsafe) with "Open menu" jumps, then a four-state
verify of the throttle output and a failsafe hand-test confirmation.
The app never writes settings or drives outputs (constitution I) and
installs standalone. Quality checklist passes; five research items
remain for clarify/plan. Adds the app to the CLAUDE.md apps table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfkMcX3ESwF8EsaLrEGRxz
His DS-24 II uses SF, the short silver two-position toggle next to SE,
as the throttle safety switch (not the red top-edge switch). Recorded
as an example configuration in the reference setup, with a resized
photo in specs/002-turbine-throttle-setup/assets/. Which SF position
is OFF is still to be confirmed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfkMcX3ESwF8EsaLrEGRxz
Clarifications (2026-10-10): clean-run rule for completion, uneven
endpoints allowed, idle position limits 10-30% with a warning under 15%,
setup changes clear a saved result, default targets 1000/1200/1900 us.
FR-018 amended to standing reminders (trims and flight mode are not
readable from Lua).

Plan, research (R1-R13), data model, contracts (settings math, screens,
verify), quickstart and 37 tasks. Settings formulas confirmed against
servo monitor readings on two of Aaron's turbine models. Analysis fixes:
backwards switch caught by the output check, OFF position on the summary,
engine warning on Setup inputs.

Ignore model files copied from the transmitter (they hold TX/RX IDs).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New app src/Apps/AG-TrbSt.lua, enough for the calibration run (T008):
settings load/clamp/validate (14 keys), settings math and target
validation per contracts/settings-math.md, form skeleton with a minimal
Home, and the Setup inputs screen with live switch, stick and output (us)
readouts, Learn, target and tolerance fields, and temporary Servo/Other
buttons that open the menus.

types/jeti.lua: openExternal comment now documents the ":menu" names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
App (menu name now "Throttle Setup Wizard"):
- Switch screens with form.reinit(1) only; screen comes from `cur`.
- Live switch/stick rows show the raw percent; "Signal now" explains
  itself; clearer Learn and output hints.
- Learn refuses a stick not assigned as proportional (P).
- Lua errors while building a screen or updating labels are shown on
  the form and printed, instead of closing the form.

Findings recorded (jeti-api-notes, research): key codes are bit flags;
F5/ESC close a form unless preventDefault; addInputbox(item, true) only
allows proportional; getInputs("O<n>") read 1000-2000 us on the
transmitter; exact Throttle Cut / Throttle Idle labels on 6.x.

docs/apps/throttle-setup-wizard.md: step-by-step pilot guide (travel,
Throttle Cut and Idle on one switch with the tick/cross check, failsafe,
expected readings, Teach RC), with Aaron's Other Model Options
screenshot. Recommends the JETI 2-position locking switch.

Spec: follow-up idea to read (never write) the model file and show
current vs needed values.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cropped from Aaron's photo (specs/002-turbine-throttle-setup/assets/safety-switch-sf.jpg) to show SF next to SE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pilots often say 'cut off' for the running position, so OFF was ambiguous. App labels, Learn hint, spec, contracts, quickstart, tasks and the pilot guide now say CUT. Failsafe 'Off (no pulse)' is unchanged. The internal key offSg keeps its name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The description page now leads with why one CUT/RUN safety switch beats the trim method (Xicoy's warning about digital trims), then the nine things the app adds even when the setup is done by hand, a short how-to, and the manual setup. Spec overview and the README task (T033) carry the same points.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…idle rule

Test model, travel +/-100%, cut -100%, idle 20%: CUT 1000/1000, RUN 1100/2000 us as predicted. getInputs(O<n>) is the final output after Throttle Cut.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From Aaron's Servo Setup screenshot: guide step 1, verify messages, settings-math display rule, quickstart, T012 and the pilot guide say Max negative / Max positive (and leave the limits at -125/125%). Also records that openExternal(':servoSetup') returns to the app's screen on Esc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…25%)

Per Aaron: no custom targets. The pilot picks the ECU type (Xicoy or other), which sets the Throttle-Cut value and the targets verify expects (1000 or 1100 / 1200 / 1900 us). The ECU must always be re-learned afterwards; the app never suggests skipping Teach RC (new SC-010). Spec, data model, settings-math, screens, quickstart, plan, research and tasks (T003/T004/T006 redone) updated; the app's Setup inputs screen now has an ECU choice instead of target fields. Pilot guide updated, with Aaron's Throttle Cut screenshots for -100% and -125%. Also records Servo Setup wording and openExternal behavior.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
App hints, screens contract, FR-003 and the pilot guide say Other has been tested with KingTech and Swiwin and should work with most other ECUs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Test model at -80/80, Throttle-Cut -125%, idle 20% read exactly the Xicoy targets in the app. Manual failsafe test confirmed as the check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pilot guide, app step 4 text and research now explain why failsafe matters and give the path Model > Device Explorer > receiver > Failsafe: enabled, throttle output Off (no pulse), save to the receiver. Hold must never be used for a turbine throttle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
openExternal(':otherProps') returns to the app on Esc like Servo Setup; +/-125% travel reads correctly (no clipping). Failsafe app text shortened to 32 chars.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Device Explorer > receiver > Configuration > Fail-Safe: Fail-Safe Enabled, delay 1.5s, throttle OutPin mode Out OFF. Guide adds the receiver Configuration and Fail-Safe screenshots and warns against Hold and against Fail-Safe mode at 0% (mid-throttle). FR-010, app step 4 text and research updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Aaron chose JETI's own Sounds on event over the app playing callouts, so the app stays removable. Spec (US4, FR-026..029, SC-011), research R14/R15, plan, data model, screens contract (Voice callouts screen) and tasks T038-T044. New tools/voice/make_turbine.py generates TurbOff.wav / TurbOn.wav in the Amy voice (T038).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r transmitters

New Voice callouts screen: shows whether TurbOff.wav / TurbOn.wav are in /Audio, copies missing ones from /Apps/AG-TrbSt in 2 KB chunks across loop() calls (never overwrites, verifies sizes, removes a bad copy), opens Sounds on event, credits the Amy voice. Debug prints from calibration removed. FR-025/R13 revised per Aaron: no device block; features the firmware lacks are hidden, so older DC/DS transmitters should work.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Captures how Speed Gauge, Flameout Alarm and Throttle Setup Wizard voice files are made: Piper Amy via tools/voice helpers, file format, self-checks, CC BY-SA credits, playFile vs Sounds on event, and testing on the transmitter (the emulator plays no Lua audio). CLAUDE.md points to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…de step (T039, T043)

Generated with tools/voice/make_turbine.py (0.75 s and 0.70 s, self-check passed). Files are CC BY-SA 4.0, credited in src/Apps/AG-TrbSt/CREDITS.txt, CREDITS.md and the pilot guide; tools/voice/README.md documents the script. Pilot guide adds optional step 7: copy, then Sounds on event (CUT -> TurbOff, RUN -> TurbOn).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Aaron compared speeds 1.5, 1.3, 1.15 and 1.0 and chose 1.15. The committed TurbOff.wav / TurbOn.wav are the exact files he approved (0.92 s / 0.87 s); make_turbine.py defaults to 1.15; README, research R14 and the jeti-voice skill updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On Aaron's card pilots' callouts live in /Audio/en and /Audio holds only JETI's system sounds, and the first copy left no file. The copy now goes to /Audio/<getLocale()> and a failure names its step (read, create, write, size a/b). Spec, screens contract, research R15, pilot guide and api-notes updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…vents

Copy to /Audio/en verified (files picked in Sounds on event). Instructions in the app, screens contract and pilot guide now say to add two events, CUT -> TurbOff.wav and RUN -> TurbOn.wav; the app can't add them itself (no Lua API, constitution I).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ding

From Aaron's Sounds on Event screenshot: press + twice, one line per switch position; Switch (move SF to CUT / RUN) and File (TURBOFF.WAV / TURBON.WAV, shown in capitals). App hints, screens contract and pilot guide updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…T044 done

Aaron's voice test passed on the transmitter (copy to /Audio/en, two Sounds on Event lines, callouts play without the app). Four new screenshots added to the pilot guide; T033 adds them to the README, T035 retakes Home and Setup inputs once the remaining screens exist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flazzarious and others added 10 commits October 10, 2026 22:13
…and link

The guide linked images by their main-branch URL, which doesn't exist until release, so none showed. Relative img/ links now work in previews, on the branch and after release. README gets an 'In development' row, screenshots and a link to the guide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Home with status and links (disabled until setup is complete); five guide steps with the recommended values and Open buttons (F5 Next uses preventDefault); resume to the saved screen; verify with output check, the four states, steadiness and 10-sample averaging, diagnosis table, Retry/Restart and the clean-run rule; failsafe confirmation; summary with ECU, measured values, date and 'always re-learn the ECU'. FR-005a confirm-and-clear on Setup inputs. Copy hidden on firmware without io.remove/dir (T031). Calibration buttons removed (T013). LuaLS and check.py clean; 97 top-level locals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Per Aaron: the question being asked is now separate from the live switch and stick positions, and switch instructions say what each position means ('Safety switch to RUN (not cut: engine may run)', 'Safety switch to CUT (cut: engine off)'). Contract verify.md updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nshots

From Aaron's screenshots: the firmware draws disabled links like active ones, so Guided setup, Verify and Summary are hidden until usable; Summary no longer repeats the verified date. Ten new screenshots (home, five guide steps, verify ready/check/passed, summary) added to the guide's new Screens section; README shows a guide step, verify passed and the summary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Aaron wants F2 Servo / F4 Other on Setup inputs every time, not only during calibration. Screens contract and T013 updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The reason was below the results table, off-screen. It now replaces 'Failed: reason below' in the Do rows (and stays under the results). Aaron's transmitter tests passed: guide, verify incl. the Xicoy -125% pass and the deliberate cut fail, idle-offset fault and retry rule, failsafe and summary, change-after-saving prompt, resume.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Full read of AG-TrbSt.lua: loadSettings resets a saved value of the wrong type instead of erroring; one Learn message shortened to 32 chars; header cites R1..R15 and notes the voice files' CC BY-SA licence. Scans: LuaLS clean, 103/200 top-level locals, no forbidden APIs, only error-path prints, no strings over 32 chars, form calls guarded by formOpen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
JETI Studio description page (docs/apps/throttle-setup-wizard.html), icon (make_icon.py --app throttle), Apps.json entry in make_apps_json.py (tag AG-TrbSt-v0.1.0, DC/DS-24II; older DC/DS untested), full README section, README and CLAUDE.md rows marked released.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…setup

Throttle Setup Wizard 0.1.0 (spec 002)
@Flazzarious
Flazzarious merged commit 5665a1e into main Oct 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant