Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,3 @@ db.sql
revoir.md
main.cpp
.vix-scripts
Makefile/modules/p2p/
/modules/p2p/
/modules/p2p/
16 changes: 16 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,19 @@
path = modules/middleware
url = https://github.com/vixcpp/middleware.git
branch = dev
[submodule "modules/p2p"]
path = modules/p2p
url = git@github.com:vixcpp/p2p.git
branch = dev
[submodule "modules/net"]
path = modules/net
url = https://github.com/vixcpp/net.git
branch = dev
[submodule "modules/sync"]
path = modules/sync
url = https://github.com/vixcpp/sync.git
branch = dev
[submodule "modules/cache"]
path = modules/cache
url = https://github.com/vixcpp/cache.git
branch = dev
106 changes: 106 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,112 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## v1.18.0 β€” Modular networking & secure P2P foundation

### Highlights

- Major architectural cleanup and modular extraction
- P2P stack now fully decoupled from core
- Cache, net, and sync promoted to first-class modules
- Clear dependency layering across the ecosystem

---

### 🧩 New Modules

- **net**
Low-level networking primitives and reachability utilities
(connectivity probing, network helpers).

- **cache**
Standalone HTTP cache engine with pluggable stores
(memory, LRU, file-based).

- **sync**
Offline-first synchronization engine
(WAL, outbox, retries, sync workers).

---

### 🧠 Core

- Removed embedded cache and sync implementations
- Core now focuses strictly on:
- HTTP server
- routing
- request / response lifecycle
- sessions & configuration
- Much cleaner public surface and faster compile times

---

### 🧱 Middleware

- Explicit dependency on cache (no implicit coupling)
- JSON and utils remain optional
- Scoped strictly to HTTP middleware pipeline
- Extensive smoke test coverage restored and stabilized

---

### 🌐 P2P

Integrated **v0.5.1** (latest)

#### P2P v0.5.1 β€” Latest

- Removed dependency on `vix::core`
- Requires `vix::net` only
- `sync`, `cache`, and `utils` are optional
- Cleaner, modular build
- Internal refactors (discovery, node, router)

#### P2P v0.5.0

- Complete secure transport layer (Phase 6)
- Encrypted envelopes with AEAD
- Per-peer session keys derived from handshake
- Replay protection using nonce counters
- Decrypt-before-dispatch logic
- Handshake & control messages kept plaintext
- Foundation for secure WAL / Outbox sync (Phase 6.6)

#### P2P v0.4.0

- AEAD support (encrypt + authenticate)
- Extended envelope format (nonce + auth tag)
- Session key storage per peer
- Secure channels with nonce tracking
- NullCrypto implementation for development

#### P2P v0.3.0

- HTTP bootstrap service for peer discovery
- Bootstrap.hpp and BootstrapHttp.cpp
- Extended node lifecycle for bootstrap integration
- Manual test registry added

net
β”œβ”€ cache
β”œβ”€ sync
└─ p2p
└─ (optional sync integration)

core
└─ middleware
└─ cache (required)

This release establishes a **clean, scalable foundation** for:

- offline-first sync
- secure edge routing
- future P2P + WAL integration
- long-term maintainability

---

### πŸ“ Architectural State (v1.18.0)

## v1.17.7 β€” Build & Run Reliability Improvements

