2025-09-19 - 2026-09-19

Overview

184 Active Pull Requests
18 Active Issues
Excluding merges, 1 author has pushed 1 commit to main and 268 commits to all branches. On main, 41 files have changed and there have been 4195 additions and 0 deletions.

184 Pull requests merged by 2 users

Merged #202 chore(tools): delete the cliloc converter the Asset Bridge replaced (Asset Bridge cutover, 2 of 5) 2026-09-15 10:20:32 +00:00

Merged #201 chore(tools): delete the cliloc converter the Asset Bridge replaced (Phase 2) 2026-09-10 16:20:27 +00:00

Merged #199 feat(events): the Event System — core (Phase 16b cutover, 2 of 6) 2026-09-10 00:43:49 +00:00

Merged #200 fix(events): midnight in an announcement is 12:00 am on the Node we ship 2026-09-10 00:28:05 +00:00

Merged #198 fix(events): the public calendar, a stranded revert, and three dropped facts (Phase 16a) 2026-09-09 13:47:27 +00:00

Merged #197 fix(events): carry a module's own account of a successful step 2026-09-09 00:22:39 +00:00

Merged #196 feat(events): the public calendar, event pages and participation history (Phase 14a) 2026-09-08 17:04:55 +00:00

Merged #195 feat(events): the authoring UI proper (Phase 13) 2026-09-07 22:12:47 +00:00

Merged #194 feat(events): targeted leases, value sets and searchable sources (Phase 12b) 2026-09-07 16:22:46 +00:00

Merged #193 fix(events): give a lease's ledger row a reconcile path (Phase 11b) 2026-09-05 04:10:51 +00:00

Merged #192 feat(events): the integrations — lifecycle triggers, participants, results (Phase 10) 2026-09-04 18:24:46 +00:00

Merged #191 fix(engagement): the trigger manifest was stale, and its check was crying wolf 2026-09-04 08:37:17 +00:00

Merged #190 feat(events): the resource ledger, leases and cleanup (Phase 8) 2026-09-04 05:12:21 +00:00

Merged #189 feat(events): open the event contract to modules (Phase 7) 2026-09-03 19:37:36 +00:00

Merged #188 feat(events): enablement, per-run caps and mayInvoke (Phase 6) 2026-09-03 14:36:44 +00:00

Merged #187 feat(events): conditions, phase advancement and the diagnosis panel (Phase 5) 2026-09-03 03:26:41 +00:00

Merged #186 feat(events): schedule, recurrence and the calendar (Phase 4) 2026-09-03 01:58:08 +00:00

Merged #185 feat(events): the minimal admin surface (Phase 3) 2026-09-02 15:47:33 +00:00

Merged #184 feat(events): the runner (Phase 2) 2026-09-02 11:35:24 +00:00

Merged #183 feat(events): schema, CRUD and the core action registry (Phase 1) 2026-09-02 04:38:56 +00:00

Merged #182 feat(engagement): retention — three sweeps and one recorded refusal (Phase 14) 2026-09-01 20:57:09 +00:00

Merged #181 fix(engagement): claim the seed guard atomically, and let a rule name a digest body 2026-09-01 19:40:00 +00:00

Merged #180 feat(engagement): the engagement system — cutover 3 of 7 (edgemain) 2026-09-01 13:56:56 +00:00

Merged #179 fix(engagement): two defects the Phase 11b live walk found in core 2026-09-01 12:32:31 +00:00

Merged #178 feat(engagement): let a module ship its own templates and rules (Phase 11b) 2026-09-01 06:35:36 +00:00

Merged #177 feat(engagement): the admin ceiling and core's news.post emitter (Phase 11a) 2026-09-01 05:05:58 +00:00

Merged #176 feat(engagement): deliverability — suppression, bounces and the verification gate (Phase 9) 2026-08-31 15:52:50 +00:00

Merged #175 feat(engagement): the in-app channel, core and web (engagement Phase 7) 2026-08-31 07:22:27 +00:00

Merged #174 feat(engagement): the email channel on the engine, and the Teams migration (engagement Phase 6) 2026-08-31 06:07:17 +00:00

