Nouveautés de la 0.5
Cette version est en préparation. Ses bêtas sortent sous l'étiquette npm
beta, tandis que la version installée par défaut reste la 0.4, documentée
dans les pages latest de ce site :
npx docpensieve@beta init mon-site
Chaque nouveauté est annoncée ici à mesure qu'elle atterrit, avec un lien vers le guide et vers la référence : cette page annonce, elle n'est jamais le seul endroit où quelque chose est écrit.
Déjà là
Le serveur de développement reste sur votre machine
dev et serve n'écoutent plus que cette machine. Ils écoutaient toutes les
interfaces : quiconque était sur le même réseau pouvait lire le site en cours
d'écriture, brouillons compris. --host 0.0.0.0 l'ouvre volontairement — pour
le regarder depuis un téléphone — et la commande le dit au démarrage.
Un bandeau, et un calendrier
Hero tient la tête d'une page — un nom, une phrase, une rangée d'entrées —
pour que ce soit un composant plutôt qu'un div et un tas de classes.
Calendar dessine les mois où tombent vos événements, chacun sur son jour.
Tous les mois sont dans la page : un lecteur sans script les reçoit empilés et
lisibles, et le fichier client les replie en un seul avec deux flèches.
Un bouton qui copie un bloc de code
copyCode: true pose un bouton de copie sur chaque bloc de code. C'est la
première chose qu'une page DocPensieve demande à un lecteur de charger : elle
reste donc éteinte tant que vous ne la demandez pas — et alors le comportement
est écrit une fois par version, partagé par toutes les pages et toutes les
langues, et chargé par les seules pages qui contiennent du code. Deux
kilooctets environ, compressés ; aucun framework, aucune hydratation.
C'est la règle du zéro script qui cède la place à une règle qui se mesure : une page ne charge que ce qu'elle emploie. Le champ
Un bloc de code qui désigne un fichier
Snippet montre un vrai fichier de votre projet, lu à la génération de la
page. Un exemple écrit à la main est une copie, et une copie cesse d'être
vraie le jour où le code change, sans que rien ne le signale. Un intervalle de
lignes ou un repère #region en garde une partie ; collapsed replie un long
fichier dans un details, toujours sans script.
<Snippet source="src/index.js" region="guard" />
L'idée vient de Christophe Avonture.
init demande la langue
init demande désormais si le site sera en plusieurs langues, et met la
réponse en place : le dossier à côté de vos pages, translations écrit dans
la configuration, et une page d'accueil dans cette langue pour démarrer. La
seconde page d'exemple est laissée sans traduction exprès, pour que le menu
montre ce que devient une page non traduite — rien, dans cette langue.
npx docpensieve init mon-site --translation fr
Le code est un code BCP 47 : fr, pt-BR, zh-Hans. Le français et
l'anglais sont livrés avec leurs mots pour la coquille ; toute autre langue
garde l'anglais tant que le champ ui ne lui donne pas les siens.
Les langues · Les options d'init
Des pages qu'un programme sait lire
llms: true écrit llms.txt à la racine du site — le projet, puis un lien
vers chaque page de la version courante — et une copie Markdown à côté de
chaque page, index.html.md, que son en-tête nomme. Un assistant interrogé sur
votre projet lit le texte que vous avez écrit, au lieu de l'extraire du HTML.
Désactivé par défaut, et il ne demande pas de siteUrl.
Une Content-Security-Policy stricte
Le bouton clair / sombre n'écrit plus ses mots dans son script : ils viennent de la page, dans sa langue — une page française nommait le bouton en anglais à un lecteur d'écran. Ses deux scripts sont alors le même texte sur chaque page, et une Content-Security-Policy les autorise par leur empreinte. Le guide de déploiement donne une politique stricte, vérifiée dans un navigateur sur ce site.
Pour un projet en 0.4
Rien à changer : une configuration 0.4 se génère telle quelle, et un site déjà en deux langues n'est pas touché — la question ne façonne qu'un nouveau projet. Migrer de latest vers la bêta liste ce qui change tout seul, et ce qu'il vaut la peine d'activer.
DocPensieve