### πŸ› Fixed
Expand Down
1 change: 1 addition & 0 deletions modules/cache
Submodule cache added at 8f71da
2 changes: 1 addition & 1 deletion modules/core
Submodule core updated 42 files
+0 βˆ’32 include/vix/http/cache/Cache.hpp
+0 βˆ’16 include/vix/http/cache/CacheContext.hpp
+0 βˆ’63 include/vix/http/cache/CacheContextMapper.hpp
+0 βˆ’19 include/vix/http/cache/CacheEntry.hpp
+0 βˆ’161 include/vix/http/cache/CacheKey.hpp
+0 βˆ’35 include/vix/http/cache/CachePolicy.hpp
+0 βˆ’21 include/vix/http/cache/CacheStore.hpp
+0 βˆ’67 include/vix/http/cache/FileStore.hpp
+0 βˆ’32 include/vix/http/cache/HeaderUtil.hpp
+0 βˆ’132 include/vix/http/cache/LruMemoryStore.hpp
+0 βˆ’25 include/vix/http/cache/MemoryStore.hpp
+0 βˆ’40 include/vix/sync/NetworkProbe.hpp
+0 βˆ’55 include/vix/sync/Operation.hpp
+0 βˆ’36 include/vix/sync/RetryPolicy.hpp
+0 βˆ’56 include/vix/sync/engine/SyncEngine.hpp
+0 βˆ’64 include/vix/sync/engine/SyncWorker.hpp
+0 βˆ’63 include/vix/sync/outbox/FileOutboxStore.hpp
+0 βˆ’44 include/vix/sync/outbox/Outbox.hpp
+0 βˆ’51 include/vix/sync/outbox/OutboxStore.hpp
+0 βˆ’32 include/vix/sync/wal/Wal.hpp
+0 βˆ’30 include/vix/sync/wal/WalReader.hpp
+0 βˆ’27 include/vix/sync/wal/WalRecord.hpp
+0 βˆ’35 include/vix/sync/wal/WalWriter.hpp
+0 βˆ’81 src/http/cache/Cache.cpp
+0 βˆ’98 src/http/cache/FileStore.cpp
+0 βˆ’33 src/http/cache/MemoryStore.cpp
+0 βˆ’52 src/sync/NetworkProbe.cpp
+0 βˆ’86 src/sync/engine/SyncEngine.cpp
+0 βˆ’89 src/sync/engine/SyncWorker.cpp
+0 βˆ’308 src/sync/outbox/FileOutboxStore.cpp
+0 βˆ’88 src/sync/outbox/Outbox.cpp
+0 βˆ’34 src/sync/wal/Wal.cpp
+0 βˆ’97 src/sync/wal/WalReader.cpp
+0 βˆ’73 src/sync/wal/WalWriter.cpp
+11 βˆ’88 tests/CMakeLists.txt
+17 βˆ’0 tests/core_smoke_test.cpp
+0 βˆ’230 tests/http/cache_context_mapper_smoke_test.cpp
+0 βˆ’313 tests/http/cache_smoke_test.cpp
+0 βˆ’72 tests/sync/fake_http_transport.hpp
+0 βˆ’111 tests/sync/sync_engine_inflight_timeout_test.cpp
+0 βˆ’100 tests/sync/sync_engine_outbox_permanent_fail_test.cpp
+0 βˆ’71 tests/sync/sync_engine_outbox_smoke_test.cpp
2 changes: 1 addition & 1 deletion modules/middleware
Submodule middleware updated 43 files
+103 βˆ’48 CMakeLists.txt
+6 βˆ’6 include/vix/middleware/app/adapter.hpp
+7 βˆ’9 include/vix/middleware/app/http_cache.hpp
+4 βˆ’7 include/vix/middleware/auth/jwt.hpp
+2 βˆ’9 include/vix/middleware/auth/rbac.hpp
+4 βˆ’5 include/vix/middleware/basics/body_limit.hpp
+4 βˆ’1 include/vix/middleware/basics/detail/ascii.hpp
+14 βˆ’10 include/vix/middleware/basics/logger.hpp
+6 βˆ’5 include/vix/middleware/basics/recovery.hpp
+9 βˆ’8 include/vix/middleware/basics/request_id.hpp
+4 βˆ’1 include/vix/middleware/basics/timing.hpp
+2 βˆ’3 include/vix/middleware/helpers/strings/strings.hpp
+16 βˆ’13 include/vix/middleware/http_cache.hpp
+4 βˆ’2 include/vix/middleware/middleware.hpp
+4 βˆ’1 include/vix/middleware/observability/debug_trace.hpp
+4 βˆ’1 include/vix/middleware/observability/metrics.hpp
+6 βˆ’3 include/vix/middleware/observability/tracing.hpp
+5 βˆ’1 include/vix/middleware/observability/utils.hpp
+4 βˆ’1 include/vix/middleware/parsers/form.hpp
+4 βˆ’1 include/vix/middleware/parsers/json.hpp
+4 βˆ’1 include/vix/middleware/parsers/multipart.hpp
+4 βˆ’1 include/vix/middleware/parsers/multipart_save.hpp
+10 βˆ’8 include/vix/middleware/performance/compression.hpp
+4 βˆ’1 include/vix/middleware/performance/etag.hpp
+4 βˆ’1 include/vix/middleware/performance/static_files.hpp
+4 βˆ’1 include/vix/middleware/periodic.hpp
+4 βˆ’1 include/vix/middleware/pipeline.hpp
+5 βˆ’2 include/vix/middleware/security/cors.hpp
+4 βˆ’1 include/vix/middleware/security/csrf.hpp
+4 βˆ’1 include/vix/middleware/security/headers.hpp
+4 βˆ’1 include/vix/middleware/security/ip_filter.hpp
+6 βˆ’3 include/vix/middleware/security/rate_limit.hpp
+4 βˆ’1 include/vix/middleware/utils/clock.hpp
+4 βˆ’1 include/vix/middleware/utils/header_utils.hpp
+4 βˆ’1 include/vix/middleware/utils/json_writer.hpp
+4 βˆ’1 include/vix/middleware/utils/key_builder.hpp
+4 βˆ’1 include/vix/middleware/utils/token_bucket.hpp
+1 βˆ’4 src/middleware.cpp
+1 βˆ’1 src/pipeline.cpp
+43 βˆ’43 tests/http/http_cache_demo.cpp
+16 βˆ’23 tests/http/http_cache_smoke_test.cpp
+3 βˆ’1 tests/performance/compression_smoke_test.cpp
+1 βˆ’1 tests/pipeline/pipeline_smoke_test.cpp
1 change: 1 addition & 0 deletions modules/net
Submodule net added at bff022
1 change: 1 addition & 0 deletions modules/p2p
Submodule p2p added at e70c86
1 change: 1 addition & 0 deletions modules/sync
Submodule sync added at 87fd89
Loading