Merged #173 feat(engagement): the template editor, the trigger catalog and the send log (engagement Phase 5b) 2026-08-29 23:37:42 +00:00

Merged #172 feat(engagement): templates — the email block family, renderer and seeded set (engagement Phase 5a) 2026-08-29 18:14:47 +00:00

Merged #171 feat(engagement): Admin → Engagement → Rules and Audiences (engagement Phase 4b) 2026-08-29 17:28:56 +00:00

Merged #170 feat(engagement): the rules engine, cooldowns and outbox (engagement Phase 4a) 2026-08-29 13:24:16 +00:00

Merged #169 feat(notifications): per-channel preferences and the delivery-channel registry (engagement Phase 3) 2026-08-29 12:12:03 +00:00

Merged #168 feat(modules): event triggers, audiences and the ceiling lattice (engagement Phase 2) 2026-08-29 11:48:25 +00:00

Merged #167 feat(auth): unique, changeable, verifiable email addresses (engagement Phase 1b) 2026-08-29 07:08:46 +00:00

Merged #166 refactor(api): collapse /admin/account and /player/account onto /auth/me/account 2026-08-29 05:54:28 +00:00

Merged #165 feat(email): engagement Phase 1 — remove Gmail OAuth2, SMTP behind a transport registry 2026-08-29 02:09:46 +00:00

Merged #164 fix(swagger): hoist the one inline predicate that makes the generator run away 2026-08-29 02:09:29 +00:00

Merged #163 fix(env): the documented Compose deploy could not boot 2026-08-24 16:31:14 +00:00

Merged #162 fix(admin): style the Teams admin screen with the site's own classes 2026-08-19 19:35:09 +00:00

Merged #161 feat(teams): Teams as a platform primitive — MODULE_API 1.6.0 (Teams cutover 4/6) 2026-08-19 08:57:13 +00:00

Merged #160 fix(modules): core offers a contribution, never a slot name 2026-08-19 06:19:41 +00:00

Merged #159 feat(teams): phase 9 — one voice channel per Team, granted by a role 2026-08-19 05:21:18 +00:00

Merged #158 feat(teams): phase 8 — the notifications bridge, and the gate §7.2 could not check 2026-08-19 01:33:15 +00:00

Merged #157 feat(teams): phase 7 — the slash-command seam, and the bot's first tests 2026-08-19 00:16:31 +00:00

Merged #156 feat(teams): phase 6 — notifications, and the email sink the web never had 2026-08-18 23:10:22 +00:00

Merged #155 feat(teams): phase 5 — Forum 5b, discussion + moderation + reports 2026-08-18 18:36:52 +00:00

Merged #154 fix(teams): four defects the live rig found in the phase 4 forum 2026-08-18 15:21:57 +00:00

Merged #153 feat(teams): phase 4 — the forum access model, announcements and the operator's controls 2026-08-18 14:18:11 +00:00

Merged #152 feat(teams): the activity feed, the roster projection, and the inverted slot 2026-08-18 02:11:08 +00:00

Merged #151 feat(teams): Team core — the reconciler, the four authority paths, and the impersonation controls 2026-08-17 22:20:34 +00:00

Merged #150 feat(modules)!: the module system cutover — a game-agnostic core reaches main 2026-08-12 23:10:31 +00:00

Merged #149 chore(modules): declare the UO module for the UOMysticmoon instance 2026-08-12 22:57:44 +00:00

Merged #148 feat(modules): PublicLayout takes a shell, MODULE_API_VERSION 1.5.0 2026-08-12 19:26:44 +00:00

Merged #147 chore(modules): bump MODULE_API_VERSION to 1.4.0 — the sidecar rule 2026-08-12 14:41:29 +00:00

Merged #146 fix(modules): stop a module before purging its tables 2026-08-12 14:18:50 +00:00

Merged #145 test(login): stop the backoff-guard test racing its own one-second lock 2026-08-12 13:39:52 +00:00

Merged #144 feat(modules): the declarative Docker path (phase 4, slice 3) 2026-08-12 13:02:25 +00:00

