feat(docs): chip «Spiegamelo facile» — copia pagina + assistenti AI (v0.9.0)#12
Merged
Conversation
Aggiunge a ogni lezione un chip nella riga delle briciole che copia la pagina in Markdown ripulito e la apre in un assistente AI (Gemini, Claude, Grok, ChatGPT, Perplexity). - plugins/copy-page-md: a build-time emette un .md ripulito per ogni doc (route <permalink>.md). Legge permalink+source via allContentLoaded (niente ricalcolo dei permalink); sanitizer che protegge fenced/inline code prima di togliere il JSX (PyRunner src inline, InlineCode→backtick, Tabs/Epigraph srotolati, Quiz/Algorithm/SQLRunner→placeholder). In dev espone il Markdown via globalData; in produzione fetch del file statico. - CopyPageButton: dropdown floating-ui (riusa il pattern di Tooltip); «Copia pagina» riusa la clipboard del PyRunner; font Monaspace. Gate interno: null fuori dal DocProvider (pagine category generated-index). - Icon: loghi brand ufficiali (openai/claude/perplexity/gemini/grok) + microchip-ai (FA Pro 7.1.0 duotone) + chevron-down. - PyRunner Toolbar: il bottone «Spiegamelo facile» usa microchip-ai (al posto di faWandMagicSparkles), coerente col chip. - DocBreadcrumbs: monta il chip a destra delle briciole (flex). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
L'app web gemini.google.com/app non onora il prefill via URL (?q= / ?prompt=): funziona solo con un'estensione Chrome di terze parti, quindi il link apriva Gemini vuoto. Tolta la voce dal dropdown. - providers.ts: rimossa l'entry gemini; restano Claude, Grok, ChatGPT, Perplexity (prefill nativo verificato). - icons.ts: rimossa l'icona gemini (ormai inutilizzata) dal tipo IconName e dalla mappa DUOTONE; commenti aggiornati. Nota: l'alternativa funzionante sarebbe Google AI Mode (udm=50), Gemini-powered, ma si è preferito togliere la voce anziché mascherarla da «Google». Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
Prima il container delle briciole era flex-wrap:wrap con due figli (la <ul> e il chip): quando le briciole riempivano la riga, il chip intero scendeva sotto, ancorato a destra ma «allineato a niente». Ora il container è nowrap e a mandare a capo è la lista delle briciole (già flex-wrap in Infima), resa flex item elastico (flex:1; min-width:0). Il chip resta sulla prima riga, in alto a destra (align-items:flex-start), e le briciole lunghe vanno a capo al loro interno. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
- DocBreadcrumbs: su mobile (max-width 768px) il container passa a flex-direction:column. Tenere il chip in riga costringeva le briciole a incolonnarsi una parola per riga (peggio negli esercizi col percorso lungo). Ora: briciole sopra a piena larghezza (wrap naturale), chip sotto. - CopyPageButton: il group label del menu diventa «Chiedi una spiegazione a» (era «Chiedi aiuto a»). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
Il box collassabile «Su questa pagina» (solo mobile) usava il default Docusaurus --ifm-global-radius (6.4px), fuori dalla scala del progetto: stonava accanto agli altri box/chip. Portato a --radius-md (14px). Selettore a classe raddoppiata per battere il CSS module .tocCollapsible_… (pari specificità, vinceva per ordine di cascata). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
…'origin reale Due correzioni emerse dalla review della PR. - Sanitizzatore (plugins/copy-page-md): il catch-all che rimuove i tag JSX usava [^>]* e si fermava al primo «>», anche se dentro una stringa d'attributo (es. explainPrompt="se a > b…"), troncando il tag e lasciando testo residuo nel .md. Ora un frammento condiviso consuma le stringhe quotate per intero, fermandosi sul «>» reale di chiusura del tag. - CopyPageButton: l'URL del .md passato agli assistenti AI era costruito da siteConfig.url (unica URL canonica, build-time). Ora è calcolato a runtime da window.location.origin nel click handler, così punta sempre all'host da cui la pagina è realmente servita (dominio custom, fallback GitHub Pages o deploy di preview) ed è SSR-safe. Rimossi useDocusaurusContext/siteConfig inutilizzati. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cosa
Aggiunge a ogni lezione un chip «Spiegamelo facile» nella riga delle briciole: copia la pagina in Markdown ripulito e la apre in un assistente AI, oppure copia solo la pagina.
Feature (6691772)
plugins/copy-page-md: a build-time emette un.mdripulito per ogni doc (route<permalink>.md), con sanitizer che protegge fenced/inline code e srotola/placeholder-izza i componenti (PyRunner, SQLRunner, Quiz, Algorithm, Tabs, Epigraph). In dev via globalData, in produzione via fetch del file statico.CopyPageButton: dropdown floating-ui; «Copia pagina» riusa la clipboard del PyRunner.microchip-ai.Fix di rifinitura (questa sessione)
gemini.google.com/appnon onora il prefill via URL (servirebbe un'estensione di terze parti). Restano Claude, Grok, ChatGPT, Perplexity (prefill nativo verificato).--radius-md, coerente con la scala del progetto.Verifica
npm run buildok (gate link superato).Bump: v0.9.0 (minor, feature).
🤖 Generated with Claude Code