mirror of
https://github.com/ReCloudStudio/WebHooker.git
synced 2026-09-22 16:11:29 +00:00
feat(groups): optional forge source label in message footers
- Group.forgeLabel (default off, editable per group in the console) shows the source forge on every message the group's routes dispatch - Discord embed footer: forge name next to the repo + the site's favicon as icon_url (Gitea instance's own favicon from its origin) - Telegram footer: hyperlinked site name (GitHub or Gitea hostname); custom webhooks render a plain 'Custom' label - forgeInfo() derives branding from event.provider + repository.html_url; dispatch attaches it to the NeutralMessage like mentionRoleIds - validateGroups accepts forgeLabel booleans; GroupEditor gains the toggle - tests: forgeInfo unit, discord/telegram footer render, dispatch on/off - docs: groups.md + message-format.md (en/zh), config.example.yaml, AGENTS.md - fix: wrangler.jsonc compatibility_date was an incomplete '2026-'
This commit is contained in:
parent
a5324fb0ea
commit
3dce114cec
19 changed files with 273 additions and 16 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import { describe, it, expect } from "bun:test";
|
||||
import { formatEvent } from "../server/lib/formatters";
|
||||
import { MAX_COMMIT_SUBJECT } from "../server/lib/formatters/helpers";
|
||||
import { forgeInfo, MAX_COMMIT_SUBJECT } from "../server/lib/formatters/helpers";
|
||||
import type { Route, WebhookEvent } from "../server/lib/types";
|
||||
|
||||
const route: Route = {
|
||||
|
|
@ -518,3 +518,38 @@ describe("limits and localization", () => {
|
|||
expect(msg.description!.length).toBe(4096);
|
||||
});
|
||||
});
|
||||
|
||||
describe("forge source branding", () => {
|
||||
it("github events brand as GitHub with the favicon", () => {
|
||||
expect(
|
||||
forgeInfo({ event: "push", provider: "github", payload: {} }),
|
||||
).toEqual({
|
||||
name: "GitHub",
|
||||
url: "https://github.com",
|
||||
iconUrl: "https://github.com/favicon.ico",
|
||||
});
|
||||
});
|
||||
|
||||
it("gitea events brand as the instance hostname derived from the repo url", () => {
|
||||
expect(
|
||||
forgeInfo({
|
||||
event: "push",
|
||||
provider: "gitea",
|
||||
payload: { repository: { html_url: "https://git.example.com/org/repo" } },
|
||||
}),
|
||||
).toEqual({
|
||||
name: "git.example.com",
|
||||
url: "https://git.example.com",
|
||||
iconUrl: "https://git.example.com/favicon.ico",
|
||||
});
|
||||
expect(
|
||||
forgeInfo({ event: "push", provider: "gitea", payload: {} }),
|
||||
).toBeUndefined();
|
||||
});
|
||||
|
||||
it("custom events brand as a plain label without links", () => {
|
||||
expect(forgeInfo({ event: "custom", provider: "custom", payload: {} })).toEqual({
|
||||
name: "Custom",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue