# Codex Project Notes ## Project `Opera-Extensions` currently contains the `Opera Cache Cleaner` extension in `opera-cache-cleaner-extension/`. Repository: ```text Toxic/Opera-Extensions ``` Gitea URL: ```text https://git.wilkensxl.de/Toxic/Opera-Extensions.git ``` Repository owner and name are derived from this target remote, not from the Codex repository kit remote. ## Commands Use these commands as the source of truth from the repository root: ```text Syntax check background: node --check opera-cache-cleaner-extension/background.js Syntax check popup: node --check opera-cache-cleaner-extension/popup/popup.js Build package: cd opera-cache-cleaner-extension && mkdir -p dist && zip -r dist/opera-cache-cleaner-extension.zip manifest.json background.js popup icons -x "*.DS_Store" ``` No install, lint, test, README generation, or dependency audit command exists. The extension has no package manifest and no vendored dependencies. ## Stack ```text Manifest V3 Chromium extension using plain HTML, CSS, and JavaScript. ``` Package manager or build tool: ```text None. ``` ## Build Artifacts Release artifacts are produced in: ```text opera-cache-cleaner-extension/dist/ ``` Expected file: ```text opera-cache-cleaner-extension.zip ``` ## Security Rules - Keep the extension limited to `browsingData`, `storage`, and `alarms` permissions unless a feature explicitly requires more. - The extension must clear only cache data through `chrome.browsingData.remove(..., { cache: true })`. - Do not request cookie, history, downloads, tabs, or host permissions without a documented user request. - Do not add external network calls. - Do not commit secrets, tokens, `.env` files, certificates, or private keys. ## Release Rules Before a release: 1. run the syntax checks, 2. review `opera-cache-cleaner-extension/docs/security-review.md`, 3. update `opera-cache-cleaner-extension/CHANGELOG.md`, 4. build `opera-cache-cleaner-extension/dist/opera-cache-cleaner-extension.zip`, 5. load the unpacked extension in Opera for a manual smoke test, 6. create a tag and release only when the user explicitly asks for it.