Skip to content

Latest commit

 

History

History
270 lines (211 loc) · 13 KB

File metadata and controls

270 lines (211 loc) · 13 KB

AutoFill Plugin - Sesjonsdokumentasjon

Sesjon 6 - 2025-12-03

Mal

Implementere fullt brukergrensesnitt og logikk for profiler.

Gjennomfort

  1. UI i popup.html og popup.css

    • Lagt til profilvelger (dropdown) og "Administrer"-knapp i header.
    • Laget #profilesModal for a legge til og slette profiler.
    • Lagt til profil-velger i "Rediger Regel"-modalen.
    • Stylet nye komponenter i popup.css.
  2. Logikk i popup.js

    • Oppdatert translations (EN/NO) med nye tekster.
    • Implementert loadProfiles, handleProfileChange, handleAddProfile, handleDeleteProfile.
    • Oppdatert applyFilters til a filtrere regler basert pa valgt profil.
    • Oppdatert handleSaveRule til a lagre profileId.
    • Sender melding refreshContextMenus til bakgrunnsskriptet ved profilendringer.
  3. Context Menu (background.js)

    • Implementert dynamisk generering av undermenyer for "Fyll ut som...".
    • Henter profiler ved oppstart og nar refreshContextMenus mottas.
    • Sender fillWithProfile-melding til content.js ved valg av profil i menyen.
  4. Content Script (content.js)

    • Lagt til lytter for fillWithProfile.
    • Oppdatert loadRulesForCurrentSite til a akseptere en valgfri profileId.

Filer Oppdatert

popup.js; popup.html; popup.css; background.js; content.js

Neste Steg

  • Verifisere funksjonalitet manuelt.
  • Vurdere automatiske tester for profiler hvis mulig.

Sesjon 7 - 2025-12-03

Mal

Gjenopprette etter krasj, implementere ID Blacklist og funksjonalitet for flytting av regler mellom profiler.

Gjennomfort

  1. Gjenoppretting og feilretting

    • Gjenopprettet popup.js fra backup etter korrupsjon.
    • Sikret at all profil-logikk fra Sesjon 6 ble bevart og integrert.
  2. ID Blacklist

    • Lagt til innstilling for Ignorerte Felt (ID) i popup.html.
    • Implementert logikk i content.js for a blokkere autofill basert pa ID.
    • Lagt til stotte for bade wildcards og regex (med regex:-prefiks).
  3. Profil-administrasjon (masseflytting)

    • Implementert Flytt til...-knapp i bulkActions-menyen (popup.html).
    • Laget modal for valg av mal-profil.
    • Implementert logikk i popup.js for a oppdatere profileId pa valgte regler.
  4. UI/UX

    • Oppdatert sprakfiler (NO/EN) med tekster for blacklist og flytting.
    • Forbedret beskrivelser i innstillinger for a forklare regex-bruk.

Filer Oppdatert

popup.html; popup.js; content.js; SESSION.md

Sesjon 8 - 2025-12-03

Mal

Flytte regel-handlingsknapper til fullvisningen, rydde i oversettelser og legge til force fill/test-stotte.

Gjennomfort

  1. Felles oversettelser
    • Ekstrahert oversettelsesobjekt til translations.js og koblet inn i bade popup.html og rules.html.
  2. Popup-oppdateringer
    • Fjernet regel-handlingsknapper fra popup, lagt til page-scope force-fill-knapp.
    • content.js stotter na forceFill-kommando og testMatches-respons; autofill kan overstyres med force-flag.
  3. Rules fullvisning
    • Lagt til flytende handlingslinje (AI/Test/Optimize/Variables/Select/+New), profiler i redigeringsmodal, AI/Variables-modaler og optimizer-seksjon.
    • Startet i18n-stotte i rules.js: knapper, modal-etiketter, sorteringsvalg, sammendragslabels, blacklist-tekst m.m.
    • Variabler lastes/vises i fullvisningen; profilvalg settes i modal.
  4. Stil
    • Ny CSS for flytende handlingsbar i rules.css.

Filer Oppdatert

translations.js; popup.html; popup.js; content.js; rules.html; rules.js; rules.css; SESSION.md

Neste Steg

  • Fullfore i18n og wiring for alle knapper i rules.js (AI/Optimize/Variables/select-mode) og popup force-fill/rule-filtrering.
  • Rydde resterende hardkodet tekst og sikre modal-etiketter/placeholder-oversettelser.

Sesjon 9 - 2025-12-03

Mål

Fikse tre problemer: Test Match feilmelding, Optimize som ikke gjør noe, regex info ikon. Deretter forbedre badge og implementere smart regel-matching i popup.