Merged #143 feat(admin): the Modules screen (phase 4, slice 2) 2026-08-12 08:52:25 +00:00

Merged #142 feat(modules): install, uninstall, purge and restart (phase 4, slice 1) 2026-08-12 08:31:40 +00:00

Merged #141 feat(modules): merge module OpenAPI fragments into /api/docs.json (phase 3, slice 5) 2026-08-12 04:12:10 +00:00

Merged #140 refactor(modules)!: de-UO core's copy, and enforce it (phase 3, slice 4) 2026-08-12 03:02:40 +00:00

Merged #139 refactor(client): delete the UO client half (phase 3, slice 3) 2026-08-12 00:35:53 +00:00

Merged #138 feat(modules): client extension slots (phase 3, slice 2) 2026-08-11 21:53:44 +00:00

Merged #137 refactor(modules)!: move the UO server half out to module-uo (phase 3, slice 1) 2026-08-11 21:06:25 +00:00

Merged #136 feat(modules): mount the modules directory as a volume (phase 2, PR 9) 2026-08-11 05:58:20 +00:00

Merged #135 feat(modules): interleave module nav items and derive moderator confinement (phase 2, PR 8) 2026-08-11 05:29:42 +00:00

Merged #134 feat(modules): the client registry, window.__rg and the chunk's script injection 2026-08-11 04:02:01 +00:00

Merged #133 feat(modules): publish the installed-module list at /api/v1/public/modules 2026-08-11 03:16:52 +00:00

Merged #132 feat(modules): boot/shutdown hook dispatch and the installed_modules reconcile 2026-08-11 02:34:49 +00:00

Merged #131 feat(modules): the three de-entanglement registries, with core as the registrant 2026-08-10 23:18:59 +00:00

Merged #130 feat(modules): replay module schema fragments after core's (phase 2, PR 3) 2026-08-10 22:06:46 +00:00

Merged #129 feat(modules): the filesystem module loader (phase 2, PR 2) 2026-08-10 21:31:26 +00:00

Merged #128 feat(modules): installed_modules and the module state machine (phase 2, PR 1) 2026-08-10 19:05:00 +00:00

Merged #127 ci: run PR checks on pull requests into edge as well as main 2026-08-10 07:42:16 +00:00

Merged #126 feat(theming): admin-configurable theme, brand assets and navigation (edge → main) 2026-08-08 06:19:37 +00:00

Merged #125 feat(theming): dropdown sections and added links in the public header (phase 10) 2026-08-08 06:07:17 +00:00

Merged #124 feat(theming): nav wiring and the admin nav builder (phases 6-8) 2026-08-08 05:11:35 +00:00

Merged #123 feat(theming): brand-asset overrides and a cached, settings-aware HTML shell (phase 5) 2026-08-08 02:12:48 +00:00

Merged #122 feat(theming): server-resolved theme engine and admin appearance UI (phases 3-4) 2026-08-08 00:22:33 +00:00

Merged #121 feat(theming): settings-store, nav merge util and radius tokens (phases 0-2) 2026-08-07 23:25:27 +00:00

Merged #120 docs(readme): say how to get a sidecar before explaining how it is used 2026-08-07 21:31:19 +00:00

Merged #118 feat(shard)!: Protocol 3.0 cutover — visibility framework, spawn atlas, marketplace 2026-08-01 07:19:35 +00:00

Merged #119 fix(shard): answer with the instance name when the shard is unnamed 2026-08-01 06:04:23 +00:00

Merged #117 feat(shard)!: declare wire protocol 3 2026-07-30 03:02:26 +00:00

Merged #116 feat(shard): the player-vendor marketplace 2026-07-29 20:03:24 +00:00

Merged #115 feat(shard): resolve cliloc names for items and reward titles 2026-07-29 11:58:56 +00:00

Merged #114 feat(shard): ingest points.board and publish the leaderboards 2026-07-29 07:52:54 +00:00

Merged #113 feat(atlas): serve the spawn atlas and give operators a panel for it 2026-07-29 00:53:23 +00:00

Merged #112 feat(atlas): derive a spawn atlas from the shard tree on every boot 2026-07-28 21:51:30 +00:00

