| Files | Last commit | Last update |
|---|---|---|
fix(security): match CSRF-exempt webhook paths exactly; add RBAC and CSRF tests The CSRF middleware used startsWith on the webhook allow-list, so a lookalike path such as /api/payments/stripe-webhook-evil also bypassed the X-Requested-With check. Matching is now exact after stripping one trailing slash. Adds coverage that would have caught it: - 8 CSRF middleware cases (safe methods, missing/wrong header, exact match, both webhook exemptions, lookalike path, sibling route) - 5 RolesGuard cases (unauthenticated, disallowed role, allowed roles, empty allow-list, exact role comparison) Test suite: 45 files / 286 cases. | 5 days ago | |
fix(server): close E2E-found regressions; add local full-chain harness - scope copilot watch run/snapshot/lock per actor: manual runs use the caller's settings and webhook; the background scheduler stays admin-driven - widen ai_settings.key to varchar(120): scoped keys like '{uuid}:copilot_watch_last_snapshot' (64 chars) overflowed varchar(50) with a 500 - keep honest degradation observable: select agent only short-circuits empty stores when a model is configured, so unconfigured calls still land in ai_usage_log - tier SSRF guards by environment: production blocks private addresses from seller-editable config; development allows local gateways (Ollama/LM Studio, mocks) - add scripts/run-e2e-local.mjs (npm run e2e:local): fresh-database, two-instance, mock-provider harness matching CI - verified: 6/6 smoke suites pass against real PostgreSQL (workflows, degraded, 19-step transaction, providers, copilot push, shopper) | 8 days ago | |
fix(security): finish fail-closed gates and gate runner safety tests - SMTP allowlist now applies to every non-development environment - demo seed refuses any environment other than explicit development/test - align demo payment messages and changelog with the allowlist behavior - e2e:local rejects stale builds without HOST support before touching the database - run runner safety tests in CI | 6 days ago | |
feat(release): v1.21.0 — 安全闭环、SEO/OpenAPI、批量运营与展示资产 - 修复订单跨租户读写、退款并发重复打款、支付并发重复入账、退款数量越界、优惠券限次失效 - 补齐卖家看板/巡检/审计/咨询/漏斗的租户隔离(新增 inquiry_sessions.seller_id + 迁移 0007) - 结算透传 variantId;多规格缺省拒绝;CSV 导入行错位与上架门禁绕过修复 - 新增 SEO 注入(sitemap/robots/llms.txt/JSON-LD)、OpenAPI 3.1、CLI、批量上下架与 CSV 导出 - 新增 Stripe 支付确认页、PayPal capture、评价图片、搜索联想、相关推荐、最近浏览 - 安全响应头、请求 ID、全局异常脱敏、静态资源缓存、优雅关闭;移动端与可访问性修复 - README 重写为展示型;30 张自动截图 + 演示视频 + 社交预览 + 发布说明 - 验证:lint 0 / typecheck 0 / 166 单测 / build 通过 / 6 套 E2E 全通过 | 15 days ago | |
fix(security): harden outbound requests and isolate E2E environments - bind DNS-validated addresses at connection time for seller-controlled LLM endpoints and webhooks; reject redirects and non-public responses - treat only explicit development/test as local exemptions - cover IPv6 special ranges, IPv4 boundaries and DNS family/all handling - give E2E runners opt-in disposable databases, owned-process cleanup, environment isolation, and loopback-only listeners - document isolated sandbox verification for Stripe, PayPal webhook, 17TRACK, SMTP and deployment rollback without claiming they passed | 6 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 5 days ago | ||
| 8 days ago | ||
| 6 days ago | ||
| 15 days ago | ||
| 6 days ago |