|
1 | 1 | # Implementation Status Tracking |
2 | 2 |
|
3 | | -> Last updated: 2026-03-16 |
| 3 | +> Last updated: 2026-03-17 |
4 | 4 |
|
5 | 5 | ## Status Legend |
6 | 6 |
|
|
75 | 75 | | Options page | ✅ | Pattern cache management + Dev IPC Config | |
76 | 76 | | Dev IPC Config (workaround) | ✅ | Alternative to Native Messaging Host | |
77 | 77 | | Native Messaging Host | ❌ | Swift binary not compiled/deployed | |
78 | | -| Smart Extract (scan web pages) | ❌ | Spec §6 | |
79 | | -| Key detection (input/textarea) | 🔶 | detectAndSubmitKeys written but not tested | |
| 78 | +| Active Key Capture | ✅ | 4-layer detection: DOM scan → attribute → clipboard → platform selectors | |
| 79 | +| capture-patterns.ts (SSoT) | ✅ | 11 platform pattern definitions, single file maintenance | |
| 80 | +| Pre-hide anti-flash | ✅ | 3 layers: manifest CSS → pre-hide.ts → instant MutationObserver | |
| 81 | +| Per-platform CSS isolation | ✅ | 12 separate CSS files, generated at build time | |
| 82 | +| Clipboard writeText interception | ✅ | `clipboard-patch.ts` MAIN world, supports AI Studio/AWS/Stripe | |
| 83 | +| React SPA masking | ✅ | Dialog inputs stay hidden, no value replacement | |
| 84 | +| AWS dual-key capture | ✅ | Access Key ID (DOM) + Secret Key (clipboard) | |
| 85 | +| Toast stacking | ✅ | Consecutive captures show stacked toasts | |
| 86 | +| Capture Mode (popup) | ✅ | Start/Stop capture + countdown timer | |
| 87 | +| E2E tested (8 platforms) | ✅ | GitHub, HuggingFace, GitLab, OpenAI, Anthropic, AI Studio, Google Cloud, AWS | |
| 88 | +| Stripe / Slack / SendGrid | 🔶 | Patterns defined, untested | |
80 | 89 |
|
81 | 90 | ### Fixed Issues |
82 | 91 |
|
83 | 92 | - Content script initial state out of sync: Proactively requests `get_state` from background on load |
84 | 93 | - `toggle_demo_mode` action incorrectly sending `get_state`: Fixed |
| 94 | +- GitLab 2026 redesign: selectors updated from `#created-personal-access-token` to `.gl-alert-success` |
| 95 | +- OpenAI React SPA: `input.value` overwritten by framework causing plaintext exposure, switched to CSS hiding |
| 96 | +- AWS Secret Key `trimmed` variable undefined: fixed to `text.trim()` |
| 97 | +- preHideCSS too broad: OpenAI `input[type="text"]` hid Name input, narrowed scope |
85 | 98 |
|
86 | 99 | --- |
87 | 100 |
|
@@ -127,3 +140,14 @@ Per Spec §9 Roadmap: |
127 | 140 | - ~~WebSocket connection~~ ✅ |
128 | 141 | - ~~Content Script masking~~ ✅ |
129 | 142 | - ~~Toggle Demo Mode~~ ✅ |
| 143 | + |
| 144 | +### Phase 5: Active Key Capture ✅ |
| 145 | +- ~~capture-patterns.ts SSoT~~ ✅ |
| 146 | +- ~~Per-platform CSS isolation~~ ✅ |
| 147 | +- ~~Pre-hide anti-flash (3 layers)~~ ✅ |
| 148 | +- ~~Clipboard writeText interception~~ ✅ |
| 149 | +- ~~React SPA masking~~ ✅ |
| 150 | +- ~~AWS dual-key capture~~ ✅ |
| 151 | +- ~~Toast stacking~~ ✅ |
| 152 | +- ~~E2E tested 8 platforms~~ ✅ |
| 153 | +- Stripe / Slack / SendGrid 🔶 |
0 commit comments