Merged #111 feat(shard): ingest world.ruleset and publish it at /site/rules 2026-07-28 20:50:37 +00:00

Merged #110 fix(shard): enforce visibility on the REST reads that bypassed it 2026-07-28 15:58:31 +00:00

Merged #109 feat(shard): admin-configurable visibility for every shard surface 2026-07-28 15:08:14 +00:00

Merged #108 feat(auth): honor and establish trusted devices on the SSO login paths 2026-07-28 06:13:00 +00:00

Merged #107 fix(shard): stop an undecryptable uo-link token 500ing every live-shard route 2026-07-28 05:33:35 +00:00

Merged #106 refactor(server): split public, player and residual auth into capability routers (PR 5) 2026-07-28 02:04:59 +00:00

Merged #105 refactor(server): split admin shard, uo-link, email, discord-bot, settings and dashboard into capability routers (PR 4) 2026-07-28 01:33:48 +00:00

Merged #104 refactor(server): split admin posts, uploads, wiki and pages into capability routers (PR 3) 2026-07-28 00:36:29 +00:00

Merged #103 refactor(server): split admin moderation, bot-activity and activity into capability routers (PR 2) 2026-07-28 00:12:04 +00:00

Merged #101 build(swagger): normalize and sort generated OpenAPI path keys 2026-07-27 21:00:59 +00:00

Merged #102 refactor(server): split admin users, account, invites and auth providers into capability routers 2026-07-27 21:00:07 +00:00

Merged #100 feat(security): soak the tightened CSP on report-only, with a same-origin sink 2026-07-27 20:31:33 +00:00

Merged #99 chore(server): freeze the URL surface with a generated route manifest (PR 0) 2026-07-27 20:07:32 +00:00

Merged #98 ci(docs): auto-sync PROJECT_TREE.md to the docs repo on push to main 2026-07-22 21:31:50 +00:00

Merged #97 fix(moderation): windowValue must not fall back to the 30d total on a null column 2026-07-22 18:15:48 +00:00

Merged #96 fix(admin): restore digit match in discordId route validation 2026-07-22 18:11:44 +00:00

Merged #95 fix(ntfy): publish ntfy host port so the external reverse proxy can reach it 2026-07-22 09:08:15 +00:00

Merged #94 fix(player): open the player self-service surface to staff 2026-07-22 08:36:15 +00:00

Merged #93 feat(auth): trusted devices, recovery codes, and admin MFA management 2026-07-22 05:09:06 +00:00

Merged #92 docs(readme): add architecture mermaid diagram 2026-07-22 02:17:19 +00:00

Merged #91 chore(dev): stub OAuth IdP tooling for local mobile SSO testing 2026-07-21 21:43:01 +00:00

Merged #90 fix(footer): point Shard Status link to /site/shard 2026-07-21 19:10:50 +00:00

Merged #89 refactor(server): dedupe shard-state shaping, upsert builder, and config DB models 2026-07-21 17:49:33 +00:00

Merged #88 chore(quality): resolve SonarQube code smells across website 2026-07-21 14:28:00 +00:00

Merged #87 ci(sonarqube): populate the "Unit Tests" measure via a test-execution report 2026-07-21 06:26:43 +00:00

Merged #86 test: meaningful unit tests for server models/controllers + client logic 2026-07-21 05:55:49 +00:00

Merged #85 ci(sonarqube): generate and report server test coverage 2026-07-21 04:57:08 +00:00

Merged #84 fix(security): add SPA CSP, drop x-powered-by, strengthen dedupe hash 2026-07-21 04:13:43 +00:00

Merged #83 ci(sonarqube): non-blocking SonarQube analysis on push to main 2026-07-21 02:54:16 +00:00

Merged #82 fix(db): strip inline -- comments before splitting schema statements 2026-07-21 00:31:15 +00:00

Merged #81 feat(mobile-sso): serve assetlinks.json + App Links redirect allowlist 2026-07-20 23:57:55 +00:00

Merged #80 feat(auth): native SSO authorization bridge for the Android app (M9 Part 1) 2026-07-20 22:27:24 +00:00

