a481248bc0Merge pull request 'feat(events): the minimal admin surface (Phase 3)' (#185) from feat/events-phase-3 into edgeColby Whitlock2026-09-02 15:47:31 +00:00
7b570c8ea1feat(events): the minimal admin surface (Phase 3)wtclaude2026-09-02 08:39:35 -05:00
2ba397eff7Merge pull request 'feat(events): the runner (Phase 2)' (#184) from feat/events-phase-2 into edgeColby Whitlock2026-09-02 11:35:22 +00:00
2e964cfeeefeat(events): the runner (Phase 2)wtclaude2026-09-02 06:32:24 -05:00
d88906e43cMerge pull request 'feat(events): schema, CRUD and the core action registry (Phase 1)' (#183) from feat/events-phase-1 into edgeColby Whitlock2026-09-02 04:38:54 +00:00
8e03497eb3feat(events): schema, CRUD and the core action registry (Phase 1)wtclaude2026-09-01 23:29:07 -05:00
6331b36c45Merge pull request 'feat(engagement): retention — three sweeps and one recorded refusal (Phase 14)' (#182) from feature/engagement-retention into mainColby Whitlock2026-09-01 20:57:06 +00:00
5779d15150feat(engagement): retention — three sweeps and one recorded refusalwtclaude2026-09-01 15:40:53 -05:00
e59a68c152Merge pull request 'fix(engagement): claim the seed guard atomically, and let a rule name a digest body' (#181) from fix/engagement-seed-claim-and-digest into mainColby Whitlock2026-09-01 19:39:58 +00:00
eec7dbf785fix(engagement): claim the seed guard atomically, and let a rule name a digest bodywtclaude2026-09-01 14:29:21 -05:00
66bb3b9a3fMerge pull request 'feat(engagement): the engagement system — cutover 3 of 7 (edge → main)' (#180) from edge into mainColby Whitlock2026-09-01 13:56:53 +00:00
52eac24d17Merge pull request 'fix(engagement): two defects the Phase 11b live walk found in core' (#179) from fix/engagement-live-walk-core into edgeColby Whitlock2026-09-01 12:32:29 +00:00
c8d45733b6fix(engagement): two defects the Phase 11b live walk found in coreClaude2026-09-01 07:12:09 -05:00
c3783f56f1Merge pull request 'feat(engagement): let a module ship its own templates and rules (Phase 11b)' (#178) from feature/engagement-module-seeds into edgeColby Whitlock2026-09-01 06:35:20 +00:00
40ab1ce8d2fix(modules): bump the CLIENT half of MODULE_API_VERSION to 1.9.0wtclaude2026-09-01 01:22:00 -05:00
0a9149a04ffix(engagement): a trigger-bound template may reference the unsubscribe linkwtclaude2026-09-01 01:07:16 -05:00
cfd1cb3c3cfeat(engagement): let a module ship its own templates and rules (Phase 11b)wtclaude2026-09-01 00:46:15 -05:00
81e0338a69Merge pull request 'feat(engagement): the admin ceiling and core's news.post emitter (Phase 11a)' (#177) from feature/engagement-uo-triggers into edgeColby Whitlock2026-09-01 05:05:56 +00:00
49a61fdafaMerge pull request 'feat(engagement): deliverability — suppression, bounces and the verification gate (Phase 9)' (#176) from feature/engagement-deliverability into edgeColby Whitlock2026-08-31 15:52:47 +00:00
c208543044feat(engagement): deliverability — suppression, bounces and the verification gatewtclaude2026-08-31 10:47:34 -05:00
87c4e71025Merge pull request 'feat(engagement): the in-app channel, core and web (engagement Phase 7)' (#175) from feature/engagement-inapp-channel into edgeColby Whitlock2026-08-31 07:22:24 +00:00
24a3cd85b3feat(engagement): the in-app channel, core and web (engagement Phase 7)wtclaude2026-08-31 02:07:10 -05:00
5168446c53Merge pull request 'feat(engagement): the email channel on the engine, and the Teams migration (engagement Phase 6)' (#174) from feature/engagement-email-channel into edgeColby Whitlock2026-08-31 06:07:14 +00:00
065bec7ad8feat(engagement): the email channel on the engine, and the Teams migration (engagement Phase 6)wtclaude2026-08-29 20:11:54 -05:00
e2dad3104fMerge pull request 'feat(engagement): the template editor, the trigger catalog and the send log (engagement Phase 5b)' (#173) from feature/engagement-template-editor into edgeColby Whitlock2026-08-29 23:37:39 +00:00
3f90070566feat(engagement): the template editor, the trigger catalog and the send log (engagement Phase 5b)wtclaude2026-08-29 18:13:57 -05:00
42b40fdec2Merge pull request 'feat(engagement): templates — the email block family, renderer and seeded set (engagement Phase 5a)' (#172) from feature/engagement-templates into edgeColby Whitlock2026-08-29 18:14:45 +00:00
12ff201ed5feat(engagement): templates — the email block family, renderer and seeded set (engagement Phase 5a)wtclaude2026-08-29 13:07:39 -05:00
1d7961e7a2Merge pull request 'feat(engagement): Admin → Engagement → Rules and Audiences (engagement Phase 4b)' (#171) from feature/engagement-rules-admin into edgeColby Whitlock2026-08-29 17:28:54 +00:00
3a7a08425cfix(engagement): the six defects the browser pass found (Phase 4b)wtclaude2026-08-29 12:26:29 -05:00
c2e4df5b3dMerge pull request 'refactor(api): collapse /admin/account and /player/account onto /auth/me/account' (#166) from refactor/collapse-account-surfaces into edgeColby Whitlock2026-08-29 05:54:26 +00:00
6e61146678refactor(api): collapse /admin/account and /player/account onto /auth/me/accountwtclaude2026-08-29 00:49:25 -05:00
f5aa32e0edMerge pull request 'feat(email): engagement Phase 1 — remove Gmail OAuth2, SMTP behind a transport registry' (#165) from feat/engagement-phase-1-smtp into edgeColby Whitlock2026-08-29 02:09:44 +00:00
b77e817fb1Merge pull request 'fix(swagger): hoist the one inline predicate that makes the generator run away' (#164) from fix/swagger-generator-runaway into edgeColby Whitlock2026-08-29 02:09:28 +00:00
c4ab8b9b9ddocs(email): SMTP setup, the three postures, and the upgrade noteClaude2026-08-28 20:54:04 -05:00
47c8b37d45feat(email): remove Gmail OAuth2, put SMTP behind a transport registryClaude2026-08-28 20:41:43 -05:00
e25e7ade80fix(swagger): hoist the one inline predicate that makes the generator run awayClaude2026-08-28 20:47:25 -05:00
3bca112502Merge pull request 'fix(env): the documented Compose deploy could not boot' (#163) from fix/env-example-secret-enc-key into mainColby Whitlock2026-08-24 16:31:12 +00:00
c43e092248fix(env): the documented Compose deploy could not bootwtclaude2026-08-24 11:19:49 -05:00
0f96a372cfMerge pull request 'fix(admin): style the Teams admin screen with the site's own classes' (#162) from fix/teams-admin-theming into mainColby Whitlock2026-08-19 19:35:00 +00:00
68f038f456fix(admin): style the Teams admin screen with the site's own classeswtclaude2026-08-19 14:03:01 -05:00
963d734dccMerge pull request 'feat(teams): Teams as a platform primitive — MODULE_API 1.6.0 (Teams cutover 4/6)' (#161) from edge into mainColby Whitlock2026-08-19 08:57:11 +00:00
48a3e33be4Merge pull request 'fix(modules): core offers a contribution, never a slot name' (#160) from feature/teams-slot-contributions into edgeColby Whitlock2026-08-19 06:19:38 +00:00
335d69d122fix(modules): core offers a contribution, never a slot namewtclaude2026-08-19 01:15:29 -05:00
9619fdf1e1Merge pull request 'feat(teams): phase 9 — one voice channel per Team, granted by a role' (#159) from feature/teams-phase9-voice-channels into edgeColby Whitlock2026-08-19 05:21:15 +00:00
f72c92ffbefix(teams): the two defects the phase 9 rig walk foundwtclaude2026-08-19 00:07:27 -05:00
61abb3ec89feat(teams): phase 9 — one voice channel per Team, granted by a rolewtclaude2026-08-18 23:49:28 -05:00
d1d56cf847Merge pull request 'feat(teams): phase 8 — the notifications bridge, and the gate §7.2 could not check' (#158) from feature/teams-phase8-notifications-bridge into edgeColby Whitlock2026-08-19 01:33:13 +00:00
11b4368b57feat(teams): phase 8 — the notifications bridge, and the gate §7.2 could not checkwtclaude2026-08-18 20:25:30 -05:00
46f43a5fd6Merge pull request 'feat(teams): phase 7 — the slash-command seam, and the bot's first tests' (#157) from feature/teams-phase7-slash-commands into edgeColby Whitlock2026-08-19 00:16:29 +00:00
aca4d23179fix(teams): a private answer has to be private, and the deferral decides thatClaude2026-08-18 19:08:12 -05:00
cecd72915ffeat(teams): the slash-command seam, and the first command through itClaude2026-08-18 18:53:34 -05:00
b1d3b87cd6Merge pull request 'feat(teams): phase 6 — notifications, and the email sink the web never had' (#156) from feature/teams-phase6-notifications into edgeColby Whitlock2026-08-18 23:10:20 +00:00
13312d7fc3fix(teams): make "replace the whole set" actually replace itwtclaude2026-08-18 18:01:59 -05:00
5fa88baa0atest(teams): the refusals, which is most of what a notification feature iswtclaude2026-08-18 14:35:23 -05:00
b458c1f46ffeat(teams): the web surface — a notifications screen that did not existwtclaude2026-08-18 14:35:08 -05:00
2a56cbf22afeat(teams): fire the four events, and the routes that configure themwtclaude2026-08-18 14:34:54 -05:00
686a214979feat(teams): email as the third sink, with a digest that keeps no queuewtclaude2026-08-18 14:34:38 -05:00
26c23bd603feat(teams): the notification core — four streams, and a recipient setwtclaude2026-08-18 14:34:24 -05:00
0467c71ea1Merge pull request 'feat(teams): phase 5 — Forum 5b, discussion + moderation + reports' (#155) from feature/teams-phase5-discussion into edgeColby Whitlock2026-08-18 18:36:50 +00:00
c970caee16fix(teams): let a post-moderation mistake reach the model that explains itwtclaude2026-08-18 13:25:21 -05:00
3f7e61af1cfeat(teams): the phase 5 surface — discussion, replies, reports, and two admin screenswtclaude2026-08-18 13:08:59 -05:00
128de0ff2etest(teams): phase 5's server surface, and the negative property under itwtclaude2026-08-18 12:58:15 -05:00
fff14848f1feat(moderation): member-raised abuse reports, to site staff onlywtclaude2026-08-18 12:51:42 -05:00
ae0d27cf27feat(teams): discussion threads, replies, the edit window and post moderationwtclaude2026-08-18 10:43:09 -05:00
763de66ebbMerge pull request 'fix(teams): four defects the live rig found in the phase 4 forum' (#154) from fix/teams-phase4-live-rig into edgeColby Whitlock2026-08-18 15:21:55 +00:00
5baada08effix(teams): four defects the live rig found in the forumwtclaude2026-08-18 09:54:05 -05:00
16e31de087Merge pull request 'feat(teams): phase 4 — the forum access model, announcements and the operator's controls' (#153) from feature/teams-phase4-forum-access into edgeColby Whitlock2026-08-18 14:18:08 +00:00
57286594e7test(teams): the four acceptance criteria, and regenerate the API artifactswtclaude2026-08-18 07:24:24 -05:00
cbb7339a3afeat(teams): the forum panel core fills, and the operator's controlswtclaude2026-08-18 07:24:24 -05:00
4ac353684afeat(teams): harden the upload path for an uploader who is not an adminwtclaude2026-08-18 07:24:02 -05:00
e27c368234feat(teams): the grant flow, announcements, and the routes behind both guardswtclaude2026-08-18 07:23:47 -05:00
fb70013adffeat(teams): the forum's own HTML profile, and core's image rendererwtclaude2026-08-18 07:23:32 -05:00
11fd9821bffeat(teams): the forum schema, the operator's two switches, and the ack gatewtclaude2026-08-18 07:23:15 -05:00
7ed2ac9983Merge pull request 'feat(teams): the activity feed, the roster projection, and the inverted slot' (#152) from feat/teams-phase3-pages-activity into edgeColby Whitlock2026-08-18 02:11:06 +00:00
5d9d10b245refactor(teams)!: Teams is a contract, not a surface — invert the slotswtclaude2026-08-17 20:58:07 -05:00
203ce9c654chore(teams): regenerate the OpenAPI spec and the route manifestswtclaude2026-08-17 20:16:04 -05:00
8f4aff6946feat(teams): the public Team pages, the two slots and the nav flagwtclaude2026-08-17 20:15:54 -05:00
03631d7d40feat(teams): the roster's audience projection, and optionalAuth to resolve itwtclaude2026-08-17 20:15:36 -05:00
aa332eda82feat(teams): the activity feed, its two writers and its retentionwtclaude2026-08-17 20:15:18 -05:00
1f175786a7Merge pull request 'feat(teams): Team core — the reconciler, the four authority paths, and the impersonation controls' (#151) from feat/teams-phase2-team-core into edgeColby Whitlock2026-08-17 22:20:31 +00:00
cf2666e5bcfeat(teams): the Team read API, the moderation routes, and Admin -> Teamswtclaude2026-08-17 15:27:02 -05:00
8fe2e01466feat(teams): reserved-name screening, auto-hide, and the admin-approval gatewtclaude2026-08-17 15:08:58 -05:00
bfd844e8fbfeat(teams): the four-path access resolver and staff leadership overrideswtclaude2026-08-17 14:57:23 -05:00
92631347f9feat(teams): the reconciler, its four refusal gates, and ctx.teams (API 1.6.0)wtclaude2026-08-17 14:53:52 -05:00
8b63ffc725feat(modules): registerTeamProvider, and a call path that cannot answer "empty"wtclaude2026-08-17 14:44:45 -05:00
225663d62efeat(teams): core schema for Teams, membership, sync state and moderationwtclaude2026-08-17 14:40:26 -05:00
e0c961c690Merge pull request 'feat(modules)!: the module system cutover — a game-agnostic core reaches main' (#150) from edge into mainColby Whitlock2026-08-12 23:10:29 +00:00
3669696532Merge pull request 'chore(modules): declare the UO module for the UOMysticmoon instance' (#149) from chore/declare-uo-module-for-uomm into edgeColby Whitlock2026-08-12 22:57:42 +00:00
953d0c25f6chore(modules): declare the UO module for the UOMysticmoon instancewtclaude2026-08-12 17:56:52 -05:00