···421421- [ ] in url saves/views, show oembed, or at least page title
422422- [ ] for url saves, save title and any other metadata
423423- [ ] investigate detecting which app a share came from
424424+- [ ] fix xcodebuild CLI builds (see notes/research-xcodebuild-environment-issues.md)
425425+ - isolate DerivedData paths for CLI vs GUI
426426+ - set up proper build script with environment isolation
424427425428## Session & State Management
426429···443446- [ ] OpenSearch
444447445448Web extensions
446446-- [ ] WebExtension integration for priority only, on some platforms, some back-ends
447447-- [ ] Electron first, using https://github.com/samuelmaddock/electron-browser-shell/tree/master/packages/electron-chrome-extensions
448448-- [ ] uBlock Origin
449449-- [ ] Proton Pass
450450-- [ ] Bypass Paywalls Clean
449449+- [ ] WebExtension integration for bundled extensions only (not user-installable)
450450+- [ ] Electron first, using electron-chrome-extensions (Polypane fork for MV3)
451451+- [ ] @cliqz/adblocker-electron for ad blocking (native, not extension)
452452+- [ ] Proton Pass for password management
453453+- [ ] Consent-O-Matic for cookie consent auto-handling (MIT, Aarhus University)
454454+- [ ] Enable/disable toggles in Settings UI
451455452456## Feeds, time-series, scripts
453457
+54-17
notes/research-bundled-web-extensions.md
···8383- ✅ MV3 compatible without major changes
8484- ⚠️ Requires Proton account for full sync features
85858686+### Consent-O-Matic (cookie consent auto-handler)
8787+8888+**Repository**: [cavi-au/Consent-O-Matic](https://github.com/cavi-au/Consent-O-Matic)
8989+9090+**License**: MIT - free to bundle with attribution
9191+9292+**Attribution Required**:
9393+> "Janus Bager Kristensen and Rolf Bagge, CAVI - Center for Advanced Visualization and Interaction, Aarhus University"
9494+9595+**What it does**:
9696+- Automatically detects and handles cookie consent banners
9797+- Supports 200+ Consent Management Platforms (OneTrust, CookieBot, UserCentrics, etc.)
9898+- **Privacy-first**: Rejects all optional cookies by default
9999+- Does NOT phone home or collect browsing data (only fetches rule updates)
100100+101101+**APIs Required**:
102102+- chrome.tabs (content script injection)
103103+- chrome.storage (user preferences)
104104+- chrome.runtime (messaging)
105105+- Content scripts on all sites (DOM access for popup detection)
106106+107107+**Viability in Peek**:
108108+- ✅ Works with electron-chrome-extensions (MV2)
109109+- ✅ No conflicts with ad blocker or Proton Pass
110110+- ✅ MIT license (easier than GPL)
111111+- ⚠️ Monitor upstream for MV3 migration
112112+86113---
8711488115## 4. API Coverage Matrix
891169090-| API | uBlock | Proton Pass | Electron Support | MV3 Status |
9191-|-----|--------|-------------|------------------|------------|
9292-| webRequest (blocking) | ✅ Critical | ❌ Not needed | ✅ Yes (conflicts) | ❌ Restricted |
9393-| webRequest (non-blocking) | ❌ Insufficient | ✅ Yes | ✅ Yes | ✅ Yes |
9494-| tabs | ✅ Yes | ✅ Yes | ✅ Customizable | ✅ Yes |
9595-| storage | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
9696-| cookies | ✅ Optional | ❌ No | ✅ Yes | ✅ Yes |
9797-| declarativeNetRequest | ❌ (MV3 only) | ✅ Can use | ⚠️ Partial | ✅ Yes |
117117+| API | uBlock | Proton Pass | Consent-O-Matic | Electron Support | MV3 Status |
118118+|-----|--------|-------------|-----------------|------------------|------------|
119119+| webRequest (blocking) | ✅ Critical | ❌ Not needed | ❌ Not needed | ✅ Yes (conflicts) | ❌ Restricted |
120120+| webRequest (non-blocking) | ❌ Insufficient | ✅ Yes | ❌ Not needed | ✅ Yes | ✅ Yes |
121121+| tabs | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Customizable | ✅ Yes |
122122+| storage | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
123123+| cookies | ✅ Optional | ❌ No | ❌ No | ✅ Yes | ✅ Yes |
124124+| content_scripts | ✅ Yes | ✅ Yes | ✅ Critical | ✅ Yes | ✅ Yes |
125125+| declarativeNetRequest | ❌ (MV3 only) | ✅ Can use | ❌ Not needed | ⚠️ Partial | ✅ Yes |
9812699127---
100128···121149|-----------|---------|--------------|-------|
122150| uBlock Origin | GPLv3 | ✅ Yes | Must acknowledge GPL, include source |
123151| Proton Pass | GPLv3 | ✅ Yes | Open source + proprietary service |
152152+| Consent-O-Matic | MIT | ✅ Yes | Attribution required (Aarhus University CAVI) |
124153125154**Disclosure Requirements**:
126155- Display list of bundled extensions with versions in Settings
···183212184213## 10. Recommended Path Forward
185214186186-**Immediate (MVP)**:
215215+**Bundled Extensions (Final List)**:
216216+1. **@cliqz/adblocker-electron** - Native ad blocker (not an extension)
217217+2. **Proton Pass** - Password manager extension
218218+3. **Consent-O-Matic** - Cookie consent auto-handler extension
219219+220220+**Implementation Order**:
221221+222222+**Phase 1 (MVP)**:
1872231. Use [Polypane/electron-chrome-extensions](https://github.com/Polypane/electron-chrome-extensions) (MV3-ready)
188188-2. Bundle **Proton Pass only** (best compatibility, no licensing issues)
189189-3. Implement toggle in Settings UI
224224+2. Integrate @cliqz/adblocker-electron as native ad blocker
225225+3. Implement enable/disable toggles in Settings UI
190226191191-**Short-term**:
192192-4. Add **@cliqz/adblocker-electron** as native ad blocker (no webRequest conflicts)
193193-5. Monitor uBlock Origin MV3 progress; defer until stable
227227+**Phase 2**:
228228+4. Bundle Proton Pass extension
229229+5. Bundle Consent-O-Matic extension
194230195195-**Long-term**:
196196-7. If uBlock MV3 becomes viable, bundle as opt-in
197197-8. Consider extension update mechanism
231231+**Phase 3**:
232232+6. Add licensing/attribution UI in About dialog
233233+7. Monitor upstream for MV3 migrations
198234199235---
200236···205241- [Electron Extension Support](https://www.electronjs.org/docs/latest/api/extensions)
206242- [uBlock Origin](https://github.com/gorhill/uBlock)
207243- [Proton Pass](https://proton.me/pass)
244244+- [Consent-O-Matic](https://github.com/cavi-au/Consent-O-Matic)
208245- [@cliqz/adblocker-electron](https://www.npmjs.com/package/@cliqz/adblocker-electron)
209246- [Chrome MV3 Overview](https://developer.chrome.com/docs/extensions/develop/migrate/what-is-mv3)