Merged #79 feat(settings): surface push.ntfyUrl in /public/settings for the app 2026-07-20 20:55:58 +00:00

Merged #78 feat(push): M7 backend — opt-in push notifications via self-hosted ntfy 2026-07-20 15:28:01 +00:00

Merged #77 feat(public): version/health surfacing + typed brand block 2026-07-19 17:38:22 +00:00

Merged #76 feat(auth): role-agnostic self-service surface under /auth/me 2026-07-19 16:34:42 +00:00

Merged #75 feat(auth): self-service password reset (backend + web) 2026-07-19 09:36:37 +00:00

Merged #74 Moderation appeals (Phase 6c) + Discord auto-reversal (Phase 6d) 2026-07-19 05:18:20 +00:00

Merged #73 docs: generalize deployment section to any reverse proxy 2026-07-19 03:20:03 +00:00

Merged #72 fix(shard): restrict staff in-game location to admins/moderators 2026-07-19 02:39:25 +00:00

Merged #71 chore: add open-source governance files (GPLv3 + contributing docs) 2026-07-19 00:31:05 +00:00

Merged #70 fix(brand): link "Runic Gateway" footer badge to Gitea org 2026-07-18 23:36:48 +00:00

Merged #69 feat(brand): default emblem — favicon, hero medallion, footer credit 2026-07-18 22:20:29 +00:00

Merged #68 feat(brand): BRAND_* env scheme — instance branding without a rebuild 2026-07-18 07:40:07 +00:00

Merged #67 docs: move design docs to RunicGateway/docs 2026-07-18 05:51:32 +00:00

Merged #66 chore(org): retarget org paths to RunicGateway 2026-07-18 05:06:46 +00:00

Merged #65 Protocol 2.0/2.1 uo-link integration — boards, cross-links, news gump, account provisioning 2026-07-18 02:34:27 +00:00

Merged #64 ci(deploy): correct deploy runner label to uom-deploy-runner 2026-07-17 10:52:02 +00:00

Merged #63 ci(deploy): auto-deploy prod stack after image build on merge to main 2026-07-17 10:29:06 +00:00

Merged #62 fix(bot): retry boot-time config fetch so bot self-heals on cold start 2026-07-15 19:17:25 +00:00

Merged #61 fix(public): always show real hero + drop nav from landing page 2026-07-15 11:03:53 +00:00

Merged #58 feat(shard): admin write plane, help-page queue, and public champion board 2026-07-14 18:46:52 +00:00

Merged #57 ci: gate PRs into main on server tests + client build 2026-07-12 15:40:19 +00:00

Merged #56 feat(admin): view a user's shard footprint at /admin/users/:id 2026-07-12 14:42:01 +00:00

Merged #55 deploy: split build into docker-compose.dev.yml (prod compose pulls only) 2026-07-11 23:45:42 +00:00

Merged #54 deploy: pull prebuilt registry images in compose (IMAGE_TAG) + dev/prod split 2026-07-11 23:36:57 +00:00

Merged #53 ci: build & publish app + bot images to Gitea registry on merge 2026-07-11 23:01:05 +00:00

Merged #52 News post → town crier + Discord announcement pipeline 2026-07-11 21:58:34 +00:00

Merged #51 Homepage teaser: rich text editor 2026-07-11 16:09:53 +00:00

Merged #50 Frontend theme redo: player portal → Admin sidebar shell + stat-tile My Characters 2026-07-11 16:00:18 +00:00

Merged #49 uo-link: staff-only public presence + admin character access 2026-07-11 14:32:50 +00:00

Merged #47 CMS Page Builder (Wave 1): block-based Pages content type 2026-07-10 02:15:06 +00:00

Merged #46 Modernize email: Gmail OAuth2 sending + admin sidebar redesign 2026-07-08 03:33:44 +00:00

Merged #45 Redesign admin/staff sidebar: collapsible categories, icons, role-accurate nav 2026-07-08 02:56:18 +00:00

Merged #44 Gate /admin to staff roles; role-aware login redirects for players 2026-07-07 01:02:54 +00:00

