The pal's なぜ button is threaded through four files and wired to nothing #64

Closed
opened 2026-07-30 21:52:48 +00:00 by aiko · 1 comment
Owner

onWhy is declared and passed the whole way down and then never supplied:

  • components/pal/pal-bar.tsx:85 declares it, :163 destructures it
  • components/pal/desktop-pal.tsx:58, :87, :169 — declared, destructured, passed on
  • components/pal/overlay-pal.tsx:68, :152, :253 — same
  • components/pal/pal-container.tsxpasses nothing

So the prop chain is complete and the origin is empty. Pressing なぜ does nothing.

This mattered less when there was nowhere for it to go. denpa#59 has since built the fault screens, so §7e's way in from the pal now has a destination and this is the missing hop.

Acceptance

  • pal-container.tsx supplies onWhy, opening the fault screen #59 built
  • A test pins that pressing なぜ reaches it — the current failure mode is a button that silently does nothing, which no test would notice
  • If the answer is instead that なぜ should not exist on the pal, delete the whole chain rather than leaving it threaded
`onWhy` is declared and passed the whole way down and then never supplied: - `components/pal/pal-bar.tsx:85` declares it, `:163` destructures it - `components/pal/desktop-pal.tsx:58`, `:87`, `:169` — declared, destructured, passed on - `components/pal/overlay-pal.tsx:68`, `:152`, `:253` — same - `components/pal/pal-container.tsx` — **passes nothing** So the prop chain is complete and the origin is empty. Pressing なぜ does nothing. This mattered less when there was nowhere for it to go. `denpa#59` has since built the fault screens, so §7e's way in from the pal now has a destination and this is the missing hop. ## Acceptance - [ ] `pal-container.tsx` supplies `onWhy`, opening the fault screen `#59` built - [ ] A test pins that pressing なぜ reaches it — the current failure mode is a button that silently does nothing, which no test would notice - [ ] If the answer is instead that なぜ should not exist on the pal, delete the whole chain rather than leaving it threaded
Author
Owner

This was generated by AI during triage.

Merged to main in ee25aaa.

Fix. なぜ is wired to the fault screen it names — the button that was threaded through four files and connected to nothing now calls setMode('window') and lands on the screen describing the current fault.

Tests. A cross-walk test proves なぜ always has a screen behind it, across both fault vocabularies (ReceiverFaultKind and PalFaultKind). Gate on merged main: 62 files / 854 tests passing.

Consequence, now filed. Making なぜ reachable means the operator can walk from the pal — where 文 and 受信 are still live under a shut socket — straight into the window, where the same keys are correctly held. That gap is #71.

> *This was generated by AI during triage.* Merged to `main` in `ee25aaa`. **Fix.** なぜ is wired to the fault screen it names — the button that was threaded through four files and connected to nothing now calls `setMode('window')` and lands on the screen describing the current fault. **Tests.** A cross-walk test proves なぜ always has a screen behind it, across both fault vocabularies (`ReceiverFaultKind` and `PalFaultKind`). Gate on merged main: 62 files / 854 tests passing. **Consequence, now filed.** Making なぜ reachable means the operator can walk from the pal — where 文 and 受信 are still live under a shut socket — straight into the window, where the same keys are correctly held. That gap is [#71](https://git.aiko.works/aiko/denpa/issues/71).
aiko closed this issue 2026-07-31 14:33:45 +00:00
aiko referenced this issue from a commit 2026-08-07 08:57:15 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiko/denpa#64
No description provided.