c5529bedbf
feat: add client mode with streaming support
...
Add client mode enabling the keep CLI to connect to a remote keep
server over HTTP. Local plugins (compression, meta, filters) run on
the client; the server stores/retrieves binary blobs.
Architecture:
- Client save uses 3-thread streaming pipeline: reader thread (stdin
→ tee/stdout → hash → compress), OS pipe, streamer thread (pipe →
chunked HTTP POST). Memory usage is O(PIPESIZE) regardless of data
size.
- Server accepts compress=false, meta=false, decompress=false query
params for granular control of server-side processing.
- Streaming body handling on server via async channel → sync reader
bridge (ChannelReader).
Key additions:
- src/client.rs: KeepClient with post_stream() for chunked upload
- src/modes/client/: save, get, list, info, delete, diff, status
- --client-url / KEEP_CLIENT_URL configuration
- --client-password / KEEP_CLIENT_PASSWORD for auth
- os_pipe dependency for zero-copy pipe streaming
Co-Authored-By: andrew/openrouter/hunter-alpha <noreply@opencode.ai >
2026-03-12 18:01:36 -03:00
8a8a6e1c4b
fix: correct critical bugs and improve pipe streaming performance
...
Critical bug fixes:
- save_item now returns real Item from database, not a hardcoded fake
- AsyncDataService::save() reuses self.sync_service instead of creating redundant instance
- GenerateStatus trait signature mismatch fixed (CLI/API decoupling)
Performance improvements (pipe path untouched):
- CompressionEngine::open() returns Box<dyn Read + Send> enabling true streaming
- mode_get eliminates triple full-file read (was sampling then re-reading entire file)
- FilteringReader adds fast-path bypass when no filters, pre-allocates temp buffer
- text.rs meta plugin processes &[u8] slice directly, eliminates data.to_vec() clone
API correctness:
- Tag parse errors now return 400 instead of being silently discarded
- compute_diff uses similar crate (LCS-based) instead of naive positional comparison
Cleanup:
- Modernize string formatting (format!({x})) across codebase
- Remove redundant DB query in get mode
- Derive Debug/ToSchema on public types
- Delete placeholder test files with no real assertions
- Extract parse_comma_tags utility function
2026-03-11 20:45:05 -03:00
Andrew Phillips
a8871a9575
docs: update build and formatting instructions in AGENT.md
2025-09-15 17:25:58 -03:00
Andrew Phillips
eaf47d7fed
feat: Add TableStyle::Nothing to allow disabling table borders
2025-09-08 19:16:35 -03:00
Andrew Phillips
196fdbbda8
feat: add ringbuf and crossbeam-utils dependencies
2025-08-29 13:35:55 -03:00
Andrew Phillips
52dc8cea32
feat: update dependencies and remove binary and command meta plugins
2025-08-28 13:11:19 -03:00
Andrew Phillips
96cb67259d
build: remove to_snake_case_string and to_snake_case_trait dependencies
2025-08-27 18:35:18 -03:00
Andrew Phillips
091634433b
feat: add to_snake_case_string and to_snake_case_trait dependencies
2025-08-27 12:15:48 -03:00
Andrew Phillips
5d518711d5
feat: add md5 support and remove deprecated meta plugin
2025-08-27 10:37:07 -03:00
Andrew Phillips
f23cc6e94f
feat: add termsize and tokio-util dependencies and remove system.rs
2025-08-26 20:16:08 -03:00
Andrew Phillips
321e00171e
feat: move core services to services directory
2025-08-25 18:22:17 -03:00
Andrew Phillips
05b2c1b9bd
feat: update metadata field names to use mime_type and mime_encoding
2025-08-18 09:44:27 -03:00
Andrew Phillips
014dd380cd
feat: add new dependencies to Cargo.lock
2025-08-16 12:30:37 -03:00
Andrew Phillips
28b7199424
chore: remove deprecated tests.rs file
2025-08-16 11:57:10 -03:00
Andrew Phillips
24d7c4742c
chore: update dependencies and remove unused test modules
2025-08-14 12:23:46 -03:00
Andrew Phillips
5150e2f478
chore: update dependencies and remove unused server modules
2025-08-12 14:38:59 -03:00
Andrew Phillips
47349802d8
chore: update dependencies and remove unused basic meta plugin
2025-07-29 14:17:06 -03:00
Andrew Phillips
2a38f9c357
chore: update dependencies
2025-05-12 19:00:41 -03:00
Andrew Phillips
d9072d22d5
refactor: improve test structure and reliability
2025-05-12 13:07:33 -03:00
Andrew Phillips
7725e41883
Finished implementing --diff
2025-05-06 14:53:22 -03:00
Andrew Phillips
6e4199867c
Updated deps
2024-02-28 19:21:14 +00:00
Andrew Phillips
359129f5f8
Update versions
2023-09-20 19:05:46 +00:00
Andrew Phillips
26e22d113e
Rename keep-rust to keep
2023-09-18 14:29:07 +00:00
Andrew Phillips
2119f7e226
Update deps
2023-09-06 13:40:05 +00:00
Andrew Phillips
d9d47e97a9
Add flate2
2023-09-01 21:01:22 +00:00
Andrew Phillips
53382246ac
Remove unused deps
2023-09-01 15:36:21 +00:00
Andrew Phillips
49a77f9090
Most of basic functionality implemented
2023-08-31 19:38:59 +00:00
Andrew Phillips
b9bf5a831e
Initial commit
2023-07-25 17:33:50 -03:00