Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1203 commits
Select commit Hold shift + click to select a range
65dea67
Add test problems and user-specific submission data
DavidHLP Jun 1, 2026
ca41fe2
fix: Map forum test data to real users table IDs
DavidHLP Jun 1, 2026
c739d81
feat: Seed solution comments test data
DavidHLP Jun 1, 2026
0aec08a
fix: resolve i18n key path mismatches and add missing translations
DavidHLP Jun 1, 2026
1eb207a
refactor: use i18n utils for date and number formatting
DavidHLP Jun 1, 2026
4eeb97e
feat(i18n): add missing translations for management frontend
DavidHLP Jun 1, 2026
828a27d
ci: add i18n checks and enforce dynamic key fallbacks
DavidHLP Jun 1, 2026
895ff84
Merge branch 'fix/i18n-phase1-key-path-fixes' into main
DavidHLP Jun 1, 2026
b748627
fix: handle null dates and improve role i18n in management
DavidHLP Jun 1, 2026
9724849
feat: i18n user role on management dashboard
DavidHLP Jun 1, 2026
b691254
feat: unify badge system with SemanticBadge component
DavidHLP Jun 1, 2026
06d9b01
refactor: consolidate badge color maps into shared module
DavidHLP Jun 1, 2026
802233b
chore: use terminal CSS vars and shared color map
DavidHLP Jun 1, 2026
8aff183
fix: Add lowercase fallbacks to difficulty color map
DavidHLP Jun 1, 2026
fcb3bc3
refactor: unify SemanticBadge into shared/badge-config package
DavidHLP Jun 2, 2026
8471073
feat: i18n visibility badge labels in problem lists
DavidHLP Jun 2, 2026
3f17da6
chore: Add LICENSE and README, localize seed data
DavidHLP Jun 2, 2026
be4193d
chore: update PM2 config and project setup files
DavidHLP Jun 2, 2026
4fc3bd8
fix: align Flyway migration scripts with actual database schema
DavidHLP Jun 2, 2026
4de2b7e
fix: align Flyway seed data column names with actual table schema
DavidHLP Jun 2, 2026
6bfd2d5
chore: unify flyway migrations and add cursor rules
DavidHLP Jun 2, 2026
4007427
feat: add landing page with i18n and test data seeding
DavidHLP Jun 3, 2026
70c90f2
chore: trim test problems to 6 (2 per difficulty)
DavidHLP Jun 3, 2026
9c9e4e2
refactor: split insert test data into business modules
DavidHLP Jun 3, 2026
99c5d6a
chore: enrich problem seed data and tag-based lists
DavidHLP Jun 3, 2026
0323492
feat: add chart UI library
DavidHLP Jun 3, 2026
d99d95e
refactor: refine console data-table and problem components
DavidHLP Jun 3, 2026
5b25d17
chore: add ulticode-init-db PM2 service for flyway migrations
DavidHLP Jun 3, 2026
c06d011
chore: enrich solutions seed data and trim problem lists duplication
DavidHLP Jun 3, 2026
8919db8
chore: bump auth-core axios to 1.16.1 and move to dependencies
DavidHLP Jun 3, 2026
8fc8e18
chore: seed submissions test data covering all users, problems and st…
DavidHLP Jun 3, 2026
6fe1528
refactor: migrate problem layout headers to design tokens and add sil…
DavidHLP Jun 3, 2026
37c3f76
fix: unify problem example fields
DavidHLP Jun 3, 2026
4c5e508
chore: flatten agent skills to {skill_name}/SKILL.md layout
DavidHLP Jun 3, 2026
44a0746
refactor: convert language switcher to dropdown submenu
DavidHLP Jun 3, 2026
23c744e
chore: seed 12 forum posts (1 per user) with rich markdown body
DavidHLP Jun 3, 2026
86617a0
refactor: migrate forum views to silver palette and terminal-card tokens
DavidHLP Jun 3, 2026
2769613
refactor: extend silver palette migration and seed nested comment data
DavidHLP Jun 3, 2026
18fcdb6
refactor: flatten management UI to zero-radius terminal-card tokens
DavidHLP Jun 3, 2026
c249c56
fix: constrain management views and theme scrollbars
DavidHLP Jun 3, 2026
9e96cca
chore: remove one-off fix-views-width scripts
DavidHLP Jun 3, 2026
f5ffe57
fix: align management view header and footer horizontal padding
DavidHLP Jun 3, 2026
79cae50
refactor: align management view headers to terminal-card tokens
DavidHLP Jun 3, 2026
48ef97b
refactor: unify DataTable card container and layout spacing tokens
DavidHLP Jun 3, 2026
e95fbd9
chore: Allow .claude config files in gitignore
DavidHLP Jun 4, 2026
6ad47aa
chore: reorganize .claude/rules/ to use Claude Code standard frontmatter
DavidHLP Jun 4, 2026
5e5cf6f
chore: clean up PRP docs and add Claude skills
DavidHLP Jun 4, 2026
e27470b
fix: harden comment fallbacks, remove hardcoded secrets from ecosyste…
DavidHLP Jun 4, 2026
889d8cf
feat: redesign sidebar nav with category-tinted icons, left-border ac…
DavidHLP Jun 4, 2026
ad6373a
chore: add Flyway seed migration for contest test data
DavidHLP Jun 4, 2026
028f1e7
chore: distill skills into cross-cutting rules and add runtime diagno…
DavidHLP Jun 4, 2026
c69df05
chore: Add Claude rules and skills for project conventions
DavidHLP Jun 4, 2026
97184c2
fix: normalize submission status for i18n and fix table layout
DavidHLP Jun 4, 2026
6645b80
feat: add markdown rendering and inline content support for comments
DavidHLP Jun 4, 2026
54d8e8e
fix: update moderation column labels and dashboard styling
DavidHLP Jun 4, 2026
5cd2cc4
fix: update problem columns and add difficulty filter support
DavidHLP Jun 4, 2026
0a106dc
refactor: eagerly load all i18n locales instead of lazy loading
DavidHLP Jun 4, 2026
812edb3
test: update error test translations to match new i18n key structure
DavidHLP Jun 4, 2026
897630e
chore: remove .omc state files and docker-wrapper script
DavidHLP Jun 4, 2026
7b4bdf4
feat: add contest slug resolution and enhance ContestProblemVO with p…
DavidHLP Jun 4, 2026
d6e223f
feat: update contest frontend with enhanced API types, i18n, and comp…
DavidHLP Jun 4, 2026
78f5cf5
refactor: redesign landing page with enhanced UI and update i18n tran…
DavidHLP Jun 4, 2026
1e82459
refactor: reformat and enhance console frontend components, API, type…
DavidHLP Jun 4, 2026
88532ea
feat: add Flyway seed migration for global rankings test data
DavidHLP Jun 4, 2026
dda163f
refactor: enhance auth views and contest registration with improved U…
DavidHLP Jun 4, 2026
ac4ee45
chore: add project-specific skills to .agents/skills for Codex compat…
DavidHLP Jun 4, 2026
7f13379
feat: enhance submission module DTO, mapper, and service with improve…
DavidHLP Jun 4, 2026
c7473b9
refactor: enhance console frontend components, API types, i18n, and U…
DavidHLP Jun 4, 2026
09bf8b0
chore: remove obsolete setup.sh
DavidHLP Jun 4, 2026
48c6316
Add AGENTS.md with Codex CLI guidance
DavidHLP Jun 4, 2026
3143952
refactor: redesign console auth and landing UI with terminal/neobruta…
DavidHLP Jun 4, 2026
30d6264
refactor: redesign contest components with neobrutalist style
DavidHLP Jun 4, 2026
3f2ed22
chore: update project config with CLAUDE.md, RTK rules and agents config
DavidHLP Jun 5, 2026
c5f8e7b
refactor: update global styles and UI components with neobrutalist de…
DavidHLP Jun 5, 2026
82f3f51
refactor: redesign contest components with neobrutalist style
DavidHLP Jun 5, 2026
02610a8
refactor: redesign problem view components with neobrutalist style
DavidHLP Jun 5, 2026
6784138
feat: add contest problem submissions API endpoint
DavidHLP Jun 5, 2026
b7806a0
feat: add forum comment count batching and markdown rendering in comm…
DavidHLP Jun 5, 2026
558a787
refactor: use Map return type for tag stats query and optimize user s…
DavidHLP Jun 5, 2026
8e7ca26
refactor: redesign UI components with neobrutalist style and update m…
DavidHLP Jun 5, 2026
691ec7e
feat: add contest detail i18n keys for en-US and zh-CN
DavidHLP Jun 5, 2026
66dc09c
test: add unit tests for forum, user service and comment tree builder
DavidHLP Jun 5, 2026
870dd3d
feat: add shared design system style tokens
DavidHLP Jun 5, 2026
1f5d44f
chore: add Arthas MCP server integration with PM2 and project config
DavidHLP Jun 5, 2026
1a130ed
feat: add contest problem submission endpoint and NONE tie-breaker enum
DavidHLP Jun 5, 2026
709349b
feat: sync console contest types with backend NONE tie-breaker and nu…
DavidHLP Jun 5, 2026
5d78a6c
refactor: redesign management layout, analytics, and dashboard compon…
DavidHLP Jun 5, 2026
97f373b
refactor: redesign management views with neobrutalist style and enhan…
DavidHLP Jun 5, 2026
c961b6b
feat: add i18n keys for management stats, nav grouping, and dashboard…
DavidHLP Jun 5, 2026
4e36cf9
chore: add gitleaks config, security scripts, and security review docs
DavidHLP Jun 6, 2026
c464e36
chore: refactor env config, add docker-compose dev overlay, and remov…
DavidHLP Jun 6, 2026
b1cbf8f
ci: enhance workflows with gitleaks scan, migration validation, and d…
DavidHLP Jun 6, 2026
cf10aa7
fix: secure refresh tokens, add @RequireRole annotations, and improve…
DavidHLP Jun 6, 2026
c77fe90
feat: add admin bootstrap data initializer and update backend Dockerfile
DavidHLP Jun 6, 2026
4d410e5
feat: add secure refresh tokens migration and remove legacy SQL dump
DavidHLP Jun 6, 2026
ce3a0e3
test: update auth, JWT, websocket, and i18n tests for security changes
DavidHLP Jun 6, 2026
6a43d43
fix: replace markdown-it-katex with @mdit/plugin-katex, sanitize DOMP…
DavidHLP Jun 6, 2026
e7df2d5
fix: replace markdown-it-katex with @mdit/plugin-katex and upgrade DO…
DavidHLP Jun 6, 2026
765831f
test: update shared auth CSRF interceptor test formatting
DavidHLP Jun 6, 2026
016d013
docs: rewrite AGENTS.md, update CLAUDE.md/README with dev scripts, an…
DavidHLP Jun 6, 2026
2da9a31
chore: update skills, add dev scripts, and refactor PM2 ecosystem config
DavidHLP Jun 6, 2026
d9a754e
feat: add dev seed user bootstrap, remove legacy websocket intercepto…
DavidHLP Jun 6, 2026
efb6d68
feat(management): add collapsible submenu support to sidebar nav
DavidHLP Jun 6, 2026
d380335
refactor(management): restyle problem editor forms to terminal aesthetic
DavidHLP Jun 6, 2026
bf8cb08
docs(codemaps): refresh architecture, backend, data, deps, frontend, …
DavidHLP Jun 6, 2026
1a4d656
docs: refresh CLAUDE.md and consolidate security docs into RUNBOOK
DavidHLP Jun 6, 2026
bbe6745
refactor(management): polish sidebar submenu dropdown with terminal a…
DavidHLP Jun 6, 2026
1d2412b
feat(shared): add @ulticode/theme shared package
DavidHLP Jun 6, 2026
b36c075
feat(frontend): wire shared theme into console and management
DavidHLP Jun 6, 2026
fe6d22a
feat(frontend): add theme switcher to nav, auth pages, and settings
DavidHLP Jun 6, 2026
b65f3fe
refactor(auth): consolidate tokens, use useId, harden OAuth in PROD
DavidHLP Jun 6, 2026
cacfb2c
chore(frontend): add FOUC bootstrap, sync guard, vitest excludes
DavidHLP Jun 6, 2026
277bc25
docs: document theme bootstrap invariant
DavidHLP Jun 6, 2026
458857c
chore: add arthas-boot.jar for MCP runtime diagnostics
DavidHLP Jun 7, 2026
d6f8e9b
feat: align auth header bar and theme toggle with terminal design lan…
DavidHLP Jun 7, 2026
3e3dd0a
feat: align editor toolbar and nav styles with terminal design langua…
DavidHLP Jun 7, 2026
c71158f
fix: repair admin analytics 5 defect categories
Jun 7, 2026
527cf71
Merge branch 'fix/admin-analytics-api-defects': repair admin analytic…
DavidHLP Jun 7, 2026
5d07e9d
chore: unify arthas under PM2 and allow public sample run
DavidHLP Jun 7, 2026
c824f72
fix: repair 5 moderation api defects from audit report
DavidHLP Jun 7, 2026
a0771cb
Merge branch 'fix/moderation-api-fixes': repair 5 moderation api defe…
DavidHLP Jun 7, 2026
168c2e2
feat: add submission perf stats and fix judge case source
DavidHLP Jun 7, 2026
1e0e069
fix: address review findings for perf stats and judge worker
DavidHLP Jun 7, 2026
a63c2b0
refactor(console): use semantic color tokens
DavidHLP Jun 7, 2026
2882bc4
feat(console): add notification i18n composable and submissions detai…
DavidHLP Jun 8, 2026
96d8536
refactor(console): simplify notification i18n composable and add tests
DavidHLP Jun 8, 2026
436fff4
feat(console): handle 401/403/404 errors in submissions detail view
DavidHLP Jun 8, 2026
7dcfb60
fix: align audit logs performer_id and export format
DavidHLP Jun 8, 2026
68ee1a7
refactor: extract TraceIdUtil and use ErrorCode.BAD_REQUEST
DavidHLP Jun 8, 2026
e1d9f3b
chore: include audit curl test report and console markdown fixes
DavidHLP Jun 8, 2026
98d3c98
fix(admin): make admin-comments mutators persist all target fields
DavidHLP Jun 8, 2026
eac7435
Merge branch 'fix/admin-comments-mutator' into main
DavidHLP Jun 8, 2026
3de0399
fix(admin): contests mutator fixes (soft-delete + state guard + SUPER…
DavidHLP Jun 8, 2026
0abcda3
Merge fix/admin-contests-mutator into main
DavidHLP Jun 8, 2026
776d7c2
fix(admin/dashboard): accept forum_posts metric; add @Min(1) days and…
DavidHLP Jun 8, 2026
96bb6f7
refactor(admin/dashboard): address code review findings (M1, L1, L2)
DavidHLP Jun 8, 2026
65f0d44
Merge fix/dashboard-api-issues into main
DavidHLP Jun 8, 2026
46e4cb0
fix(admin/forum): DELETE 接口 100% 失败根因修复 (JSR-310 + @TableLogic)
DavidHLP Jun 8, 2026
d517e6c
fix(monitoring): M1-M3+L1-L2 修复 + review fixes H1/M1-M4/L1-L11
DavidHLP Jun 8, 2026
7552137
fix(notifications): batchInsert explicit JacksonTypeHandler for Map m…
DavidHLP Jun 8, 2026
63c6138
docs(notifications): add API test report + PRP implementation report
DavidHLP Jun 8, 2026
ca9acb1
Merge fix/notification-batchinsert-typehandler2 into main: fix POST /…
DavidHLP Jun 8, 2026
03ed01a
fix(admin/problem-lists): 修复 GET /admin/problem-lists/{id} 对私有题单返回 40…
DavidHLP Jun 8, 2026
c8890af
refactor(admin/problem-lists): 修复代码审查发现的问题
DavidHLP Jun 8, 2026
3ca9aa7
fix(admin/problems): align mapper SQL column flag_reason to match entity
DavidHLP Jun 9, 2026
e63c8ef
chore(exception): GlobalExceptionHandler traceId + DataIntegrityViola…
DavidHLP Jun 9, 2026
0402871
fix(problem): createInitialVersion duplicate check + new-detail defau…
DavidHLP Jun 9, 2026
00943b6
Merge fix/admin-problems-api into main: 修复 /admin/problems 5 个问题
DavidHLP Jun 9, 2026
9f550c7
fix(contest): use correct error code and refresh updatedAt on PUT
DavidHLP Jun 9, 2026
8d2726b
fix(admin/settings): persist settings + maintenance single-source + 4…
DavidHLP Jun 9, 2026
d97abf5
feat: Add comprehensive agent skills and Serena project configuration
DavidHLP Jun 9, 2026
a1aba05
feat: Switch Arthas MCP lifecycle from PM2 to Claude Code hooks
DavidHLP Jun 9, 2026
8edc086
feat: add Claude Code statusline with Solarized Project Sync colors
DavidHLP Jun 9, 2026
35bea2b
fix(admin-solutions): repair 9 contract/security bugs in /admin/solut…
DavidHLP Jun 9, 2026
0462aa3
feat: Add Java to Serena language configuration
DavidHLP Jun 9, 2026
6e8312a
fix(arthas-mcp): make wrapper self-healing on target JVM restart
DavidHLP Jun 9, 2026
59b64c0
fix(admin-submissions): unify status enum, add @Valid, expose rejudge…
DavidHLP Jun 9, 2026
b99a99e
fix(springdoc): expose OpenAPI at standard /v3/api-docs path
DavidHLP Jun 9, 2026
7bb2b46
fix(management-submissions): sync field name, languages shape, rejudg…
DavidHLP Jun 9, 2026
010dd1a
test(admin-submissions): cover 6 endpoints, validation, rejudge metadata
DavidHLP Jun 9, 2026
bfb5570
docs: sync inventory + add Fixes Applied to test report
DavidHLP Jun 9, 2026
3e25488
style(management): apply prettier formatting to admin/submissions.ts
DavidHLP Jun 9, 2026
6b64d78
fix(admin-tags):400 on missing/invalid type, honor PROBLEM sortBy, re…
DavidHLP Jun 9, 2026
598a09b
Merge fix/admin-tags-bugfixes:400 on missing/invalid type, honor PROB…
DavidHLP Jun 9, 2026
47f631c
docs: Add admin test-cases API test plan with 6 identified defects
DavidHLP Jun 9, 2026
ec06500
chore: add Serena IDE configuration and admin problems API test report
DavidHLP Jun 9, 2026
008d527
feat(arthas): add PM2 and CLI launchers with hook/CLI/PM2 mutex
DavidHLP Jun 9, 2026
dfa4cc5
fix(admin-test-cases): bootstrap test_cases table and harden admin en…
DavidHLP Jun 10, 2026
b03b535
feat(admin): add user permission grant/revoke endpoints with security…
DavidHLP Jun 10, 2026
a2399ef
docs: sync codemaps and prune obsolete api test reports
DavidHLP Jun 10, 2026
e00393b
docs: align CSRF/OpenAPI docs with verified behavior and remove empty…
DavidHLP Jun 10, 2026
9cf5e18
fix(backend): rebuild to restore Lombok-generated methods
Jun 10, 2026
80cd482
fix(console): rename updateUserProfile to updateMyProfile and target …
Jun 10, 2026
880a9df
refactor(console): consolidate userStatsApi into api/user.ts
Jun 10, 2026
713b5a7
fix(console): make UserProfile.bio and email optional to match UserVO
Jun 10, 2026
9382fb0
docs: mark 5 API test report defects as resolved + add implementation…
Jun 10, 2026
ced07d1
test(console): add coverage for user API + userStats store
Jun 10, 2026
b32b6c7
fix(console): send only editable fields when saving profile (M3)
Jun 10, 2026
c281650
refactor(console): code quality cleanups (L1 + L2 + L3)
Jun 10, 2026
2346a03
chore(console): fix 19 pre-existing lint errors (M5)
Jun 10, 2026
aea045c
fix(problem): 8 api fixes (D-08..D-14) + viewer reaction + 6 review f…
DavidHLP Jun 10, 2026
65739e2
fix(submission): align v2 schema, split run mapper, add 26 tests
DavidHLP Jun 10, 2026
6fe2083
docs: Add Headroom learned patterns to CLAUDE.md
DavidHLP Jun 10, 2026
970b977
fix(contest): align virtual session DTO + add check-in + fix problemI…
DavidHLP Jun 11, 2026
589a532
Merge branch 'fix/contest-api-contracts'
DavidHLP Jun 11, 2026
c41af94
docs(CLAUDE.md): add Worktree default behaviour rule
DavidHLP Jun 11, 2026
a762b76
fix(arthas-mcp): switch to STATELESS to unblock blocking tools
DavidHLP Jun 11, 2026
bef5f05
fix(bookmark): resolve 5 bookmark API defects (T08/T10 500 errors + s…
DavidHLP Jun 11, 2026
6c2d879
Merge branch 'worktree-bookmark-api-defect-fix'
DavidHLP Jun 11, 2026
5f26265
fix(forum): resolve OFFSET -20 500 and editedAt=null field loss
DavidHLP Jun 11, 2026
18296c3
fix(problemlist): align fork/duplicate/audit/N+1 contracts (P1+P2+P3)
DavidHLP Jun 11, 2026
da2bfc6
Merge branch 'fix/problem-list-api-issues'
DavidHLP Jun 11, 2026
cbb77d0
refactor(forum): apply review findings — meta-annotations, comment, g…
DavidHLP Jun 11, 2026
693ce1e
Merge branch 'fix/forum-api-bugs-2026-06-11'
DavidHLP Jun 11, 2026
0ec5a20
fix(notification): resolve P0 bugs (system column, soft-delete, dispa…
DavidHLP Jun 11, 2026
047c43d
Merge branch 'fix/notification-api-issues'
DavidHLP Jun 11, 2026
5c3f558
fix(subscription): align FE with /check-premium + {id}/cancel (P0-2, …
DavidHLP Jun 11, 2026
630db96
Merge branch 'fix/subscription-api'
DavidHLP Jun 11, 2026
9430523
docs: Add Solution API test plan covering 11 frontend-to-backend
DavidHLP Jun 11, 2026
5753a49
fix(solution): 3 BUGs + 3 OBS from solution-api test plan
DavidHLP Jun 11, 2026
109776e
Merge fix/solution-api-issues: 3 BUGs + 3 OBS
DavidHLP Jun 11, 2026
91277f0
docs(test): add edge-operations API test report 2026-06-11
DavidHLP Jun 11, 2026
16608ef
fix(edge-operations): align FE/BE enums, sanitize Jackson errors, exp…
DavidHLP Jun 11, 2026
524f840
Merge branch 'fix/edge-operations-api-fixes'
DavidHLP Jun 11, 2026
6fe6aa8
fix(follow): align FollowStatusDTO field with frontend contract
Jun 11, 2026
96ae318
fix(follow): validate target existence + idempotent unfollow
Jun 11, 2026
0aff8ab
Merge fix/follow-api-issues: 3 follow API issues + LOW fixes
Jun 11, 2026
3eb467d
feat: add problem note backend (per docs/interaction-note-api-test-re…
Jun 11, 2026
5416d13
Merge feature/problem-note-backend: 9 files, 7/7 unit tests, 10/10 E2…
Jun 11, 2026
1bc766a
fix(achievement): escape MySQL reserved word `key`, add BadSqlGrammar…
Jun 11, 2026
773d6e6
fix(solution): add /solution-topics endpoint + align /search enum case
Jun 11, 2026
c91adcf
Merge branch 'fix/achievement-api': 6 fixes + 2 new bugs from IT vali…
Jun 11, 2026
d4f13f6
Merge fix/search-topic-api: /solution-topics endpoint + /search enum …
Jun 11, 2026
de657e4
chore: Remove outdated API test reports and documentation
Jun 11, 2026
01982d5
refactor: extract shared chart options and add unmount cleanup
Jun 11, 2026
e4285a8
chore: add component tests, runbook, and personal view updates
Jun 11, 2026
2d377d6
feat: add 401 auto-refresh coordinator for console
Jun 11, 2026
05eaaa8
Merge feat/auto-401-refresh: 401 auto-refresh coordinator
Jun 11, 2026
cd2ab8b
feat: enhance problem sidebar with weekly streak, daily problem, and …
Jun 11, 2026
8c457fb
feat(console): add PastContests theme-aware pagination test
Jun 11, 2026
3edcb0d
feat: wire up 401 auto-refresh in console and management request.ts
Jun 12, 2026
0aaeb9e
Merge fix/auto-401-refresh-wiring: wire 401 auto-refresh in both fron…
Jun 12, 2026
a148209
feat(management): add tests for dashboard StatCards and Timeline comp…
Jun 12, 2026
948cb8f
test: add unit tests for Input, contests columns, useProblemColumns
Jun 12, 2026
83ff19b
feat(management): refactor AreaChart filter and add component tests
Jun 12, 2026
cf6f4a4
feat(management): refactor analytics view and add subcomponent tests
Jun 12, 2026
baf17c0
refactor: extract analytics datetime helpers into composable with tests
Jun 12, 2026
771f173
chore(management): remove billing page
Jun 12, 2026
d45431a
Merge branch 'chore/remove-billing': remove admin /billing page
Jun 12, 2026
6f8f36b
fix(submission): distinguish sandbox fork failures from user-code run…
Jun 12, 2026
7b5cac5
Merge fix/oj-sandbox-cannot-fork: sandbox fork failure verdict classi…
Jun 12, 2026
daab179
test(management): remove duplicate toasts from account API layer
Jun 12, 2026
e8dfe7e
feat(notifications): localize notification type and category labels
Jun 12, 2026
6bb87b6
fix(sandbox): work around Docker 29 libseccomp bug in clone rules
Jun 12, 2026
b5f1e49
test(sandbox): add SandboxForkE2EIT regression guard
Jun 12, 2026
f27a432
fix: enable Java sandbox submissions with ListNode helper classes
Jun 12, 2026
61c7ab0
feat(sandbox): add D-form harness skeleton for Java/Python/C/C++ (Pha…
Jun 12, 2026
519e8bc
fix(sandbox): harden D-form harness against Codex CR findings (Phase …
Jun 12, 2026
1d7110b
feat(sandbox): bake D-form harness into ulticode-sandbox image (Phase 2)
Jun 13, 2026
681917e
fix(sandbox): address Codex adversarial review findings (Phase 2.5)
Jun 13, 2026
e675172
feat(sandbox): wire D-form dispatcher in SandboxService (Phase 3)
Jun 13, 2026
4049d4b
fix(sandbox): address Codex adversarial review findings (Phase 3.5)
Jun 13, 2026
9739c01
feat(shared): add @ulticode/sandbox-types shared DTO package (Phase 4)
Jun 13, 2026
49ef86f
fix(shared+backend): address Codex adversarial review findings (Phase…
Jun 13, 2026
095a01f
feat(sandbox): default D-form dispatch to true (Phase 5 rollout)
Jun 13, 2026
8c13ec6
feat(sandbox): delete legacy Form A wrapper code (Phase 5b)
Jun 13, 2026
fd16c22
fix(sandbox): harden D-form harness against Phase 5 CR findings
Jun 13, 2026
c88dcb5
docs: Update CLAUDE.md with headroom learned patterns for PM2, Arthas,
Jun 13, 2026
ee28ee5
fix: align problem_notes migration filename with flyway version format
DavidHLP Jun 13, 2026
87e4d06
chore(deps): bump the console-production group across 1 directory wit…
dependabot[bot] Jun 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 32 additions & 0 deletions .agents/rules/antigravity-rtk-rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# RTK - Rust Token Killer (Google Antigravity)

**Usage**: Token-optimized CLI proxy for shell commands.

## Rule

Always prefix shell commands with `rtk` to minimize token consumption.

Examples:

```bash
rtk git status
rtk cargo test
rtk ls src/
rtk grep "pattern" src/
rtk find "*.rs" .
rtk docker ps
rtk gh pr list
```

## Meta Commands

```bash
rtk gain # Show token savings
rtk gain --history # Command history with savings
rtk discover # Find missed RTK opportunities
rtk proxy <cmd> # Run raw (no filtering, for debugging)
```

## Why

RTK filters and compresses command output before it reaches the LLM context, saving 60-90% tokens on common operations. Always use `rtk <cmd>` instead of raw commands.
115 changes: 115 additions & 0 deletions .agents/skills/arthas-mcp-pm2-integration/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# Arthas MCP Server Integration with PM2

**Extracted:** 2026-06-05
**Context:** Adding Arthas MCP (Model Context Protocol) server to a Spring Boot project managed by PM2, so Codex can call Arthas diagnostic tools directly.

## Problem

Integrating Arthas MCP into PM2-managed projects has multiple pitfalls:
- arthas-boot.jar CLI parameter parsing errors
- Process lifecycle mismatch (agent runs in target JVM, not the boot process)
- Health check false negatives (Spring Boot root path returns 302/401)
- Path resolution issues in PM2-managed scripts

## Solution

### 1. arthas-boot.jar parameter gotchas

| Parameter | Issue | Correct approach |
|-----------|-------|-----------------|
| `--properties-file` | **NOT supported** by arthas-boot.jar (it parses this as PID, causing `NumberFormatException`) | Put config in `~/.arthas/arthas.properties` — Arthas auto-loads it |
| `--telnet-port -1` | **Causes `port out of range`** exception | Omit the flag entirely; telnet is enabled by default on 3658 |
| `--http-port 8563` | ✅ Works — enables HTTP/MCP endpoint | This is the MCP port |
| `--attach-only` | ✅ Works — attaches agent then exits boot process | PM2 must use `autorestart: false` |

### 2. Startup script pattern

```bash
#!/usr/bin/env bash
set -euo pipefail

# Use CLAUDE_PROJECT_DIR, NOT script's own directory
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "$0")/.." && pwd)}"
ARTHAS_JAR="${PROJECT_DIR}/tools/arthas-boot.jar"
ARTHAS_PORT=8563
SPRING_BOOT_PORT=9001
MAX_WAIT=120

# Install arthas.properties to ~/.arthas/ (auto-loaded by Arthas)
ARTHAS_HOME="${HOME}/.arthas"
mkdir -p "$ARTHAS_HOME"
if [ ! -f "${ARTHAS_HOME}/arthas.properties" ]; then
cat > "${ARTHAS_HOME}/arthas.properties" << 'EOF'
arthas.mcpEndpoint=/mcp
arthas.mcpProtocol=STREAMABLE
EOF
fi

# Wait for Spring Boot using PORT CHECK, NOT curl
# (curl fails because root path may return 302/401)
elapsed=0
while [ $elapsed -lt $MAX_WAIT ]; do
if lsof -ti :$SPRING_BOOT_PORT > /dev/null 2>&1; then
break
fi
sleep 2
elapsed=$((elapsed + 2))
done

# Check if already attached (MCP port already listening)
if lsof -ti :$ARTHAS_PORT > /dev/null 2>&1; then
exit 0
fi

APP_PID=$(lsof -ti :$SPRING_BOOT_PORT | head -1)

# --attach-only: boot process exits, but MCP agent runs in target JVM
java -jar "$ARTHAS_JAR" \
--attach-only \
--http-port $ARTHAS_PORT \
"$APP_PID"
```

### 3. PM2 ecosystem config entry

```javascript
{
name: 'ulticode-arthas',
script: './scripts/start-arthas.sh',
interpreter: 'bash',
autorestart: false, // CRITICAL: agent lives in target JVM, not boot process
kill_timeout: 10000,
...logConfig('arthas'),
env: { ...envFromFile }
}
```

### 4. `.mcp.json` for Codex

```json
{
"mcpServers": {
"arthas-mcp": {
"type": "http",
"url": "http://localhost:8563/mcp"
}
}
}
```

Use `"type": "http"` (Codex official). `"streamableHttp"` is the MCP spec name and accepted as alias, but `"http"` is canonical.

### 5. arthas.properties content

```properties
arthas.mcpEndpoint=/mcp
arthas.mcpProtocol=STREAMABLE
```

## When to Use

- Adding Arthas MCP server to any Spring Boot + PM2 project
- When `java -jar arthas-boot.jar` throws `NumberFormatException: For input string: "--properties-file"`
- When `--telnet-port -1` throws `port out of range`
- When PM2 restarts Arthas process in a loop (agent lifecycle mismatch)
- When Spring Boot health check `curl -sf` returns non-200
49 changes: 49 additions & 0 deletions .agents/skills/caveman/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: caveman
description: >
Ultra-compressed communication mode. Cuts token usage ~75% by dropping
filler, articles, and pleasantries while keeping full technical accuracy.
Use when user says "caveman mode", "talk like caveman", "use caveman",
"less tokens", "be brief", or invokes /caveman.
---

Respond terse like smart caveman. All technical substance stay. Only fluff die.

## Persistence

ACTIVE EVERY RESPONSE once triggered. No revert after many turns. No filler drift. Still active if unsure. Off only when user says "stop caveman" or "normal mode".

## Rules

Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Abbreviate common terms (DB/auth/config/req/res/fn/impl). Strip conjunctions. Use arrows for causality (X -> Y). One word when one word enough.

Technical terms stay exact. Code blocks unchanged. Errors quoted exact.

Pattern: `[thing] [action] [reason]. [next step].`

Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"

### Examples

**"Why React component re-render?"**

> Inline obj prop -> new ref -> re-render. `useMemo`.

**"Explain database connection pooling."**

> Pool = reuse DB conn. Skip handshake -> fast under load.

## Auto-Clarity Exception

Drop caveman temporarily for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.

Example -- destructive op:

> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
>
> ```sql
> DROP TABLE users;
> ```
>
> Caveman resume. Verify backup exist first.
38 changes: 38 additions & 0 deletions .agents/skills/cpu-high/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: arthas-cpu-high
description: Diagnose JVM / application CPU spikes via thread identification and code path analysis using Arthas
---

# JVM CPU 飙高排查指南(Arthas)

适用场景:机器 CPU 飙高、应用响应变慢、负载异常升高。

原则:先用低风险工具定位「哪个线程在忙」,再逐步缩小到「哪个方法/代码路径」。

## 1) 先确认当前 JVM 整体状态(低风险)

- 使用 `dashboard` 查看 CPU/线程/GC 概况(建议设置有限次数):
- 关注:CPU、线程数、GC 次数/耗时是否异常。

## 2) 定位最忙线程(关键步骤)

- 使用 `thread` 找出最忙的前 N 个线程并打印堆栈:
- 例如:`topN=3` 或 `topN=5`
- 记录每个热点线程的 `threadId` 与堆栈关键方法名。

判断方向:
- 如果堆栈显示在 `java.util.regex`、JSON 序列化、日志格式化等:可能是 CPU 密集计算。
- 如果堆栈显示在锁竞争:继续看是否有大量 `BLOCKED`,并考虑用 `thread(blocking=true)` 找出阻塞源头线程。

## 3) 进一步确认热点方法的调用路径(按需、有限制)

当热点线程堆栈指向某个「可疑方法」时:
- 优先使用 `stack` / `trace` 针对该方法做路径确认(避免宽泛匹配)。
- 如果需要观测入参/返回值,再考虑 `watch` 或 `tt`,并设置合理的执行次数与超时,避免对线上造成压力。

## 4) 输出诊断结论

报告至少包含:
- 现象与证据:dashboard 摘要 + topN 线程堆栈关键片段
- 初步结论:CPU 主要消耗在什么类型的逻辑(计算/锁/GC/日志等)
- 下一步:建议进一步 trace/watch 的目标方法(给出类名+方法名的精确范围),或建议用户提供主包名/关键接口信息以继续收敛
46 changes: 46 additions & 0 deletions .agents/skills/cross-stack-dto-granularity-alignment/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
name: cross-stack-dto-granularity-alignment
description: Systematic method to analyze and align DTO types, API endpoints, and enums between frontend and backend codebases. Trigger when debugging type mismatches, before major releases, or when onboarding to a full-stack module.
---

# Cross-Stack DTO Granularity Alignment

**Context:** When frontend and backend evolve independently, DTO fields, enum values, and API endpoints drift out of sync. This pattern provides a systematic method to audit and document alignment gaps.

## Problem
Frontend TypeScript types and backend Java DTOs drift over time: missing fields, mismatched enum values, phantom types (frontend types with no backend endpoint), and unused backend endpoints. Manual spot-checking misses these gaps.

## Solution

### Step 1: Parallel Code Exploration
Launch parallel agents to explore backend and frontend independently:
- **Agent 1 (Backend):** Find all controllers, DTOs (request + response), enums, and service methods. List every API endpoint with HTTP method, path, parameters, and return type.
- **Agent 2 (Frontend):** Find all API functions, type definitions, and page components. List every API call with method, URL, and typed parameters/returns.
- **Agent 3 (Other frontends):** Check if additional frontend apps (e.g., user-facing vs admin) consume the same APIs.

### Step 2: Field-Level DTO Comparison
For each shared DTO, create a comparison table:
| Field | Backend Type | Frontend Type | Alignment |
Backend `String` vs frontend enum is a common mismatch — frontend is stricter/correct, backend should adopt enums.

### Step 3: Enum Value Audit
Compare every enum across all frontends and backend. Tabulate which values exist where. Common pattern: admin frontend has all values, user frontend is missing some, backend has all.

### Step 4: Identify Ghost Types and Orphan Endpoints
- **Ghost types**: Frontend types defined but never backed by a backend endpoint (dead code or future scaffolding)
- **Orphan endpoints**: Backend endpoints no frontend calls (unused or undiscovered)

### Step 5: Service Layer Granularity
Flag backend methods over ~50 lines or with 5+ conditional branches as candidates for decomposition (strategy pattern, etc.).

### Step 6: Generate Prioritized Report
Output a structured report to `docs/` with:
- Full alignment tables
- Mismatch issues ranked by severity (P1-P4)
- Specific file:line references for each issue

## When to Use
- After a module has been developed independently on frontend and backend
- Before a major release or API versioning effort
- When debugging "type mismatch" or "missing field" errors at the FE/BE boundary
- When onboarding to a new full-stack module
94 changes: 94 additions & 0 deletions .agents/skills/design-an-interface/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
name: design-an-interface
description: Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions "design it twice".
---

# Design an Interface

Based on "Design It Twice" from "A Philosophy of Software Design": your first idea is unlikely to be the best. Generate multiple radically different designs, then compare.

## Workflow

### 1. Gather Requirements

Before designing, understand:

- [ ] What problem does this module solve?
- [ ] Who are the callers? (other modules, external users, tests)
- [ ] What are the key operations?
- [ ] Any constraints? (performance, compatibility, existing patterns)
- [ ] What should be hidden inside vs exposed?

Ask: "What does this module need to do? Who will use it?"

### 2. Generate Designs (Parallel Sub-Agents)

Spawn 3+ sub-agents simultaneously using Task tool. Each must produce a **radically different** approach.

```
Prompt template for each sub-agent:

Design an interface for: [module description]

Requirements: [gathered requirements]

Constraints for this design: [assign a different constraint to each agent]
- Agent 1: "Minimize method count - aim for 1-3 methods max"
- Agent 2: "Maximize flexibility - support many use cases"
- Agent 3: "Optimize for the most common case"
- Agent 4: "Take inspiration from [specific paradigm/library]"

Output format:
1. Interface signature (types/methods)
2. Usage example (how caller uses it)
3. What this design hides internally
4. Trade-offs of this approach
```

### 3. Present Designs

Show each design with:

1. **Interface signature** - types, methods, params
2. **Usage examples** - how callers actually use it in practice
3. **What it hides** - complexity kept internal

Present designs sequentially so user can absorb each approach before comparison.

### 4. Compare Designs

After showing all designs, compare them on:

- **Interface simplicity**: fewer methods, simpler params
- **General-purpose vs specialized**: flexibility vs focus
- **Implementation efficiency**: does shape allow efficient internals?
- **Depth**: small interface hiding significant complexity (good) vs large interface with thin implementation (bad)
- **Ease of correct use** vs **ease of misuse**

Discuss trade-offs in prose, not tables. Highlight where designs diverge most.

### 5. Synthesize

Often the best design combines insights from multiple options. Ask:

- "Which design best fits your primary use case?"
- "Any elements from other designs worth incorporating?"

## Evaluation Criteria

From "A Philosophy of Software Design":

**Interface simplicity**: Fewer methods, simpler params = easier to learn and use correctly.

**General-purpose**: Can handle future use cases without changes. But beware over-generalization.

**Implementation efficiency**: Does interface shape allow efficient implementation? Or force awkward internals?

**Depth**: Small interface hiding significant complexity = deep module (good). Large interface with thin implementation = shallow module (avoid).

## Anti-Patterns

- Don't let sub-agents produce similar designs - enforce radical difference
- Don't skip comparison - the value is in contrast
- Don't implement - this is purely about interface shape
- Don't evaluate based on implementation effort
Loading
Loading