b17984fbef
Outbound (already existed one-way: ticket create -> Gitea issue) now also mirrors status changes: closing/reopening a ticket in the admin UI closes/reopens the linked Gitea issue, and replies posted from Epicure (by the ticket owner or an admin) post as a comment on the issue. Captures and stores the Gitea issue number at creation time to address these follow-up calls without re-parsing the issue URL. Inbound: new webhook receiver at /api/webhooks/gitea, verified via HMAC-SHA256 signature (X-Gitea-Signature) with a configurable GITEA_WEBHOOK_SECRET site setting, deduped by delivery id the same way the existing Stripe receiver dedupes events. Handles "issues" (closed/reopened -> ticket status) and "issue_comment" (created -> appends to the ticket's comment thread), skipping comments Epicura already posted itself (matched by Gitea comment id) to avoid loops. New support_ticket_comments table backs a lightweight conversation thread on both the user-facing support page and the admin support manager, each comment tagged by author (user/admin/gitea). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
632 B
JSON
24 lines
632 B
JSON
{
|
|
"name": "epicure",
|
|
"version": "0.63.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "pnpm --filter web dev",
|
|
"build": "pnpm --filter web build",
|
|
"lint": "pnpm -r lint",
|
|
"typecheck": "pnpm -r typecheck",
|
|
"db:generate": "pnpm --filter @epicure/db generate",
|
|
"db:migrate": "pnpm --filter @epicure/db migrate",
|
|
"db:seed": "pnpm --filter @epicure/db seed",
|
|
"db:backfill-usernames": "pnpm --filter @epicure/db backfill-usernames",
|
|
"db:studio": "pnpm --filter @epicure/db studio"
|
|
},
|
|
"devDependencies": {
|
|
"typescript": "^5.8.3"
|
|
},
|
|
"engines": {
|
|
"node": ">=22",
|
|
"pnpm": ">=11"
|
|
}
|
|
}
|