- Supprime les flèches Préc./Suiv. aux bords gauche/droite (troubles
d'affichage récurrents) : la navigation passe au rail vertical ancré au
bord DROIT de la vidéo, centré au bureau et ancré au-dessus de la méta
sur mobile, avec des flèches ↑/↓ plus grosses (44 px).
- Même rail : informations, j'aime, s'abonner (pastille = avatar), commentaires,
partager, lecture auto. Toujours monté (comme le FAB), désactivé sans vidéo.
- Bouton ⓘ : panneau d'informations (titre, vues, engagement, chaîne,
description, commentaires → Watch). Colonne à droite au bureau (la vidéo
rétrécit, jamais masquée : --shorts-panel-w retiré du calcul de taille),
tiroir plein écran sur mobile. Échap ferme.
- Transition de short : le doigt fait glisser le cadre (chrome solidaire),
résistance aux extrémités, seuil de bascule 25 % de la hauteur, ressort
sous le seuil, éjection + emboîtement au-delà (Web Animations, respecte
prefers-reduced-motion). Aucun état de lecture modifié.
- Lecture auto : interrupteur réel (rail + menu), persisté, respecté par le
minuteur et par la fin de vidéo YouTube.
- Tap sur un contrôle du rail = plus de play/pause parasite (garde
isChromeTarget dans onTouchStart/onTouchEnd).
- FAB menu conservé (haut droit, déplaçable) ; son touchmove ne déplace plus
le cadre en même temps.
- PeerTube : l'adaptateur pt.ts reconstruisait l'item SANS `url` et le pont
catalogue ne conservait l'URL que pour Odysee → /shorts reconstruisait
l'embed sur l'instance ACTIVE → « Sorry this video does not exist » sur
toute vidéo fédérée. `url` est désormais miroitée dans VideoItem (contrat
v2), propagée par PtAdapter et gardée par catalogShortToVideo :
peerTubeHostOf() dérive enfin le host d'origine. Vérifié de bout en bout :
embed tube.blueben.net → 200 + vrai titre, cas de test dédié dans
shorts-catalog.spec.
- FAB du menu : déplaçable au pointeur (seuil 6 px, position en % du cadre,
persistée en localStorage). Le clic qui suit un glissement n'ouvre pas le
menu, et le panneau s'ouvre TOUJOURS vers l'intérieur du cadre (classes
pm-opens-left / pm-opens-right / pm-opens-up posées par applyAnchor) :
sinon overflow:hidden le rognait dès qu'on déplaçait le bouton.
- Bureau : --shorts-chrome 9rem → 4rem (la vidéo passe de 691 à 771 px de
haut en 1280x900, 389 → 434 de large) et menu compact au-delà de 768 px
(FAB 36 → 30 px, panneau 233 → 202 px). Mobile inchangé (36 / 636 px).
Tests : test:shorts-catalog (nouveau cas PeerTube), test:kind,
test:section, test:search verts ; build ng OK ; sondage Playwright 19/19
sur l'instance locale (layout, glissement + restauration, embed PeerTube
200 sans erreur).
- app-player-menu : stopPropagation wheel/touchstart/touchend sur le host —
les handlers window:wheel et window:touch* de /shorts ne volaient plus les
gestes sur le panneau (impossible de scroller jusqu'en bas du menu, tap =
play/pause, swipe = changement de short)
- /shorts : ArrowUp/Down ignore quand le menu est ouvert
- /shorts : le FAB passe en haut a DROITE du cadre (la fleche retour mobile
z-20 passait par-dessus le FAB piege dans la scene z-10)
- Look/taille : FAB 40->36px, panneau 288->240px, items compacts,
max-height 70vh/480 -> 65vh/430 (plus de rognage par overflow:hidden),
pastille en degrade + relief, panneau rounded-xl + highlight interne
- PlayerMenuComponent : FAB circulaire translucide (haut-gauche) + panneau
deroulant, commun aux deux pages (position, style, open/close, clic exterieur)
- /shorts : consolidation de tous les boutons (fournisseurs, langue, actions)
dans le menu FAB ; suppression du rail a droite et de la rangee du haut
- /watch : actions (cinema, qualite, j'aime, playlist, transcription,
telechargement, partage, ouvrir) deplacees dans le menu FAB
- AddToPlaylistComponent : variante menuItem pour s'integrer au menu
- styles .pm-item/.pm-sep/.pm-section-label dans index.css