2026.05.26 (Mar)

✹ RĂ©sumĂ© de GPT-5.5  

Un rĂ©cit sur l’ajout d’un calendrier des posts et de statistiques d’activitĂ© par catĂ©gorie dans la sidebar juste aprĂšs la reprise du blog, avec le mois de l’article courant et la navigation d’archive mensuelle.

AprĂšs avoir mis de l’ordre dans l’article de reprise du blog, le problĂšme suivant est apparu immĂ©diatement.

J’avais recommencĂ© Ă  Ă©crire des articles. Mais le blog ne donnait pas encore vraiment l’impression d’ĂȘtre vivant. Avec seulement une liste de catĂ©gories, on ne voyait pas bien quand le blog avait bougĂ©, quels jours avaient accumulĂ© des traces, ni quel flux rĂ©cent existait.

Pour réécrire Daily Review, il faut une sensation des dates.

Ce blog est finalement centrĂ© sur “ce que j’ai laissĂ© tel jour”. Mais un blog GitHub Pages n’a pas naturellement une navigation par dates visible comme Naver Blog. Comme c’est un blog statique, il fallait d’autant plus la construire moi-mĂȘme.

La fonctionnalitĂ© ajoutĂ©e ce soir n’était donc pas une simple dĂ©coration.

C’était un travail pour transformer la sidebar, d’ornement secondaire d’une liste d’articles, en outil de navigation qui montre les dates et le flux d’activitĂ©.

La premiÚre chose ajoutée était un petit calendrier direct

Le premier commit était f6971fc.

f6971fc  feat: add sidebar activity widgets

À ce moment-lĂ , j’ai créé deux nouveaux fichiers.

_includes/sidebar-calendar.html
_includes/sidebar-nav-stats.html

J’ai ajoutĂ© l’include du calendrier Ă  sidebar.html.


{% include sidebar-calendar.html %}

Le premier calendrier était construit uniquement avec Liquid, sans JavaScript.

Il filtrait les articles cachĂ©s hors de site.posts, puis calculait le premier jour de la semaine et le dernier jour du mois courant. MĂȘme le calcul des annĂ©es bissextiles pour fĂ©vrier Ă©tait traitĂ© dans Liquid.


{% assign calendar_posts = site.posts | where_exp: "post", "post.hidden != true" %}
{% assign calendar_year = site.time | date: "%Y" %}
{% assign calendar_month = site.time | date: "%m" %}

Dans le mois, les dates avec des articles deviennent des liens, et les dates sans article restent de simples nombres. La base initiale Ă©tait site.time. Autrement dit, Ă  ce stade, le calendrier Ă©tait un widget de sidebar qui montrait “l’état des posts du mois courant”.

MĂȘme cela a eu un effet immĂ©diat.

Le blog a commencĂ© Ă  donner de nouveau l’impression de bouger. Contrairement Ă  une simple liste de titres, un calendrier montre la densitĂ© des traces. On voit d’un coup d’oeil quels jours sont chargĂ©s en articles, quels jours sont vides, et oĂč se trouve aujourd’hui.

J’ai aussi ajoutĂ© des informations d’activitĂ© aux catĂ©gories

Si je n’ajoutais que le calendrier, le flux des dates devenait visible, mais le flux par catĂ©gorie restait terne.

J’ai donc aussi créé sidebar-nav-stats.html.

Cet include considĂšre l’URL de chaque Ă©lĂ©ment de sidebar comme un chemin de catĂ©gorie, puis filtre Ă  nouveau les articles appartenant Ă  cette catĂ©gorie.


{% assign stat_posts = site.posts | where_exp: "post", "post.hidden != true" %}
{% assign stat_categories = include.url | remove_first: "/" | split: "/" %}

Par exemple, /daily-review affiche le nombre d’articles de la catĂ©gorie daily-review, et /diary/ai ne garde que les articles qui contiennent Ă  la fois diary et ai.

La sortie est simple.

Nombre d'articles · Date du dernier article

J’ai aimĂ© cela parce que la sidebar sortait du simple rĂŽle de table des matiĂšres.

