Commit Graph
32 Commits
Author SHA1 Message Date
mizorewww 83ac3f00ae feat: add card rotation, customer lookup, and concurrent eligibility checks
Add encrypted card pool management, persisted card and outbound rotation, and per-card decline cooldowns. Improve customer and redemption-code lookup, recovery controls, and filtering; rebuild frontend assets and refresh mock screenshots.

Give read-only eligibility checks four independent slots so payment processing no longer blocks them. Cover concurrency, slot cleanup, card rotation, and lookup behavior with tests.
2026-10-04 11:44:38 +08:00
mizorewww 92f09423c3 feat: add payment node cooldown and safe network retries 2026-10-04 01:50:08 +08:00
mizorewww 7493a72941 feat: add order recovery and per-order payment proxy pools
Add customer code lookup, single-order and batch recovery, and verified replacement checkout links with preserved payment evidence.

Add payment pause controls, persisted per-order outbound selection, proxy diagnostics, admin status, documentation, tests, and rebuilt frontend assets.
2026-10-03 21:59:14 +08:00
mizorewww 56c606ca40 feat: add pre-redemption eligibility check
POST /api/check runs the read-only X gifting-eligibility query for
a username under the shared work semaphore with its own 8/min rate
bucket, so visitors can verify their account before redeeming. The
redeem page gains an advisory check button with loading and result
states.
2026-10-03 17:29:32 +08:00
mizorewww a9589a3867 feat: extend filter expressions with NOT, inequality, and more fields
Add stackable complement operators (not/!/非), per-condition
inequality (status!=active, clickable = / ≠ toggle on canvas
tokens), and months/username conditions with - for empty values.
The palette gains duration and account groups, and full-width
operator punctuation is normalized.
2026-10-03 17:29:31 +08:00
mizorewww 99876953f9 feat: rebuild the filter as a palette token builder
The expression renders as deletable rounded-rectangle tokens on a
canvas, composed from a guarded palette of status/folder/logic
buttons, with a raw-text mode for power users. Guards prevent
invalid sequences, mid-deletions explain what broke and how to
repair it, full-width punctuation is normalized, and all actions
are announced to screen readers.
2026-10-03 16:55:57 +08:00
mizorewww a4f37555d6 feat: add client-side expression filter to the codes table
Compose folder and status conditions with and/or/parentheses in the
admin UI (typed or assembled from helper chips). In filter mode all
pages are fetched and matched client-side with local pagination, so
no backend changes are needed. Invalid expressions show precise
Chinese errors without fetching.
2026-10-03 14:16:48 +08:00
mizorewww f5f80b7d42 feat: add copyright and GitHub link footer to both pages 2026-10-03 13:13:13 +08:00
mizorewww b0ce2a249c feat: make the Stripe catalog operator-configurable
Move the hardcoded merchant account, product IDs, amounts and
currency into an encrypted catalog vault record read per checkout
flow. The setup wizard offers the X Premium defaults (X's public
gifting identifiers) or a fully custom catalog, put --name catalog
updates it, and status validates it. Tests use fake catalog
fixtures instead of real identifiers.
2026-10-03 12:48:46 +08:00
mizorewww 1a0aaa3dc6 feat: redesign stats dashboard charts for readability
Replace the cramped 90-bar grouped activity chart with three
single-series small-multiple strips (created, redeemed, succeeded),
give plan and review-stage bars proper height with legends and
percentage labels, and lay the summary cards out 3x2 on desktop.
2026-10-03 12:48:45 +08:00
mizorewww a8e7565448 fix(proxy): ignore services, endpoints and experimental sections
A pasted sing-box config carrying services (api/ssm-api), endpoints
(wireguard/tailscale), or experimental controllers (clash/v2ray/debug)
could bind non-loopback listeners or alter host networking once the
full include registries are enabled. Strip those sections so the
proxy record can only forward traffic; outbounds, route and dns still
pass through. Align the README outbound list (dns outbound was
removed in sing-box 1.12) and document the stripped sections.
2026-10-03 12:09:37 +08:00
mizorewww a15e6b5537 feat(proxy): accept any sing-box outbound including direct
Register the full sing-box include registries instead of the
anytls-only outbound registry so the vault proxy record may use any
core outbound type (direct, socks, http, shadowsocks, vmess, vless,
trojan, anytls, shadowtls, snell, ssh, tor, block, dns, selector or
urltest) plus route and dns sections. Reject configs without
outbounds early. The forced loopback mixed inbound and disabled log
are unchanged.
2026-10-03 11:54:31 +08:00
mizorewww a31de399ad feat: add admin statistics dashboard and polling resume
Add GET /api/admin/stats aggregating code counts, redemption and
success rates, per-plan totals, a 30-day activity series, and review
stage distribution. Render a collapsible stats panel with summary
cards and an accessible SVG bar chart on the admin page, show total
count and pages in pagination, and let users resume status polling
after the 5-minute timeout without re-redeeming.
2026-10-03 11:38:34 +08:00
mizorewww 7162039c6d feat: resume unsubmitted review orders through explicit user action 2026-10-03 10:53:39 +08:00
mizorewww ab1096455c fix: retry transient X query failures and preserve encrypted diagnostics 2026-10-03 10:53:39 +08:00
mizorewww e422656687 fix: accept single-letter Stripe checkout routes with strict session validation 2026-10-03 10:53:38 +08:00
mizorewww cf2a058e77 fix: reserve batch navigation height to prevent loading layout shifts 2026-10-02 19:28:36 +08:00
mizorewww ba162cb7d1 fix: use batch folders and explicit icon actions with row copying 2026-10-02 19:26:31 +08:00
mizorewww 1f9c1060cc fix: group codes by batch and retain encrypted codes for copying 2026-10-02 19:25:41 +08:00
mizorewww c06fbe466d feat: manage redemption folders from the admin dashboard 2026-10-02 19:15:18 +08:00
mizorewww 62d9e80dd5 feat: persist redemption folders and support atomic classification 2026-10-02 19:08:11 +08:00
mizorewww 07820c8f48 feat: copy newly generated redemption codes with one click 2026-10-02 19:07:26 +08:00
mizorewww abba32850c fix: keep card position stable when switching appearance 2026-10-02 19:06:22 +08:00
mizorewww 2cc8d8acde fix: centralize theme colors and use neutral gray surfaces 2026-10-02 19:04:08 +08:00
mizorewww b4b9d2a36d feat: migrate redemption and admin UI to themed React and MUI 2026-10-02 19:02:21 +08:00
mizorewww 17c1ff34de Recover transient prepayment failures and reconcile pending gifts automatically 2026-10-02 18:27:58 +08:00
mizorewww a70168a441 Preserve gift creation failures and distinguish unsubmitted payments 2026-10-02 18:19:24 +08:00
mizorewww 33d4ec58d7 Remove redemption page header and footer 2026-10-02 17:19:02 +08:00
mizorewww ba271c7da2 Reconcile completed Stripe gifts and show real redemption progress 2026-10-02 17:07:22 +08:00
mizorewww 0c12c5b8d7 Archive verified canceled checkouts and prepare user redemption trial 2026-10-02 16:46:54 +08:00
mizorewww 0917e47bc0 Fix Stripe save-option rejection and persist payment diagnostics and billing address 2026-10-02 15:51:51 +08:00
mizorewww ca14496cfc Add guarded X gift CLI and paused redemption site with admin code management 2026-10-02 15:30:51 +08:00