Kode Glass — Privacy Policy
1. Who we are
This privacy policy describes how KodeLabs (“we”, “us”) handles information when you use the Kode Glass browser extension (“Extension”), distributed through the Chrome Web Store.
Privacy contact: albinisrudaku@kodelabs.com
2. Scope
This policy applies only to the Extension. It does not govern third-party websites you visit, Google’s Chrome browser or Chrome Web Store policies in general, or other companies’ services except where we explain their role below.
3. Information the Extension processes
The Extension helps you run accessibility diagnostics and overlays on pages where you intentionally use Kode Glass. Depending on your actions, the Extension may process:
- Page analysis data such as page URL, title, and accessibility-relevant DOM metadata (for example element roles, labels, headings, landmarks, computed colours, short markup snippets of affected elements, and detected violations). A scan reads the page you scan and any iframes on it that come from the same site, and briefly applies increased text spacing to check that text is not cut off; the page is left as it was. After the other checks, ANDI (the Social Security Administration’s accessibility tool, bundled in the Extension) runs in the page for a moment: it moves the page’s content into a wrapper and back, and the Extension confirms the page is as it was. ANDI makes no network requests and stores nothing; you can turn it off in Settings. The vision simulator applies a colour filter to the page in that tab until you turn it off. A multi-page scan opens each page you list in that tab and scans it. The reflow check opens the page in a narrow window and measures its layout there. When you choose “Try on page”, the suggested change (an attribute or a style) is applied to that tab only and the page is scanned again locally; it is undone when you choose Undo, scan again, navigate, or reload.
- User settings stored locally (for example side panel preferences and reader mode options).
- Scan history stored locally in extension storage so a new scan can show what was fixed and what is new: for each of up to 40 pages (by origin, path and query), the identities, rules and severities of findings from the last scan, detailed summaries and selectors for the first 400, plus finding counts for the last 20 scans. It holds no page text, screenshots or form values. You can clear it in Settings.
- Recorded flows, only when you record one: the pages visited, the elements used (role, accessible name, label, test id, CSS selector), text typed into fields and options chosen, plus finding counts and rule-and-element identities from scan checkpoints. Recognized password, one-time-code and secret fields omit their values; you can redact other values with “Treat as secret”. Active drafts use private browser-session storage per tab so navigation and panel reloads do not lose steps. Closing the panel pauses capture; reopening resumes the draft. Drafts end when saved, discarded, the tab closes, or the browser session ends. Saved flows are kept per site in the extension’s private storage (not readable by web pages or content scripts) and leave your browser only in a test file you export. You can also import a flow from a Playwright or Cypress test file you choose: the file is read in the panel, never uploaded, and the flow it contains is stored like a recorded one. Replaying a flow clicks and types on the page in that tab. You can delete a flow, or clear all of them in Settings.
- Workflow recovery: a replay or multi-page scan keeps its current flow, progress, page URL and completed results in the extension’s private IndexedDB so a panel reload or crash can restore it paused. A replay journal includes the flow’s recorded field values, with the same secret-field omissions as saved flows. Recovery does not automatically repeat page actions and is limited to the current browser session. Recovery records are deleted when the run finishes, you close it, or its tab closes; records left by an ended browser session are deleted when the extension’s background worker next starts. Close active or paused runs before clearing saved results in Settings.
- Keyboard walks: while you record one, the Extension notes which elements receive focus in that tab and how they look; the result stays in memory and is gone when you clear it, navigate, or close the panel.
- Triage decisions stored locally when you make them: for each page, which findings you marked as ignored, false positive or ticketed, with the reason and ticket key you typed. When you create a Jira task from the panel, the findings it covers are marked with its key.
- Live announcements: while you listen, the text that live regions on the page announce, kept in memory only and gone when you clear it or close the panel.
- Editor settings stored locally if you set them: your editor and the path of your project folder, used to build “Open” links. To find the source of a finding, the Extension reads Angular’s development debugging information from the page; this works only in development builds and nothing is stored.
- Guided check results stored locally when you record them: for each page (by origin, path and query), the result you chose per WCAG criterion and any remarks you typed. They leave your browser only in a conformance report you save or copy yourself. You can clear them in Settings.
- Audit packages, only when you export one: a file with one site’s scan history, guided check results and remarks, triage decisions and recorded flows (including text typed into them, never passwords). It goes where you save it. Importing a package merges its contents into the extension’s local storage; newer decisions and explicit deletion markers win.
- Rollback video: a recording of the analyzed tab, kept only in memory, and only after you press “Start rollback recording”. It is never started automatically. At most the last five minutes are kept; the recording stops when you stop it, close the side panel, or close the tab. Footage leaves your browser only if you export it as a file or attach it yourself.
- Diagnostics: up to 50 warning/error categories and timestamps per extension context, held in memory. Production diagnostics omit raw page URLs, markup, entered values and credentials. Panel diagnostics leave your browser only when you copy and share them.
- User-generated evidence files (screenshots, rollback video clips, and PDF exports) only when you explicitly trigger export/download features.
- Jira connection/session data (for example Atlassian OAuth access token, refresh token, and selected Jira site) when you choose to connect Jira in builds where the Jira integration is available.
The Extension requests these Chrome permissions: activeTab, downloads, sidePanel, scripting, storage, tabCapture, tabs, and tts. It has no standing access to websites. Access to a site is requested per site (for example https://staging.example.com/*) the first time you scan it, and you can revoke it at any time in Chrome’s extension settings. Builds with the Jira integration also request identity and access to https://api.atlassian.com/* and to the KodeLabs token service used to sign in to Atlassian.
4. How we use information
We use this information only to deliver requested features: run accessibility diagnostics, render overlays and reports, export evidence files, create Jira tasks you submit, and provide optional text-to-speech narration. We do not sell personal data and do not use extension data for advertising purposes.
6. Retention
Ephemeral analysis results and rollback video remain in memory only while the side panel for that tab is open. Stored settings and scan history remain in extension storage, and Jira session tokens remain in the extension’s private storage (not readable by web pages or content scripts), until you disconnect Jira, clear extension site data, or uninstall the extension. Exported files remain where you save them until you delete them.
7. Security
We rely on Chrome’s extension security model (isolated extension contexts, permission prompts, and updates via the Chrome Web Store). You should keep Chrome updated and install the Extension only from the official Chrome Web Store listing.
8. Your choices and rights
You choose when to open the side panel, scan a page, grant access to a site, connect Jira, start or stop the rollback recording, or export evidence. You can revoke site access, disconnect Jira at any time, clear extension storage in Chrome, and uninstall the extension.
Where applicable law grants privacy rights (for example access, correction, deletion, or objection), contact us at the email above. Because core processing happens locally in your browser, many data artifacts can be controlled directly on your device.
9. Children
The Extension is not directed at children under 13, and we do not knowingly collect personal information from children through the Extension.
10. Changes to this policy
We may update this policy when features, legal requirements, or Chrome Web Store requirements change. We will revise the effective date and version when we do.