On voit combien d’articles Daily Review existent, quand le dernier article AI a Ă©tĂ© publiĂ©, et si GitHub Pages Blog est rĂ©ellement actif. Pour savoir si un blog est vivant ou mort, la date la plus rĂ©cente parle souvent plus clairement que le nombre d’articles.

J’ai immĂ©diatement ajustĂ© la densitĂ© mobile

DĂšs que j’ai ajoutĂ© le calendrier, la densitĂ© mobile est devenue un problĂšme.

La sidebar a de la place sur desktop, mais sur mobile elle descend sous le corps de page ou se mĂȘle au menu. Si les cellules du calendrier sont grandes ou si les libellĂ©s de nombre d’articles sont longs, un seul widget prend trop d’écran.

Donc dans 17d074d et b401d8b, j’ai immĂ©diatement resserrĂ© les libellĂ©s d’activitĂ© de sidebar et la densitĂ© du calendrier.

17d074d  fix: tighten sidebar activity labels
b401d8b  [Fix] | Sidebar calendar: Improve mobile density

Dans le SCSS, j’ai fixĂ© les cellules de dates avec aspect-ratio: 1, utilisĂ© des tailles de police plus petites et un radius de 4px. Les informations d’activitĂ© des catĂ©gories ont Ă©tĂ© rendues assez petites pour tenir sur une ligne.

L’important ici Ă©tait de ne pas faire du calendrier le personnage principal.

Le calendrier est un dispositif qui aide la navigation du blog. Il ne doit pas devenir plus grand que le contenu. Surtout dans un blog de traces, la sidebar doit donner de l’information sans gĂȘner la lecture.

Je l’ai changĂ© pour utiliser le mois de l’article courant

Un problĂšme plus important est apparu tout de suite.

Si le calendrier repose sur site.time, alors mĂȘme pendant la lecture d’un article de 2025, le calendrier montre mai 2026. Dans ce cas, le calendrier n’explique pas le contexte de l’article courant.

Donc dans ccb58d5, j’ai changĂ© la date de base.

ccb58d5  [Fix] | Sidebar: Refine calendar behavior

Le point clé est ici.


{% assign calendar_source_date = site.time %}
{% if page.date %}
  {% assign calendar_source_date = page.date %}
{% endif %}

Si la page a une date, il affiche le mois de cette date. Sur les pages sans date, il utilise toujours site.time.

Cette modification a changé le caractÚre du calendrier.

Le premier calendrier montrait “l’état du blog ce mois-ci”. Maintenant, il montre “le temps dans lequel l’article courant est placĂ©â€. Si je lis un ancien Daily Review, je peux voir le flux des traces de ce mois-lĂ  et retrouver quels autres articles existaient dans le mĂȘme mois.

C’est beaucoup plus juste pour un blog de traces centrĂ© sur les dates.

Plusieurs articles le mĂȘme jour sont devenus une liste

Dans le mĂȘme commit, j’ai aussi ajoutĂ© des listes d’articles par date.

S’il n’y a qu’un article dans une journĂ©e, envoyer le lien de la date directement vers cet article convient. Mais s’il y a plusieurs articles le mĂȘme jour, un problĂšme apparaĂźt. Rien que le premier jour de reprise, Daily Review et l’archive de conversation IA existaient Ă  la mĂȘme date.

Donc quand une date a plusieurs articles, le lien de la date ne va pas directement vers un article. Il se déplace vers la liste des articles de cette date.

<section id="sidebar-calendar-2026-05-25-posts" class="sidebar-calendar__post-list">
  <h4 class="sidebar-calendar__post-list-title">Articles du 25 mai</h4>
  <ul>
    ...
  </ul>
</section>

La rÚgle à ce stade était simple.

1 article : aller vers cet article
2 articles ou plus : aller vers la liste d'articles de cette date

Ce n’est pas tant une rĂšgle parfaite qu’une maniĂšre de rĂ©soudre immĂ©diatement le problĂšme des multiples articles Ă  la mĂȘme date. Mais le plus important, c’est que le systĂšme ne cache pas le problĂšme.

