Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
39a440f
Create 2026-07-03-p2p-sync-design.md
diegorv Jul 4, 2026
45a88ca
docs(sync): tighten P2P sync spec after self-review
diegorv Jul 4, 2026
9ad53a2
docs(sync): add step-by-step implementation plan for P2P vault sync
diegorv Jul 4, 2026
a464b0d
docs(sync): replace assert-nothing test with a real assertion in the …
diegorv Jul 4, 2026
e06d7cd
feat(sync): add wire protocol messages and length-prefixed framing
diegorv Jul 4, 2026
fa20b39
feat(sync): add pairing key generation and Noise XXpsk3 channel
diegorv Jul 4, 2026
0e45437
test(sync): cover the oversized-message rejection in NoiseChannel::send
diegorv Jul 4, 2026
4bfb844
feat(sync): persist per-peer sync state in .kokobrain/sync-state.json
diegorv Jul 4, 2026
b5ea3f5
feat(sync): add rel-path validation, hashing, and folder manifest bui…
diegorv Jul 4, 2026
661d607
test(sync): cover symlinked-directory and non-UTF-8 skips in build_ma…
diegorv Jul 4, 2026
97c89f4
feat(sync): add local-wins decision table and conflict-copy naming
diegorv Jul 4, 2026
b19c26c
feat(sync): add read-only Noise TCP listener serving exposed folders
diegorv Jul 5, 2026
b30e2d8
fix(sync): keep listener shutdown responsive and time out silent sess…
diegorv Jul 5, 2026
b2f31fb
feat(sync): add pull engine with local-wins conflicts and atomic writes
diegorv Jul 5, 2026
181eb7b
fix(sync): abort session on channel-desync errors and retry failed co…
diegorv Jul 5, 2026
71c51fc
feat(sync): expose sync commands over Tauri IPC
diegorv Jul 5, 2026
648b3ac
feat(sync): add sync settings block with defaults and merge-on-load
diegorv Jul 5, 2026
736c8bd
feat(sync): add sync store with listener status and session summary
diegorv Jul 5, 2026
03a1ddd
ci(privacy): allowlist the P2P sync TCP connect in the external-call …
diegorv Jul 5, 2026
4718653
feat(sync): add sync service wrapping the IPC commands
diegorv Jul 5, 2026
e81ef84
test(sync): assert all six store fields are cleared by reset()
diegorv Jul 5, 2026
fb73e77
test(sync): cover error-path rethrows and the syncNow warning branch
diegorv Jul 5, 2026
4e6a1cc
feat(sync): add Sync settings section and lifecycle wiring
diegorv Jul 5, 2026
6b85e00
fix(sync): grant clipboard write permission so Copy pairing key works
diegorv Jul 5, 2026
e1fec15
Update CLAUDE.md
diegorv Jul 5, 2026
7cf2176
ci(security): ignore unfixable transitive quick-xml DoS advisories
diegorv Jul 5, 2026
f0c1181
docs(sync): close out the P2P sync plan
diegorv Jul 5, 2026
547addb
ci(security): pass cargo-audit ignores via the action input, not audi…
diegorv Jul 5, 2026
4b64de7
fix(sync): confine served files to the matched exposed folder
diegorv Jul 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/privacy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,8 @@ jobs:
# the Tauri updater's per-channel endpoint selection. See
# docs/RELEASE-CHANNELS.md for the full pipeline.
github\.com/diegorv/koko\.brain/releases
# P2P vault sync opens a direct TCP connection to a peer whose
# ip:port the user enters in Sync settings — no hardcoded address
# and no external server. The read-only listener side stays on the
# LAN. See docs/superpowers/specs/2026-07-03-p2p-sync-design.md.
sync/engine\.rs:.*TcpStream::connect
8 changes: 8 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,14 @@ jobs:
with:
token: ${{ secrets.GITHUB_TOKEN }}
working-directory: src-tauri
# This action does NOT read src-tauri/.cargo/audit.toml — the ignore
# list must be passed here. RUSTSEC-2026-0194/-0195: quick-xml 0.39.4
# DoS, transitive via plist <- tauri, patched only in >=0.41 which
# plist "^0.39.2" forbids. quick-xml here parses app-controlled
# .plist files, never untrusted network XML, so neither DoS is
# reachable. Keep in sync with src-tauri/.cargo/audit.toml (local
# `cargo audit`). Revisit when tauri ships a plist allowing >=0.41.
ignore: RUSTSEC-2026-0194,RUSTSEC-2026-0195

supply-chain-quarantine:
name: Supply Chain Quarantine
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ src/lib/
# file-icons, folder-notes, outgoing-links, properties, quick-switcher,
# search, tags, tasks, type-definitions
plugins/ # Optional modules: calendar, graph-view, kanban, one-on-one, periodic-notes,
# queryjs, quick-capture, table-of-contents, templates, word-count
# queryjs, quick-capture, sync, table-of-contents, templates, word-count
utils/ # Pure shared utilities (no state, no side effects)
```

Expand Down
Loading
Loading