WebHooker/docs
RhenCloud 3f6f7f17b5
feat(groups): host-based forge sources with optional display name
- forgeSources entries are now { host, type, name? }: the repository URL's
  hostname is matched case-insensitively against host (github.com for GitHub,
  distinct hosts for multiple Gitea instances); the footer label is the
  optional name, falling back to the host
- GroupEditor renders one row per source: host input + type select + optional
  display name (grid layout); hostname validation mirrors the server
- fix: apiFetch sends Content-Type: application/json — h3's readBody only
  parses JSON bodies with that header, so every PUT/POST from the refactored
  console arrived as a raw string and failed with 'groups must be an array'
- hardening: readJsonBody (admin + actions) JSON-parses string bodies so curl
  and older clients without the content-type header still work
- regression test: groups PUT without content-type + forgeSources round-trip
- docs: groups.md/message-format.md (en/zh), AGENTS.md, config.example.yaml
2026-08-14 08:49:48 +08:00
..
.vitepress docs: restructure into core-concept pages and split admin API 2026-08-14 06:41:08 +08:00
api chore: auto-fix lint & formatting [skip ci] 2026-08-13 22:46:35 +00:00
events chore: auto-fix lint & formatting [skip ci] 2026-08-13 22:46:35 +00:00
guide feat(groups): host-based forge sources with optional display name 2026-08-14 08:49:48 +08:00
public docs: fix factual errors, fill coverage gaps and align zh mirror 2026-08-14 06:17:13 +08:00
zh feat(groups): host-based forge sources with optional display name 2026-08-14 08:49:48 +08:00
contributing.md docs: fix factual errors, fill coverage gaps and align zh mirror 2026-08-14 06:17:13 +08:00
index.md feat(check_run): edit messages in place as the run progresses, like workflow_run 2026-08-13 06:47:30 +08:00
tsconfig.json fix(docs): standalone tsconfig for vitepress config loading 2026-08-14 06:52:05 +08:00