Merged #43 Player accounts: self-service player role, registration, and portal 2026-07-06 20:29:45 +00:00

Merged #42 Moderation dashboard: staff dashboard, user history, notes, event capture (Phase 6a + 6b) 2026-07-05 20:51:40 +00:00

Merged #41 Fix bot container inheriting site PORT/LOG_FILE from shared .env 2026-07-05 05:40:31 +00:00

Merged #40 Audit and fix Swagger/OpenAPI accuracy; regenerate served spec 2026-07-05 04:33:38 +00:00

Merged #39 Enforce TOTP second factor on SSO login (#31) 2026-07-05 03:34:51 +00:00

Merged #38 Fix SSO flow-token / session type confusion (#32) 2026-07-05 02:56:33 +00:00

Merged #37 Implement web session/token revocation (#30) 2026-07-05 02:08:17 +00:00

Merged #36 Isolate internal bot-config route from the public listener (#33) 2026-07-04 22:50:08 +00:00

Merged #29 Add Discord bot: moderation, filters, scheduling, roles, invites, site integration 2026-07-04 21:19:43 +00:00

Merged #28 Hero editor: fullscreen landing, remove two-card row, quick links into hero 2026-07-04 02:55:52 +00:00

Merged #27 Add Swagger/OpenAPI API docs (swagger-ui + swagger-autogen) 2026-07-03 20:30:16 +00:00

Merged #26 Hero editor: scale text-block fonts with the resize handle (#25) 2026-07-03 20:01:52 +00:00

Merged #24 Add session abstraction, mobile bearer auth, and pluggable SSO (Google/Discord/OIDC) 2026-07-03 15:35:46 +00:00

Merged #23 Add Bot Activity admin panel: banned-IP view + recent events + emergency unban 2026-07-03 08:29:56 +00:00

Merged #22 Update README for today's security hardening and 2FA work 2026-07-03 06:09:56 +00:00

Merged #21 Fail fast when JWT_SECRET is missing in production (closes #14) 2026-07-03 05:58:18 +00:00

Merged #20 Make the hero Moon image configurable (src/alt), backwards-compatible 2026-07-03 04:45:26 +00:00

Merged #19 Admin login hardening: RBAC-safe controls, optional TOTP, bot-scoring + IP ban (closes #9) 2026-07-03 04:27:52 +00:00

Merged #18 Derive uploaded file extension from mimetype, not originalname (fixes #11) 2026-07-03 02:44:30 +00:00

Merged #17 Validate and uniqueness-check username on user update (fixes #13) 2026-07-03 02:39:44 +00:00

Merged #16 Re-validate JWT against the DB in isLoggedIn (fixes #12) 2026-07-03 02:32:08 +00:00

Merged #15 Enforce role-based authorization on admin-only routes (fixes #10) 2026-07-03 02:31:09 +00:00

Merged #8 Fix #6: larger RTE toolbar buttons + bigger, both-axis-scrolling editor 2026-06-30 18:49:24 +00:00

Merged #7 RTE Posts upgrade: TipTap rich-text editing + sanitization for posts 2026-06-30 18:34:04 +00:00

Merged #4 hero-feature 2026-06-28 14:22:43 +00:00

Merged #3 Wiki upgrade: rich-text editing, categories, drafts, links/backlinks, tags, search, revisions 2026-06-27 21:22:48 +00:00

Merged #2 Document full-stack setup; fix dev proxy; drop stray temp script 2026-06-27 07:24:26 +00:00

Merged #1 Frontend update 2026-06-27 02:55:48 +00:00

18 Issues closed from 3 users

Closed #35 [SECURITY AUDIT] Username enumeration via login timing side-channel (bcrypt runs only for existing users) 2026-08-04 19:03:19 +00:00

Closed #60 side ways scrolling section on hero page. 2026-08-04 19:02:24 +00:00

Closed #34 [SECURITY AUDIT] No Content-Security-Policy — stored-HTML XSS defense rests entirely on sanitization 2026-08-04 19:02:12 +00:00

Closed #59 hero page layout 2026-07-17 09:45:05 +00:00

