New types: UpdateResourceMetadataRequest and GetResourceMetadataResponse in types.go
AuthService methods: StoreResourceMetadata and GetResourceMetadata in auth/auth.go
Handlers: getResourceMetadataHandler and updateResourceMetadataHandler in server/handlers.go
Routes: /kv/{path}/metadata (GET for read, PUT for update) with auth middleware in server/routes.go
Enables fine-grained control over KV path ownership, group assignments, and POSIX-inspired permissions.
- Add AllowAnonymousRead and AllowAnonymousWrite config parameters
- Set both to false by default for security
- Apply conditional authentication middleware to KV endpoints:
- GET requires auth if AllowAnonymousRead is false
- PUT requires auth if AllowAnonymousWrite is false
- DELETE always requires authentication (no anonymous delete)
- Update integration tests to enable anonymous access for testing
- Maintain backward compatibility when AuthEnabled is false
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add conditional route registration based on feature toggles
- AuthEnabled now controls authentication/user management endpoints
- ClusteringEnabled controls member and Merkle tree endpoints
- RevisionHistoryEnabled controls history endpoints
- Feature toggles for RateLimitingEnabled and TamperLoggingEnabled were already implemented
This completes issue #6 allowing flexible deployment scenarios by disabling
unnecessary features and their associated endpoints.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed all duplicate Server methods from main.go (630 lines)
- Fixed import conflicts and unused imports
- main.go reduced from 3,298 to 340 lines (89% reduction)
- Clean modular structure with server package handling all server functionality
- Achieved clean build with no compilation errors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created server package with:
- server.go: Server struct and core methods
- handlers.go: HTTP handlers for health, KV operations, cluster management
- routes.go: HTTP route setup
- lifecycle.go: Server startup/shutdown logic
This moves ~400 lines of server-related code from main.go to dedicated
server package for better organization.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>