Gjennomført

  1. Badge-forbedringer (background.js, pattern-matcher.js)

    • Endret badge fra å vise "OPT" (optimalisering) til å vise antall regler som matcher gjeldende side.
    • Implementert PatternMatcher.matchSite() for å matche URL mot site-mønstre.
    • Badge oppdateres automatisk ved tab-bytte, URL-endring og vindusfokus.
    • Farger: Blå (#667eea) for matchende regler, Rød (#ef4444) for "OFF".
    • Tooltip viser beskrivende tekst (f.eks. "5 regler for denne siden").
  2. Test Match flyttet til popup (popup.html, popup.js, rules.html, rules.js)

    • Fjernet Test Match knapp fra rules.html (floating action bar).
    • Lagt til Test Match knapp i popup.html ved siden av "Tving utfylling".
    • Implementert handleTestMatch() i popup.js med automatisk content script injection.
    • Gode feilmeldinger på norsk og engelsk for ulike feilscenarier.
  3. Regex info ikon (rules.html, rules.js)

    • Flyttet regex info-ikon ut av checkbox label for å unngå uønsket toggle.
    • Lagt til klikk-handler som viser alert med regex-hjelp og eksempler.
    • Forbedret visuell styling av ikonet.
  4. Optimize forbedringer (rules.js)

    • Lagt til omfattende logging for debugging.
    • Forbedret feilhåndtering med spesifikke meldinger.
    • Sjekker om det er regler før kjøring.
    • Lagt til scrollIntoView() for å sikre synlighet.
  5. Popup.html URL-håndtering (popup.js)

    • Fikset problem hvor popup åpnet som egen tab prøvde å kommunisere med seg selv.
    • Filtrerer nå bort chrome-extension:// og chrome:// URLs.
    • Finner automatisk en annen gyldig webside-tab hvis tilgjengelig.
  6. Smart regel-matching i popup (popup.js, popup.css)

    • Henter faktiske felt fra siden via listFields action.
    • Kategoriserer regler i "full match" (matcher både domene og felt) vs "partial match" (kun domene).
    • Implementert checkIfRuleMatchesAnyField() som sjekker om regel matcher faktiske felt.
    • Rendrer full matches normalt, partial matches i eget grået panel.
    • Partial matches vises med redusert opacity (0.6) og grå farger.
    • Tydelig header: "Delvis match (domene matcher, men ingen felt funnet)".

Filer Oppdatert

background.js; pattern-matcher.js; popup.html; popup.js; popup.css; rules.html; rules.js; content.js; SESSION.md

Neste Steg

  • Testing av smart matching i ulike scenarier.
  • Vurdere caching av felt-informasjon for bedre ytelse.

TODO / Fortsettelse (AI Assist + Backup) - 2025-12-04

  • rules.html er delvis korrupt (rare tegn som «?? Cloud Backup», «+ f+»). Rens til ren UTF-8 først.
  • Når renset:
    • Bytt header-knappen til «Backup» og kall samme logikk som popup: generer CSV (buildCSV(allRules)) og chrome.downloads.download med saveAs (evt. AutoFill/<filnavn> hvis dialog skal hoppes over).
    • Utvid AI-modal i rules.html med et felt for «Lim inn LLM-resultat (CSV)» + «Importer»-knapp.
    • I rules.js: parse innlimt CSV, chrome.runtime.sendMessage({ action: 'importCSV', csv, merge: confirm(...) }), og reload regler.
  • Popup-backup er nå lokal (lagrer til Nedlastinger/AutoFill hvis checkbox er på; ellers Save As). Manifest har downloads.
  • AI Assist i popup/rules.js genererer prompt med regler/felt og wildcard/regex-hints (duplikate deklarasjoner i rules.js er fjernet).

Sesjon 10 - 2025-12-04

Mål

Ferdigstille backup i rules.html/rules.js, robust AI-import og gjøre variabler tilgjengelig i fullvisningen. Legge til sammenslåing av filtrerte regler + bedre UI i popup.

Gjennomført

  1. Backup og AI-import (rules.html/rules.js)
    • Renset encoding, byttet Cloud Backup-knapp til «Backup» og koblet til lokal CSV-download (chrome.downloads) med default-mappevalg.
    • AI-modal har felt for innlimt CSV + Import-knapp; import håndterer headerløse LLM-responser og normaliserer separatorer.
    • Prompt oppdatert til å kreve header + en linje per regel og kodeblokk-output.
  2. Variabler i fullvisning
    • Inline variabelliste og skjema i rules.html; delt logikk for modal/inline i rules.js med i18n-støtte.
  3. Merge av filtrerte regler
    • Ny knapp «Slå sammen filter» i rules.html. Slår sammen alle filtrerte regler per elementType, bruker filterstrengen som fieldPattern (name), felles domene ellers *, og deaktiverer originalene.
  4. Popup UI: skjul sjeldne innstillinger
    • Innstillinger delt i «grunnleggende» og «avansert» panel med toggle. Oversettelser for panelknapp/scan-toast lagt til. Alle labels/desc binds via translations med data-attributter.
  5. Import robusthet
    • storage.js tolker tom/ugyldig lastUsed som null eksplisitt.

Filer Oppdatert

rules.html; rules.js; translations.js; popup.html; popup.css; popup.js; storage.js; SESSION.md

Neste Steg

  • Full i18n-revisjon: ingen hardkodet tekst i UI, sjekk for encoding-glitches og at alle strenger finnes i translations.
  • Popup: finpusse panel-toggle (animasjon/ikon) og vurdere hvilke innstillinger som bør være standard vs. avansert.
  • Test AI-import med flere LLM-utdata (inkl. tomme felter) og bekrefte at merge-filter-regler gir forventet sitePattern når domener varierer.
  • PRI 1: Flytt/vis tydelig «Slå sammen filter»-knapp nær filter/søk (kan ikke sees i dag).
  • Reintroduksjon av standardvariabler ({date}, {time}, {timestamp}, {random}, {random:5}) i rules-visning.

Sesjon 11 - 2025-12-05

Mål

Stabilisere badge/match-telling uten å åpne popup, fikse profiler i innlasting/test match, og rydde opp i content-script feil (dobbel injeksjon/syntaks).

Gjennomført

  1. Badge og scanning
    • Badge bruker nå aktiv profil fra storage når den henter regler.
    • listFields kalles med injeksjonsfallback og retry; badge viser “?” til felt er scannet og oppdateres når content-script teller matcher.
    • Content-script trigget refreshBadge etter scanning slik at telling skjer uten å åpne popup.
  2. Profiler og matching
    • Content-script laster currentProfileId, bruker den ved regelhenting/force-fill/testMatch og aksepterer profil-id fra meldinger.
    • Test Match i popup sender aktiv profil til content-script slik at treff stemmer med valgt profil.
  3. Regex/match robusthet
    • Regex-match i background/popup/content er case-insensitiv (felttelling + autofill).
  4. Stabilitet
    • La inn duplikatvakt i content-script (skipper andre injeksjoner) og rettet manglende klamme som ga “Unexpected end of input”.
    • markRuleAsUsed er gjort ikke-blokkerende ved “Extension context invalidated”.

Filer Oppdatert

background.js; content.js; popup.js; storage.js; SESSION.md

Neste Steg

  • Manuell verifisering: badge oppdateres på sidelast uten popup, matcher korrekt med aktiv profil, og regex-regler teller riktig.
  • Test force fill/test match på profiler med blandede regex/wildcard felt.

Sesjon 12 - 2025-12-07

Mål

Fikse to feil som oppsto etter tidligere endringer:

  1. "Permissions policy violation: unload is not allowed in this document."
  2. "Uncaught (in promise) Error: No tab with id: ."

Gjennomført

  1. Fjernet deprecated unload event (content.js)

    • unload-eventet er deprecated og blokkeres av Permissions-Policy på mange moderne sider.
    • Fjernet window.addEventListener('unload', cleanup), beholder kun pagehide.
  2. Robust feilhåndtering for badge-operasjoner (background.js)

    • Ny safeBadgeUpdate() hjelpefunksjon som wrapper alle chrome.action.*-kall i try-catch.
    • Oppdatert updateBadgeForTab() og updateBadgeWithCounts() til å bruke safeBadgeUpdate().
    • Lagt til tabId-validering og "No tab with id"-feilhåndtering i tab-listeners.
  3. Null-sjekker for currentTab (popup.js)

    • Lagt til if (currentTab?.id) før updateBadgeCount-meldinger.
    • Omdøpt duplikat handleTestMatch til handleTestMatchLegacy for å unngå konflikt.
  4. Dokumentasjon

    • Oppdatert ISSUES.md med detaljert beskrivelse av feilrettingene.

Filer Oppdatert

content.js; background.js; popup.js; ISSUES.md; SESSION.md

Neste Steg

  • Verifiser at feilmeldingene er borte etter reload av utvidelsen.
  • Test badge-oppdatering på tvers av tabs og vinduer.

Sesjon 13 - 2025-12-07

Mål

Fikse at blacklist ikke ble respektert av popup og badge.

Problem

Blacklist/whitelist ble kun sjekket i content.js. Popup og badge viste fortsatt matcher for blokkerte sider (f.eks. facebook.com).

Gjennomført

  1. background.js - Ny isUrlBlocked() funksjon

    • Sjekker URL mot blacklist/whitelist med wildcard-støtte
    • Konverterer wildcards (*, ?) til regex
    • Case-insensitive matching
    • updateBadgeForTab() returnerer tidlig for blokkerte sider
  2. popup.js - Samme isUrlBlocked() funksjon

    • loadPageRules() sjekker nå blacklist før den henter regler
    • Blokkerte sider viser ingen regler i popup
  3. Dokumentasjon

    • Oppdatert ISSUES.md med detaljer om løsningen

Filer Oppdatert

background.js; popup.js; ISSUES.md; SESSION.md

Tillegg: Smart domene-matching

Forbedret isUrlBlocked() / isBlockedSite() med smart domene-matching:

  • facebook.com matcher nå automatisk facebook.com OG alle subdomener (www.facebook.com, m.facebook.com)
  • *.facebook.com matcher fortsatt kun subdomener
  • regex:mønster gir full regex-støtte
  • Wildcards (*, ?) fungerer som før

Neste Steg

  • Verifiser at smart domene-matching fungerer korrekt
  • Test at badge viser tom for blokkerte sider