From 0dbd2b22c79c785acc48d46f4cd0c66c16b906ea Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Sat, 6 Jun 2026 00:42:10 +0700 Subject: [PATCH] a --- .claude/agent-depth.lock | 1 - .claude/agent-depth.lock.flock | 0 .claude/learn/failures.jsonl | 1 - .claude/session-20260606.log | 13 ------------- .claude/stop-block.count | 1 - .codegraph/graph.db | Bin 348160 -> 0 bytes .gitignore | 4 +++- src/db/schema.ts | 1 + src/domain/roleGuards.ts | 4 ++++ 9 files changed, 8 insertions(+), 17 deletions(-) delete mode 100644 .claude/agent-depth.lock delete mode 100644 .claude/agent-depth.lock.flock delete mode 100644 .claude/learn/failures.jsonl delete mode 100644 .claude/session-20260606.log delete mode 100644 .claude/stop-block.count delete mode 100644 .codegraph/graph.db diff --git a/.claude/agent-depth.lock b/.claude/agent-depth.lock deleted file mode 100644 index 56a6051..0000000 --- a/.claude/agent-depth.lock +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/.claude/agent-depth.lock.flock b/.claude/agent-depth.lock.flock deleted file mode 100644 index e69de29..0000000 diff --git a/.claude/learn/failures.jsonl b/.claude/learn/failures.jsonl deleted file mode 100644 index dc3b0de..0000000 --- a/.claude/learn/failures.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"type":"tool_failure","tool":"Read","error":"File does not exist. Note: your current working directory is /mnt/code/Booster-role.","id":"tool_failure-1780680948157-w915py","timestamp":"2026-06-05T17:35:48.157Z","resolved":false} diff --git a/.claude/session-20260606.log b/.claude/session-20260606.log deleted file mode 100644 index 1cbb557..0000000 --- a/.claude/session-20260606.log +++ /dev/null @@ -1,13 +0,0 @@ -[17:34:23] PROMPT: fix bug "Bun v1.3.4 (Linux x64 baseline) -{"guildId":"1206212469148749834","level":"info","message":"Registering guild commands","timestamp": -[17:34:32] PROMPT: fix bug "Bun v1.3.4 (Linux x64 baseline) -{"guildId":"1206212469148749834","level":"info","message":"Registering guild commands","timestamp": -[17:34:46] TASK+: unknown -[17:34:46] TASK+: unknown -[17:34:46] TASK+: unknown -[17:34:57] AGENT START: -[17:35:04] AGENT SPAWN: coder-workflow:codebase-qa-agent -[17:35:47] FAIL [Read]: File does not exist. Note: your current working directory is /mnt/code/Booster-role. -[17:38:37] TASK done: -[17:38:39] PROMPT: Write a 1-line conventional commit message summarizing these staged changes. Output ONLY the raw commit message, no markdown. -diff --git a/. diff --git a/.claude/stop-block.count b/.claude/stop-block.count deleted file mode 100644 index 573541a..0000000 --- a/.claude/stop-block.count +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/.codegraph/graph.db b/.codegraph/graph.db deleted file mode 100644 index 1ee1cd966f6f11f87e404611415c01cede9a585a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348160 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 diff --git a/.gitignore b/.gitignore index 5563af0..e00b84b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules/ .env -data/ \ No newline at end of file +data/ +.codegraph/ +.claude/ \ No newline at end of file diff --git a/src/db/schema.ts b/src/db/schema.ts index fa81497..018c1e7 100644 --- a/src/db/schema.ts +++ b/src/db/schema.ts @@ -8,6 +8,7 @@ export const boosterRoles = pgTable( roleId: text("role_id").notNull(), name: text("name").notNull(), color: text("color"), + color2: text("color2"), icon: text("icon"), createdAt: bigint("created_at", { mode: "number" }).notNull(), updatedAt: bigint("updated_at", { mode: "number" }).notNull() diff --git a/src/domain/roleGuards.ts b/src/domain/roleGuards.ts index 9593f8b..4fb3f78 100644 --- a/src/domain/roleGuards.ts +++ b/src/domain/roleGuards.ts @@ -75,6 +75,10 @@ export function normalizeHexColor(color: string): `#${string}` { return normalizedColor as `#${string}`; } +export function normalizeOptionalHexColor(color: string | null): `#${string}` | null { + return color ? normalizeHexColor(color) : null; +} + function normalizeName(name: string): string { return name.trim().toLowerCase(); }