Skip to content

[feature] project init merge#1

Merged
vsxd merged 39 commits into
mainfrom
feature/project-init
Mar 12, 2026
Merged

[feature] project init merge#1
vsxd merged 39 commits into
mainfrom
feature/project-init

Conversation

@vsxd

@vsxd vsxd commented Mar 12, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

vsxd added 30 commits March 11, 2026 20:24
- Parent POM with Spring Boot 3.2.3 and JDK 21
- 6 modules: app, domain, auth, search, storage, infra
- Module dependency directions per architecture design
- Maven Wrapper for reproducible builds
- Create SkillhubApplication main class
- Add application.yml with JPA, Flyway, graceful shutdown config
- Add application-local.yml for local development profile
- Add database and Redis dependencies to skillhub-app POM
- Migrate all Maven groupId and Java packages to com.iflytek.skillhub
- Add Docker Compose with PostgreSQL 16, Redis 7, MinIO
- Add Flyway V1 migration with Phase 1 core schema (user, auth, RBAC, namespace, audit)
- Add RequestIdFilter with MDC tracing and X-Request-Id header
- Add GlobalExceptionHandler and ErrorResponse DTO
- Add HealthController (/api/v1/health) and OpenAPI config
- Add basic SecurityConfig permitting public endpoints
- Add H2 test profile for CI-friendly testing without external services
- Add top-level Makefile for dev workflow orchestration
- All 3 tests passing
…ities

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
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
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
- 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.
- 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
- 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
- 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
- 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
- Add Phase 2 to Phase 3 data migration strategy
- Add detailed frontend Device Auth page implementation tasks in Chunk 3
- 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)
- 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
vsxd added 9 commits March 12, 2026 02:04
…r 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
@vsxd vsxd merged commit 77dc6e2 into main Mar 12, 2026
wowo-zZ pushed a commit that referenced this pull request Mar 13, 2026
* Initial plan

* docs: add Usage with Agent Platforms section to README

Co-authored-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>

* Fix heading format for AstronClaw section

Updated the heading for AstronClaw in the README.

Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>

---------

Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
wowo-zZ added a commit that referenced this pull request Mar 13, 2026
docs: add Usage with Agent Platforms section to README (#1)
yun-zhi-ztl pushed a commit that referenced this pull request Mar 15, 2026
* Initial plan

* docs: add Usage with Agent Platforms section to README

Co-authored-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>

* Fix heading format for AstronClaw section

Updated the heading for AstronClaw in the README.

Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>

---------

Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
yun-zhi-ztl pushed a commit that referenced this pull request Mar 15, 2026
docs: add Usage with Agent Platforms section to README (#1)
wuchunfu pushed a commit to itsharex/skillhub that referenced this pull request Apr 1, 2026
* Initial plan

* docs: add Usage with Agent Platforms section to README

Co-authored-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>

* Fix heading format for AstronClaw section

Updated the heading for AstronClaw in the README.

Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>

---------

Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
Co-authored-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
wuchunfu pushed a commit to itsharex/skillhub that referenced this pull request Apr 1, 2026
docs: add Usage with Agent Platforms section to README (iflytek#1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant