Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
233 commits
Select commit Hold shift + click to select a range
827867a
Content category fixes, frontpage and card view rendering fixes
Zorlin Aug 2, 2025
d96636e
Automatically discover mismatched tag/track names
Zorlin Aug 2, 2025
f84f827
Match categories by UUID on frontpage
Zorlin Aug 2, 2025
b5dcd1d
Docker improvements
Zorlin Aug 1, 2025
7bdfaf1
Docker fixes
Zorlin Aug 2, 2025
ae72fce
Rebase UI fixes
Zorlin Aug 2, 2025
fe938ec
Improved releases view - CSS grid
Zorlin Aug 2, 2025
277c1be
Full UI redesign
Zorlin Aug 2, 2025
558e295
Update for Firefox - temporary hacks
Zorlin Aug 2, 2025
0780628
Partial gamepad support
Zorlin Aug 3, 2025
4ff243c
Draggable video player
Zorlin Aug 3, 2025
99c80a9
Update Dockerfile for new builds, improve maintenance import/export
Zorlin Aug 3, 2025
beba02a
Check in new UI work
Zorlin Aug 3, 2025
a371540
Update structures panel
Zorlin Aug 4, 2025
49c950e
Full defederated filtering, half working TV shows implementation
Zorlin Aug 4, 2025
7a758da
Improve TV shows structures
Zorlin Aug 4, 2025
34e8cea
Displayname stuff
Zorlin Aug 4, 2025
42d658e
Global API support
Zorlin Aug 4, 2025
7e1a3a0
Docker stuff, return support for bootstrappers
Zorlin Aug 8, 2025
a10e953
Fix Featured Management: allow editing and deletion of expired releases
Zorlin Sep 30, 2025
4189df3
Docker and lens node configuration improvements
Zorlin Sep 30, 2025
068b2b1
Fix SVG path error in gamepad navigation bar
Zorlin Oct 3, 2025
514b02b
Attempt to fix SVG path error with icon attribute
Zorlin Oct 3, 2025
f7de44b
Add Phase 1 LOCAL Search MVP implementation plan
Zorlin Oct 3, 2025
8037592
Add LOCAL Search MVP with client-side full-text search
Zorlin Oct 3, 2025
22c97e9
Fix TypeScript errors in search implementation
Zorlin Oct 3, 2025
f117481
Add search bar to gamepadNavBar navigation
Zorlin Oct 3, 2025
5880cad
Add Lens Node v2 - Rust implementation Phase 1 (Foundation)
Zorlin Oct 3, 2025
5331b6f
Add Rust build artifacts to .gitignore
Zorlin Oct 3, 2025
635082f
Add Phase 2: Versioned Schema System for P2P Data Exchange
Zorlin Oct 4, 2025
b92fb0e
Add Universal Content Schema: Support for ALL content types
Zorlin Oct 4, 2025
07a9a3a
Add Phase 3: BFT/TGP P2P Layer with Sync Status
Zorlin Oct 4, 2025
917f0f3
Integrate consensus-peerexc into lens-v2-p2p
Zorlin Oct 4, 2025
ce08d00
Add WebSocket relay server to lens-v2-node for P2P peer discovery
Zorlin Oct 4, 2025
809ed1f
Add useP2P composable for browser P2P connectivity
Zorlin Oct 4, 2025
d4f03fc
Integrate P2P relay connectivity into Flagship UI
Zorlin Oct 4, 2025
0990498
Add WebRTC direct P2P connections with hole punching
Zorlin Oct 4, 2025
211978f
Add complete P2P content delivery system with BoTG block exchange
Zorlin Oct 4, 2025
dd70dc2
Fix P2P relay WebSocket URL (remove duplicate /api/v1)
Zorlin Oct 4, 2025
c152215
Complete P2P block exchange with bidirectional rollup handling
Zorlin Oct 4, 2025
1fbe082
Add CORS support to lens-v2-node for Flagship compatibility
Zorlin Oct 4, 2025
587c1fe
Add P2P Integration & lens-sdk-v2 Compatibility documentation
Zorlin Oct 4, 2025
8043390
Add persistence module for file-based JSON storage
Zorlin Oct 4, 2025
6b30857
Add modular backend route handlers for Lens V2 Node
Zorlin Oct 4, 2025
7d78729
Integrate modular route handlers into Lens V2 Node backend
Zorlin Oct 4, 2025
542f01f
Add useIdentity composable for client-side identity management
Zorlin Oct 4, 2025
9fc23b2
Separate promoted and featured releases on homepage
Zorlin Oct 4, 2025
3dc60ba
Add comprehensive featured release editor with Netflix-level features
Zorlin Oct 4, 2025
6c3b538
Frontend improvements for identity system and admin features
Zorlin Oct 4, 2025
187cc54
Disable Peerbit queries when VITE_USE_PEERBIT=false and add category …
Zorlin Oct 4, 2025
d7de77d
Fix featured section titles to use category name field
Zorlin Oct 4, 2025
b69ee91
Fix 'No featured content' message on cold load with Peerbit disabled
Zorlin Oct 4, 2025
ac3e2d0
Fix router pre-fetch cache seeding race condition
Zorlin Oct 4, 2025
5eafd36
Implement featured releases persistence and admin editing
Zorlin Oct 4, 2025
9cd1254
Fix content playback by using categorySlug directly
Zorlin Oct 4, 2025
5b378b0
Add quality/license badges and improve artist search
Zorlin Oct 4, 2025
49c474b
Add quality/license badges, artist management, and EPUB reader
Zorlin Oct 4, 2025
cacf956
Redesign quality and license badges to minimal Plex-style
Zorlin Oct 4, 2025
71d53d4
Add player-mode desaturation and hover effects to quality badge
Zorlin Oct 4, 2025
d060eeb
Use existing cc.svg with invert filter for license badge
Zorlin Oct 4, 2025
c4821e1
Remove CC- prefix from license badge text since logo shows it
Zorlin Oct 4, 2025
b32c0b3
Fix vertical alignment of text in quality and license badges
Zorlin Oct 4, 2025
3090294
fix(badges): improve vertical alignment and spacing consistency
Zorlin Oct 4, 2025
2a38307
Add RocksDB persistence to lens-v2-node
Oct 9, 2025
8f99cc8
Add /ready endpoint for HA sync status monitoring
Oct 10, 2025
f3942f9
Implement full P2P sync for lens-v2-node
Oct 10, 2025
3fd9c54
Implement working P2P sync with WebSocket relay
Oct 10, 2025
fc6bcd0
Implement full P2P peer discovery in lens-node-v2
Oct 10, 2025
6e9a2a0
Fix featured release field compatibility and URL encoding
Oct 11, 2025
9c53a77
Fix .dockerignore to allow packages/renderer/dist/web for Docker builds
Oct 11, 2025
cbe237c
Add comprehensive tests for delete transaction synchronization
Oct 11, 2025
4876ec9
Fix delete transactions not being sent to peers when requested
Oct 11, 2025
302e378
Fix ghost releases bug - implement delete transaction sync
Oct 11, 2025
f6dcaf5
THE FIX: Delete transactions now sync via SPORE
Oct 11, 2025
8bb010a
Fix delete release mutation to use HTTP API when Peerbit disabled
Oct 11, 2025
09ec3a8
Add bulk delete all releases mutation for efficient deletion
Oct 11, 2025
9fef15a
Fix bulk delete endpoint path to use /admin/releases
Oct 11, 2025
77262be
Fix bulk delete to create temporary tombstones instead of actual dele…
Oct 12, 2025
9475bc0
Implement comprehensive featured releases API and upload infrastructure
Oct 12, 2025
78516c2
Make upload UI storage-agnostic by removing IPFS-specific labels
Oct 12, 2025
4c7ba47
Fix TypeScript error: use 'success' instead of 'info' for snackbar me…
Oct 12, 2025
b47e48e
Refactor uploads to use external signed upload service
Oct 12, 2025
b78595d
Add comprehensive Upload Service documentation
Oct 12, 2025
4d57eae
Implement Lens Node DHT storage integration (Phase 1)
Oct 12, 2025
e1fc7b8
Clean up linter warnings and frontend P2P improvements
Oct 12, 2025
a065763
Fix first node startup + add persistent relay connection (v0.5.4)
Oct 12, 2025
1d55347
Add TGP packet protocol with Citadel DHT integration
Oct 12, 2025
0922ddd
Add DHT operations to WASM P2pClient with TGP packet support
Oct 12, 2025
5c25921
Bump version to v0.5.5 - Fix for Docker deployment
Oct 12, 2025
ec5c50a
Implement pure algorithmic dynamic mesh growth for Citadel DHT
Oct 13, 2025
5dd314d
Fix all tests - 142 library tests now passing
Oct 13, 2025
d2b1010
Add real-time heartbeat system for peer liveness tracking (v0.8.39)
Oct 14, 2025
33fdc3c
Fix WebRTC DataChannel ICE gathering and TGP packet recognition
Oct 14, 2025
4470611
Add test infrastructure for hexagonal mesh testing
Oct 15, 2025
73410fe
Add comprehensive hexagonal mesh test suite
Oct 15, 2025
a2b3bfc
Add DHT consistency and slot identity tests
Oct 15, 2025
677ee49
Update DHT integration tests for hexagonal mesh
Oct 15, 2025
f4be66b
Add P2P heartbeat module for peer liveness tracking
Oct 15, 2025
dcb3bc6
Update core lens-node modules for Content-Addressed Slots
Oct 15, 2025
4590ae2
Update /api/v1/map to use Content-Addressed Slots from DHT
Oct 15, 2025
0174d86
Update lens-v2-p2p network module for hexagonal mesh
Oct 15, 2025
7e71bb7
Update project configuration and dependencies
Oct 15, 2025
941308e
Add Content-Addressed Slots architecture tests
Oct 15, 2025
80c3dcd
Implement DHT PUT routing for Content-Addressed Slots
Oct 15, 2025
63fe6f8
Fix test peer IDs and remove artificial delays - tests now event-driven
Oct 15, 2025
6d55446
Implement hexagonal spiral CAS + graceful shutdown in lens-v2-node
Oct 15, 2025
0727235
Distinguish browser clients from server nodes in lens-v2 mesh
Oct 15, 2025
e2bf3d1
Improve browser peer anonymization - only expose first 8 chars
Oct 15, 2025
3b77326
Add dark/light mode and improve network map visualization
Oct 15, 2025
562d35e
Implement collision-free slot assignment via DHT query (v0.8.61)
Oct 15, 2025
843bcca
Implement SPORE WantList protocol for relay-only-signaling architecture
Oct 15, 2025
67cbd53
Fix DHT GET timeout by using claimed slots instead of calculated slots
Oct 15, 2025
c6c55e1
Fix SPORE WantList test expectations for range exclusion protocol
Oct 15, 2025
d219ed5
Update CONTEXT.md with claimed slots architecture and SPORE WantList …
Oct 15, 2025
be2db67
Fix sync_orchestrator and distributed_dht tests for claimed slot arch…
Oct 15, 2025
e86b241
Fix remaining 3 failing tests for lens-v2-node (170/170 passing!)
Oct 15, 2025
5695c74
Bump lens-v2-node to v0.8.70 - Major Milestone Release
Oct 15, 2025
a311b2a
Add pH-strip style latency visualization to network graph
Oct 15, 2025
c355dc1
Add syslog-ng server for Bunny.net CDN log collection
Oct 15, 2025
6e0d644
Simplify syslog-ng to UDP-first approach (TLS optional)
Oct 15, 2025
573ae87
Fix geometry test to use dynamic mesh calculation
Oct 15, 2025
9bc7a6b
Make geometry test TRULY dynamic across multiple mesh sizes
Oct 16, 2025
0e35eec
Extract lens-v2 components to separate repository
Oct 16, 2025
c4bb270
Add TypeScript type definitions for THREE.js library
Oct 16, 2025
595be2b
Implement split beam bidirectional latency visualization
Oct 16, 2025
1a7c15d
Apply code formatting and linting fixes across codebase
Oct 16, 2025
0695343
Fix WebSocket relay URL from /api/v1/relay/ws to /ws
Oct 20, 2025
6bdc278
Bump version to v0.10.0 to match lens-v2
Oct 21, 2025
2cf66b7
feat: Add multi-window latency stats to mesh map hover
Dec 16, 2025
0adeed9
WIP: Hybrid network service, runtime config improvements, and Docker …
Zorlin Dec 16, 2025
c534de1
chore: cleanup
Zorlin Dec 16, 2025
950601d
fix: Lazy load NetworkMapGraph and add lens_v2 WASM bindings
Zorlin Dec 16, 2025
621319c
chore: Update WASM binary from citadel-wasm build
Zorlin Dec 16, 2025
da5495d
refactor: Remove WASM P2P layer, use pure REST API
Zorlin Dec 16, 2025
1bfefc0
refactor: Remove dead P2P composables (useP2P, useP2PStreaming)
Zorlin Dec 16, 2025
515e0f8
fix: Add missing MDI icon aliases for Vuetify mdi-svg iconset
Zorlin Dec 16, 2025
04c3b4e
fix: View All button blends with OLED black theme
Zorlin Dec 16, 2025
4ab68ce
feat: Mobile-responsive header with breathing glow divider
Zorlin Dec 16, 2025
9ded3f5
chore: Ignore Playwright MCP screenshots
Zorlin Dec 16, 2025
9284104
feat: Switch to clean URLs (history mode)
Zorlin Dec 16, 2025
98a5c74
fix: Audio player floats at bottom of window
Zorlin Dec 16, 2025
2d4aa22
refactor: Shorten 'TV Shows' to 'TV' in navigation
Zorlin Dec 16, 2025
4deae08
fix: Center Latin slogan in footer
Zorlin Dec 16, 2025
272785f
fix: Set explicit black background on admin dialogs
Zorlin Dec 16, 2025
2aed552
feat: Auto-fill grid layout for content sections
Zorlin Dec 16, 2025
a4bc099
feat: Add hover effect to Latin slogan, use clean URLs
Zorlin Dec 16, 2025
b43661c
feat: Add hover effect to Latin slogan, use clean URLs
Zorlin Dec 16, 2025
cb9ed96
fix: Set explicit black background on admin edit dialogs
Zorlin Dec 16, 2025
2e32a6c
feat: Add public /p2p route for mesh visualization
Zorlin Dec 16, 2025
bf1a4b8
refactor: Clean up P2P page, use 3d-force-graph visualization
Zorlin Dec 16, 2025
97bf873
feat: Add TV Shows category to Meta management page
Zorlin Dec 16, 2025
1707a12
feat: Make album cover flip a hidden easter egg
Zorlin Dec 16, 2025
0d2fa16
feat: Overhaul music release management and artist association
Zorlin Dec 16, 2025
3da1b40
fix: Artist form edit now properly saves thumbnailCID
Zorlin Dec 17, 2025
9dd062a
feat: Artist names on homepage link to artist pages
Zorlin Dec 17, 2025
bb34575
feat: Add CC license chooser and dynamic track artwork
Zorlin Dec 17, 2025
acaeab2
feat: Add 'Associate matching' option for existing artists
Zorlin Dec 17, 2025
ceb3457
feat: Add docker-compose dev environment with dynamic cluster sizing
Zorlin Dec 17, 2025
7513656
feat: Add VITE_HOST env var and allow .riff.cc subdomains
Zorlin Dec 17, 2025
e87def1
Replace lens-sdk with citadel-sdk, self-host fonts
Zorlin Dec 19, 2025
4568d7a
Docker: cross-compilation and dev container improvements
Zorlin Dec 19, 2025
fb0461e
Add production Dockerfile for multi-arch builds
Zorlin Dec 19, 2025
ffd636a
Fix Docker build: include electron-vendors.cache.json
Zorlin Dec 19, 2025
5fa155d
Fix Docker build: copy electron-vendors.cache.json
Zorlin Dec 19, 2025
4e4a7ad
Fix Docker build: explicitly copy indexBrowser.html to index.html
Zorlin Dec 19, 2025
008297e
Fix Docker build: copy version/ directory
Zorlin Dec 19, 2025
e4e6f06
Fix Docker build: use pnpm build from root
Zorlin Dec 19, 2025
cd3f619
Fix Docker build: install pnpm via npm instead of corepack
Zorlin Dec 19, 2025
cd13cd5
Fix Docker build: properly enable corepack for pnpm
Zorlin Dec 19, 2025
e3fa654
Add missing three.js dependency
Zorlin Dec 19, 2025
da8ef84
Fix Docker build: add py3-setuptools for distutils
Zorlin Dec 19, 2025
d55b6ff
Add WebGPU shim for browser compatibility
michatinkers Dec 20, 2025
060c4e0
Integrate WebGPU shim and add WebGL fallback for Firefox
michatinkers Dec 20, 2025
d733083
Improve Docker dev environment portability
michatinkers Dec 20, 2025
76ff5d4
Pre-build citadel-node base image to avoid apt-get at runtime
michatinkers Dec 20, 2025
5484925
fix: Distribute peer connections across mesh to avoid bottleneck
michatinkers Dec 20, 2025
c432d15
Add real-time WebSocket updates to network mesh visualization
michatinkers Dec 20, 2025
22516fc
Add __pycache__ to gitignore
michatinkers Dec 20, 2025
d0c9d69
Make cluster.py detect project dirs from script location
michatinkers Dec 23, 2025
8ac5d3d
Fix Apple Silicon support
Zorlin Dec 20, 2025
25d5c4f
Fix network map to show all mesh nodes, not just direct connections
Zorlin Dec 24, 2025
95ec0ee
Add Quick Search overlay with "just type" activation
Zorlin Dec 24, 2025
9572fbc
Add local Docker development stack for Flagship and Citadel
Zorlin Dec 24, 2025
03f43ca
Add --admin-keys option to riffstack.py
Zorlin Dec 24, 2025
3bd1a9d
Handle external URLs in footer links
Zorlin Dec 24, 2025
4d9982a
Improve search with keyboard nav and artist indexing
Zorlin Dec 24, 2025
79e3134
Add volume slider flyout to audio player
Zorlin Dec 24, 2025
177961b
Fix artist page not updating on route change
Zorlin Dec 24, 2025
7d75830
feat(upload): rewrite upload dialog with parallel uploads and progress
Zorlin Dec 25, 2025
11949d1
feat(ui): add ArchivistBadge component for storage status
Zorlin Dec 25, 2025
dc0445e
(chore) remove unused crates folder
Zorlin Dec 26, 2025
d3d2a22
(chore) Cleanup unused deployment files
Zorlin Dec 26, 2025
c27b508
feat: upload improvements, moderation queue, and album viewer enhance…
Zorlin Dec 26, 2025
8a395d1
feat(bulk-upload): add cover art thumbnails, speed display, and dupli…
Zorlin Dec 26, 2025
efc776d
fix(bulk-upload): move cover art to right side of Artist column
Zorlin Dec 26, 2025
1bec8b0
fix(bulk-upload): move cover art after album title
Zorlin Dec 26, 2025
dcdeb32
feat(bulk-upload): show album cover art during upload progress
Zorlin Dec 26, 2025
75ebf11
fix(bulk-upload): cover art appears only on completion as UX flourish
Zorlin Dec 26, 2025
8270089
fix(bulk-upload): add white color to status badge icons
Zorlin Dec 26, 2025
d4af731
fix(icons): add mdiCheckDecagram for moderation page
Zorlin Dec 26, 2025
533f392
feat(bulk-upload): upload cover art as thumbnails
Zorlin Dec 26, 2025
4ba180f
feat(bulk-upload): include trackMetadata, codec, and lossless info
Zorlin Dec 26, 2025
e80e5ef
fix(albumViewer): handle numeric duration from trackMetadata
Zorlin Dec 26, 2025
4a193ee
fix: store durations as formatted "mm:ss" strings, not raw floats
Zorlin Dec 26, 2025
42df9c2
fix(admin): correct error message from 'blocking' to 'deleting'
Zorlin Dec 26, 2025
3873d99
fix(hooks): handle 204 No Content in delete release mutation
Zorlin Dec 26, 2025
2bf488f
refactor(docker): reorganize docker files and add env var support
Zorlin Dec 27, 2025
33e1b66
feat(pwa): add service worker and IndexedDB manifest cache
Zorlin Dec 27, 2025
0ff7ca9
fix(release): restore movie/video detection from cached releases
Zorlin Dec 27, 2025
ff35b80
fix(release): check displayRelease for categorySlug first
Zorlin Dec 27, 2025
9c3ebb0
fix(upload): add signature auth headers for Caddy forward_auth
Zorlin Dec 27, 2025
13ddf0b
fix(docker): add debugging tools and fix container name matching
Zorlin Dec 29, 2025
32069cc
refactor(ui): move upload dialog from appBar to accountMenu
Zorlin Dec 29, 2025
4191307
feat(featured): improve featured releases ordering and UI
Zorlin Dec 29, 2025
1150da9
feat(docker): add preview docker-compose configuration
Zorlin Dec 29, 2025
9c6f1c6
Consolidate env files and remove deprecated cluster.py
michatinkers Dec 29, 2025
c106bb0
feat(librarian): add URL and CID import functionality
michatinkers Dec 29, 2025
b08c4da
fix(albumViewer): fix track metadata count and date display
Zorlin Dec 30, 2025
7e4c6b8
fix(contentCard): prefer artist field for music category
Zorlin Dec 30, 2025
c25f5ba
feat(moderation): add endless/paged view toggle and preview dialog
Zorlin Dec 30, 2025
3ba2565
feat(librarian): enhance panel UI and composable
Zorlin Dec 30, 2025
dd3cdcd
feat: add Credits & Licensing page
Zorlin Dec 30, 2025
bb1541c
feat: use CD case SVG as placeholder for missing cover art
Zorlin Dec 30, 2025
c2d59a3
fix(albumViewer): add CD case fallback for missing cover art
Zorlin Dec 30, 2025
770f182
fix(admin): add placeholder fallback for content thumbnails
Zorlin Dec 30, 2025
23b22d0
feat(LicenseBadge): expand tooltip to show license rights and restric…
Zorlin Dec 30, 2025
2894cbc
feat(moderation): add selection mode and status filtering
Zorlin Dec 30, 2025
d151e18
feat: quality ladder, job management, and moderation enhancements
Zorlin Dec 30, 2025
378a0bd
feat(moderation): use album viewer for release preview
Zorlin Dec 30, 2025
55b7475
feat(player): add quality switcher to miniplayer
Zorlin Dec 30, 2025
2cf4350
feat(librarian): add metadata input UI for NeedsInput jobs
Zorlin Dec 30, 2025
46e1080
feat(librarian): add select all/none and bulk delete for jobs
Zorlin Dec 30, 2025
caf882c
merge v2 rewrite into main on citadel stack
Zorlin Mar 11, 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
2 changes: 1 addition & 1 deletion .browserslistrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Chrome 124
Chrome 124
25 changes: 18 additions & 7 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
node_modules
.git
.pnpm-store
.pnpm-store-bak
dist
packages/renderer/dist
packages/main/dist
packages/preload/dist
.git
.github
.vscode
*.log
*.md
!README.md
.env*
.DS_Store
packages/*/dist
packages/*/node_modules
test-results
playwright_launch_log.txt
buildResources
.electron-builder.config.cjs
coverage
.nyc_output
*.tsbuildinfo
.eslintcache
docker
tests
scripts
1 change: 1 addition & 0 deletions .electron-vendors.cache.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"chrome":"124","node":"22"}
2 changes: 0 additions & 2 deletions .env.example

