徐枫
|
b6fbf7a921
|
feat: implement M4 self-hosting, Docker & documentation
CI / test (22) (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / extension (push) Has been cancelled
- Dockerfile with multi-stage build (Node 22 Alpine, sodium-native)
- docker-compose.yml with health check for easy self-hosting
- README with setup guide, API reference, and project overview
- Architecture docs (data flow, component breakdown, protocol constants)
- Security model docs (threat model, crypto primitives, self-hosting checklist)
- GitHub Actions CI pipeline (test, typecheck, Docker smoke test, extension builds)
- GitHub Actions release pipeline (GHCR push, extension zip artifacts)
- CONTRIBUTING.md with dev setup and code style guidelines
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-03-17 18:34:53 +08:00 |
|
徐枫
|
f39ff8c215
|
feat: implement M3 multi-browser support (Firefox, Edge, Safari)
Add browser abstraction layer (compat.ts) that normalizes Chrome/Firefox/
Edge/Safari extension APIs behind a unified promise-based interface.
Replace all direct chrome.* calls with compat layer across service worker,
sync engine, badge, storage, popup, and options modules.
- Browser-specific manifests in manifests/ (Firefox MV3 with gecko settings,
Edge/Safari variants)
- Multi-target build system: `npm run build` produces all four browser
builds in build/<browser>/
- Per-browser build scripts: build:chrome, build:firefox, build:edge, build:safari
- Auto-detects browser at runtime for platform-specific device registration
- All 38 existing tests pass, typecheck clean
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-03-17 16:58:44 +08:00 |
|
徐枫
|
dc3be4d73f
|
feat: implement M2 Chrome browser extension
Build the CookieBridge Chrome extension (Manifest V3) with:
- Background service worker: cookie monitoring via chrome.cookies.onChanged,
WebSocket connection to relay server with auto-reconnect, HTTP polling
fallback, device registration and pairing flow
- Browser-compatible crypto: libsodium-wrappers-sumo for XChaCha20-Poly1305
encryption, Ed25519 signing, X25519 key exchange (mirrors server's
sodium-native API)
- Popup UI: device registration, connection status indicator (gray/blue/
green/red), cookie/device/sync stats, one-click current site sync,
whitelist quick-add, device pairing with 6-digit code
- Options page: server URL config, connection mode (auto/WS/polling),
poll interval slider, auto-sync toggle, domain whitelist/blacklist
management, paired device list, key export/import, data clearing
- Sync engine: LWW conflict resolution with Lamport clocks (same as
server), bidirectional cookie sync with all paired peers, echo
suppression to prevent sync loops
- Badge management: icon color reflects state (gray=not logged in,
blue=connected, green=syncing with count, red=error)
- Build system: esbuild bundling for Chrome 120+, TypeScript with
strict mode, clean type checking
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-03-17 16:30:18 +08:00 |
|
徐枫
|
1bd7a34de8
|
feat: rework CookieBridge to v2 architecture per CEO feedback
Architecture changes:
- Extension connects directly to server (no local proxy/daemon)
- Dual transport: WebSocket (real-time) + HTTP polling (fallback)
- Server stores encrypted cookie blobs (E2E encrypted, server-blind)
- Device registration with API token auth
- Pairing records stored server-side for cross-device cookie access
- Agent Skill API: AI agents get tokens to retrieve encrypted cookies
with domain-level access control
New modules:
- src/relay/store.ts — encrypted cookie blob storage (LWW, per-device limits)
- src/relay/tokens.ts — device registry, agent registry, pairing tracking
- Protocol spec v2 with new types (EncryptedCookieBlob, AgentToken, etc.)
38 tests passing (crypto, pairing, conflict, full integration with
HTTP polling, agent API, and WebSocket relay).
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-03-17 15:26:24 +08:00 |
|
徐枫
|
4326276505
|
feat: implement CookieBridge M1 — core protocol & relay server
- Protocol spec: encrypted envelope format, device identity (Ed25519 + X25519),
LWW conflict resolution with Lamport clocks
- E2E encryption: XChaCha20-Poly1305 via sodium-native, X25519 key exchange
- WebSocket relay server: stateless message forwarding, device auth via
challenge-response, offline message queuing, ping/pong keepalive
- Device pairing: time-limited pairing codes, key exchange broker via HTTP
- Sync protocol: envelope builder/opener, conflict-resolving cookie store
- 31 tests passing (crypto, pairing, conflict resolution, full integration)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-03-17 14:56:01 +08:00 |
|