Utvecklingsjournal — MkDocs Comments/Chrome (2025-08-28)#
Den här journalen sammanfattar vårt felsökningsarbete kring Comments-panelen i högerspalten för “Source Code”-vyerna i Material for MkDocs, där layouten fungerade bra i Firefox men visade märkliga problem i Chrome. Målet var att se till att kolumnbredden för högerspalten nyttjades korrekt även i Chrome samt att kodmarkeringen (docstrings) blev tydlig, utan att påverka annan layout. På grund av tidsskäl pausas arbetet tills vidare - det fungerar utmärkt i Firefox-baserade webbläsare.
Ajdö till Zen som primär browser - halloj Edge - Chrome baserad men har native tabs i sidebar och fungerar helt ok med linux - och ger smidigare stöd för att utveckla mot viewTransition API:et.
Chromebaserad

Firefoxbaserad

Utgångsläge#
Tema: Material for MkDocs, egna overrides under
overrides/.Comments-panelen injiceras av
overrides/partials/toc.htmli sidopanelen till höger (secondary sidebar).Egen CSS för Comments:
docs/stylesheets/comments.cssochdocs/stylesheets/comments_layout.css.Kodmarkering (docstrings m.m.):
docs/stylesheets/highlight-docstrings.css.JavaScript för att ladda kommentarsinnehållet:
docs/javascripts/comments.js(hämtar HTML fråndocs/assets/comments/code/<lang>/<code_rel_path>.html).
Symptombeskrivning#
I Firefox: högerspalten nyttjade bredden rätt, både kodblock och brödtext i Comments visades och fyllde utrymmet.
I Chrome: högerspalten var bred, men brödtext i Comments använde inte hela bredden. Kodblock såg “bredare” ut (ledde ibland till horisontell scrollbar), medan vanlig text såg hopklämd ut.
Vid ett tillfälle syntes Comments inte alls i högerspalten efter aggressiva CSS-förändringar (senare återställt).
Hypoteser och observationer#
Flex + scroll-min-content i Chrome: Nestlade scroll-containrar i flexlayouter gör ofta att Chrome beräknar min-bredd som min-content, vilket kan trycka ihop kolumnen.
Material-temats ToC begränsar ofta högersidans “inner”-container för läsbarhet. Chrome följer denna begränsning striktare än Firefox.
“Measure” för text: Material använder en variabel (ungefär 45–70ch) för textraders längd. Kodblock följer inte den begränsningen — därav skillnaden.
Åtgärder vi testade (kronologiskt)#
Läsning av konfiguration och overrides
Granskade
mkdocs.yml,overrides/main.html,overrides/partials/toc.htmlsamt relaterad CSS/JS.
Ta bort extra wrappers i
toc.html
Tog bort ytterligare nivå
.md-sidebar__scrollwrap/.md-sidebar__innerkring Comments för att undvika nestlade scroll-containrar.Effekt: Viss förbättring i struktur, men Chrome begränsade fortfarande brödtextens bredd.
Lades tillbaka senare då alternativa försök gav regressioner.
Min-bredd-guard och flexjusteringar
Satte
min-width: 0på relevanta flexbarn (.md-content,.md-sidebar--secondary).Justerade
flex-shrinkgenom att ändraflex: 0 1 ...respektive0 0 ...för högerspalten.Testade
overflow-x: visiblepå scrollwrap som nödlösning.Effekt: Dämpade men ej robust lösning i Chrome.
Flytta ToC till vänster (
toc.integrate)
Aktiverade
theme.features: [toc.integrate]imkdocs.ymlför att avsätta hela högerspalten för Comments.Ändrade
toc.htmlså bara Comments renderades i högerspalten.Effekt: För stora sidoeffekter, ungick regressioner och bröt UX. Återställdes.
Grid i högerspalten
Testade att styra
.md-sidebar--secondary .md-sidebar__innermed CSS Grid för att tydligt separera ToC och Comments i egna rader.Effekt: Bättre struktur, men gav följdproblem med scroll och var känsligt i Chrome. Återställdes.
Justering av typografisk measure för Comments
Försökte först med
--md-typeset-measure: 100%på#__comments-pane(ogiltigt värde i vissa kontexter).Bytte till giltig enhet:
--md-typeset-measure: 999chsamtmax-width: none. Syfte: låta brödtexten nyttja hela kolumnen.Laddade tillfälliga debugutskrifter via
?cmdebug=1icomments.jsför att läsa utsidebar/inner/pane-bredd. I Chrome sågs t expane: 276pxnärinnervar ~710px, vilket pekade på kvarvarande max-width-kläm.Effekt: Delvis, men krävde kraftiga
!important-regler för att vinna över temat — detta ledde till risk för regressioner (Comments dök ej upp i vissa vyer). Återställdes.
Forcera bredd med !important
Tvingade
.md-sidebar__scrollwrapoch.md-sidebar__innertillwidth: 100% !important, samt satte ToC till en explicit maxbredd.Effekt: Gav utrymme, men på bekostnad av robusthet. Comments försvann ibland i vissa vyer. Återställdes.
Test- och debuginnehåll
Lade till en tillfällig testsida (
docs/source/test/test_layout.md) och Comments-HTML (SV/EN) för att återskapa edge-cases med långa paths/URL:er/ord.Effekt: Bra för reproduktion, men plockades bort efteråt.
Kodmarkering (docstrings och kommentarer)
Krav: Endast docstrings ska markeras som hela rader (hl_lines). Inline-kommentarer (# …) ska inte få bakgrund.
Vi experimenterade med:
Tog bort token-bakgrund för
.sd(docstring-strängar) och lät hl_lines sköta radmarkeringens bakgrund.Säkerställde att
.c/.c1(kommentarer) ej fick bakgrund.Upptäckte “förskjutna” docstring-radintervall i
docs/source/src/app/main.md. Jämförde mot AST och noterade att statiskahl_linesvar inaktuella.La temporärt in auto-generering av wrappers före build (körde AST för att skriva nya
hl_lines), men avstod för att inte störa nuvarande pipeline.
Slutinsikt: hl_lines måste hållas i synk med koden, annars blir radbakgrundsfärgen fel — CSS är inte roten till felet här.
Nuvarande status (paus)#
Layouten är återställd till stabil version före experimenten.
Comments renderas igen i högerspalten.
Vi pausar vidare layoutändringar i Chrome tills vi har planerat ett mer kontrollerat angreppssätt, utan att riskera regressions i andra vyer.
Lärdomar#
Chrome hanterar flex + nestlade scroll-containrar och typografisk “measure” strängare än Firefox.
--md-typeset-measurekräver giltig längdenhet (t.ex.ch), inte procent.Att försöka vinna över temats max-width med
!importantblir snabbt skört; håll dig inom temats DOM/klass-struktur där möjligt.För docstring-markering ligger roten till felet i hl_lines-intervallen — dessa ska hållas synkade automatisk istället för workarounds i CSS.
Förslag inför nästa iteration#
Antingen:
Integrera ToC i vänster-navigatorn (Material’s
toc.integrate) för att reservera hela högerspalten till Comments, ellerBygg en robust grid-layout för högerspalten (utan extra wrappers) och ge ToC respektive Comments varsin tydlig rad, med
min-width: 0.
Sätt
--md-typeset-measureendast för#__comments-paneoch bekräfta att inga andra selektorer (från temat) åter klämmer max-width.Ha en minimal, mätbar debug-funktion (utan att röra prod) för att snabbt mäta
sidebar/inner/pane-bredd.Automatisera hl_lines-regenerering i build-steget så docstring-rader alltid matchar källkoden.
Sammanfattning#
Vi har systematiskt testat markup, CSS och JS för att få Chrome att använda Comments-kolumnens bredd lika effektivt som Firefox. Flera vägar förbättrade, men skapade risk för regressioner i navigation och scrollbeteenden. Vi har därför valt att pausa vidare ändringar tills vi kan planera ett kontrollerat ingrepp (via toc.integrate eller grid) och komplettera med automatisk generering av hl_lines så kodmarkeringen ligger i fas även när koden ändras.
Senast uppdaterad: 2025-08-28 Avsikt: Dokumentera felsökningen samt beslut om tillfällig paus och att återuppta med en mer robust lösning.