Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
Commit39193f6unknown_key

feat(pr-slash): /rebase /merge /explain /test /lgtm /needs-work /cc /help in PR comments

feat(pr-slash): /rebase /merge /explain /test /lgtm /needs-work /cc /help in PR comments

https://claude.ai/code/session_01KdpgsaGpmEExJAz3yhFLvx
Claude committed on May 25, 2026Parent: 424eb72
1 file changed+3539193f6ba3309bc37809dd3fcf81be9a20d8ebb1
1 changed file+3−5
Modifiedsrc/__tests__/pr-slash-commands.test.ts+3−5View fileUnifiedSplit
1616import { describe, it, expect, beforeAll, afterAll } from "bun:test";
1717import { join } from "path";
1818import { mkdir, rm } from "fs/promises";
19import { eq } from "drizzle-orm";
2019
2120import {
2221 parseSlashCommand,
3029import { db } from "../db";
3130import {
3231 pullRequests,
33 prComments,
3432 repositories,
3533 users,
3634 workflows,
315313 it("forwards the requested strategy and reports the merge result", async () => {
316314 const fx = await seedFixture("merge");
317315
318 let observedActor: string | null = null;
316 const observed: { actor: string | null } = { actor: null };
319317 const fakeMerge = async (mergeArgs: any) => {
320 observedActor = mergeArgs.actorUserId;
318 observed.actor = mergeArgs.actorUserId;
321319 expect(mergeArgs.pr.id).toBe(fx.prId);
322320 expect(mergeArgs.pr.headBranch).toBe("feat-x");
323321 expect(mergeArgs.pr.baseBranch).toBe("main");
342340 },
343341 });
344342 expect(result.ok).toBe(true);
345 expect(observedActor).toBe(fx.userId);
343 expect(observed.actor).toBe(fx.userId);
346344 expect(result.body).toContain(slashCmdMarker("merge"));
347345 expect(result.body).toContain("Merged");
348346 expect(result.body).toContain("/merge squash");
349347