Closed #48 Homepage Teaser 2026-07-11 16:09:54 +00:00

Closed #31 [SECURITY AUDIT] SSO login bypasses TOTP two-factor for accounts that have 2FA enabled 2026-07-05 03:34:52 +00:00

Closed #32 [SECURITY AUDIT] SSO flow token (sso_tx) validates as a session — token-type confusion in sessionFromDecoded 2026-07-05 02:56:34 +00:00

Closed #30 [SECURITY AUDIT] Session/token revocation is a non-functional stub — logout and password change do not invalidate existing JWTs 2026-07-05 02:08:18 +00:00

Closed #33 [SECURITY AUDIT] Decrypted Discord bot token served from an endpoint on the public API router, guarded only by a shared secret 2026-07-04 22:50:08 +00:00

Closed #25 On the front page/hero page 2026-07-03 20:01:52 +00:00

Closed #14 [Bug][Medium] Server boots with no JWT_SECRET (only a warning) 2026-07-03 05:58:18 +00:00

Closed #5 Hero button bug 2026-07-03 04:45:27 +00:00

Closed #9 Admin path security 2026-07-03 04:27:53 +00:00

Closed #11 [Security][High] Uploaded file extension is attacker-controlled → stored XSS 2026-07-03 02:44:30 +00:00

Closed #13 [Bug][Medium] username unvalidated and not uniqueness-checked on user update 2026-07-03 02:39:44 +00:00

Closed #12 [Security][Medium] Stale JWT: demoted/deleted users keep access until token expiry 2026-07-03 02:32:09 +00:00

Closed #10 [Security][High] No role-based authorization — editor role is never enforced 2026-07-03 02:31:09 +00:00

Closed #6 wiki editor. 2026-06-30 18:49:24 +00:00

18 Issues created by 0 users

Opened #5 Hero button bug 2026-06-29 23:21:13 +00:00

Opened #6 wiki editor. 2026-06-29 23:24:02 +00:00

Opened #9 Admin path security 2026-07-01 04:17:54 +00:00

Opened #10 [Security][High] No role-based authorization — editor role is never enforced 2026-07-02 01:20:44 +00:00

Opened #11 [Security][High] Uploaded file extension is attacker-controlled → stored XSS 2026-07-02 01:20:45 +00:00

Opened #12 [Security][Medium] Stale JWT: demoted/deleted users keep access until token expiry 2026-07-02 01:20:45 +00:00

Opened #13 [Bug][Medium] username unvalidated and not uniqueness-checked on user update 2026-07-02 01:20:46 +00:00

Opened #14 [Bug][Medium] Server boots with no JWT_SECRET (only a warning) 2026-07-02 01:20:46 +00:00

Opened #25 On the front page/hero page 2026-07-03 16:21:29 +00:00

Opened #30 [SECURITY AUDIT] Session/token revocation is a non-functional stub — logout and password change do not invalidate existing JWTs 2026-07-04 22:00:33 +00:00

Opened #31 [SECURITY AUDIT] SSO login bypasses TOTP two-factor for accounts that have 2FA enabled 2026-07-04 22:00:49 +00:00

Opened #32 [SECURITY AUDIT] SSO flow token (sso_tx) validates as a session — token-type confusion in sessionFromDecoded 2026-07-04 22:01:08 +00:00

Opened #33 [SECURITY AUDIT] Decrypted Discord bot token served from an endpoint on the public API router, guarded only by a shared secret 2026-07-04 22:01:30 +00:00

Opened #34 [SECURITY AUDIT] No Content-Security-Policy — stored-HTML XSS defense rests entirely on sanitization 2026-07-04 22:01:47 +00:00

Opened #35 [SECURITY AUDIT] Username enumeration via login timing side-channel (bcrypt runs only for existing users) 2026-07-04 22:02:02 +00:00

Opened #48 Homepage Teaser 2026-07-11 07:28:10 +00:00

Opened #59 hero page layout 2026-07-14 21:00:38 +00:00

Opened #60 side ways scrolling section on hero page. 2026-07-14 21:26:45 +00:00