Skip to content

fix: sidebar hint — st.html() + correction de la logique d'affichage - #31

Merged
SKOHscripts merged 1 commit into
mainfrom
claude/fix-sidebar-hint-v3
May 26, 2026
Merged

fix: sidebar hint — st.html() + correction de la logique d'affichage#31
SKOHscripts merged 1 commit into
mainfrom
claude/fix-sidebar-hint-v3

Conversation

@SKOHscripts

Copy link
Copy Markdown
Owner

Deux bugs corrigés

1. Avertissement de dépréciation : remplacer st.components.v1.html par st.html()

st.html() (disponible depuis Streamlit 1.36) rend le HTML inline dans la fenêtre principale — les scripts s'exécutent directement, sans iframe. Plus besoin de window.parent, la complexité cross-origin disparaît.

2. La flèche n'apparaissait jamais

Le poll setInterval vérifiait sidebarIsOpen() toutes les 400 ms dès le démarrage. Si la sidebar était déjà ouverte au chargement (ce qui est le cas par défaut), il posait immédiatement sbVisited='1' dans le sessionStorage — empêchant définitivement l'apparition de la flèche.

Fix : introduction de window._sbShowing. Le poll ne dismissit que si la flèche est déjà visible. Le timer de 20s vérifie que la sidebar est fermée avant d'afficher, puis passe _sbShowing = true.

Flux corrigé :

  1. Chargement → hint caché, timer 20s lancé, poll démarré (_sbShowing = false)
  2. Poll tourne mais ne fait rien (_sbShowing est false)
  3. Après 20s : si sidebar fermée → flèche visible, _sbShowing = true
  4. Ouverture de la sidebar → poll détecte _sbShowing && !sidebarIsClosed() → dismiss + sbVisited

Plan de test

  • Ouvrir l'app sans base de données, sidebar fermée
  • Attendre 20 secondes → la flèche ↖ « Ouvrir le menu » apparaît
  • Ouvrir la sidebar → la flèche disparaît immédiatement
  • Recharger → flèche ne réapparaît plus
  • Vérifier l'absence du warning de dépréciation dans les logs Streamlit

https://claude.ai/code/session_01VTBKKYLiAQ6mDPdmVhpRAT


Generated by Claude Code

Two bugs fixed:

1. Deprecation warning: replace st.components.v1.html with st.html()
   (available since Streamlit 1.36). st.html() renders inline in the
   main window so scripts execute without an iframe; window.parent and
   the associated cross-origin complexity are no longer needed.

2. Arrow never appeared: the previous poll called sidebarIsOpen() every
   400 ms and immediately set sbVisited='1' when the sidebar was already
   open on load, preventing the hint from ever showing. Fixed by
   introducing window._sbShowing: the poll only dismisses after the
   timer has actually made the hint visible. Also inverted the helper
   to sidebarIsClosed() (truthy = toggle button exists and is visible)
   to make the intent unambiguous.

https://claude.ai/code/session_01VTBKKYLiAQ6mDPdmVhpRAT
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity · 0 duplication

Metric Results
Complexity 0
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@SKOHscripts
SKOHscripts marked this pull request as ready for review May 26, 2026 20:55
@SKOHscripts
SKOHscripts merged commit 4a4d734 into main May 26, 2026
5 checks passed
@SKOHscripts
SKOHscripts deleted the claude/fix-sidebar-hint-v3 branch May 26, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants