Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions KitchenSync/main/ks_web.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ background:linear-gradient(180deg,#2a1512,#1c0f0d);color:#ff7a6b;transition:back
a key nobody can see is not a feature. */
.kbd{flex:none;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--mut);
border:1px solid var(--line);border-radius:5px;padding:2px 6px;margin-left:8px;background:#12161b}
/* A key aimed at a Link-owned output must not silently do nothing: flash the greyed
/* A key aimed at a Link-owned output must not silently do nothing: flash the grayed
toggle and pulse the note that names the owner, so the user learns why. */
@keyframes nak{0%,100%{border-color:var(--line);color:var(--mut)}30%,65%{border-color:var(--amber);color:var(--amber)}}
@keyframes nakrow{0%,100%{background:transparent}30%{background:rgba(224,168,58,.14)}}
Expand Down Expand Up @@ -288,7 +288,7 @@ function outEnabled(o){var m=document.querySelector('input[name="clock_out"]');
if(m&&!m.checked)return false;
var cb=document.querySelector('input[name="clk'+o+'_en"]');return !!(cb&&cb.checked)}
// A key on a Link-owned output must not act — but it must not fail *silently* either,
// or the user concludes the feature is broken. Flash the greyed toggle and pulse the
// or the user concludes the feature is broken. Flash the grayed toggle and pulse the
// note that already says who owns the transport.
function nak(b){
if(b){b.classList.remove('nak');void b.offsetWidth;b.classList.add('nak');
Expand Down
2 changes: 1 addition & 1 deletion KitchenSyncTouch/ktouch_web.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ static void handle_status() {
* It obeys every intent it is given -- measured on the bench: stopped
* -> armed -> running with link_owns true throughout. So the device was
* announcing "I ignore your play button" while obeying it, and the app
* believed it and greyed the button out. Play and stop were dead in the
* believed it and grayed the button out. Play and stop were dead in the
* app for exactly as long as a Link peer had ever pressed play.
*
* A HISTORICAL flag published as a LIVE state. T-018 was a lifetime
Expand Down
8 changes: 4 additions & 4 deletions tasks/ESP-019.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ are already labeled on screen (Clock Out **1**..**4**), so there is nothing new
stopped -> PLAY (arms, fires on the bar line); armed/playing -> STOP (immediate).
- **`space`** -> the "all" transport (the existing `out=all` PLAY/STOP pair).
- A key press on an output that **follows Link** must be **inert** -- Link owns that
output's transport, the toggle is already greyed, and the key must behave the same way
(see ESP-011). It must not silently do nothing while *looking* live: flash the greyed
output's transport, the toggle is already grayed, and the key must behave the same way
(see ESP-011). It must not silently do nothing while *looking* live: flash the grayed
toggle, or briefly surface the existing "Link owns transport for outputs set to follow
it" note, so the user learns *why* rather than concluding the feature is broken.
- A key for a **disabled** output does nothing.
Expand Down Expand Up @@ -89,7 +89,7 @@ the `1`..`4` badge in `build_outputs()`, the `space` badge on the transport row,

The listener posts nothing itself: it resolves the key to the button the mouse would hit
and calls `.click()` on it. So "key and click are one path" is structural, not a promise —
there is no second `fetch('/transport')` to drift. A greyed (Link-owned) button no-ops its
there is no second `fetch('/transport')` to drift. A grayed (Link-owned) button no-ops its
`click()` in the browser for free, which is what makes the inert case fall out rather than
needing its own branch.

Expand Down Expand Up @@ -118,7 +118,7 @@ keystrokes**:
`1` again stops it immediately (`[2,..]` -> `[0,..]`). START quantized, STOP immediate,
exactly as the click does.
- **Link-owned output is inert AND says why.** With an enabled output set to follow Link and
the session owning transport, `3` posts nothing, flashes the greyed toggle (`.nak`) and
the session owning transport, `3` posts nothing, flashes the grayed toggle (`.nak`) and
pulses the owner note. Confirmed on the device page.
- **Disabled output is inert.** Keys for outputs with their enable switch off post nothing.
- **The guard holds on real hardware.** With focus in a form control, real keystrokes are
Expand Down
2 changes: 1 addition & 1 deletion tasks/ESP-034.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ your play button" and then obeyed it, and play/stop were dead in the app for as
any Link peer had ever pressed play.

The P4 is believed to genuinely defer to Link via `ks_tick` arbitration, which would make
its `link_owns` honest and its greyed buttons correct. **Believed is not verified.**
its `link_owns` honest and its grayed buttons correct. **Believed is not verified.**

### 2. Does a partial POST to `/save` silently switch things off?

Expand Down
Loading