From e836edd108917fcdbdd4c824ceefe013dece3faf Mon Sep 17 00:00:00 2001 From: itsrubberduck Date: Fri, 10 Jul 2026 16:26:30 +0200 Subject: [PATCH] feat(live-atc): dock the expected-comm hint onto a round, glowing PTT pad The PTT pad is the control the pilot uses most, but it read as one card among several. It is now a circular transmit key that lights up cyan at rest and green while transmitting, with the active frequency called out underneath. Expected Communication shrinks from a full card to a two-line strip (ATC line, pilot line) sharing a frame with the pad, so it reads as guidance for the next transmission rather than as general reading material. The strip still renders in text mode when the learning aid has something to say, and disappears with the learningMode toggle as before. The pilot line's icon was `mdi-account-pilot`, which is not an MDI icon and rendered as an empty glyph; it is now `mdi-headset`. Co-Authored-By: Claude Opus 4.8 --- .../live-atc/cockpit/ExpectedCommStrip.vue | 139 ++++++++++ app/components/live-atc/cockpit/PttPad.vue | 243 ++++++++++++++++++ app/pages/live-atc.vue | 171 +++--------- 3 files changed, 423 insertions(+), 130 deletions(-) create mode 100644 app/components/live-atc/cockpit/ExpectedCommStrip.vue create mode 100644 app/components/live-atc/cockpit/PttPad.vue diff --git a/app/components/live-atc/cockpit/ExpectedCommStrip.vue b/app/components/live-atc/cockpit/ExpectedCommStrip.vue new file mode 100644 index 0000000..538a10e --- /dev/null +++ b/app/components/live-atc/cockpit/ExpectedCommStrip.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/app/components/live-atc/cockpit/PttPad.vue b/app/components/live-atc/cockpit/PttPad.vue new file mode 100644 index 0000000..d9be97d --- /dev/null +++ b/app/components/live-atc/cockpit/PttPad.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/app/pages/live-atc.vue b/app/pages/live-atc.vue index 83db64b..328c00c 100644 --- a/app/pages/live-atc.vue +++ b/app/pages/live-atc.vue @@ -254,49 +254,6 @@ /> - -
- - -
-

Expected communication

- - - -
- -
-
- mdi-radio-tower - ATC -
-

{{ displayControllerSay }}

-
- -
-
- mdi-account-pilot - Pilot (You) -
-

{{ displayExpectedPhrase }}

-
-
-
-
-
@@ -321,62 +278,29 @@
- -
- - - Microphone permission required for push-to-talk. - - - - -
-
- -

- {{ isRecording ? 'Transmitting' : 'Hold to transmit' }} -

-

- - {{ isRecording ? 'Hotkey transmitting' : 'Hotkey armed' }} -

-

{{ frequencies.active || '---' }}

-

Active frequency

-
-
-
-
+ +
+ +
@@ -1205,6 +1129,8 @@ import { usePmTheme } from '~/composables/usePmTheme' import { normalizeManualFreq } from '../../shared/utils/frequency' import { useFrequencyPresets } from '~/composables/useFrequencyPresets' import RadioPanel from '~/components/live-atc/cockpit/RadioPanel.vue' +import ExpectedCommStrip from '~/components/live-atc/cockpit/ExpectedCommStrip.vue' +import PttPad from '~/components/live-atc/cockpit/PttPad.vue' import { useAtisPlayback } from '~/composables/useAtisPlayback' import { usePttRecording } from '~/composables/usePttRecording' import { useBugReport } from '~/composables/useBugReport' @@ -1388,6 +1314,9 @@ const activeTab = ref<'funk' | 'log'>('funk') const experienceMenu = ref(false) const inputMode = ref<'voice' | 'text'>('voice') const learningMode = ref(true) +const showExpectedComm = computed( + () => learningMode.value && Boolean(displayControllerSay.value || displayExpectedPhrase.value), +) // Overlays / sheets opened from HUD controls const showFlightSheet = ref(false) @@ -1693,37 +1622,19 @@ onUnmounted(() => {