Skip to content

Develop - #8

Merged
Flazzarious merged 26 commits into
mainfrom
develop
Oct 7, 2026
Merged

Flazzarious merged 26 commits into
mainfrom
develop

Conversation

@Flazzarious

Copy link
Copy Markdown
Owner

No description provided.

Flazzarious and others added 26 commits October 2, 2026 16:51
Pre-spec draft for a new in-flight app (AG-FlmOt.lua) that alarms when
turbine RPM telemetry shows a flameout. Covers per-model enable and RPM
sensor assignment, arming only at idle RPM or above (so start-up and ECU
auto-restart never arm or clear the alarm), and the approved alarm sound:
"Flameout!" x3 in the Speed Gauge Piper Amy voice, urgent delivery, every
5 s with a missile-lock tone in between.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UXZ3gE435jMKRzKW9FRfiy
Spec and quality checklist for AG-FlmOt.lua, built from the draft in
docs/drafts/flameout-alarm.md. Decisions made while specifying:

- A Cut switch is required to enable monitoring, and Cut is the only way
  to silence the alarm (no separate acknowledge).
- Idle RPM is typed in from the ECU setup; "learn idle" is dropped. A
  separate arming threshold (90% of idle) handles the start overshoot and
  its slow decay back to idle.
- Double-size telemetry window with a segmented sweep RPM bar, idle
  marker and large RPM number in Speed Gauge's colors; straight bar at
  single size and as the fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Clarify session 2026-10-04:
- Telemetry lost during the flameout alarm keeps the alarm going, with a
  "no telemetry" note and no callout (FR-020a).
- Telemetry-loss delay is a setting, default 2 s (FR-008, FR-020).
- Plain RPM by default, with a manual sensor scale of x1/x10/x100/x1000
  (FR-006a, FR-010).

Adds an original SVG mockup of the double-size sweep bar (armed and
flameout) and the single-size bar, with its generator script. The
third-party dash screenshot that inspired it stays local in docs/vendor/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- research.md R1: how JetCat, Xicoy, KingTech, Swiwin, JetCentral and
  Enjet ECUs deliver RPM to a Jeti transmitter. Where RPM arrives as a
  normal telemetry sensor it is plain RPM, so the default x1 scale fits;
  JetCentral, Enjet and Swiwin direct are unconfirmed.
- The "telemetry lost" callout is now also spoken once between alarm
  cycles when telemetry is lost during the flameout alarm (FR-020a).
- Idle and max RPM are entered to the nearest 100 RPM, shown in thousands
  with one decimal, since form.addIntbox stops at 32767 (FR-006).
- Setup's "no sensors" message mentions the up-to-a-minute delay some
  adapters need (FR-004); the README lists support per ECU brand (FR-035).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- plan.md: technical context, constitution check (pass), layout and
  build order. One app file, no lib modules.
- research.md R2-R13: 5-second cycle WAVs played with AUDIO_IMMEDIATE,
  stopPlayback on relight/Cut, telemetry-lost cycle variant, sound
  generator without ffmpeg, fallback beeps, vibration, 100 ms state
  machine, sensor reading, settings entry, sweep drawing cost, emulator
  and SIM testing, test alarm switch.
- data-model.md, contracts (settings form, telemetry window, audio) and
  quickstart.md.
- Spec: test alarm switch (FR-030a, User Story 8); FR-028 corrected to
  Speed Gauge's current rule (voice files committed, CC BY-SA 4.0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- specs/003-flameout-alarm/tasks.md: 55 tasks by user story.
- tools/voice/make_flameout.py generates the alarm sounds (research R5):
  urgent "Flameout!" x3 with pitch, EQ and compression in Python (no
  ffmpeg), the lock tone, two exactly-5-second cycle files and three calm
  phrases. Reuses make_voice.py's helpers without changing it.
- src/Apps/AG-FlmOt/: the generated sounds, CC BY-SA 4.0 (FR-028),
  approved by ear.
- src/Apps/AG-FlmOt.lua 0.1.0 frame: settings with load-time validation,
  derived values, session state, audio file checks, the 100 ms loop with
  row 0 (off), Cut check and sensor read, named empty functions for each
  user story, the core settings rows and a text-only window.
- tools/emulator/sensors.json: Turbine / RPM sensor on P8 (R12).

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

