Controle
Hoe Slopographic werkt
De apps draaien in je browser. Deze pagina somt de browserfuncties op die ze gebruiken, elk netwerkverzoek dat ze kunnen doen, en wat er op je apparaat wordt bewaard, zodat je elke bewering zelf kunt controleren. Elke uitspraak hier is nagekeken tegen de broncode in de openbare repository.
De korte versie
- Je bestanden blijven op je apparaat. De apps hebben geen server die ze ontvangt, en geen code uploadt een bestand dat je opent of opslaat. De enige uitzondering is een kopie die je de AI-knop laat versturen naar een AI-dienst die je zelf hebt verbonden.
- Bestanden die je op schijf kiest, worden gelezen en geschreven via de File System Access API van de browser, in de mappen die je kiest. Zie de browser-API’s.
- Gegevens worden bewaard in de eigen opslag van de browser op dit apparaat (IndexedDB en localStorage). Zie wat er wordt opgeslagen.
- Sommige verzoeken verlaten de site, maar alleen in de gevallen die staan vermeld onder elk uitgaand verzoek: een download die je bevestigt, een cloudback-up die je verbindt, een AI-dienst die je met je eigen sleutel verbindt, de wisselkoersen die je aanzet, en analytics of advertenties die je accepteert.
- De AI-knop werkt met een model op je apparaat, een server op je eigen computer zoals Ollama of LM Studio, of je eigen sleutel voor een dienst zoals Claude, ChatGPT of Gemini. Met een sleutel gaat wat je vraagt van je browser rechtstreeks naar die aanbieder. Zie de AI-knop.
- De startpagina laadt bij elk bezoek de Google Analytics-code, met analytics op geweigerd. Andere pagina’s laden die pas nadat je analytics hebt geaccepteerd. Advertenties laden alleen nadat je advertenties hebt geaccepteerd.
In gewone woorden
Waar gaan mijn bestanden naartoe?
Nergens. Wanneer je een foto, een pdf of een spreadsheet opent, leest de app die in dit browsertabblad. Er is geen uploadstap en geen server van Slopographic die het zou kunnen ontvangen. Wat je opslaat gaat naar je eigen schijf, of naar de opslag van deze browser op dit apparaat. Alleen als je een AI-dienst met je eigen sleutel verbindt en dat toestaat, gaat er een kopie naar die dienst (zie de AI-knop).
Waarom downloadt een app soms iets?
Sommige functies hebben een groot bestand nodig dat de meeste mensen nooit gebruiken: een AI-model (om een achtergrond te verwijderen, tekst te lezen of spraak te transcriberen), de videoengine (om een video te converteren), of een lettertype voor een ander schrijfsysteem. Die worden alleen opgehaald wanneer je de functie gebruikt, nadat de app je heeft verteld wat het is en hoe groot het is. Ze worden in de browser bewaard, zodat het maar één keer gebeurt. Je eigen bestanden maken nooit deel uit van dat verzoek.
Werkt het offline?
Ja, na het eerste bezoek. De eigen bestanden van de site worden door de browser bewaard, zodat de apps openen en werken zonder verbinding. Alleen een download die je nog niet hebt gedaan (een model of een lettertype) heeft het netwerk nodig.
Moet ik iets installeren?
Nee. Open gewoon een app in de browser op je telefoon, tablet of computer en begin. Hij blijft zonder internet werken na je eerste bezoek. Wil je een pictogram op je beginscherm? Op iPhone of iPad tik je op Delen en daarna op Zet op beginscherm. Op Android open je het browsermenu en tik je op Toevoegen aan startscherm. Op een computer klik je op het installatiepictogram in de adresbalk. Je hebt de App Store of Google Play niet nodig, en je bestanden blijven op je apparaat.
Wat stuurt de AI-knop, en waarheen?
Dat hangt af van het model dat je kiest. Een model op je apparaat (het heeft WebGPU nodig en wordt één keer gedownload) antwoordt binnen dit tabblad, en wat je vraagt verlaat het apparaat nooit. Ollama, LM Studio en vergelijkbare servers draaien op je eigen computer, of op een computer in je netwerk die je hebt ingesteld. Met je eigen sleutel voor een dienst zoals Claude, ChatGPT, Gemini, OpenRouter of Groq gaan je berichten rechtstreeks van je browser naar die aanbieder, zonder Slopographic-server ertussen, en gelden de voorwaarden en prijzen van die aanbieder. Een kopie van een bestand of een afbeelding van je werk wordt alleen verstuurd nadat het paneel erom vraagt en je dat toestaat (je kunt het toestaan voor één verzoek, voor één bezoek of altijd, en dat weer intrekken bij AI-rechten). Afbeeldingen die door AI zijn gemaakt of gewijzigd (Afbeelding genereren, Bewerken met AI) hebben een afbeeldingsdienst nodig die je verbindt, zoals OpenAI, Gemini of OpenRouter met je eigen sleutel: niets in de browser tekent ze zelf. Modellen op je apparaat en op je eigen computer kosten niets. Gemini, Groq en Mistral hebben gratis versies, en OpenRouter heeft gratis modellen (het paneel markeert ze met Gratis). Een sleutel blijft in dit tabblad tot je het sluit, of alleen in deze browser wanneer je Sleutel onthouden op dit apparaat aanvinkt. Voor OpenRouter kun je ook op Aanmelden met OpenRouter drukken in plaats van een sleutel te plakken: je browser gaat naar openrouter.ai, je geeft daar toegang, en bij de terugkeer vraagt deze pagina OpenRouter zelf om een sleutel voor deze browser. De aanmelding gaat rechtstreeks tussen je browser en OpenRouter, en niets gaat via Slopographic-servers. De sleutel wordt betaald uit je eigen OpenRouter-tegoed en wordt net zo bewaard als een geplakte sleutel. Je kunt haar begrenzen of intrekken op openrouter.ai/settings/keys, en Sleutel vergeten verwijdert haar uit deze browser.
Kan een AI-agent de apps gebruiken?
In een browser die WebMCP ondersteunt, ja: een assistent in de browser, of een agent op je computer die via een browserextensie is verbonden, kan de opdrachten van een app uitvoeren, File convert-conversies en Slop Workflows draaien, en bestanden openen, opslaan of downloaden. Hij verwijst naar je bestanden met id’s. Het werk draait in dit tabblad en de apps uploaden niets, al ziet de agent wat de hulpmiddelen terugmelden. Alles wat je werk verwijdert of vervangt, vraagt eerst aan jou. WebMCP is een vroege conceptversie: Chrome heeft het in een proef (versies 149 tot 156) en achter een vlag, Edge achter een vlag, en Firefox en Safari nog niet. Zet het uit in Instellingen, of in Help, AI-agents.
Kan ik dit zelf controleren?
Ja. De broncode is openbaar, en de onderstaande secties noemen elke browserfunctie die de apps gebruiken en elk verzoek dat ze kunnen doen, met het bestand dat het doet. Je kunt ook de ontwikkelaarstools van je browser openen, naar het tabblad Netwerk gaan en meekijken: het openen en opslaan van je bestanden verstuurt niets.
Slopographic gebruiken vanuit Claude Code en andere AI-apps
Binnenkort: een AI-app op je computer, zoals Claude Code, Codex, Cursor, VS Code of Claude Desktop, kan de Slopographic-app gebruiken die open staat in je browser: de echte opdrachten, conversies en workflows, met je bestanden die erin gaan en resultaten die eruit komen als bestanden op je computer. Het draait via de Slopographic MCP-server, een klein programma dat de AI-app op je computer start. Er is geen account nodig en geen installatie buiten de AI-app zelf.
- Claude Code: typ
/plugin marketplace add slopographic/claude-plugin, en daarna/plugin install slopographic@slopographic. Doe dit één keer. - Typ
/slopographic:slop-connect(voeg eventueel een appnaam toe, zoalsphotoslop). Claude Code opent Slopographic in je browser en toont een korte code. - Chrome vraagt één keer of deze site apps en diensten op dit apparaat mag gebruiken. Kies Toestaan: zo bereikt de pagina Claude Code op je computer. De pagina praat alleen met je eigen computer (127.0.0.1), niet met je netwerk.
- Typ de code in de pagina. De pagina toont dan ‘Claude Code is verbonden · Verbreken’ in de hoek. Druk op Verbreken, of sluit het tabblad, om het te beëindigen.
Elk tabblad wordt apart gekoppeld, en de code werkt één keer. Niets anders op je computer kan de pagina zonder die code gebruiken. Acties die je werk verwijderen of vervangen, vragen je nog steeds in de pagina, zoals in het AI-paneel. Elke Slopographic-pagina kan verbinden vanuit het opdrachtpalet: Ctrl+K (⌘K op een Mac), en dan ‘AI-app verbinden…’.
De installatie voor andere AI-apps (Codex, Gemini CLI, Cursor, VS Code, Windsurf, Claude Desktop) verschijnt hier wanneer de scripts draaien.
ChatGPT-chats kunnen alleen servers op internet bereiken, dus ze kunnen deze lokale server nog niet gebruiken. Codex in de ChatGPT-desktopapp wel.
Browser-API’s, en de specificatie van elke API
De bestandspaden zijn de belangrijkste plekken waar elke API wordt gebruikt. Zoek in de repository op de naam van de API om de rest te vinden.
| Browser-API | Waarvoor het wordt gebruikt | Waar in de code | Specificatie |
|---|---|---|---|
File System Access: window.showDirectoryPicker, FileSystemDirectoryHandle, createWritable | Lokale schijven in Slop Drive, de back-upmap voor cloudsynchronisatie, het importeren van de Galerij-map (alleen lezen), en het laden van een AI-modelmap van schijf. Alleen Chrome en Edge. Schrijfacties vervangen een bestand pas wanneer het wordt gesloten. | drive/js/core/prov-dir.js, drive/js/ui/prov-drives.js, shared/sync/providers/local.js, gallery/js/io/source.js, shared/ai/webllm.js | wicg.github.io/file-system-access · MDN |
| IndexedDB | Slop Drive-bestanden, mapverwijzingen, zakelijke gegevens, opslag van lettertypen en AI-modellen, versleutelde aanmeldtokens. Volledige lijst in Wat wordt opgeslagen. | shared/hub.js, drive/js/core/drives-store.js, shared/data/store.js, shared/sync/tokens.js, shared/library/store.js | w3.org/TR/IndexedDB · MDN |
| localStorage | Kleine instellingen: je toestemmingskeuze, instellingen voor cloudsynchronisatie, instellingen per app, weergavevoorkeuren van Drive. | shared/consent/state.js, shared/sync/config.js, shared/profile/profile.js, drive/js/core/util.js | WHATWG HTML, Web Storage · MDN |
| sessionStorage | Aanmeldstatus die alleen wordt bewaard zolang een cloudaanmelding bezig is. Wordt gewist wanneer het tabblad sluit. | shared/sync/sync.js | WHATWG HTML, Web Storage |
| Origin Private File System | Niet gebruikt. De code heeft geen aanroep van navigator.storage.getDirectory. | geen | WHATWG File System |
| Service Workers | Offline gebruik. Wordt door elke app-pagina geregistreerd nadat die is geladen. Beantwoordt alleen GET-verzoeken van dezelfde oorsprong. | service-worker.js, shared/pwa.js | w3.org/TR/service-workers · MDN |
| Cache Storage | Opgeslagen kopieën van de eigen bestanden van de site, de bestanden van de uitknipmodellen, en de bestanden van AI-chatmodellen nadat je ze hebt gedownload. | service-worker.js, shared/cutout/loader.js, shared/ai/webllm.js | W3C Service Workers, Cache objects · MDN |
| Web App Manifest | Laat een browser de site installeren als app. Verklaart naam, pictogrammen en startpagina. | manifest.webmanifest | w3.org/TR/appmanifest · MDN |
Storage Manager: navigator.storage.persist(), estimate() | Vraagt de browser om de opslag van deze site te bewaren na installatie of in de zelfstandige modus. Slop Storage vraagt jou eerst voordat het de browser vraagt. Toont hoe vol de opslag is. | shared/pwa.js, shared/storage/storage.js | WHATWG Storage · MDN |
| Web Workers | Zwaar werk buiten de pagina: uitknippen van afbeeldingen, opschalen, AI Tools-inferentie, pdf-opbouw. | shared/cutout/cutout.js, upscale/js/engine/engine.js, aitools/common.js, pdf/js/io/build.js | WHATWG HTML, Workers · MDN |
| WebAssembly | Draait de meegeleverde ONNX Runtime Web voor AI Tools, Opschalen, Afbeelding naar 3D, gezichtsherkenning en uitknippen, met één thread. De WebLLM-bibliotheek van de chat-app is ook op WebAssembly gebaseerd. | aitools/workers/ort.js, upscale/js/engine/worker.js, img3d/js/model/depth.js, shared/faces/index.js, shared/ai/webllm.js | WebAssembly Core spec · MDN |
| WebGPU | De chat-app controleert wat je computer kan draaien, en de uitknipworker vraagt een GPU-adapter. Draait het chatmodel op de GPU, in Slop AI en in het AI-paneel van elke app. | shared/ai/sysinfo.js, shared/cutout/worker.js, shared/ai/webllm.js | w3.org/TR/webgpu · MDN |
| WebGL 2 | Voorbeeld van 3D en de kleurcorrectie in SlopCut. | 3d/js/render/stage.js, drive/js/core/render3d.js, slopcut/js/render/grade.js | Khronos WebGL 2.0 spec · MDN |
| Canvas 2D en OffscreenCanvas | Tekenen, afbeeldingen bewerken en exporteren in bijna elke app. | Ongeveer 130 bestanden roepen getContext('2d') aan, bijvoorbeeld photoslop/js/io/save.js | WHATWG HTML, Canvas · MDN |
| File en Blob, slepen en neerzetten | Bestanden openen die je kiest of op een pagina zet. Bestanden verlaten de pagina nooit, tenzij je ze opslaat of deelt. | shared/drop/, shared/preview/chrome.js | W3C File API · MDN |
Web Crypto: crypto.subtle | SHA-256-controles van elk gedownload bestand voordat het wordt bewaard, en AES-GCM voor versleutelde aanmeldtokens. | shared/cutout/loader.js, shared/library/store.js, shared/sync/tokens.js | w3.org/TR/WebCryptoAPI · MDN |
| Notificaties | Browsermeldingen voor herinneringen, alleen nadat je op de knop drukt om ze toe te staan. | reminders/js/app.js, shared/reminders/engine.js | WHATWG Notifications · MDN |
| BroadcastChannel | Berichten tussen geopende tabbladen van deze site (kanaal slopographic). Blijft binnen de browser. | shared/hub.js | WHATWG HTML, Broadcasting · MDN |
Web Share: navigator.share() | Het deelvenster van het systeem, alleen wanneer je op Delen drukt. Het systeem stuurt het bestand dan naar de app die je kiest. | shared/preview/chrome.js, ai/js/ui/speccard.js | w3.org/TR/web-share · MDN |
WebMCP: document.modelContext.registerTool() | Biedt een AI-agent in de browser de acties van de app aan als hulpmiddelen (de opdrachten, de bestandsbewerkingen, de bestanden op id), alleen waar de browser de API heeft en de instelling ‘AI-agents deze app laten gebruiken’ aan staat. De hulpmiddelen draaien in de pagina. Het token van de origin trial staat in het head van elke pagina. | shared/agent/webmcp.js, shared/agent/workspace.js, shared/agent/boot.js | W3C Web Machine Learning CG draft · Chrome |
| WebSocket | De verbinding met een AI-app op je computer (de Slopographic MCP-server), alleen nadat je ‘AI-app verbinden…’ kiest. Het verbindt met ws://127.0.0.1, alleen deze computer. | shared/agent/bridge.js | WHATWG WebSockets |
| Fetch | Elk netwerkverzoek van de apps. De volledige lijst staat in Uitgaande verzoeken. | Ongeveer 35 fetch(-aanroepen in ongeveer 30 bestanden (een paar zijn commentaar) | WHATWG Fetch · MDN |
Wat op dit apparaat wordt opgeslagen
Alles hieronder wordt in deze browser bewaard, op dit apparaat. Niets hiervan wordt naar een server gestuurd. Elke site heeft zijn eigen opslag, dus dezelfde app in een andere browser heeft een eigen kopie.
| Naam | Type | Wat het bevat | Ingesteld in |
|---|---|---|---|
slop-drive | IndexedDB | Slop Drive-bestanden en -mappen, inclusief de inhoud van de bestanden. | shared/hub.js |
slop-drive-folders | IndexedDB | De benoemde lokale schijven: elke mapverwijzing en zijn naam. Een schijf verwijderen vergeet alleen de verwijzing. | drive/js/core/drives-store.js |
slop-sync, slop-sync-local | IndexedDB | Versleutelde aanmeldtokens van de cloud (AES-GCM onder een niet-exporteerbare sleutel). De gekozen verwijzing naar de back-upmap. | shared/sync/tokens.js, shared/sync/providers/local.js |
slop-data | IndexedDB | Zakelijke gegevens: klanten, producten, voorraad, facturen, betalingen en grootboekregels (shared/data/schema.js). | shared/data/store.js |
slop-library | IndexedDB | Lettertypen geïnstalleerd via Meer ophalen en lettertypebestanden die je toevoegt. | shared/library/store.js |
slop-aitools, slop-ai | IndexedDB | AI Tools-modellen die je hebt geïnstalleerd, en chats in de AI-chat-app. | aitools/models.js, ai/js/core/store.js |
slop-session | IndexedDB | De geopende weergave en de niet-opgeslagen concepten van elke app, zodat een terugkerend bezoek verdergaat waar je was gebleven. | shared/session/session.js |
slop-consent | localStorage | Je keuzes voor analytics, advertenties en koersen. Uit tot je kiest. | shared/consent/state.js |
slop-sync | localStorage | Instellingen voor cloudsynchronisatie: je OAuth-client-ID’s en de laatste synchronisatietijden. Tokens worden hier niet bewaard. | shared/sync/config.js |
slop-ai-keys | IndexedDB | Je AI-sleutels, alleen wanneer je Sleutel onthouden op dit apparaat aanvinkt. Zonder dat blijft een sleutel in dit tabblad (sessionStorage) en is weg wanneer je het sluit. Niet in back-ups opgenomen. | shared/ai/cloud/keys.js |
slop-ai.cloud, slop-ai.imagegen, slop-ai.permissions | localStorage | Welke AI-dienst en welk model je hebt gekozen, je uitgavenlimiet, instellingen voor afbeeldingen en de AI-rechten die je hebt gegeven. Nooit een sleutel. | shared/ai/cloud/keys.js, shared/ai/imagegen/core.js, shared/ai/permissions.js |
slop-ai.signin | sessionStorage | Tijdens het aanmelden met OpenRouter: de eenmalige PKCE-verifier en state die bewijzen dat de aanmelding in dit tabblad is begonnen. Eén keer gebruikt, weg wanneer je het tabblad sluit, nooit een sleutel. | shared/ai/cloud/signin.js |
slop.agents | localStorage | ‘off’ wanneer je ‘AI-agents deze app laten gebruiken’ hebt uitgezet. Er wordt niets bewaard zolang het aan staat. | shared/agent/boot.js |
slop.bridge | sessionStorage | Zolang dit tabblad is gekoppeld aan een AI-app op je computer: de poort en het koppelingstoken, zodat een herlaad verbonden blijft. Weg wanneer je de verbinding verbreekt of het tabblad sluit. | shared/agent/bridge.js |
slop-profile | localStorage | Instellingen per app die je hebt gewijzigd ten opzichte van de standaard. | shared/profile/profile.js |
slop-drive.prefs, slop-drive.theme | localStorage | Weergavevoorkeuren en thema van Slop Drive. | drive/js/core/util.js |
slopographic-v38 | Cache Storage | Opgeslagen kopieën van de eigen bestanden van de site, zodat de site offline werkt. | service-worker.js |
slop-cutout-v1 | Cache Storage | Modelbestanden voor uitknippen, na de controle van hun SHA-256. | shared/cutout/loader.js |
Cookies: de code van de site schrijft nooit een cookie (de repository heeft geen aanroep van document.cookie). Je toestemmingskeuze staat in localStorage, niet in een cookie. De analytics- en advertentiescripts van Google kunnen hun eigen cookies zetten wanneer ze draaien. In het gedeelte Cookies en analytics staat wanneer dat gebeurt.
Uitgaande verzoeken: elke plek waar een verzoek naartoe kan gaan
De onderstaande lijst is volledig voor de repository: hij komt uit een zoekopdracht naar elke fetch(, XMLHttpRequest, script- en afbeeldingsadres, en elke externe URL in de code. Behalve de analytics- en advertentiescripts, die alleen laden zoals hieronder staat, laden de apps geen scripts, lettertypen of stylesheets van derden. Er zijn geen lettertypen of iframes van derden.
| Bestemming | Welke app of welk onderdeel | Waarom | Wanneer het gebeurt |
|---|---|---|---|
www.googletagmanager.com (Google Analytics, ID G-HW6FWQVFK3) | Startpagina (index.html); andere pagina’s via shared/consent/consent-mode.js | Meting van paginaweergaven | Startpagina: bij elk bezoek, met analytics op geweigerd tot je accepteert. Andere pagina’s: alleen nadat je analytics hebt geaccepteerd. |
pagead2.googlesyndication.com (AdSense) | Pagina’s met advertentieruimtes (shared/ads/ads.js) | Advertenties | Alleen nadat je advertenties hebt geaccepteerd. Geladen door de ene lader in shared/consent/consent-mode.js. |
huggingface.co, en de opslaghosts hf.co en xethub.hf.co | AI-chat (shared/ai/webllm.js, ai/js/core/engine.js); AI Tools en de OCR-apps (aitools/model-registry.js, aitools/models.js) | Modelbestanden: OCR (PP-OCRv4), tags en de chatmodellen | Nadat je op Downloaden drukt, of een model installeert bij Meer ophalen, en de grootte en licentie bevestigt. AI Tools controleert de SHA-256 van elk bestand, en een bestand moet komen van een Hugging Face-host of van de slopographic/cdn-repository. |
cdn.jsdelivr.net (jsDelivr, alleen /gh/slopographic/cdn@ een vaste release) | Elk bestand uit de slopographic/cdn-repository (shared/cdn/assets.js): pakketten bij Meer ophalen, de spraak- en OCR-modellen, de HEIC-, camera-RAW-, 3D- en videoengines | Een snellere, gecachte kopie van de repository hieronder. Bestanden van meer dan 20 MB komen van raw.githubusercontent.com | Dezelfde momenten als de rij hieronder. Als jsDelivr niet antwoordt of verkeerde bytes stuurt, wordt hetzelfde bestand opgehaald van raw.githubusercontent.com en op dezelfde manier gecontroleerd. |
raw.githubusercontent.com | AI-chat (shared/ai/webllm.js, de GPU-kernels); pakketten bij Meer ophalen (shared/library/packs.json) | Kernels voor het chatmodel; lettertypebestanden van github.com/google/fonts (OFL); taallettertypen (Noto, OFL) voor schrijfsystemen zoals Arabisch, Chinees of Hindi; het Real-ESRGAN 4x-model voor Slop Upscale, het dieptemodel voor Afbeelding naar 3D, en de spraakmodellen voor Slop Transcribe en AI Tools (Whisper, KB-Whisper, NB-Whisper; aitools/speech-models.js), uit de slopographic/cdn-repository | Wanneer je in Meer ophalen of in het dialoogvenster Taal en model op Downloaden drukt en bevestigt, of wanneer je een chatmodel laadt. Een taallettertype wordt ook gedownload wanneer je tekst schrijft in een schrijfsysteem dat erom vraagt (in Slop PDF bijvoorbeeld): de app vraagt eerst, tenzij je hebt gekozen om taallettertypen automatisch te downloaden (shared/fonts/jit.js). Elk bestand wordt vóór het bewaren gecontroleerd op zijn SHA-256. |
accounts.google.com, oauth2.googleapis.com, www.googleapis.com | Cloudsynchronisatie naar je eigen Google Drive (shared/sync/providers/gdrive.js, pkce.js, config.js) | Aanmelden, daarna back-up en herstel van één back-upbestand, in een optionele map. Gebruikt de drive.file-scope, die alleen de bestanden bereikt die deze app aanmaakt of die je kiest. | Alleen wanneer je verbindt met je eigen OAuth-client-ID, en wanneer je op een back-up- of synchronisatieknop drukt. |
www.dropbox.com, api.dropboxapi.com, content.dropboxapi.com | Cloudsynchronisatie naar Dropbox (shared/sync/providers/dropbox.js) | Hetzelfde als Google Drive, voor Dropbox | Alleen wanneer je verbindt en op een back-up- of synchronisatieknop drukt. |
data-api.ecb.europa.eu | Wisselkoersen (shared/data/rates-ecb.js, geopend vanuit Instellingen, en gelezen door Grootboek en Rekenmachine) | Dagelijkse EUR-referentiekoersen van de Europese Centrale Bank | Alleen wanneer de categorie koersen aan staat en je op Bijwerken drukt. Bijwerken bij openen gebeurt alleen wanneer je dat ook aanvinkt. |
| Het adres van een afbeelding die van een andere website is gesleept | PhotoSlop (photoslop/js/app/tabs.js) | Opent de gesleepte afbeelding in een nieuw tabblad | Alleen wanneer je een afbeelding van een andere pagina naar PhotoSlop sleept. |
slopographic.com (de site zelf) | Elke pagina, het logo op de startpagina, de service worker | De eigen bestanden van de site | Bij elk bezoek. Niets anders van deze oorsprong wordt opgevraagd. |
De AI-dienst die je met je eigen sleutel verbindt: bijvoorbeeld api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai of api.groq.com, of het adres dat je invoert voor Ollama, LM Studio of een andere server | Het AI-paneel (shared/ai/cloud/, de lijst met diensten in shared/ai/cloud/catalog/); AI-afbeeldingen (shared/ai/imagegen/) | Je berichten, de hulpmiddelen van de app en hun resultaten, en een kopie van een bestand of afbeelding alleen nadat je dat toestaat; voor AI-afbeeldingen de prompt en, bij een bewerking, de afbeelding (maximaal 1536 px) | Alleen nadat je je eigen sleutel of serveradres hebt toegevoegd en een verzoek hebt verstuurd. Een model op je apparaat verstuurt niets. |
openrouter.ai/auth (een pagina waar je naartoe gaat) en openrouter.ai/api/v1/auth/keys | Aanmelden met OpenRouter in het AI-paneel (shared/ai/cloud/signin.js) | Naar de aanmeldpagina: het adres van deze pagina om naar terug te keren, een PKCE-challenge en een willekeurige state. Naar het sleutteladres: de eenmalige code die OpenRouter gaf, en zijn PKCE-verifier; OpenRouter antwoordt met een sleutel voor deze browser. Rechtstreeks tussen je browser en OpenRouter, niets via Slopographic-servers. | Alleen wanneer je op Aanmelden met OpenRouter drukt. |
127.0.0.1 (je eigen computer) | Een AI-app verbinden (shared/agent/bridge.js) | De pagina praat met de Slopographic MCP-server die je AI-app heeft gestart: de hulpmiddelen van de app, hun resultaten, en de bestanden die je vraagt te versturen of op te slaan | Alleen nadat je ‘AI-app verbinden…’ hebt gekozen en de code hebt getypt die de AI-app toont. Chrome vraagt eerst. |
| Alleen links: Patreon, YouTube en Vimeo | Doneerlink (shared/consent/donate.js), videolinks in notities (notes/js/video.js) | Opent de site in een nieuw tabblad wanneer je erop klikt | Alleen wanneer je klikt. Een video in een notitie wordt getoond als link, niet als ingebedde speler of miniatuurafbeelding. |
Twee dingen die op netwerkgebruik lijken, maar dat niet zijn: tools/vendor-codemirror.mjs haalt pakketten van cdn.jsdelivr.net op wanneer een ontwikkelaar het met de hand draait om de meegeleverde code te verversen. De apps laden dat CDN nooit. De mailviewer (eml/js/frame.js) blokkeert externe afbeeldingen en scripts in de mail met een Content Security Policy, dus het openen van een bericht laadt geen externe afbeeldingen of scripts.
Cookies en analytics
- Opgeslagen door de code van de site: een toestemmingskeuze in localStorage (
slop-consent), met analytics, advertenties en koersen op uit tot je kiest. Opslag kan op elk moment in de browser worden gewist. - Niet opgeslagen door de code van de site: geen cookie en geen account. De repository schrijft nooit een cookie.
- Google Analytics: op de startpagina wordt de tag geladen met
analytics_storageop geweigerd. Hij wordt alleen aangezet wanneer je analytics accepteert. Op andere pagina’s laadt hij pas nadat je accepteert. - De eigen scripts van Google kunnen hun eigen cookies zetten wanneer ze draaien. Dat beslist Google, niet de code van Slopographic. De controlestappen hieronder laten zien wat de browser echt opslaat.
- Advertenties: AdSense laadt alleen nadat je advertenties accepteert. Als je de advertenties weigert, blijven de advertentieruimtes leeg.
Offline werken
Na één bezoek worden de eigen bestanden van de site bewaard in Cache Storage door de service worker (service-worker.js, met de bestandslijst in sw-precache.js). Pagina’s worden eerst via het netwerk gecontroleerd, daarna uit de cache gehaald, en daarna wordt de offlinepagina getoond. Je bestanden staan niet in de cache van de service worker: ze staan in de map die je hebt gekozen, of in IndexedDB. De apps blijven werken met het netwerk uit. Downloads (de modellen en lettertypepakketten hierboven) hebben de eerste keer het netwerk nodig.
Zo controleer je het zelf
- Tabblad Netwerk, met de pagina geladen. Open de app, druk op F12 (of Cmd+Option+I op een Mac), en open het tabblad Netwerk. Vink ‘Log bewaren’ aan en laad de pagina opnieuw. Lees de kolom Domein. Bij een gewoon bezoek zie je alleen
slopographic.com, plus de analytics-domeinen van Google op de startpagina. - Tabblad Netwerk, offline. Open in het tabblad Netwerk het vertragingsmenu en kies Offline. Laad opnieuw, open een bestand, bewerk het en sla het op. De app moet werken. Wat een download nodig heeft, zegt dat.
- Tabblad Toepassing, opslag. Open in Chrome of Edge het tabblad Toepassing. Onder Opslag zie je Local storage, Session storage, IndexedDB, Cookies, Cache Storage en Service workers. Vergelijk wat je ziet met de tabellen op deze pagina.
- Accepteren of weigeren, en daarna vergelijken. Weiger analytics en advertenties in de toestemmingsbalk, laad opnieuw, en controleer het tabblad Netwerk opnieuw. Accepteer ze daarna, en kijk welke verzoeken verschijnen.
- Lees de broncode. De code is openbaar in de slopographic-repository op GitHub. Zoek erin naar
fetch(,indexedDB.open,localStorageofshowDirectoryPickerom elke rij op deze pagina te bevestigen. De toestemmingscode staat inshared/consent/, cloudsynchronisatie inshared/sync/, en de downloadlijsten inshared/library/enaitools/.
Lokale mappen (de File System Access API) hebben Chrome of Edge nodig. Firefox en Safari bieden ze niet, en de apps zeggen dat waar het van toepassing is.