Commit Graph

112 Commits

Author SHA1 Message Date
4d8bc848e1 feat: features as GitHub Issues style with comments/discussion, status filter 2026-07-14 03:25:50 +08:00
f277711082 docs: README + optimize auth getSecret, features id fix, token error msg 2026-07-14 03:19:36 +08:00
4913984391 feat: poll groups/servers, timed polls, features sort+filter by group 2026-07-14 03:17:13 +08:00
d61ad2109f refactor: remove polls+features, move to standalone mc-vote repo 2026-07-14 03:11:26 +08:00
3d7393817c fix: polls /active route order, features redundant auth check 2026-07-14 03:03:56 +08:00
ee2f33c61f feat: feature voting (PCL-style), poll owner edit/delete, blind polls for all 2026-07-14 01:17:56 +08:00
74974864cd fix: no revote, blind result after voting, admin 1.5 vote weight 2026-07-13 22:01:03 +08:00
116fe89ac8 feat: poll/voting system with live results and bar charts 2026-07-13 21:37:16 +08:00
eed4591059 security: timing-safe API key, SSRF webhook guard, API no-cache, Referrer-Policy 2026-07-13 19:49:44 +08:00
bc16833a57 feat: SVG image captcha with noise and color distortion 2026-07-13 18:33:31 +08:00
befd51dbd5 fix: prevent username/email enumeration via registration error messages 2026-07-13 18:29:32 +08:00
b24f8cd74d fix: critical - external POST parameter count mismatch (11 vs 10) 2026-07-13 18:26:49 +08:00
8d9e154ce1 fix: restrict PUT /tickets to admin's own claims (enforce claim system) 2026-07-13 18:19:28 +08:00
2a18b4b1a8 perf: cache config.json reads by mtime, reduce sync I/O 2026-07-13 04:18:52 +08:00
4f4df7e479 fix: backend+frontend full audit - 15 bugs fixed across all files 2026-07-13 04:07:18 +08:00
532efb962f fix: HIGH+MEDIUM bugs from full audit - listen error, JWT, upload, mailer, webhook 2026-07-13 03:49:02 +08:00
7c03fe7635 fix: external register verify token mismatch, add type validation 2026-07-13 03:36:53 +08:00
a51e841fc9 refactor: English subcommands, plugin login/track redesign, clean external API routes 2026-07-13 03:35:13 +08:00
2a5c25f41c refactor: unified /report command with login/register/track, external auth endpoints 2026-07-13 03:25:39 +08:00
de5a46f392 feat: Paper plugin + external API POST endpoint 2026-07-13 01:28:33 +08:00
ea3cd67e02 feat: external API for Java server integration with dedicated key 2026-07-13 01:24:03 +08:00
8ae02dd115 fix: add appealing to active_count, limit check, export processing count 2026-07-12 23:28:52 +08:00
728a4c46f1 fix: keep top bar visible in admin mode too 2026-07-12 21:57:45 +08:00
6f66b854b3 fix: add logout text label in top bar 2026-07-12 21:57:22 +08:00
650a65e347 fix: hide top bar in admin mode, sidebar is the primary nav 2026-07-12 21:28:20 +08:00
83398d1fab feat: quick nav buttons in top bar when logged in 2026-07-12 21:24:49 +08:00
a9d85b2d07 fix: top bar shows username+logout when logged in, not blank 2026-07-12 21:23:16 +08:00
531d2a6e26 fix: expose all page objects to window for inline onclick handlers 2026-07-12 21:16:05 +08:00
6fa1a65843 fix: admin cant view admin_complaint/result_appeal via URL, appeal close also closes parent 2026-07-12 21:02:21 +08:00
f87411b3b4 feat: auto-close resolved/rejected after 7 days, closed only owner can modify 2026-07-12 18:15:10 +08:00
33078855cb feat: appealing status, auto-close parent on appeal resolved, closed=final 2026-07-12 17:42:42 +08:00
bcaeb78469 fix: unclaimed page show reason for result_appeal type 2026-07-12 17:35:47 +08:00
0fd004dd84 fix: result_appeal also uses appeal display logic in ticket detail 2026-07-12 17:35:23 +08:00
93382773e6 fix: add result_appeal badge CSS and export label 2026-07-12 17:34:58 +08:00
7bd23b6bcf fix: result_appeal had wrong respContent label 2026-07-12 17:34:02 +08:00
10b6ff94ed feat: admin complaint (owner only) + result appeal (one per ticket, owner only) 2026-07-12 15:19:09 +08:00
6657c05dec fix: add escJs for JS string escaping in onclick attributes, apply to users/templates/notifications 2026-07-12 13:09:52 +08:00
da5aa09421 fix: escape single quotes in U.esc to prevent onclick attribute injection 2026-07-12 13:09:10 +08:00
ea7a3c42be fix: escape notification name/url in edit modal to prevent HTML injection 2026-07-12 13:08:45 +08:00
34e821ff1d fix: canClaim logic - must be unassigned AND pending, not OR 2026-07-12 13:07:31 +08:00
c69ad2c36e fix: show appeal reason in ticket detail, correct description labels 2026-07-12 13:07:09 +08:00
4e66db0406 fix: dashboard uses Auth.isOwner for export endpoint, admin was getting 403 2026-07-12 13:06:36 +08:00
29356bd530 fix: prevent $ interpolation in renderTemplate replacement 2026-07-12 13:04:58 +08:00
de1bca9d8a fix: client-side file size limit 20→50MB to match server 2026-07-12 13:03:46 +08:00
3ec9e80e0d fix: remove fragile setTimeout in confirm, bind handlers directly 2026-07-12 13:03:02 +08:00
62eeb61a71 fix: remove redundant min-height:100vh causing extra scrollbars in flex layout 2026-07-12 13:01:43 +08:00
82c2671149 fix: loadFooter only for admin, only once per session 2026-07-12 04:21:26 +08:00
5dd0db76be fix: add UNIQUE on email, check dup email in profile update, generic error messages in auth route 2026-07-12 04:20:56 +08:00
f2fec8e609 fix: loadFooter after login, escape user-info, error handling on render 2026-07-12 03:16:02 +08:00
58df6c5268 fix: flexbox body layout for proper sticky footer, no scrollbar on public pages 2026-07-12 02:44:32 +08:00