Arms after RPM holds the arming threshold for the arming time; RPM below the flameout threshold for the detection delay starts the alarm: cycle.wav with AUDIO_IMMEDIATE and three short pulses on both sticks, repeated every 5 s, also through telemetry loss. Fallback: two bursts of beeps per cycle when the cycle files are missing. FLAMEOUT shown large in the text window.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
JETI Studio's io.open only opens 'Apps/...' without the leading slash; the transmitter opens '/Apps/...'. The start-up file check now tries both, so the emulator no longer falls back to beeps. Recorded in docs/jeti-api-notes.md.

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

Cut disarms silently from any state and stops an alarm at once; the sensor is read before the Cut check so the window follows the spool-down. Optional 'Flameout alarm armed' callout (queued). SIM debug mode (off) plays scripted RPM profiles chosen in the form: normal flight with start overshoot, failed start, flameout, auto-restart, dropouts. T020 confirmed in the emulator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The alarm stops and the app returns to ARMED once RPM holds the arming threshold for the arming time; RPM in the startup range (auto-restart cranking) breaks the timer without starting a new event. Optional 'Engine relit' callout (queued).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main now publishes apps through Apps.json; add the description page, icon and Apps.json entry to the Polish phase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sensor scale, live RPM (also while monitoring is off), no-telemetry and unit hints, max RPM with auto value, arming/flameout percentages with their RPM and refusal when flameout >= arming, the three timers, armed/relit checkboxes, voice-files hint, credits footer. Raising idle to or above max resets max to auto. Removing a requirement turns monitoring off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(US5, T034)

No valid data clears the arming, detection and relight timers, so a loss never causes a flameout or a relight. After the telemetry-loss delay: 'Engine telemetry lost' once while armed; during an alarm the next cycle plays cycletl.wav once and the window shows NO TELEMETRY under FLAMEOUT. Detection restarts from zero when data returns. Verified Cut also cancels a pending fallback beep burst. T031 confirmed in the emulator.

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Double size: 12-segment sweep from design/rpm-window-mockup.svg, lit in cyan up to RPM, dim outlined segments beyond, yellow idle marker, state label, large RPM number; FLAMEOUT as a red banner, with a NO TELEMETRY note when data is lost. Single size: straight bar, idle marker, state and number; FLAMEOUT fills the window red. Geometry computed once in init; opaque fills and thin outlines only. Text-only layout on transmitters other than the DS-24 II. DEBUG_CPU readout (off).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bold at normal size where it clears the rising sweep (ARMED, DISARMED, OFF, TEST); NO TELEMETRY and NO SENSOR stay small. User feedback from the emulator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(T024, T035)

First run on the DS-24 II with the SIM build: armed at 60,000 and at idle, flameout banner, disarmed by Cut. Layout matches the mockup; the bold DISARMED label clears the sweep. Kept in docs/apps/img/ for the description page (T056).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An optional switch plays the real alarm (same cycle files, rhythm, vibration and fallback beeps) while on, and shows TEST. Starts only on the switch's off-to-on change and only while OFF or DISARMED, works with monitoring off, and stops when the switch goes off or the app arms. Sound and vibration confirmed on the transmitter with the SIM build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README: apps table row and a Flameout Alarm section (advisory note, ECU support per brand, setup and threshold guidance per FR-035, test switch, sound license). CREDITS: the alarm sounds (Piper, Amy CC BY-SA 4.0) and the ECU telemetry app studied for facts. CLAUDE.md apps table. Release audit: no forbidden APIs, SIM and DEBUG_CPU off, 87/200 main-chunk locals. US8 test switch confirmed on the transmitter (T049).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/apps/flameout-alarm.md and .html with the transmitter screenshots; make_icon.py --app flameout draws the icon (segmented sweep, idle marker, AG monogram) without changing Speed Gauge's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Double-size window with DEBUG_CPU on the DS-24 II: 5% armed, 6% with the FLAMEOUT banner. Both window sizes confirmed by screenshot. Recorded in docs/jeti-api-notes.md and research R11.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README lists it as released. Verified: check.py and LuaLS clean, SIM and DEBUG_CPU off, version 0.1.0. Tested in the emulator and on the DS-24 II (SIM profiles, test switch, sound, vibration, both window sizes, CPU 5-6%). Open after release: T054 bench test with a real ECU, T055 findings, T058 Apps.json (needs the tag).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Flazzarious
Flazzarious merged commit 4646b81 into main Oct 7, 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