Le systĂšme doit reconnaĂźtre qu’une seule date peut contenir plusieurs articles. Si un blog peut publier Daily Review, conversations IA et journaux de dĂ©veloppement le mĂȘme jour, ce traitement est nĂ©cessaire.

J’ai aussi ajoutĂ© une enhancement JavaScript

Avec seulement le calendrier Liquid, la navigation centrĂ©e sur le mois courant est possible, mais passer d’un mois Ă  l’autre reste peu pratique.

Donc dans b06b6d6, j’ai ajoutĂ© JavaScript.

b06b6d6  [Feat] | Sidebar calendar: Add archive navigation

Le nouveau fichier est celui-ci.

assets/js/custom/sidebar-calendar.js

Et je l’ai enregistrĂ© dans after_footer_scripts de _config.yml.

after_footer_scripts:
  - /assets/js/custom/dark-theme.js
  - /assets/js/custom/sidebar-calendar.js

CÎté Liquid, les données des posts descendent en JSON.

<script type="application/json" data-calendar-posts>
[
  {
    "title": "...",
    "url": "...",
    "date": "2026-05-25"
  }
]
</script>

JavaScript lit ces donnĂ©es et construit postsByDate, postCountByMonth, postCountByYear et latestPostMonthByYear. Ensuite, il rend les boutons mois prĂ©cĂ©dent/suivant, un month input, des boutons de nombre d’articles par annĂ©e/mois, et des listes dynamiques d’articles par date.

J’aimais cette structure parce qu’elle n’abandonnait pas le fallback.

Si JavaScript est disponible, le dĂ©placement entre les mois et la navigation d’archive deviennent pratiques. MĂȘme sans JavaScript, Liquid rend dĂ©jĂ  le mois de l’article courant et la liste fallback pour les dates avec plusieurs articles.

Cet équilibre compte dans un blog statique.

Ce qui a changĂ© aujourd’hui

Le flux de cette nuit jusqu’à l’aube ressemblait à ceci.

f6971fc  Ajout du calendrier de sidebar et des statistiques d'activité par catégorie
17d074d  Resserrement de la densité des libellés d'activité de sidebar
b401d8b  Ajustement de la densité du calendrier mobile
ccb58d5  Gestion du mois de l'article courant et des dates Ă  articles multiples
b06b6d6  Ajout de l'enhancement JavaScript pour la navigation d'archive mensuelle

Les fichiers centraux sont ceux-ci.

_includes/sidebar.html
_includes/sidebar-calendar.html
_includes/sidebar-nav-stats.html
assets/js/custom/sidebar-calendar.js
_sass/custom/customOverride.scss
_config.yml

En une phrase :

J’ai ajoutĂ© Ă  la sidebar du blog une couche de navigation qui montre le flux des dates et de l’activitĂ© par catĂ©gorie.

Résultat

La sidebar du blog n’est plus une simple liste de catĂ©gories.

Elle montre le mois auquel appartient l’article courant, marque les dates avec des articles, et dĂ©plie en liste les journĂ©es qui ont plusieurs articles. Les entrĂ©es de catĂ©gorie affichent le nombre d’articles et la date du dernier article. Si JavaScript est activĂ©, on peut parcourir l’archive du blog en passant d’une annĂ©e et d’un mois Ă  l’autre.

Du point de vue portfolio, l’intĂ©rĂȘt de ce travail est d’avoir amĂ©liorĂ© la navigation sans serveur.

Il n’y a ni DB sĂ©parĂ©e, ni API. Avec site.posts de Jekyll, Liquid, SCSS et un petit morceau de JavaScript, j’ai comblĂ© un point faible du blog statique. Les traces ont des dates. Quand ces dates apparaissent dans l’UI, le blog ressemble moins Ă  un tas d’articles qu’à un systĂšme qui avance dans le temps.

Le calendrier ajoutĂ© aujourd’hui en est le dĂ©but.

Laisser un commentaire