fix: a room that was set up, a card where its button is, and larger cards
Parent Call told rooms they had never been set up. Nothing about the rooms was wrong. Read from the church broker: …/coordinator and …/pending are retained and …/mode is absent, and the coordinator's own source says why — it publishes the retained mode only in answer to an operator writing to …/mode/set, and nobody ever has. Every classroom waited a second and a half for a message that will never exist. A missing mode is now read as the coordinator's own default rather than as an unconfigured room: the room offers the call and lets the sanctuary end answer, because that is the end that knows. A mode that really is off still refuses, in the coordinator's words, and a broker that is missing or unreachable still says which of those it is. Proved against a rig broker made to match the church's exactly, with a call landing on the sanctuary mock. The card is anchored to the bottom-left corner instead of centred, by layer shell, which is what the disc player's cover has used under KWin for months. Anchoring rather than positioning is what makes it right at 1080p and at 4K without a coordinate anywhere. It falls back to the centred card if the library is missing. Notifications are sized for a room. Every Plasma measurement is a grid unit and a grid unit is the height of the general font, so the font is the lever — 15 point instead of Breeze's 10, which takes the card from about 350x110 to about 410x145 at 100% and doubles again at 200%. Text, icon, padding and buttons move together. The chime stays off. No shell package: that path cost the panel and is not coming back. And the product name is gone from everything a teacher sees. The notification card is from Classroom, the disc player's from DVD. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bd55c5abd9
commit
ba8768cee5
@@ -1201,6 +1201,98 @@ worked: it used `iptables`, which is not installed in the lab image, and
|
||||
it probed with `/dev/tcp` under `sh`, which is a bash feature and fails
|
||||
under dash whatever the network is doing. Both were reported as success.
|
||||
|
||||
## A morning in the rooms: 0.1.50
|
||||
|
||||
Four things a television found that a container had not.
|
||||
|
||||
### "Parent Call has not been set up yet", on a room that was
|
||||
|
||||
The card came up checking with the sanctuary and then said the room had
|
||||
never been set up. Nothing about the room was wrong. Read from the church
|
||||
broker, read-only:
|
||||
|
||||
```
|
||||
classroom/parent-call/coordinator {"online": true, ...}
|
||||
classroom/parent-call/pending {...}
|
||||
classroom/parent-call/mode — absent
|
||||
```
|
||||
|
||||
The coordinator's own source says why. It publishes the retained mode
|
||||
only in answer to an operator writing to `…/mode/set`, and on this
|
||||
broker nobody ever has. The classroom waited 1.5 seconds for a retained
|
||||
message that will never exist, and then told the teacher the room was
|
||||
unconfigured.
|
||||
|
||||
So a missing mode is now read as what it is: the coordinator's own
|
||||
default, which the sanctuary end knows and this end does not. The room
|
||||
offers the call and lets the coordinator answer. If the true mode is off,
|
||||
the coordinator refuses in its own words through the status topic, which
|
||||
the card already shows — a wrong no costs a teacher the call, a wrong yes
|
||||
costs a round trip and tells the truth at the end of it.
|
||||
|
||||
The distinction the card has to keep is untouched. A broker that is not
|
||||
configured at all still says so, a broker that cannot be reached still
|
||||
says that, and a coordinator that is down still names the sanctuary.
|
||||
"Undecided" is now a third answer, with no message, which is why the card
|
||||
shows nothing at all until the retained topics have had their chance.
|
||||
|
||||
Proved on a rig whose broker was made to match the church's exactly —
|
||||
coordinator and pending retained, mode deleted. The card came up ready,
|
||||
and a call went through to the sanctuary mock: `Ruth Alvarez`, `Nursery`.
|
||||
|
||||
### The card opens where its button is
|
||||
|
||||
Centred, on a classroom television, is a long way from the button in the
|
||||
bottom-left corner. A Wayland client cannot place its own window, so the
|
||||
card is anchored rather than positioned: layer shell, bottom and left
|
||||
edges, margins in logical pixels. The compositor does the arithmetic, so
|
||||
it is correct at 1920×1080 at 100% and at 3840×2160 at 200% with no
|
||||
coordinates written down anywhere. Both were photographed.
|
||||
|
||||
The classroom has drawn the disc player's cover this way under KWin for
|
||||
months, so the mechanism is not new here. It is optional: if the library
|
||||
is missing the card still opens, centred, exactly as before.
|
||||
|
||||
**The one thing the lab cannot answer is whether a teacher can type into
|
||||
it.** The entry takes focus and shows a caret, which is KWin giving the
|
||||
layer surface the keyboard. Actually typing has never been testable in
|
||||
this lab — the tool that tries closes the card — so the first bench test
|
||||
on this build is a name typed into Parent Call with a real keyboard.
|
||||
|
||||
### Notifications for a room, not a desk
|
||||
|
||||
Everything Plasma draws is measured in grid units, and a grid unit is the
|
||||
height of the general font. There is no setting that makes a notification
|
||||
larger on its own, so the font is the lever — and it is the supported
|
||||
one, which matters after the shell package that cost the panel.
|
||||
|
||||
Measured at 100%: Breeze's 10 point gives a card about 350×110 with a
|
||||
title a volunteer at the back cannot read; 15 point gives about 410×145
|
||||
with a title that carries. Text, icon, padding and buttons all move
|
||||
together because they are all grid units. The bar does not change: its
|
||||
height is fixed and the clock sizes itself to it.
|
||||
|
||||
At 200% the display scale doubles all of it again. No chime, unchanged:
|
||||
`AudioFeedback` is off in `plasmaparc` and the applet's own setting is
|
||||
off in the layout.
|
||||
|
||||
### The room does not introduce itself
|
||||
|
||||
"Ekklesia Classroom" is gone from everything a teacher sees. The
|
||||
notification card is from `Classroom`, the disc player's notifications
|
||||
are from `DVD`, the maintenance terminal is a `Maintenance terminal`.
|
||||
Nineteen visible names are checked by the test suite now, and the product
|
||||
name stays where it belongs: package names, units, paths and topics.
|
||||
|
||||
### And the lab, again
|
||||
|
||||
Four rooms named after container ids are sitting on the church broker as
|
||||
retained status messages. The fence was applied when each container
|
||||
started and lost the moment it was restarted, because routes do not
|
||||
survive that — and `lab reboot` is in every scenario. It re-fences now
|
||||
and refuses to continue if either church network answers. The four
|
||||
retained topics are the user's to clear; the commands are in the report.
|
||||
|
||||
## Unresolved risks
|
||||
|
||||
In the order I would worry about them.
|
||||
@@ -1275,7 +1367,13 @@ In the order I would worry about them.
|
||||
updates at all, and `classroom-migrate` moves every upgraded machine
|
||||
onto that channel — deliberately, because stable and canary would
|
||||
both hand a Plasma room the sway build back.
|
||||
17. **Ctrl+Alt+T is still registered.** Konsole's own entry declares it
|
||||
17. **Nobody has typed into the anchored Parent Call card.** Layer shell
|
||||
gives it the keyboard — the entry takes focus and shows a caret — but
|
||||
keyboard injection has never worked in this lab, so the first thing
|
||||
to do on the bench is type a name into it. If it cannot be typed
|
||||
into, removing gtk-layer-shell from the package restores the centred
|
||||
card with no other change.
|
||||
18. **Ctrl+Alt+T is still registered.** Konsole's own entry declares it
|
||||
and the registration survives being shadowed. It is inert, because
|
||||
Konsole refuses to open a shell under the classroom's
|
||||
`shell_access=false` — measured — but it rests on that one
|
||||
|
||||
Reference in New Issue
Block a user