Changeset 72d8eff in Klonkt for src/routes/guardian.js


Ignore:
Timestamp:
08/07/2026 07:16:27 PM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
a66266d
Parents:
01fb44f
git-author:
Robin <roboburr@…> (08/07/2026 07:16:25 PM)
git-committer:
roboburr <roboburr@…> (08/07/2026 07:16:27 PM)
Message:

De gate-stand komt uit de besluiten, want er zijn geen lokale accounts

Barts correctie, en hij raakt twee dingen die ik fout had.

ER ZIJN GEEN LOKALE ACCOUNTS. wardGateSetting() leest de kolom alleen als de ward
op onze eigen base staat, en met een Klonkt per gebruiker woont elke ward elders.
Die functie gaf dus voor IEDERE ward null, en het gate-paneel toonde overal
"onbekend". Ik noemde dat een randgeval terwijl het het enige geval is.

EN DE GUARDIAN WEET HET WEL: hij kreeg de uitslag van het besluit door.
ap_gated_sent bewaart per voorstel de feature, de waarde en de uitkomst, dus een
geaccepteerd voorstel met waarde true IS de stand. knownSetting() leest dat.

Drie standen in plaats van twee. "Uit" en "voor zover wij weten uit" zijn niet
hetzelfde: dat tweede betekent dat niemand er ooit over besloot, en dat hoort
niet te lezen als een genomen besluit. De rij draagt nu decided en het scherm
zegt "uit (nog niets over besloten)".

Daarmee vervalt ook het gat dat ik een commit eerder noteerde: de richting van de
voorstelknop volgt nu een BEKENDE stand, dus voor een ward elders kun je ook
DICHTZETTEN voorstellen. Dat was precies de veilige richting die ontbrak.

De trap blokkeert alleen op een BESLOTEN dicht, niet op de standaard. Anders kan
afspelen nooit als eerste voorgesteld worden, en zo ging er ooit een hele
voorstelronde de verkeerde gate in.

BEKEND GAT, in het commentaar bij knownSetting gezet en niet hier opgelost: dit
ziet alleen onze EIGEN voorstellen. Antwoordde je op dat van een mede-guardian,
dan komt de uitslag wel binnen (gated_outcome) maar wordt hij niet bewaard --
handshake.js legt alleen vast voor sent-rijen die van ons zijn. Een gate die een
ander heeft geopend leest hier dus als uit, en dat is de onveilige kant.

4 tests erbij, waaronder de terugval op de oude kale-boolean vorm. Suite 599/599.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/guardian.js

    r01fb44f r72d8eff  
    6868    'help_close_ask', 'help_close_yes', 'help_just_now', 'help_hours', 'help_days',
    6969    'help_archive', 'help_archive_hide', 'panel_history',
    70     'gate_propose_open', 'gate_propose_close'];
     70    'gate_propose_open', 'gate_propose_close', 'gate_default_off'];
    7171  const s = Object.fromEntries(keys.map((k) => [k, i18nT(L, `guardian.${k}`)]));
    7272  s.wave = i18nT(L, 'guardian.wave');
     
    612612    .filter((r) => r.ward_uri === wardUri).length;
    613613  return Guardianship.gated.gateRows({
     614    // Uit de BESLUITEN, niet uit onze eigen kolom. Er zijn geen lokale accounts:
     615    // elke ward woont elders, dus wardEmbedSetting() gaf voor iedere ward null en
     616    // stond er in het paneel overal "onbekend". Wat een guardian wel heeft is de
     617    // uitslag van wat hij voorstelde.
    614618    settings: {
    615       'shaer:externalEmbeds': wardEmbedSetting(wardUri),
    616       'shaer:externalPlayback': wardPlaybackSetting(wardUri),
     619      'shaer:externalEmbeds': Guardianship.gated.knownSetting(mySlug, wardUri, 'shaer:externalEmbeds'),
     620      'shaer:externalPlayback': Guardianship.gated.knownSetting(mySlug, wardUri, 'shaer:externalPlayback'),
    617621    },
    618622    guardianCount: statuses ? statuses.length : null,
Note: See TracChangeset for help on using the changeset viewer.