Lot U3 : l'interface de l'Acte d'engagement (Yvv, 03/11) — avant le texte, hors vote, « Info ouverture doc de réf. » (OpeningInfo, lib/opening.ts) : le paragraphe d'Yvv mot pour mot à la place de doc.empty.seeds (sa première phrase tant qu'aucun article n'est en vigueur, puis « entrent en vigueur » où « y » n'avait plus rien à reprendre), le cran d'ouverture des Propositions d'amorce, du titre, de l'ordre de chaque section et des autres articles (avant tout changement voté) et le quorum de chaque cran, lus dans l'API ; une séparation (un filet de la couleur de la clé de voûte, jamais une bordure) ; plus les titres « Introduction » et « Engagements fondamentaux » dans le texte. Les informations de F1, F1.1, F1.2, N1, N1.1 et O1 là où elles servent : vote.permanent, vote.rival, vote.others.rule, formula.Tprime, formula.round, formula.B.wot, formula.G, settings.share.note, settings.usual.quorum, settings.gradient, order.edit.effect ; les termes définis de T3c (« à la participation habituelle », « quorum de l'article », « part exigée », « repose sur moins de N propositions votées depuis un an »), plus de « comme d'habitude ». « Proposition d'amorce » (Starter proposal, Propuesta de arranque). Le mot d'Yvv pour qui n'est pas invité, à l'accueil sans session (à la place du bouton Ğ1 tant que la connexion Ğ1 n'est pas active) et sur « Se connecter » (signin.g1.pending sans redite). Réordonner : la ligne sous le pointeur lue dans la mise en page (offsetTop), pas là où animate:flip la montre — une poignée tirée sur plusieurs lignes ne revient plus en arrière ; le pointeur capturé par la liste. API : seedFeatured sur chaque version (seul changement sous crates/). C1, C3, C20, C27, C35, C38 suivent les mots

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-11-03 22:28:41 +01:00
co-authored by Claude Opus 5.5
parent 9d478d668a
commit 8528a269fc
20 changed files with 434 additions and 88 deletions
@@ -12,6 +12,7 @@
import DocPanel from '$lib/components/DocPanel.svelte';
import Guard from '$lib/components/Guard.svelte';
import Icon from '$lib/components/Icon.svelte';
import OpeningInfo from '$lib/components/OpeningInfo.svelte';
import OrderLine from '$lib/components/OrderLine.svelte';
import Reorder from '$lib/components/Reorder.svelte';
import TitleBar from '$lib/components/TitleBar.svelte';
@@ -21,7 +22,7 @@
import { sections, votableIds } from '$lib/basket';
import { DocState, panelSearch, shown, TABS, type Entry, type PanelState, type View } from '$lib/doc.svelte';
import { i18n, LANGS, t } from '$lib/i18n/index.svelte';
import { sectionLabel } from '$lib/labels';
import { readerSectionLabel } from '$lib/labels';
import { answerPanel } from '$lib/objections';
import { BasketState } from '$lib/picks.svelte';
import { session } from '$lib/session.svelte';
@@ -259,12 +260,18 @@
{#if doc.mode !== 'inforce'}<p class="note preview">{t(`doc.view.${doc.mode}.note`)}</p>{/if}
</header>
<!-- Before the text, out of the vote: the settings of the author at the opening (lot U3); then a
separation, a soft line of the mood, never a border; then the first article. -->
<OpeningInfo {view} inForce={doc.inForce.length} />
<hr class="opening-rule" />
<section class="text" aria-label={t('doc.view.inforce')}>
{#if reading}
<!-- Nothing in force (ADR 0011): the seed proposals at the head, said once. -->
{#if !doc.inForce.length}<p class="lead">{t(textSections.length ? 'doc.empty.seeds' : 'doc.empty')}</p>{/if}
<!-- Nothing in force and nothing to start from: said once. With the Propositions d'amorce
at the head (ADR 0011), the chapter says it, in Yvv's words. -->
{#if !doc.inForce.length && !textSections.length}<p class="lead">{t('doc.empty')}</p>{/if}
{#each textSections as s, i (`${i}:${s.section}`)}
{@const label = sectionLabel(s.section)}
{@const label = readerSectionLabel(s.section)}
<div class="text-section">
{#if label}<p class="section-name">{label}</p>{/if}
{#if !s.order || reordering !== s.order.id}
@@ -469,7 +476,22 @@
text-underline-offset: 3px;
}
.text {
margin-top: 2.2rem;
margin-top: 0;
}
/* The separation before the text (Yvv, 2026-11-03): a soft line in the keystone's colour of the
mood, fading at its ends — drawn by its background, never a border. */
.opening-rule {
height: 2px;
margin: 2.2rem 0 1.6rem;
border: 0;
border-radius: 2px;
background: linear-gradient(
to right,
transparent,
color-mix(in srgb, var(--cle) 45%, transparent) 18%,
color-mix(in srgb, var(--cle) 45%, transparent) 82%,
transparent
);
}
.lead {
margin-bottom: 1.2rem;