Releases: 1634594707/Codefolio
Releases · 1634594707/Codefolio
Release list
v1.3.3
Changelog
[v1.3.3] - 2026-04-18
Added
- Restored a safe
backend/.env.exampletemplate with production-ready placeholders for GitHub, AI, OAuth, Redis, and database settings - Added a clearer
.env.production.exampleflow for Docker production deployments using localhost binding behind an HTTPS reverse proxy
Changed
- Production Docker Compose now binds the frontend to
127.0.0.1:8080by default instead of exposing port 80 directly - Deployment documentation now standardizes the recommended production topology: Docker on localhost, Nginx or Caddy in front, and explicit
PUBLIC_BIND_IPcontrol when direct exposure is intentional - Backend and deployment docs now use container-aware defaults such as
REDIS_URL=redis://redis:6379and domain-scopedCORS_ORIGINS
[v1.3.2] - 2026-04-18
Added
- GitScore dimension explanations in the backend payload and AI analysis view, including evidence, next steps, low-data handling, and strongest/weakest dimension cues
- Structured repository analysis fields for strengths, risks, resume-ready bullets, next steps, showcase fit, confidence, and evidence-backed engineering signals
- Focused frontend regression coverage for repository analysis URL persistence and export PDF reuse flows
Changed
- Repository analysis prompts now incorporate README headings plus engineering-signal detection for tests, CI, docs, examples, container files, frontend/backend structure, and API/demo cues
- Repository and overview analysis panels now render richer sections instead of a short templated summary, making the output easier to review and adapt for resumes or portfolios
- Export PDF generation now reuses already available Markdown artifacts when possible and prefers richer resume bullets over generic highlights for selected projects
- Benchmark suggestions and GitScore explanations are now more actionable in both the API shape and frontend presentation
- Repository analysis cache versioning was bumped to refresh older, shallow analysis snapshots
[v1.3.1] - 2026-04-17
Added
- UI guidelines regression coverage for page-level accessibility and HTML correctness checks
- Preservation tests covering compare input submission, repository card click separation, overview history navigation, and loading-copy stability
Changed
- Replaced loading and async copy ASCII ellipses with Unicode ellipses across Compare, CompareRepos, Repositories, Export, AIAnalysis, and Overview
- Added missing
type,width/height,aria-label,aria-live,role="alert", and chart accessibility attributes across affected frontend pages - Restructured repository cards to avoid nested interactive elements and converted overview history row activation to semantic buttons
- Updated affected unit and property tests to align with the new UI guidelines and stabilized property-based workspace/app-context test fixtures
[v1.3.0] - 2026-04-15
Added
- OAuth-based GitHub sign-in, token-aware repository fetching, and re-auth prompts for expired sessions
- Server-sent event generation progress, workspace import/export, and repository analysis LRU caching
- Error boundary and offline banner UX safeguards across the frontend
- Property-based regression coverage for request deduplication, XSS sanitization, workspace snapshots, cache bounds, history parsing, GitScore invariants, and social card theming
Changed
- GitScore weighting now includes issue participation, quality density, and higher documentation ceiling
- Export flow now sanitizes rendered resume HTML and delegates PDF generation to the backend POST export endpoint
- Social card rendering now honors light and dark theme selection end to end
- Shared frontend config, i18n wiring, history utilities, and responsive topbar behavior were consolidated for consistency
[v1.2.0] - 2026-04-14
Added
- Frontend workspace isolation with persisted
workspaceId, automaticX-Codefolio-Workspacerequest header, and startup registration viaPOST /api/workspaces/ensure - Workspace-aware benchmark persistence so the latest repository comparison result can be reused on the export page without rebuilding query params
- Docker support for the full stack with
backend/Dockerfile,frontend/Dockerfile,frontend/nginx.conf,.dockerignore, and rootdocker-compose.yml
Changed
- Backend snapshot storage now supports
tenant_scopeand records active workspaces in a dedicatedworkspacestable - AI analysis, repository benchmark analysis, Redis cache keys, and snapshot invalidation now respect workspace scope instead of sharing one global artifact set
- Repository comparison flow now fills empty benchmark slots more naturally and stores successful results into the current workspace context
[v1.1.0] - 2026-04-14
新增功能
后端
benchmark_recommendation_service.py:基于 GitHub Search API 的标杆仓库推荐引擎,按语言、话题、规模分类筛选并排序rate_limiter.py:滑动窗口 per-IP 速率限制器,防止 benchmark 接口被滥用token_redaction.py:GitHub Token 脱敏工具,确保 token 不出现在日志或错误响应中i18n/en.json/i18n/zh.json:benchmark 维度标签、行动项、假设卡片的中英文翻译文件database.py:SQLite 数据库辅助模块GET /api/repos/suggest-benchmarks:推荐相似标杆仓库接口DELETE /api/repos/cache/{owner}/{repo}:手动清除仓库缓存接口
前端
BenchmarkMatrix.tsx:响应式特征对比表格,支持键盘导航、颜色编码(missing/weak/medium/strong)、行展开查看原始信号ActionList.tsx:可排序(优先级/投入/影响)、可筛选(维度)的行动项列表,支持快速收益高亮、时间线分组、localStorage 持久化HypothesisCards.tsx:可折叠的成功假设卡片,支持按可迁移性和类别筛选benchmarkExport.ts:将 BenchmarkReport 导出为 Markdown(中英文),含特征矩阵表格、行动项编号列表、假设章节formatCacheAge.ts:缓存时间格式化与 7 天过期检测
测试覆盖
后端 — 基于属性的测试(Hypothesis,每项 100+ 次迭代)
| 测试文件 | 覆盖属性 |
|---|---|
test_repository_profile_service.py |
P2 名称规范化、P3 缓存往返一致性 |
test_dimension_analyzer.py |
P5 维度完整性、P6 单元格结构、边界用例 |
test_bucket_service.py |
P16 分桶逻辑、P10 桶描述存在性 |
test_action_generator.py |
P8 行动项结构与排序、P9 快速收益识别 |
test_benchmark_infrastructure.py |
P7 无 LLM 分析、P11 多仓库矩阵结构、P13 部分失败处理 |
test_narrative_generation.py |
P14 假设证据要求、P15 置信度赋值、P18 单次 LLM 调用、P19 README 截断、P30 LLM 调用次数上限 |
test_api_endpoints.py |
P22 错误响应格式、P12 benchmark 数量上限、集成测试 |
test_language_handling.py |
P28 语言参数处理 |
test_caching_properties.py |
P25 缓存键格式、P26 差异化 TTL、P27 缓存失效、P29 缓存性能、P31 跨请求复用 |
test_security_properties.py |
P34 公开仓库访问、P35 Token 安全、P36 速率限制 |
test_recommendation_service.py |
P20 推荐数量边界、P21 推荐相似性过滤 |
前端 — 单元测试(Vitest + @testing-library/react)
| 测试文件 | 覆盖内容 |
|---|---|
CompareRepos.test.tsx |
输入校验、添加/删除 benchmark、加载/错误状态 |
BenchmarkMatrix.test.tsx |
渲染、颜色编码、键盘导航 |
ActionList.test.tsx |
排序、筛选、快速收益高亮、分组折叠 |
HypothesisCards.test.tsx |
默认折叠、展开/折叠、可迁移性筛选 |
SuggestionUI.test.tsx |
推荐按钮、面板展示、添加推荐、空/错误状态 |
Export.test.tsx |
Markdown 生成(含/不含 benchmark 章节)、导出页面渲染 |
前端 — 属性测试(fast-check,100+ 次迭代)
| 测试文件 | 覆盖属性 |
|---|---|
urlParams.test.ts |
P23 URL 参数隔离(mine/b 与 users 互不干扰) |
staleness.test.ts |
P33 过期警告显示(7 天阈值) |
benchmarkExport.test.ts |
P24 Markdown 导出完整性 |
Bug 修复
dimension_analyzer.py:修复analyze_compliance将None的license_type直接写入raw_features,违反 Req 4.10(未检测到的特征应标记为"not detected"而非None)benchmark_analysis_service.py:补全缺失的_build_bucket、_invert_scores辅助方法
[v1.0.0] - 2026-04-13
- 初始发布:仓库 benchmark API、分析服务、CompareRepos UI
v1.2.0
Changelog
[v1.2.0] - 2026-04-14
Added
- Frontend workspace isolation with persisted
workspaceId, automaticX-Codefolio-Workspacerequest header, and startup registration viaPOST /api/workspaces/ensure - Workspace-aware benchmark persistence so the latest repository comparison result can be reused on the export page without rebuilding query params
- Docker support for the full stack with
backend/Dockerfile,frontend/Dockerfile,frontend/nginx.conf,.dockerignore, and rootdocker-compose.yml
Changed
- Backend snapshot storage now supports
tenant_scopeand records active workspaces in a dedicatedworkspacestable - AI analysis, repository benchmark analysis, Redis cache keys, and snapshot invalidation now respect workspace scope instead of sharing one global artifact set
- Repository comparison flow now fills empty benchmark slots more naturally and stores successful results into the current workspace context
[v1.1.0] - 2026-04-14
新增功能
后端
benchmark_recommendation_service.py:基于 GitHub Search API 的标杆仓库推荐引擎,按语言、话题、规模分类筛选并排序rate_limiter.py:滑动窗口 per-IP 速率限制器,防止 benchmark 接口被滥用token_redaction.py:GitHub Token 脱敏工具,确保 token 不出现在日志或错误响应中i18n/en.json/i18n/zh.json:benchmark 维度标签、行动项、假设卡片的中英文翻译文件database.py:SQLite 数据库辅助模块GET /api/repos/suggest-benchmarks:推荐相似标杆仓库接口DELETE /api/repos/cache/{owner}/{repo}:手动清除仓库缓存接口
前端
BenchmarkMatrix.tsx:响应式特征对比表格,支持键盘导航、颜色编码(missing/weak/medium/strong)、行展开查看原始信号ActionList.tsx:可排序(优先级/投入/影响)、可筛选(维度)的行动项列表,支持快速收益高亮、时间线分组、localStorage 持久化HypothesisCards.tsx:可折叠的成功假设卡片,支持按可迁移性和类别筛选benchmarkExport.ts:将 BenchmarkReport 导出为 Markdown(中英文),含特征矩阵表格、行动项编号列表、假设章节formatCacheAge.ts:缓存时间格式化与 7 天过期检测
测试覆盖
后端 — 基于属性的测试(Hypothesis,每项 100+ 次迭代)
| 测试文件 | 覆盖属性 |
|---|---|
test_repository_profile_service.py |
P2 名称规范化、P3 缓存往返一致性 |
test_dimension_analyzer.py |
P5 维度完整性、P6 单元格结构、边界用例 |
test_bucket_service.py |
P16 分桶逻辑、P10 桶描述存在性 |
test_action_generator.py |
P8 行动项结构与排序、P9 快速收益识别 |
test_benchmark_infrastructure.py |
P7 无 LLM 分析、P11 多仓库矩阵结构、P13 部分失败处理 |
test_narrative_generation.py |
P14 假设证据要求、P15 置信度赋值、P18 单次 LLM 调用、P19 README 截断、P30 LLM 调用次数上限 |
test_api_endpoints.py |
P22 错误响应格式、P12 benchmark 数量上限、集成测试 |
test_language_handling.py |
P28 语言参数处理 |
test_caching_properties.py |
P25 缓存键格式、P26 差异化 TTL、P27 缓存失效、P29 缓存性能、P31 跨请求复用 |
test_security_properties.py |
P34 公开仓库访问、P35 Token 安全、P36 速率限制 |
test_recommendation_service.py |
P20 推荐数量边界、P21 推荐相似性过滤 |
前端 — 单元测试(Vitest + @testing-library/react)
| 测试文件 | 覆盖内容 |
|---|---|
CompareRepos.test.tsx |
输入校验、添加/删除 benchmark、加载/错误状态 |
BenchmarkMatrix.test.tsx |
渲染、颜色编码、键盘导航 |
ActionList.test.tsx |
排序、筛选、快速收益高亮、分组折叠 |
HypothesisCards.test.tsx |
默认折叠、展开/折叠、可迁移性筛选 |
SuggestionUI.test.tsx |
推荐按钮、面板展示、添加推荐、空/错误状态 |
Export.test.tsx |
Markdown 生成(含/不含 benchmark 章节)、导出页面渲染 |
前端 — 属性测试(fast-check,100+ 次迭代)
| 测试文件 | 覆盖属性 |
|---|---|
urlParams.test.ts |
P23 URL 参数隔离(mine/b 与 users 互不干扰) |
staleness.test.ts |
P33 过期警告显示(7 天阈值) |
benchmarkExport.test.ts |
P24 Markdown 导出完整性 |
Bug 修复
dimension_analyzer.py:修复analyze_compliance将None的license_type直接写入raw_features,违反 Req 4.10(未检测到的特征应标记为"not detected"而非None)benchmark_analysis_service.py:补全缺失的_build_bucket、_invert_scores辅助方法
[v1.0.0] - 2026-04-13
- 初始发布:仓库 benchmark API、分析服务、CompareRepos UI
Codefolio v1.1.0
Highlights
- Repository Benchmark fully shipped: 8-dimension gap matrix, action items, success hypothesis cards, optional LLM narrative summary
- Suggest Benchmarks: auto-find similar repos by language, topics, and size category via GitHub Search API
- Markdown export of full benchmark reports (EN / ZH)
- Staleness warning when cached data is older than 7 days
- Rate limiting per IP on benchmark endpoints
- Token redaction GitHub tokens never appear in logs or error responses
- Full test suite: 36 property-based tests (Hypothesis, 100+ iterations each) + frontend unit/property tests (Vitest + fast-check)
What changed
Backend New Services
benchmark_recommendation_service.py: GitHub Search API based suggestion enginerate_limiter.py: sliding-window per-IP rate limitertoken_redaction.py: GitHub token redaction utilityi18n/en.json/i18n/zh.json: EN/ZH translation files for benchmark text- New endpoints:
GET /api/repos/suggest-benchmarks,DELETE /api/repos/cache/{owner}/{repo}
Backend Updated Services
benchmark_analysis_service.py: add_build_hypotheses,_generate_narrative,_build_bucket, partial failure handlingdimension_analyzer.py: fixNonelicense_type leaking intoraw_features(Req 4.10)repository_profile_service.py: TTL constants,normalize_repo_name, serialize/deserialize helperscache_keys.py:repo_profile_cache_key,benchmark_result_cache_key,suggestion_cache_key
Frontend New Components
BenchmarkMatrix.tsx: responsive feature comparison table with keyboard navigationActionList.tsx: sortable/filterable action items with quick-win highlightingHypothesisCards.tsx: collapsible hypothesis cards with transferability filterbenchmarkExport.ts: Markdown export utility (EN/ZH)formatCacheAge.ts: cache age formatting and 7-day staleness detection
Frontend Updated Pages
CompareRepos.tsx: suggest-benchmarks UI, staleness warning, export buttonsExport.tsx: optional benchmark report section
Tests
- 36 backend property tests (Properties 236) via Hypothesis
- Frontend unit tests: CompareRepos, BenchmarkMatrix, ActionList, HypothesisCards, SuggestionUI, Export
- Frontend property tests: URL isolation (P23), staleness (P33), Markdown export (P24) via fast-check
Run locally
- Backend: Python 3.11+, Redis; see
README.md/README.zh-CN.mdfor.envand startup. - Frontend: Node 18+;
npm installandnpm run dev.
License
PolyForm Noncommercial License 1.0.0 see LICENSE.
Codefolio v1.0.0
Highlights
- Repository benchmark: FastAPI router and services for peer-style repo analysis (dimensions, buckets, actions).
- Frontend: CompareRepos page, compare styling updates, benchmark export helper.
- Integration: GitHub service and cache key updates to support the benchmark flow.
Run locally
- Backend: Python 3.11+, Redis; see
README.md/README.zh-CN.mdfor.envand startup. - Frontend: Node 18+;
npm installandnpm run dev.
License
PolyForm Noncommercial License 1.0.0 鈥?see LICENSE.