vsxd
6df55e3768
feat(infra): update JPA repository implementations
2026-03-12 17:47:37 +08:00
vsxd
db0d86ea08
feat(search): update search documents and query services
2026-03-12 17:47:18 +08:00
vsxd
d44f9415fe
feat(auth): update security config, auth entities, and token services
2026-03-12 17:47:08 +08:00
vsxd
cfcdb545f0
feat(domain): update entities, services, repositories, and add shared exceptions
2026-03-12 17:46:48 +08:00
vsxd
9d7282221c
docs: update specs, plans, and design documents for Phase 2-4
2026-03-12 17:46:41 +08:00
vsxd
b7a798914a
chore: add Eclipse project files to gitignore
2026-03-12 17:45:28 +08:00
vsxd
217ed7e918
feat(social): add SkillStarService and SkillRatingService with events
2026-03-12 17:36:42 +08:00
vsxd
ae24a18e64
feat(social): add SkillStar and SkillRating entities and repositories
2026-03-12 17:19:50 +08:00
vsxd
8b17f2c55b
feat(review): add ReviewController and PromotionController REST APIs
...
- Add review DTOs: ReviewTaskRequest, ReviewTaskResponse, ReviewActionRequest
- Add promotion DTOs: PromotionRequestDto, PromotionResponseDto, PromotionActionRequest
- Add ReviewController with submit/approve/reject/withdraw/list endpoints
- Add PromotionController with submit/approve/reject/list endpoints
- Follow existing BaseApiController + ApiResponse pattern
2026-03-12 16:41:32 +08:00
vsxd
6acdfe3c91
fix(docs): address spec review findings for Phase 4 design
...
- Remove auth_method field reference, use local_credential existence
- Unify merge API path to /api/v1/auth/merge/*
- Add missing /.well-known/ proxy in Nginx and K8s Ingress
- Fix SeedDataRunner missing field declarations
- Remove login failure attempt count from error response
- Sync delivery roadmap Phase 4/5 scope with spec
2026-03-12 16:04:59 +08:00
vsxd
44dece6f6d
docs: add Phase 4 design spec - ops polish + open source readiness
...
Comprehensive design covering local auth, multi-account merge, skill
governance, audit log query, Prometheus metrics, performance optimization,
security hardening, Docker one-click startup, K8s deployment, and open
source infrastructure.
2026-03-12 15:55:27 +08:00
vsxd
51fa37a9c5
feat(review): implement PromotionService
...
- Add submitPromotion with duplicate check and validation
- Add approvePromotion with optimistic locking and skill copying
- Add rejectPromotion with reason recording
2026-03-12 15:52:54 +08:00
vsxd
bffc36b815
feat(review): implement ReviewService
...
- Add submitReview with duplicate check via partial unique index
- Add approveReview with optimistic locking and event publishing
- Add rejectReview with reason recording
- Add withdrawReview with PENDING status check
2026-03-12 15:42:21 +08:00
vsxd
644b3efd44
feat(review): add ReviewPermissionChecker with tests
...
- canReview: self-review blocked, GLOBAL requires SKILL_ADMIN/SUPER_ADMIN,
TEAM requires namespace ADMIN/OWNER
- canReviewPromotion: self-review blocked, requires SKILL_ADMIN/SUPER_ADMIN
- NamespaceType passed as parameter to avoid internal repository lookup
- 12 unit tests covering all permission scenarios
2026-03-12 15:24:51 +08:00
vsxd
3ebdc2691d
feat(repo): add review repositories
...
- Add ReviewTaskRepository with optimistic lock update
- Add PromotionRequestRepository
- Implement JPA repositories in infra module
2026-03-12 15:17:11 +08:00
vsxd
8a1b1a9d5f
feat(domain): add review workflow domain entities
...
- Add ReviewTaskStatus enum (PENDING, APPROVED, REJECTED)
- Add ReviewTask entity with optimistic locking
- Add PromotionRequest entity for cross-namespace promotion
2026-03-12 15:10:55 +08:00
vsxd
e57efef41b
feat(db): add Phase 3 database migration
...
- Add review_task table with partial unique index
- Add promotion_request table
- Add skill_star and skill_rating tables
- Add idempotency_record table
2026-03-12 15:05:38 +08:00
vsxd
b77e5ad314
docs: complete Phase 3 implementation plan with detailed TDD steps for all 5 chunks
2026-03-12 14:31:49 +08:00
vsxd
7174ffab6a
docs: complete Phase 3 implementation plan with detailed TDD steps for all 5 chunks
...
- Chunk 1: Review workflow core (backend) - DB migration, entities, repos, permissions, service
- Chunk 2: Rating/favorites + frontend review center - entities, services, event listeners, controllers
- Chunk 3: CLI API + Web auth - Device Flow models, service, controllers, frontend page
- Chunk 4: ClawHub compatibility layer - slug mapper, well-known endpoint, compat controller
- Chunk 5: Idempotency + admin dashboard - interceptor, cleanup tasks, admin API, frontend pages
2026-03-12 11:30:19 +08:00
vsxd
fe32dcddb6
fix(web): resolve TypeScript errors in Phase 2 pages and hooks
2026-03-12 02:56:54 +08:00
vsxd
9a1b14b11a
feat(web): add all Phase 2 pages and routes
2026-03-12 02:54:19 +08:00
vsxd
8d223dc875
fix(web): use plain fetch for Phase 2 API hooks
2026-03-12 02:45:32 +08:00
vsxd
a3fe76eaeb
feat(web): add Phase 2 frontend foundation - types, hooks, shared and feature components
2026-03-12 02:43:01 +08:00
vsxd
1db4ec1e78
feat: add skill controllers, search, async events, rate limiting, and config
2026-03-12 02:36:59 +08:00
vsxd
28040f36a2
feat(domain): add skill publish, query, download, and tag services with tests
2026-03-12 02:24:03 +08:00
vsxd
c9f9ef03f2
feat: add namespace services, controller, DTOs, and domain events
2026-03-12 02:12:00 +08:00
vsxd
4920506643
feat(domain): add SkillMetadataParser, SkillPackageValidator, and VisibilityChecker with tests
2026-03-12 02:04:29 +08:00
vsxd
8644154157
feat(domain): add Skill domain entities, repositories, and JPA implementations
2026-03-12 02:00:34 +08:00
vsxd
ca36304df9
feat(storage): add object storage SPI with LocalFile and S3 implementations
2026-03-12 01:56:27 +08:00
vsxd
351829e1a9
feat(domain): add SlugValidator with comprehensive validation rules
2026-03-12 01:53:08 +08:00
vsxd
95c8c31561
feat(domain): complete Phase 1 entity fields for Namespace and NamespaceMember
2026-03-12 01:51:57 +08:00
vsxd
3ceee87a20
feat(db): add Phase 2 skill tables migration
2026-03-12 01:50:18 +08:00
vsxd
f8e9d8bfd9
docs: complete Phase 2 implementation plan (Chunk 1 backend + Chunk 2 frontend)
2026-03-12 01:48:46 +08:00
vsxd
56ccf3181b
docs: add Phase 3 implementation plan
...
- Complete Chunk 1 detailed tasks (database, entities, repositories, permissions, services)
- Add Chunk 2-5 task outlines
- Include TDD steps with test-first approach
- Add verification commands and expected outputs
- Total 5 chunks for progressive delivery
2026-03-12 01:28:06 +08:00
vsxd
3df70e0ff5
docs: fix Phase 3 spec issues from review round 2
...
- Add detailed Device Auth page UI design (section 7.3)
- Add Device Auth frontend files to file structure (section 7.6)
- Fix backend Controller to use REST API instead of Thymeleaf
- Update section numbering (7.3->7.4, 7.4->7.5, 7.5->7.6)
2026-03-12 01:20:06 +08:00
vsxd
7991a0fe2f
docs: fix Phase 3 spec issues from review round 1
...
- Add Phase 2 to Phase 3 data migration strategy
- Add detailed frontend Device Auth page implementation tasks in Chunk 3
2026-03-12 01:16:16 +08:00
vsxd
89c3bb0c21
docs: add Phase 3 design spec - review, CLI API, rating, compat layer
2026-03-12 01:13:39 +08:00
vsxd
029b2d849b
docs: fix Phase 2 spec issues from review round 2
...
- MAJOR: search stats via JOIN skill table instead of denormalization
- Move SkillSearchAppService from domain to app module (dependency direction)
- Fix Chunk 1 acceptance criteria numbering
- Add latestVersion field source clarification
2026-03-12 00:42:27 +08:00
vsxd
0b1607630f
fix(phase1): close auth and frontend acceptance gaps
2026-03-12 00:37:51 +08:00
vsxd
46bda26f9e
docs: fix Phase 2 spec issues from review round 1
...
- CRITICAL: add Namespace entity field补齐 note (type, avatar_url, updatedAt)
- MAJOR: add CLI publish interface deviation note in key decisions
- MAJOR: define search behavior when q is empty + homepage list API
- MAJOR: add SkillRepository.incrementDownloadCount method
- MAJOR: add SecurityConfig update strategy note
- MAJOR: add Web publish interface deviation note
- MINOR: add missing Repository methods for namespace/member
- MINOR: add awaitTerminationSeconds to async thread pool
- MINOR: add starCount to search response
- MINOR: add namespace_slug to skill_search_document
- Clarify bundle.zip repacking strategy
- Add entity alignment verification to Chunk 1 acceptance criteria
2026-03-12 00:37:17 +08:00
vsxd
8b0ffc28c4
docs: add Phase 2 design spec - namespace + skill core
...
- Database migration: 5 new tables (skill, skill_version, skill_file, skill_tag, skill_search_document)
- Object storage: SPI + LocalFile/S3 dual implementation
- Namespace management: CRUD + member management
- Skill publish: upload → validate → store → persist → publish
- Skill query/download/tags: visibility control, tag management
- Search: PostgreSQL full-text with tsvector + GIN
- Async events: Spring Events + dedicated thread pool
- Rate limiting: Redis sliding window + annotation-driven
- Frontend: modern product-style pages with shadcn/ui
- Testing strategy: unit/integration/API/E2E layers
2026-03-12 00:28:09 +08:00
vsxd
404692d671
Fix phase1 auth flow gaps
2026-03-12 00:26:33 +08:00
vsxd
e6956e79fc
feat(web): implement login page, dashboard, and API token management
...
- Login page with dynamic OAuth provider buttons from /api/v1/auth/providers
- Dashboard with AuthGuard, user info display, and token management
- TokenList component with create/delete operations via TanStack Query
- CreateTokenDialog with one-time token display and copy functionality
- API client with typed auth and token endpoints
- shadcn/ui components: Button, Card, Dialog, Table, Input, Label
- Tailwind CSS with CSS variables theming
- TanStack Router with Home, Login, Dashboard routes
- ESLint + TypeScript strict mode configuration
2026-03-12 00:13:50 +08:00
vsxd
ff5ecc90ac
Merge branch 'feature/project-init' into feature/phase1-foundation-auth
2026-03-12 00:03:22 +08:00
vsxd
4d3e2dea02
feat(web): add frontend scaffold with React 19 and TanStack Router
...
- Initialize Vite + React 19 + TypeScript project
- Add TanStack Router v1.95 with file-based routing
- Add TanStack Query v5.64 for data fetching
- Configure Tailwind CSS + shadcn/ui
- Implement auth features (useAuth hook, LoginButton, AuthGuard)
- Add openapi-fetch client for type-safe API calls
- Configure Nginx for production deployment
- Update Makefile with frontend commands
Implements Task 3 (Chunk 3) of Phase 1 plan.
2026-03-12 00:00:26 +08:00
vsxd
6380677fcf
feat(auth): complete Chunk 2 - security config, controllers, mock auth
...
Task 14: Spring Security config
- SecurityConfig with OAuth2 login, CSRF Cookie-to-Header, CLI API exempt
- ApiTokenAuthenticationFilter before UsernamePasswordAuthenticationFilter
- Spring Session Redis + OAuth2 client config in application.yml
Task 15: MockAuthFilter
- @Profile("local") filter reads X-Mock-User-Id header
- Creates PlatformPrincipal and sets SecurityContext for local dev
Task 16: AuthController + TokenController
- GET /api/v1/auth/me: current user info from session
- GET /api/v1/auth/providers: available OAuth providers
- POST/GET/DELETE /api/v1/tokens: create, list, revoke API tokens
Task 17: Enhanced GlobalExceptionHandler
- ErrorResponse with requestId and timestamp
- 400 for IllegalArgumentException, 500 catch-all with MDC requestId
2026-03-11 23:55:15 +08:00
vsxd
cfdb0985a9
Merge branch 'feature/phase1-foundation-auth' into feature/project-init
2026-03-11 23:49:16 +08:00
vsxd
5c4be0a26f
feat(auth): add OAuth2 login, access policy, API token, and RBAC
...
Task 10b: OAuth Claims + Access Policy
- OAuthClaims record, OAuthClaimsExtractor SPI, GitHubClaimsExtractor
- AccessPolicy SPI with Open/EmailDomain/ProviderAllowlist/SubjectWhitelist
- AccessPolicyFactory with config-driven strategy selection
- 8 unit tests for access policies
Task 11: Identity binding + OAuth2 user service
- PlatformPrincipal session-serializable record
- IdentityBindingService: bind-or-create on OAuth login
- CustomOAuth2UserService: policy evaluation + identity binding
- OAuth2LoginSuccessHandler: store principal in session
Task 12: API Token + RBAC
- ApiTokenService: SHA-256 hashed token create/validate/revoke
- ApiTokenAuthenticationFilter: Bearer token authentication
- RbacService: role/permission queries with SUPER_ADMIN bypass
2026-03-11 23:48:16 +08:00
vsxd
aa79a635b3
refactor: server project package renamed
2026-03-11 23:43:49 +08:00
vsxd
2991eb11e0
feat(domain/infra/auth): add domain entities, JPA repos, and auth entities
...
Task 8: Domain layer
- UserAccount entity with UserStatus lifecycle
- Namespace, NamespaceMember entities with NamespaceRole
- Repository interfaces for domain aggregates
Task 9: Infra layer
- UserAccountJpaRepository, NamespaceJpaRepository, NamespaceMemberJpaRepository
- Spring Data JPA implementations
Task 10: Auth entities and repositories
- IdentityBinding, ApiToken, Role, Permission, RolePermission, UserRoleBinding
- JPA repositories for all auth entities
- UserRoleBinding with eager-loaded Role for RBAC queries
2026-03-11 23:42:53 +08:00