29 Commits

Author SHA1 Message Date
Jared Schoeny
567f79c00e Tell request failures from truncated patch downloads (#81)
Some checks are pending
Deploy Supabase Migrations to Production / migrate (push) Waiting to run
* Expand patch download diagnostics

Separate request and body failures, capture response sizes, and sample successful fetches so protocol and truncation patterns can be compared.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Move the details migration after hack review threads.

CI rejects new migration filenames that sort before the tip on main.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 11:34:37 -06:00
Jared Schoeny
e0747efb82 Add Discord review threads and a Resend reply loop for submitted hacks (#76)
Some checks failed
Deploy Supabase Migrations to Production / migrate (push) Has been cancelled
* Add a Discord review thread and Resend reply loop for submitted hacks.

Admins can email submitters from a forum thread and inbound replies land back in that same thread.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add an admin endpoint to register Discord guild commands.

Local still uses the npm script; production can hit /api/discord/register while logged in as an admin.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add an admin backup to create a missing Discord review thread.

If submit fails to open a thread, an admin can create one from the hack details menu.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Match inbound review replies when the plus-address token is lowercased.

Mail delivers To in lowercase, so tokens are now hex and lookups are case-insensitive.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Use distinct review embeds for /reply and inbound creator mail.

/reply posts a green embed with subject, Discord avatar, and the creator username; thread replies drop the To field.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Gate /reply by Discord role and mark inbound From as verified.

DISCORD_REPLY_ROLE_IDS is required; creator mail still posts when the address does not match the account.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Retry inbound review mail when Discord does not post the embed.

A failed thread post no longer records the email as processed or returns 200 to Resend.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Notify the admin webhook when a review thread cannot be loaded.

Patch upload no longer stays silent if getHackReviewThread throws.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Keep the /reply ack honest after the review email is sent.

A later Discord or deferred-response failure no longer claims the email failed.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Make the admin review message stand out in the reply email.

The quote sits in a rose-tinted box so it is not just another paragraph.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Tag review threads as claimed or unclaimed and announce claims.

New and backup-created threads get the matching forum tag; dashboard claims swap Unclaimed to Claimed.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 22:07:33 -06:00
Jared Schoeny
3ac3a9c4b7 Add patch download failure telemetry
Capture actionable diagnostics for signed URL, network, HTTP, and patch application failures while keeping reporting best-effort.
2026-08-18 10:01:15 -06:00
Jared Schoeny
c7c88d1840 Xdelta patching (#71)
Some checks failed
Deploy Supabase Migrations to Production / migrate (push) Has been cancelled
* Add xdelta patch support

* Fix potential race on reupload to new format + update typings

* Fix waiting too long to call showSaveFilePicker

* Allow seeing patch format in version history
2026-08-03 10:56:45 -06:00
Jared Schoeny
92c86e80af Make pending hacks assignable to admin for review (#66)
Some checks failed
Deploy Supabase Migrations to Production / migrate (push) Has been cancelled
* Extract common Modal component

* Move admin pending hacks list to client component

* Add assigning pending hacks to admin for review
2026-07-18 22:37:41 -06:00
Jared Schoeny
43aa0236e1 Add customizable patch version selector + related UX improvements (#62)
Some checks failed
Deploy Supabase Migrations to Production / migrate (push) Has been cancelled
* Add `hack_patcher_patches` table

* Implement patcher version server actions

* Use first curated patch as default when custom patcher list is active

* Allow saving custom patcher lists with unpublished patch auto-publish

* Keep custom patcher list consistent across archive and new uploads

* Add creator UI for Latest vs Custom patcher version settings

* Add patch version picker to hack page downloader

* Add custom public version names for Custom patcher mode

* Fix direct patch download consistency between Latest vs Custom modes

* Consolidate download and patch to one button press

* Fix rom ready for patching checks

* Fix Select ROM pop-in while base roms loading

* Tighten patcher patches db insertion

* Harden getSignedPatchUrl permission checks

* Fix not using selected patch's filename

* Acknowledge Custom patcher setting in HackPatchForm

* Update types/db.ts

* Refresh discover cache on patch published

* Add migration ordering check to ci.yaml

* Fix new migrations ordering
2026-07-10 22:42:51 -06:00
Jared Schoeny
6e41bb99f8 Label new tags for creators + tag categories migration fix (#64)
Some checks are pending
Deploy Supabase Migrations to Production / migrate (push) Waiting to run
* Add ability to see new tags since last update

* Fix some bugs and edge cases

* Add migration fix to appease ci
2026-07-09 23:35:10 -06:00
jschoeny
456832aad3 Add optional verification contact field 2026-01-15 19:21:01 -10:00
Jared Schoeny
1db1367a84 Allow admin marking profile as verified 2025-12-26 13:28:50 -10:00
Jared Schoeny
43d2530ce2 Update tag categories 2025-12-24 00:56:44 -10:00
Jared Schoeny
2af8752b1d Add patches_download_permission to hacks table 2025-12-23 23:17:43 -10:00
Jared Schoeny
c220bbf98e Add db migration for more hack features
(like completion status, rejection, and patch groups)
2025-12-23 23:09:43 -10:00
jtb9
f627a24a1b feat-extra-indexes-for-performance: a few indexes I think would help (#17) 2025-12-23 22:04:53 -10:00
Jared Schoeny
bc398fa236 Add columns to patches db table 2025-12-09 23:55:55 -10:00
Jared Schoeny
ef55c0a40d Fix permissions issues with archivers and archive hacks 2025-12-07 00:00:53 -10:00
Jared Schoeny
549c59246b Change default archive behavior to allow patches 2025-12-05 23:36:17 -10:00
Jared Schoeny
b3d43e4e50 Add is_archiver db helper function 2025-12-02 00:13:33 -10:00
Jared Schoeny
970491cb85 Allow hack tags to be reordered 2025-11-28 20:26:09 -10:00
Jared Schoeny
f33c176d41 Pull latest changes from remote database 2025-11-28 18:26:50 -10:00
Jared Schoeny
d91a25eae8 Add hack_team table and original_author column 2025-11-07 00:42:05 -10:00
Jared Schoeny
662527d87e Pull latest changes from remote database 2025-10-31 11:11:22 -10:00
Jared Schoeny
32d5af3c8e Add proper download counting functionality 2025-10-24 14:05:18 -10:00
Jared Schoeny
9287ddbace Drop cover-position constraint to fix race condition bug 2025-10-24 01:31:26 -10:00
Jared Schoeny
7e66bb9e15 Add category to tags table 2025-10-21 13:48:24 -10:00
Jared Schoeny
0ac0be342d Implement supabase custom claims 2025-10-11 12:39:07 -10:00
Jared Schoeny
b78e507578 Remove old author column from hacks table 2025-10-11 12:36:09 -10:00
Jared Schoeny
d854d56ff8 Remove old covers and tags arrays from db 2025-10-11 12:02:32 -10:00
Jared Schoeny
eb87506640 Get latest supabase migration and types 2025-10-11 11:01:00 -10:00
Jared Schoeny
210a987a45 Implement Supabase Auth with auth pages 2025-10-08 16:04:55 -10:00