| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"22f20cb11e78f095552807569b78ee87e2516829","after":"ef60e0581c3f779fd3a9d709a18073882bceb9aa","compare_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/compare/22f20cb11e78f095552807569b78ee87e2516829...ef60e0581c3f779fd3a9d709a18073882bceb9aa","commits":[{"id":"ef60e0581c3f779fd3a9d709a18073882bceb9aa","message":"merge: include completed project feature skill experience\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/ef60e0581c3f779fd3a9d709a18073882bceb9aa","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T08:35:01-07:00","added":[],"removed":[],"modified":[".claude/skills/ygg-fullstack-feature/SKILL.md"]},{"id":"3bc8cedb095eb05b022cfb43edd3bc442fdf709d","message":"merge: include final credential log redaction and align security documentation\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/3bc8cedb095eb05b022cfb43edd3bc442fdf709d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T08:35:01-07:00","added":["server/src/middleware/request-log.ts","server/test/request-log.unit.test.ts"],"removed":[],"modified":["CLAUDE.md","README.md","docs/merge-all-branches-2026-10-03.md","docs/platform-onboarding.md","docs/security-hardening-2026-10-03.md","server/.env.example","server/README.md","server/src/app.ts","团购本地生活AI运营App/WEB.md","开发计划.md","项目进展分析_2026-07-01.md"]},{"id":"3c84944cfb4940fb5bdf1c66d21f0c230cbf8cbd","message":"merge: reconcile both security hardening branches and contracts\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/3c84944cfb4940fb5bdf1c66d21f0c230cbf8cbd","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T08:24:04-07:00","added":["docs/merge-all-branches-2026-10-03.md","server/src/lib/session.ts","server/test/env-production-guard.unit.test.ts","server/test/error-sanitize.unit.test.ts","server/test/r28-auth-session.test.ts","server/test/r29-security-baseline.test.ts"],"removed":[],"modified":["e2e/playwright.config.ts","server/src/app.ts","server/src/config/env.ts","server/src/index.ts","server/src/lib/context.ts","server/src/lib/errors.ts","server/src/lib/jwt.ts","server/src/middleware/error.ts","server/src/middleware/security.ts","server/src/modules/auth/routes.ts","server/src/modules/auth/schema.ts","server/src/modules/auth/service.ts","server/src/openapi.ts","server/test/jwt-trust-boundary.unit.test.ts","server/test/r0-r1-auth.test.ts","server/test/security-http.unit.test.ts","团购本地生活AI运营App/api.js"]},{"id":"73dce48a6d8ae51bd55cfe1ede0e95d018e4ce1d","message":"docs(skills): ygg-fullstack-feature 补两条经验——api.js 方法前注释只能一行;鉴权改动的三层验证与 e2e 临时库跑法\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/73dce48a6d8ae51bd55cfe1ede0e95d018e4ce1d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T08:23:45-07:00","added":[],"removed":[],"modified":[".claude/skills/ygg-fullstack-feature/SKILL.md"]},{"id":"f397db7cbfc55a20c2c877cc5da48771c5da5367","message":"docs: 加固冲刺落文档——安全基线说明、环境变量样例、开发计划登记\n\n- CLAUDE.md:会话绑定的鉴权约定、安全基线一节(生产配置拦截 / 限流 / 反向代理 / 错误体 / 健康检查);规模数字 185 端点 / 370 用例 / R0–R29\n- server/README:「安全基线与生产部署」一节,鉴权端点补 logout / logout-all,OpenAPI 158 paths / 185 operations\n- server/.env.example:TRUST_PROXY、限流与就绪探针变量,JWT_SECRET / CORS_ORIGINS 的生产要求\n- WEB.md 上线清单、platform-onboarding 身份一行同步\n- 开发计划 v1.5 表补「生产加固」行与证据;项目进展分析 07-01 的两处清单加订正\n- 证据:TEST_USE_CONTAINER=1 npm test 50 文件 370/370;Playwright 116/116 @ 82cbed1\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/f397db7cbfc55a20c2c877cc5da48771c5da5367","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T08:22:59-07:00","added":[],"removed":[],"modified":["CLAUDE.md","README.md","docs/platform-onboarding.md","server/.env.example","server/README.md","团购本地生活AI运营App/WEB.md","开发计划.md","项目进展分析_2026-07-01.md"]}],"total_commits":0,"head_commit":{"id":"ef60e0581c3f779fd3a9d709a18073882bceb9aa","message":"merge: include completed project feature skill experience\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/ef60e0581c3f779fd3a9d709a18073882bceb9aa","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T08:35:01-07:00","added":[],"removed":[],"modified":[".claude/skills/ygg-fullstack-feature/SKILL.md"]},"repository":{"id":51,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"yggdrasil-local-life-tools","full_name":"luoanwu/yggdrasil-local-life-tools","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":88091,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools/languages","html_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/yggdrasil-local-life-tools.git","clone_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-02T16:02:07+08:00","updated_at":"2026-10-03T23:11:24+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}... |