This file was deleted.

37 changes: 36 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# AI cruft
.palace
synthesis
.claude

# Node.js
.pnpm-store/
node_modules/
npm-debug.log
yarn-error.log
Expand Down Expand Up @@ -44,6 +50,35 @@ playwright-report/
# Build tools
.eslintcache
.prettierrc
.electron-vendors.cache.json

*.txt

# lens-sdk
lens-sdk
.claude

# env
.env.production

# Rust
target/
**/*.rs.bk

# Research papers
synthesis/

# Roadmap planning docs
ROADMAP_v0.6.0.md

# Data
.lens-node-data/
# AI configuration (user-specific)
.mcp.json
.playwright-mcp/

# Docker dev environment
docker/.env.docker.dev
docker/docker-compose.generated.yml
docker/haproxy-dynamic.cfg
CLAUDE.local.md
__pycache__/
5 changes: 1 addition & 4 deletions .mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--headless"
]
"args": ["@playwright/mcp@latest", "--headless"]
},
"deepwiki": {
"type": "sse",
Expand Down
2 changes: 1 addition & 1 deletion .npmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
node-linker=hoisted
node-linker=hoisted
3 changes: 3 additions & 0 deletions .palace/links.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
linked_projects:
- /opt/castle/workspace/citadel
- /opt/castle/workspace/lens-v2
Binary file added .playwright-mcp/citadel-wasm-test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .playwright-mcp/no-wasm-test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
54 changes: 54 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Pre-commit hooks for Flagship workspace
# See https://pre-commit.com for more information

repos:
# General housekeeping hooks
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
- id: end-of-file-fixer
- id: check-yaml
- id: check-toml
- id: check-added-large-files
args: [--maxkb=1000]
- id: check-merge-conflict
- id: check-case-conflict
- id: mixed-line-ending
args: [--fix=lf]

# Rust-specific hooks
- repo: local
hooks:
- id: cargo-fmt
name: cargo fmt
entry: cargo fmt
language: system
types: [rust]
pass_filenames: false
args: [--all, --]

- id: cargo-clippy
name: cargo clippy
entry: cargo clippy
language: system
types: [rust]
pass_filenames: false
args: [--all-targets, --all-features, --, -D, warnings]

- id: cargo-test
name: cargo test
entry: cargo test
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]

- id: cargo-check
name: cargo check
entry: cargo check
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ package-lock.json
.electron-vendors.cache.json

.github
.idea
.idea
1 change: 1 addition & 0 deletions AGENTS.md
146 changes: 146 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Changelog

All notable changes to the Riff.CC Flagship project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.7.2] - 2025-10-13

### Added

#### Citadel DHT Integration
- Integrated **Citadel DHT** for distributed metadata storage with O(1) key lookups
- Implemented `DHTStorage` backend replacing centralized storage with fully decentralized DHT
- Added **2.5D Hexagonal Toroidal Mesh** topology with 8-neighbor discovery
- Implemented **greedy routing algorithm** with provably optimal paths
- Added **MinimalNode** architecture with only 64 bytes of state per node
- Implemented **lazy neighbor discovery** - compute neighbors on-demand without routing table storage
- Added **recursive DHT architecture** - uses DHT to store its own topology

#### DHT Encryption & Security
- Implemented optional **ChaCha20-Poly1305 encryption** for DHT values
- Added **Site Mode** system (Normal vs Enterprise) for encryption policy enforcement
- Implemented **Blake3-based key derivation** with salt for encryption keys
- Added automatic encryption/decryption for all DHT storage operations
- Implemented backward compatibility with unencrypted data during transition

#### Performance & Monitoring
- Added comprehensive **DHT metrics tracking** (GET/PUT/DELETE operations, latency, errors)
- Implemented `/api/v1/dht/health` endpoint for real-time DHT health monitoring
- Added automatic error tracking and reporting for DHT operations
- Implemented operation latency measurement for all DHT operations

#### Documentation
- Added `DHT_INTEGRATION.md` with comprehensive technical documentation
- Created detailed README for lens-v2-node with usage examples
- Documented hexagonal toroidal mesh topology and routing algorithms
- Added code examples for all major DHT operations

### Changed
- **BREAKING**: Lens Node v2 now uses DHT storage by default instead of in-memory storage
- Updated storage layer to support pluggable backends via `LensStorage` trait
- Refactored key generation to use Blake3 with domain separation
- Enhanced error handling throughout DHT operations with detailed context

### Performance Improvements
- Achieved **O(1) key lookups** vs O(log N) in traditional DHTs
- Benchmarked at **1.8-5.6M operations/second** (45,000-48,000× faster than Amino DHT)
- Reduced node memory footprint to **64 bytes** per DHT node (vs 100s of KB in traditional DHTs)
- Optimized routing to use geometric computation instead of routing table lookups

### Technical Details

#### Mesh Topology
- Default mesh: 120 × 120 × 25 = 360,000 total slots
- Support for configurable mesh dimensions (width × height × depth)
- Toroidal wrapping in all three dimensions for optimal routing
- Average 12-15 hops for key lookups in production configurations

#### Storage Architecture
```
Browser Client
HTTP/WebSocket API
Storage Trait Layer
DHTStorage Implementation
Local Cache (in-memory + optional RocksDB)
Citadel DHT Network
```

#### Encryption Format
- Algorithm: ChaCha20-Poly1305 (authenticated encryption)
- Key derivation: Blake3(SiteKey || salt || "lens:dht:v1")
- Nonce: 96-bit random (stored with ciphertext)
- Format: `[nonce:12 bytes][ciphertext][auth tag:16 bytes]`

### Dependencies
- Added `citadel-core` for topology and routing primitives
- Added `citadel-dht` for distributed hash table implementation
- Added `chacha20poly1305` for authenticated encryption
- Added `blake3` for fast cryptographic hashing

### Testing
- Added comprehensive test suite for DHTStorage operations
- Added tests for encryption/decryption roundtrips
- Added tests for toroidal distance calculations
- Added tests for greedy routing algorithm
- Added tests for DHT health endpoint

---

## [0.7.1] - 2025-10-XX

### Added
- Initial Lens Node v2 implementation
- Basic HTTP API for releases and metadata
- In-memory storage backend
- WebRTC P2P networking foundation

---

## Release Notes

### v0.7.2 Highlights

This release represents a **major architectural shift** from centralized to fully decentralized storage:

1. **O(1) DHT Performance**: Citadel DHT provides constant-time key lookups through geometric routing, compared to O(log N) in traditional DHTs like Kademlia or Chord.

2. **Minimal Memory Footprint**: Each DHT node requires only 64 bytes of state. Traditional DHTs store large routing tables (100s of KB per node).

3. **Provable Optimality**: Every routing path can be verified as optimal by any observer, enabling cryptographic attestation and fraud detection.

4. **Encryption-Ready**: Optional ChaCha20-Poly1305 encryption with configurable site modes enables both public and private deployments.

5. **Production-Ready Performance**: Benchmarked at 1.8-5.6M operations/second, making it suitable for high-traffic production deployments.

### Migration Guide

Existing Lens Node deployments can migrate to DHT storage:

1. **Parallel Run**: Run DHT alongside existing storage, compare results
2. **Gradual Migration**: Migrate non-critical data first (peer announcements)
3. **Full Cutover**: Disable old storage once DHT is validated
4. **Optimization**: Tune cache sizes and replication factors

See `crates/lens-v2-node/DHT_INTEGRATION.md` for detailed migration instructions.

---

## Links

- [Repository](https://github.com/riffcc/flagship)
- [Website](https://riff.cc/)
- [OpenCollective](https://opencollective.com/riffcc)
- [DeepWiki Documentation](https://deepwiki.com/riffcc/flagship)

[Unreleased]: https://github.com/riffcc/flagship/compare/v0.7.2...HEAD
[0.7.2]: https://github.com/riffcc/flagship/releases/tag/v0.7.2
[0.7.1]: https://github.com/riffcc/flagship/releases/tag/v0.7.1
Loading
Loading