Registre de canvis
Tots els canvis importants d'aquest projecte es documenten en aquest fitxer.
El format està basat en Keep a Changelog, i el projecte segueix el Versionatge Semàntic.
[Sense publicar]
Arreglat
- El botó «Atura» ara atura de veritat. L'
AbortControllerno arribava a la sidebar fins que la generació ja havia acabat, de manera que clicar «atura» durant l'streaming no feia res i, en alguns casos, en llançava una segona generació sobre el mateix resum. - Un PDF local seleccionat ja no contamina resums posteriors. El contingut precarregat d'un PDF triat manualment es quedava «enganxat» i podia reaparèixer en resumir una pestanya completament diferent.
- Les targetes Anki desades a l'Historial es poden tornar a obrir. Abans es renderitzava el JSON cru com a text pla en lloc del panell interactiu. Si el model no retorna cap targeta vàlida, ara es mostra un avís en lloc de desar una entrada d'Historial trencada.
- Missatge d'estat en «Actualitzar models». El text d'èxit/error del
botó a Settings quedava permanentment invisible per un conflicte entre
style.displayi la classe CSS.hidden; ara es mostra correctament. - Ordre de la toolbar en instal·lacions antigues. Un
extensionOrderdesat abans que existís el plugin d'Anki no l'incloïa mai a la migració automàtica, deixant el seu botó sempre a la posició per defecte del DOM en lloc de l'ordre triat per l'usuari. - Fuita de listeners al mapa conceptual del sidebar. Cada cop que es
renderitzava un mapa conceptual (nova generació, cache o historial)
s'afegien listeners de pan/zoom a
windowque mai es netejaven; en sessions llargues amb molts mapes s'acumulaven indefinidament. - Avortar durant la cerca del contingut de la pàgina ara avisa. Abans tornava en silenci sense cap missatge; ara mostra "Generació aturada per l'usuari" com a la resta de camins d'aturada.
- Ordre del desplegable de models. El model per defecte surt sempre primer, independentment de si n'hi ha un de més nou a la llista.
- Desmarcar el model per defecte dels favorits ara es respecta. Abans es tornava a afegir sol a cada càrrega del sidebar.
- Fallback de models amb context més petit. Si la generació passa a un model de reserva amb una finestra de context més petita, el text ara es retalla per a aquell model en lloc de reutilitzar el retall fet per al model preferit (podia provocar un error no reintentable i tallar tota la cadena de reserva).
- Historial de resums buit en instal·lacions sense l'índex de cache creat. Es reconstrueix correctament enumerant les entrades existents.
- «Genera més»/«Afinar» de les targetes Anki amb doble clic. Una segona petició mentre la primera encara s'estava generant podia duplicar o entrellaçar targetes; ara s'ignora fins que la primera acaba.
- Un resum que s'encallava a mig streaming es quedava penjat per sempre. El timeout de seguretat (60s) només cobria l'espera inicial de resposta del servidor; ara es reinicia a cada fragment rebut i també protegeix el cos de l'streaming.
Canviat
- Catàleg de models de Gemini actualitzat (2026-08-09): preus i
disponibilitat sincronitzats amb la documentació oficial de Google
(ai.google.dev, actualitzada 2026-08-05). S'afegeixen
gemini-3.6-flash,gemini-3.5-flash-liteigemini-2.5-flash-lite. Es corregeix el preu de sortida degemini-2.5-pro(era la meitat del real: $5,00 en lloc de $10,00/1M tokens) i es reflecteix la pujada de preu degemini-3.5-flash($0,30→$1,50 entrada, $2,50→$9,00 sortida). Taxa EUR/USD actualitzada a Q3 2026 (0,87).
[2.6.2] - 2026-07-27
Arreglat
- Resums de Hacker News. En resumir un fil de HN amb un article enllaçat, ara s'inclou també el contingut de l'article (abans només s'enviava la discussió).
[2.6.1] - 2026-06-29
Arreglat
- Botó «Targetes Anki». Després de generar un resum, el botó de Targetes Anki es quedava desactivat i no es podia tornar a fer servir. Ara funciona correctament en qualsevol moment.
[2.6.0] - 2026-06-26
Afegit
- Plugin «Targetes Anki»: genera targetes de pregunta/resposta (flashcards) del
contingut de la pàgina amb Gemini i les exporta a Obsidian amb la sintaxi
obsidian_to_anki. Configurable a Settings: activació, vault propi (independent del plugin d'Obsidian; la primera càrrega n'agafa el valor si Obsidian està configurat), ruta de la nota, mida del paquet, idioma (CA/EN) i prompt editable. - Panell de targetes estil flashcard: pregunta centrada a dalt, divisòria i
resposta a sota; cada targeta s'edita o es descarta individualment (
Edita/Descarta). Selecció desmarcada per defecte, amb toggleSelecciona-ho tot/Deselecciona-ho toti botóDescarta-ho tot. Genera mésiAfinar: «Genera més» empeny el model cap a detalls secundaris per seguir produint targetes noves; «Afinar» centra la generació en un aspecte concret (sense excloure les existents, perquè pugui aprofundir). Indicador de càrrega (puntets) mentre s'espera i avís informatiu quan no hi ha més punts nous. La caixa d'Afinar queda fixa al fons, just sobre la barra inferior.
Eliminat
- Llibreria Defuddle (
defuddle.js, ~571 KB): només s'usava per a Twitter/X i el scrape directe del DOM ([data-testid="tweetText"]) ja captura els fils igual de bé (tots dos llegeixen el mateix DOM renderitzat). L'extracció de Twitter/X passa a: scrape de tweets com a via primària + metaog:descriptioncom a fallback robust (HTML servit pel servidor, immune a canvis del DOM). Elimina 3 warnings recurrents d'AMO («Unsafe assignment to innerHTML» interns de la llibreria de tercers) i ~571 KB del paquet.
[2.5.0] - 2026-06-12
Arreglat
- Chromium/Edge: el panell lateral s'obre des de la icona. El Chromium modern
(≥ ~140) també exposa un global
browser, cosa que feia que la detecció de navegador (typeof browser) classifiqués Edge/Chrome com a Firefox i totext.sidebarfos un no-op silenciós (el panell no s'obria mai). La detecció ara usabrowser.sidebarActioni s'exposa com aext.isFirefox(única font de veritat). Tests de regressió que simulen el Chromium real (globalbrowserpresent sensesidebarAction). - Selector de models llegible a la barra inferior: la fletxa nativa del desplegable se superposava al nom del model a Chromium/Edge; ara hi ha un caret SVG propi amb espai reservat i el·lipsi.
- Lectura biònica amb mida coherent a tot arreu: la mida s'aplicava en
emrelatiu al pare (12px) i «Normal» es veia més petit que la lectura normal; a més, cada camí (toggle, streaming, historial) aplicava els estils pel seu compte. Ara un únic helper (applyBionicStyles) ancora la mida en px sobre--content-base-size(sidebar.css). - Twitter/X als paquets publicats:
defuddle.jsno s'incloïa als ZIPs de producció i l'extracció de fils queia silenciosament al fallback. - Errors de permís reconeguts a Chromium/Edge: el missatge «Cannot access contents of the page» no es detectava (només la variant de Firefox) i l'usuari veia l'error de permisos en pàgines HTTPS normals en lloc de la petició de permís.
- Mapa conceptual: enquadrament inicial més allunyat (escala d'autofit 0.78): el mapa es veu sencer per defecte, sense haver d'allunyar el zoom amb la roda.
- Errors més clars en pàgines restringides (nou codi
[011]): s'explica el motiu real (pàgina restringida o permís denegat) en lloc de suggerir recarregar.
Canviat
- Permisos:
<all_urls>ara és requerit a la instal·lació (abans era opcional en temps d'execució): resumir ja no demana permís lloc a lloc. ⚠️ En actualitzar, el navegador demana re-aprovar els permisos — és normal i només passa una vegada. - A Chromium el clic a la icona usa el comportament natiu del panell
(
openPanelOnActionClick); el listener d'acció només es registra a Firefox (són mútuament excloents a Chromium).
Accessibilitat
- Focus de teclat visible al selector de models (WCAG 2.4.7), que amb el caret personalitzat hauria quedat invisible.
Desenvolupament
npm run dev:chromium: genera la carpeta desempaquetada per provar a Edge/Chrome (elmanifest.jsonde l'arrel és el de Firefox i no funciona a Chromium).- Proposta de valor i pla de comunicació (
docs/COMUNICACIO.md); literals d'AMO i CWS alineats; README reescrit amb crèdits a les llibreries open source (Readability, Defuddle, pdf.js, markmap+D3).
[2.4.1] - 2026-06-10
Canviat
- CI/Node:
node-version20 → 22 als workflows (Node 20 és EOL),softprops/action-gh-releasev2 → v3 (node24-native) i eliminada l'env var pontFORCE_JAVASCRIPT_ACTIONS_TO_NODE24;engines.node>=18 → >=20. - Migració de prompts versionada per-prompt (
PROMPT_VERSIONS): evita banners falsos de "nova versió del prompt" quan només canvia un prompt. Lògica extreta a una funció pura testejada (computePromptMigration, 8 casos nous). - Llengua: verbs dels botons unificats a infinitiu (guia de Comunicació Clara de Gencat) i castellanismes corregits ("Desar" per "Guardar", "memòria cau" per "caché", "claudàtors" per "corxers", "ressaltarà", "a la barra lateral").
Accessibilitat
- Mapa conceptual operable amb teclat: toggles amb
tabindex/role=button/aria-labeli Enter/Espai; vista a pantalla completa com a diàleg modal real (role=dialog, focus al botó de tancar, focus trap i restauració del focus). - Contrast del tema solarized a WCAG AA (text i text secundari).
aria-pressedals botons commutables (biònic, desplega/plega tot),aria-currental nav de configuració, i historial operable amb teclat.
Seguretat
- Mapa a pantalla completa: es demana confirmació abans d'injectar l'overlay si la pestanya activa no coincideix amb l'origen del mapa (evita filtrar el contingut a una pàgina diferent).
[2.4.0] - 2026-06-10
Afegit
- Nou plugin "Explica-ho fàcil": reescriu el contingut en llenguatge senzill i
planer, assumint que l'usuari no té coneixements previs del tema. Botó bombeta
(ambre) a la toolbar, tipus de contingut
simple(💡) a l'historial, prompt editable amb banner d'actualització i reset a Settings. (minor) - Lectura de PDF com a plugin ordenable: el botó de PDF local passa a ser un
plugin complet (id
selectpdf, etiqueta "PDF"): toggleenablePdf(actiu per defecte), entrada a la llista de Plugins amb moure amunt/avall, nav lateral i pestanya informativa. Ara es pot activar/desactivar i reordenar. (minor)
Canviat
- Ordre per defecte dels plugins centralitzat a
DEFAULT_EXTENSION_ORDER(shared/defaults.js): resum, PDF, Explica-ho fàcil, aprofundiment, validació científica, mapa conceptual, Obsidian, Markdown, lectura biònica. S'aplica com a fallback quan no hi ha ordre desat (substitueix la dependència de l'ordre del DOM). Els usuaris amb ordre personalitzat el conserven. (minor)
Corregit
- Auditoria pre-producció (2026-06-10):
- Botons dels banners d'actualització de prompts morts per CSP: els 8 botons
usaven
onclickinline, que la CSP de MV3 (script-src 'self') bloqueja a les pàgines d'extensió. Ara van ambdata-attributes+ binding delegat asettings.js. La guia deshared/defaults.js(pas 6) actualitzada. (patch) - Recursió infinita a l'export PNG del mapa (mode dev): un wrapper top-level
buildConceptMapFilenameaconceptmap.jssobreescrivia la util global i es cridava a si mateix amb scripts separats. Eliminat. (patch) - Prompts d'Aprofundiment i Validació científica sense bloc SEGURETAT: ara
expliquen al model que
<UNTRUSTED_CONTENT>són dades, no instruccions (PROMPT_DEFAULTS_VERSION→ 4); regex de neutralització del delimitador més tolerant (espais/guions). (patch) - Botons nous actius durant la generació:
conceptMapBtn,explainSimpleBtniselectPdfBtnara es desactiven mentre es genera (abans, clicar-los aturava la generació en curs). (patch) - Fuita de listeners en reobrir el mapa a pantalla completa: la reobertura ara
tanca la instància anterior via
close()(desregistra mousemove/mouseup/keydown/ pagehide);close()també cancel·la el tween en curs. (patch) - TypeError al visor PDF: fletxes de teclat amb el PDF encara no carregat. (patch)
- Botons dels banners d'actualització de prompts morts per CSP: els 8 botons
usaven
- Accessibilitat (auditoria):
aria-labelals 9 toggles de plugins i focus visible al switch (abans invisibles per a lectors de pantalla i teclat);prefers-reduced-motionrespectat a la sidebar, al tween del mapa i a l'overlay; contrast de les icones ambre/verd apujat a ≥3:1 en temes clars (WCAG 1.4.11);role=status/alertiaria-labelal visor PDF; missatge PDF-016 coherent amb el tooltip del botó. (patch) - El botó "Explica-ho fàcil" no apareixia a la sidebar: la clau
enableSimplefaltava aCONFIG_KEYSdesidebar.js, així queconfig.enableSimpleeraundefinedi s'amagava el botó (a Settings sí sortia, perquè usa una llista de claus diferent). AfegidaenableSimple(ienablePdf) aCONFIG_KEYS. Documentat com a trampa adocs/CREAR-PLUGIN.md. (patch) - "Bombolla" a les icones dels botons del mapa conceptual: el selector
descendent
.markmap-container svgpintava fons/vora als SVG de les icones dels botons de control (visible amb temes no blancs com solarized). Escopat amb> svg- resets a la còpia del fullscreen. (patch)
[2.3.1] - 2026-05-29
Afegit
- Script interactiu de preparació de release:
npm run prepare-releaseguia l'usuari pas a pas (branca, commit, PROD, prerelease, build, bump, tag, push) amb confirmació a cada pas. (minor) - Suport de GitHub Sponsors: FUNDING.yml, badge al README i docs/SPONSORS.md. (minor)
Canviat
- Release pipeline (
release.yml): ara executaprerelease(17 checks) ivendor:verifyabans de crear el GitHub Release. (minor) docs/BUILD.md: actualitzat amb el nou flux interactiu i test count. (minor)docs/CONTRIBUTING.md: actualitzats requeriments, tests (233+) i estructura. (minor)docs/PRIVACY_POLICY.md: actualitzada data i correcció storage.local. (minor)docs/README.md: netejat — eliminades referències a fitxers inexistents. (minor)
Eliminat
- Pestanya d'estadístiques eliminada: s'han tret
options/settings-stats.js,tests/settings-stats.test.mjsitests/stats-period.test.mjs(codi no mantingut). Les estadístiques bàsiques (tokens, cache) es mostren al sidebar. (minor)
[2.3.0] - 2026-05-25
Afegit
- Suport per resumir fitxers PDF amb capa de text (issue: extensió no funcionava amb PDFs). Implementat amb pdf.js 3.11.174 (legacy UMD) vendoritzat a
vendor/.- PDFs remots HTTPS: detecció automàtica per extensió
.pdfo perContent-Type: application/pdf(HEAD probe d'1 round-trip per URLs sospitoses sense extensió, p. ex.arxiv.org/pdf/123). - PDFs locals (
file://) i HTTP: nou botó "Selecciona PDF local" a la barra d'eines del sidebar (file picker via<input type="file">+FileReader, sense cap accés de xarxa). - Codis d'error UI:
[PDF-010]protegit,[PDF-011]invàlid,[PDF-012]escanejat (OCR no suportat),[PDF-013]massa gran,[PDF-014]timeout,[PDF-015]fetch fallit,[PDF-016]no-HTTPS (suggereix botó local amb pulse visual),[PDF-019]altres. - Límits: màx 500 pàgines, 2M caràcters, timeout 60s d'extracció + 15s de fetch.
- PDFs remots HTTPS: detecció automàtica per extensió
- Nova pestanya amb el PDF seleccionat: en seleccionar un PDF local, s'obre una pestanya de fons amb el PDF per consultar-lo (limitació: Firefox no renderitza
blob:URLs d'extensions al visor PDF nadiu). (minor)
Corregit
- Race condition en migració de clau API: la migració
sync→locali la lectura de la clau eren dues IIFE independents. L'init podia llegir abans que la migració copiés la clau, mostrant "clau no configurada" tot i tenir-la. Ara la migració és seqüencial dins l'init, i mai s'esborra desyncsilocalja la té. (minor) - Pèrdua silenciosa de dades per quota de storage:
storage.localté un límit de ~5-10MB; en exhaurir-lo, les dades (clau, cache, historial) es perdien sense avís. AfegitunlimitedStorageal manifest per eliminar el límit. (minor) - CORS en PDFs remots HTTPS: el fetch directe des del sidebar fallava per CORS en servidors sense
Access-Control-Allow-Origin. Ara se sol·licita el permís<all_urls>sota gest d'usuari i es reintenta; ambhost_permissionsconcedit, Firefox/Chromium no apliquen CORS al fetch d'extensió. (minor) - Local PDF: error [006] al obrir pestanya blob: el resum de PDFs locals fallava perquè
getPageContent()no podia extreure text de la pestanya blob. Solucionat: el text extret es passa viacontentPreloadamb prefixpdf-local:, i el pipeline l'usa directament sense dependre de la pestanya activa. (minor) - Botó PDF en segona posició: afegit
selectPdfBtnal mapatgeextensionIdToButtonIddeapplyExtensionOrderamb migració automàtica per a usuaris amb ordre desat. (minor) - Preload abans que caché: la comprovació del
contentPreloades fa ara abans de la caché, evitant que un PDF local obtingui un resum en caché de la pàgina web activa. (minor)
Canviat
- CSP
connect-srcrelaxada ambhttps:(afegit amanifest.{base,json,chromium,firefox.patch,chromium.patch,firefox.prod.patch,chromium.prod.patch}.json) per permetre descàrrega de PDFs remots des de qualsevol origen HTTPS. La políticafile:ihttp:queda explícitament exclosa per principi de mínim privilegi. Veuredocs/SECURITY.mdper a la justificació completa i mitigacions. (minor) - Models ordenats per prioritat: la llista de models ara segueix l'ordre flash-lite > flash > pro > gemma, amb versions recents primer dins cada família. Afecta el selector de la sidebar, la llista de configuració i l'ordre de fallback automàtic.
- Build i release 100% Node.js: eliminats
set_dev_mode.ps1,build.ps1,release.ps1iscripts/pwsh-runner.mjs. Les comandesnpm run dev/prod/build/releaseara usen scripts Node.js directament (scripts/set-mode.mjs,scripts/build.mjs,scripts/release.mjs). La CI/CD (release.yml) també s'ha actualitzat per usarnode scripts/build.mjs. (minor)
Seguretat
- pdf.js configurat amb opcions CSP-safe:
isEvalSupported: false,disableFontFace: true,useSystemFonts: false,verbosity: 0. (minor) - Worker pdf.js carregat des d'origen extensió (
runtime.getURL), mai remot. (minor) - Avís important per als usuaris anteriors a v2.2: Si heu instal·lat l'extensió abans de la versió 2.2, la vostra clau API de Gemini pot haver estat emmagatzemada a
storage.sync(sincronitzada entre dispositius). A partir de la v2.2, la clau es guarda exclusivament astorage.local. Es recomana rotar la clau API des de Google AI Studio com a precaució.
[2.2.10] - 2026-05-22
Corregit
- Bug 1 — Llegibilitat del mapa conceptual en tema fosc: el text dels nodes ara és sempre llegible a tots els temes (clar, fosc, sèpia, gris). Les opcions
textColor/toggleBgColores resolen des de variables CSS i s'incrusten directament al SVG exportat a PNG. (minor) - Bug 2 — Mapa conceptual redissenyat amb estil pill (NotebookLM):
- Substituïts els nodes baseline + text per pills
<rect>arrodonits estil NotebookLM. - Paleta pastel jeràrquica idèntica a tots els temes: lila (root) → blau → verd clar → verd menta.
- Text fix
#1a1a1acentrat verticalment dins el pill (dominant-baseline=central). - Mesura precisa del text amb
canvas.measureText(resol desencaixos entre baseline i edges). - Toggle estil NotebookLM: cercle blanc amb glyph
</>tintat amb el color del pill. - Edges connecten extrem dret del pare amb extrem esquerre del fill (opacitat plena).
- Mateix renderitzador a sidebar i a pàgina completa.
- Substituïts els nodes baseline + text per pills
- Bug 3 — Transcripcions de YouTube tornen a funcionar: afegides Via B (variants
json3/srv3/crudel timedtext) i Via C (youtubei/v1/get_transcriptambINNERTUBE_API_KEYiINNERTUBE_CONTEXTextrets del DOM). Quan els subtítols no es poden carregar pel mètode habitual, l'extensió ara prova rutes alternatives abans de fallar.
Canviat
- Nou format del nom de fitxer del PNG del mapa conceptual:
YYYYMMDD_word1_word2.pngderivat del títol arrel del mapa (no del títol de la pestanya). Normalització NFD + strip diacrítics + lowercase + alfanumèric, amb stop-words ca/es/en filtrats. Fallback_mapa.pngsi cap token vàlid. (minor)
Intern
- Nou fitxer
sidebar/conceptmap-filename.jsamb la funció pura compartida entre sidebar i overlay de pantalla completa. (minor) - 15 nous tests unitaris per a la generació de noms de fitxer (
tests/conceptmap-filename.test.mjs). Suite total: 222/222 passen. (minor) - Nou
scripts/set-mode.mjs(port Node deset_dev_mode.ps1) per evitar restriccions deMachinePolicya PowerShell. Els scripts npmdev/prodara hi apunten. (minor)
[2.2.9] - 2026-05-22
Canviat
- Mapa conceptual interactiu reescrit des de zero: substituïdes les llibreries de tercers
d3.min.js,markmap-lib.jsimarkmap-view.js(~640 KB) per un renderitzador SVG natiu propi (sidebar/markmap-native.js, ~22 KB). Mateixa funcionalitat (zoom, pan, plegat de branques, exportació a PNG i pàgina completa) sense dependències externes. - Eliminat camp no estàndard
author_emaildel manifest (Firefox emetia warning). (minor) - Eliminat
web_accessible_resourcesdel manifest Firefox (ja no calen els vendors a la pàgina). (minor)
Seguretat
- Zero warnings a la revisió d'AMO: el codi nou no utilitza
innerHTMLdinàmic,eval()niFunction()— totes operacions DOM viacreateElementNSiDOMParser. Això elimina els 6 warnings que retardaven la revisió de l'extensió. - Reducció significativa de superfície d'atac: tot el codi de visualització és auditable i prop de 95% més petit que les llibreries substituïdes. (minor)
Intern
- Nou fitxer
sidebar/markmap-native.jsintegrat al bundle del sidebar. (minor) scripts/build.mjs,scripts/build-sidebar-bundle.mjs,scripts/pre-release-check.mjsieslint.config.mjsnetejats de referències a vendors eliminats. (minor)
[2.2.8] - 2026-05-22
Corregit
- Crític: els scripts del sidebar no s'incloïen al paquet de release a causa d'un regex fràgil al bundler que es va trencar amb l'ordre de scripts introduït a v2.2.5. Resultat: en instal·lacions des d'AMO, la sidebar no responia als botons (configuració, historial, mode biònic) i la bottom bar no es mostrava. Afectava v2.2.5, v2.2.6 i v2.2.7.
- Les llibreries
d3.min.js,markmap-lib.jsimarkmap-view.jsara s'inclouen al ZIP de release (abans referenciades al HTML però absents al paquet). (minor) conceptmap.jsintegrat al bundle del sidebar per simplificar el manteniment i reduir el nombre de requests. (minor)
Intern
- Nou patcher robust de
sidebar.html: elimina explícitament els scripts del bundle (per llista coneguda) en lloc de dependre d'un regex frágil. (minor) - Nou check #13 al pre-release-check: smoke-test del ZIP verifica que tot script referenciat als HTML existeix dins del paquet abans de publicar. (minor)
[2.2.7] - 2026-05-22
Corregit
- Afegit
web_accessible_resourcesal manifest Firefox per permetre la injecció de les llibreries del mapa conceptual (d3.min.js,markmap-lib.js,markmap-view.js) a pàgines web externes. Sense aquesta declaració, Firefox bloquejava la injecció i el mode pantalla completa del mapa conceptual fallava amb error CSP. (minor)
[2.2.6] - 2026-05-22
Corregit
- Eliminat
incognito: "split"del manifest (no suportat per Firefox) (minor) - Substituït el constructor
Functionperevalindirecte aconceptmap.js(millora de seguretat) (minor) - Restaurades les icones blaves de producció a
icons/prod/iicons/(minor) - Les subcarpetes
icons/dev/iicons/prod/ja no s'inclouen als ZIPs de release (minor) - Ruta del
CHANGELOG.mdcorregida adocs/CHANGELOG.mdals scripts de build (minor)
[2.2.5] - 2026-05-22
Afegit
- El nom del fitxer PNG exportat del mapa conceptual ara usa el format
YYYYMMDD_<titular>.png(titular abreujat a 20 caràcters) (minor)
Canviat
- L'extensió passa a anomenar-se "Resumir" (mode DEV: "Resumir (DEV)")
- Configuració del mapa conceptual: eliminades les opcions de profunditat, branques, expandir tot i mostrar descripcions (ara es controlen des del prompt) (minor)
- Lectura biònica: interlineat per defecte canviat a 1.5, gruix de negreta per defecte canviat a 600 (semi-negreta) (minor)
- La icona del mapa conceptual a configuració ara coincideix amb el botó de la sidebar (minor)
Eliminat
- Eliminada l'opció d'idiomes preferits de YouTube a configuració (la selecció d'idioma ara és automàtica) (minor)
[2.2.4] - 2026-04-27
Afegit
- Indicador de càrrega animat amb punts durant la generació del resum (minor)
- Refactorització de l'extracció de transcripcions de YouTube: extracció MAIN world (Pas 1) + fallback via API (Pas 2) (minor)
- Suport per a
prerenderedTextquanplayerCaptionsTracklistRendererés buit (minor) - Lectura directa de la transcripció des de
ytInitialDatasense obrir el panell (minor) - Protecció contra injecció de prompts: embolcall
<UNTRUSTED_CONTENT>al prompt del sistema - Clau API migrada de
storage.syncastorage.localper millor aïllament de seguretat
Corregit
- El panell de transcripció de YouTube no s'obria en navegar a un vídeo (minor)
- Detecció de la transcripció de YouTube molt més robusta (minor)
- Els punts de càrrega ara s'amaguen en rebre el primer chunk d'streaming (sense parpelleig d'estat buit) (minor)
- La toolbar es manté visible en visualitzar entrades de l'historial de caché (minor)
- La barra de tornada s'amaga en tancar panells per tornar a la vista principal (minor)
- Alineació de la barra del botó de tornada amb la toolbar; menú amagat en visualitzar panells (minor)
Canviat
- Disposició reordenada en visualitzar un resum de caché (minor)
- La classe CSS
.hiddenara sempre amaga elements independentment de l'especificitat (minor)
[2.2.3] - 2026-04-23
Afegit
- Millores a l'extracció de transcripcions ASR (autogenerades) de YouTube (minor)
- Comptador diari per a estadístiques precises per període (minor)
- Límit de l'historial d'estadístiques augmentat de 100 a 1.000 entrades (minor)
- Tests de persistència: validen la integritat de les dades entre actualitzacions de versió (minor)
Corregit
- Lectura de transcripcions de YouTube des de
ytInitialData(suport ASR complet) (minor) - Detecció de la pista activa en l'extracció de transcripcions de YouTube (minor)
- Gestor
onInstalled: evita menús contextuals duplicats en actualitzar (minor) - Fuites de memòria en la caché i els bindings de botons (minor)
- Fallback del model API ampliat; missatges d'error de l'API millorats (minor)
Rendiment
- Temps d'inici de la sidebar millorat (minor)
- Crides API: afegits timeouts i fiabilitat millorada (minor)
- Estadístiques: lectures de
getDailyStatsunificades en una sola cridastorage.get(minor)
Canviat
- Nom al manifest de producció corregit (ja no inclou l'etiqueta
DEV) (minor) - Globals d'ESLint corregits; hook de lint pre-commit afegit (minor)
[2.2.2] - 2026-04-22
Afegit
- Les operacions de caché ara usen un índex de resums per a purga i llistat més ràpids (minor)
- Embolcall de PowerShell multiplataforma (
build.ps1) amb comprovació d'existència de l'script (minor) - Changelog injectat automàticament a
settings.htmlen fer un bump de versió (scriptpostversion) (minor) - Ordres de build i release per a Firefox/Chromium documentades a
BUILD.md(minor)
Corregit
- Fallback de l'índex de caché: purga i llistat funcionen correctament quan falta l'índex (minor)
- Bindings de botons de la pàgina d'opcions corregits (minor)
- El manifest de producció de Chromium ja no conté la clau de Chrome incrustada (minor)
- Estil biònic extret en un helper dedicat; renderització del resum endurit (minor)
- Bindings d'esdeveniments de settings refactoritzats; gestió del pageSize endurit (minor)
Canviat
- El flux de release conserva el mode dev/prod original i escriu fitxers de patch JSON sense BOM (minor)
- Directoris de còpia de seguretat del build (
build_*/) exclosos de git (minor)
[2.2.1] - 2026-04-07
Afegit
- Barra inferior millorada: visualització de l'ús de tokens amb millores d'UX (minor)
Corregit
- Globals d'ESLint per als prompts per defecte corregits (minor)
- Ús de stream a
summary.jscorregit (minor)
Canviat
- Settings refactoritzades: valors per defecte i UI simplificats (minor)
- Manifests regenerats en mode PROD (el nom ja no conté
DEV) (minor)
[2.2.0] - 2026-04-01
Afegit
- Panell de text font: visualitza el text pla enviat a la IA per a la resumització (minor)
- Extracció de contingut de Twitter/X via la biblioteca Defuddle amb fallback de scraping DOM
- Hacker News: eliminat el límit de comentaris; afegida la càrrega de l'article enllaçat (minor)
- Readability.js carregat en el context de la sidebar per a la càrrega d'articles de HN (minor)
- Insígnia de caché: insígnia clicable que mostra l'estat de caché a la toolbar (minor)
- Estadístiques: selector de període (7d / 30d / 6m / 1a) per a KPIs, gràfic i taula (minor)
- Estadístiques: columnes per a tokens d'entrada, tokens de sortida, encerts de caché i ms mitjans (minor)
- Comptatge real de tokens des de
usageMetadatade l'API de Gemini (substitueix les estimacions) - Historial d'estadístiques: càrrega de resum de caché directament a la sidebar (no només obre l'URL) (minor)
- Barra de títol de pàgina: barra adhesiva que mostra el títol de la pàgina actual durant la resumització (minor)
- Panell d'historial: llista navegable de resums anteriors a la sidebar
listCachedSummariesper al panell d'historial (minor)
Corregit
- Caché: TTL de 30 dies amb
purgeStaleCacheEntriesper a entrades caducades (minor) - Caché:
clearCacheara esborra totes les claussummary_cache:*, no només les indexades (minor) - Resum: div de contingut visible durant l'streaming (estava amagat fins al final) (minor)
- Resum: el fallback de quota respecta els models favorits i evita els models cars (minor)
- Models: límit de tokens per model via
contextWindow;EUR_RATEmogut ashared/models.js(minor) - Sidebar: condicional duplicat eliminat del listener
apiKey(minor) - Estadístiques: guardia per a dates invàlides; format
toLocaleStringper als tokens (minor) - Estadístiques: funcions d'agrupació setmanal/mensual (
getMondayOfWeek,filterHistoryByPeriod) (minor)
Rendiment
- Streaming: text pla durant l'streaming, renderització completa de Markdown en finalitzar (minor)
- Caché: dues lectures seqüencials de
saveUsageStatscombinades en una solastorage.get(minor) - Models:
favoriteModelsllegit a la inicialització, evitant una crida extra astorage.sync(minor)
Canviat
defuddleafegit com a dependència npm de vendor (fixat a^0.14.0) (minor)- El bundle de la sidebar inclou
history.js(minor)
[2.1.0] - 2026-03-04
Afegit
- Sistema de models favorits: fixa els models de Gemini preferits al capdamunt de la llista
- Script de comprovació pre-release (
scripts/pre-release-check.mjs) amb auditoria automatitzada (minor) - Bundle de la sidebar per a Chromium amb esbuild (
scripts/build-sidebar-bundle.mjs) (minor) - CI/CD: fluxos de treball de GitHub Actions per a lint, tests i release (minor)
- ESLint integrat a tot el projecte; executor de tests natiu de Node.js (56 tests, 0 errors) (minor)
CURATED_MODELSunificat ashared/models.jscom a font de veritat única (minor)- Estat biònic gestionat via classe CSS (sense estils inline) (minor)
- Icones pregenerides a
img/;set_dev_mode.ps1millorat (minor) shared/defaults.jsextret per als valors de prompt per defecte (minor)
Corregit
getCuratedModelInfocorregit per a variants de model (minor)- Compatibilitat de build per a Linux (GitHub Actions
ubuntu-latest) (minor)
Canviat
settings.jsdividit en 8 submòduls temàtics (minor)- Creació de ZIP en Node.js pur (eliminada la dependència de Python) (minor)
- Estratègia de manifest:
manifest.base.json+ fitxers de patch per objectiu (minor) - Procediment de release simplificat amb
npm run prerelease(minor)
[2.0.0] - 2026-02-26
Afegit
- Suport per a Chromium (Chrome, Edge, Brave) amb
side_panelde Manifest V3 - Build dual-objectiu: ZIPs separats per a Firefox i Chromium (minor)
- Empaquetat ZIP compatible amb AMO (separadors de ruta amb barra endavant) (minor)
ext.js: capa d'abstracció cross-browser unificada (Firefoxbrowser.*/ Chromiumchrome.*) (minor)- Bundle esbuild per al service worker en segon pla (requisit de Chromium per a mòduls ES) (minor)
Canviat
- Extensió portada de Firefox-only a MV3 cross-browser complet (minor)
[1.2.1] - 2026-02-26
Corregit
- Correccions menors i millores d'estabilitat abans de la reescriptura 2.0 (minor)
[1.1.7] - 2026-02-25
Afegit
- Plugin de Validació Científica
[1.1.5] - 2026-02-23
Corregit
- Correccions de permisos i metadades del manifest (minor)
- Llegendes dels camps de plantilla afegides a les opcions (minor)
[1.1.4] - 2026-02-13
Corregit
- Correccions de la integració amb Obsidian (minor)
utils.jsrefactoritzat (minor)- Lectura biònica millorada amb fixació configurable i algorisme basat en regles (minor)
- Nous temes: Sépia i Gris Suau (minor)
[1.1.2] - 2026-02-13
Afegit
- Exportació al vault d'Obsidian: llançament silenciós (sense diàleg de confirmació) (minor)
Canviat
- Neteja de la UI de la sidebar (minor)
[1.0.3] - Versió inicial
Afegit
- Resumització de pàgines web usant l'API de Google Gemini (streaming SSE)
- Sidebar de Firefox (Manifest V3
sidebar_action) - Mode de lectura biònica
- Múltiples temes (sistema, clar, fosc)
- Estadístiques d'ús (tokens diaris i quota)
- Integració d'exportació a Obsidian
- Sistema de plugins (activar/desactivar/reordenar)
Guia per a col·laboradors
- Actualitza la versió a
package.jsonen fer un bump de release - Afegeix una secció
## [X.Y.Z] - YYYY-MM-DDa aquest fitxer - Usa
git tag vX.Y.Zper als releases amain - Segueix els Conventional Commits
Format de commit: type(scope): description
feat:nova funcionalitatfix:correcció d'errorsecurity:millora de seguretatdocs:documentacióchore:manteniment, dependènciestest:millores de testsperf:millores de rendiment