From d1fca571601f30631cf6121796792d8f58f491a5 Mon Sep 17 00:00:00 2001 From: Brian O'Kelley Date: Sun, 4 Jan 2026 19:58:37 -0500 Subject: [PATCH 1/4] Add committee leadership tools for Addie and industry gatherings support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Addie admin tools: add_committee_leader, remove_committee_leader, list_committee_leaders - Display industry gatherings in dashboard committees section - Add "Committee Leader" dev user for testing committee management - Seed CES 2026 and Cannes Lions 2026 as industry gatherings - Fix committees nav to link to #committees anchor 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .changeset/happy-nights-talk.md | 4 + server/public/dashboard-nav.js | 2 +- server/public/dashboard.html | 16 +- server/public/dev-login.html | 15 ++ server/src/addie/mcp/admin-tools.ts | 223 ++++++++++++++++++ .../135_seed_dev_committee_leader.sql | 35 +++ .../136_seed_industry_gatherings.sql | 73 ++++++ server/src/middleware/auth.ts | 10 + 8 files changed, 376 insertions(+), 2 deletions(-) create mode 100644 .changeset/happy-nights-talk.md create mode 100644 server/src/db/migrations/135_seed_dev_committee_leader.sql create mode 100644 server/src/db/migrations/136_seed_industry_gatherings.sql diff --git a/.changeset/happy-nights-talk.md b/.changeset/happy-nights-talk.md new file mode 100644 index 0000000000..4c3ad70f2f --- /dev/null +++ b/.changeset/happy-nights-talk.md @@ -0,0 +1,4 @@ +--- +--- + +Add committee leadership management tools for Addie and display industry gatherings in the dashboard committees section. diff --git a/server/public/dashboard-nav.js b/server/public/dashboard-nav.js index 62528ffc35..5299eae067 100644 --- a/server/public/dashboard-nav.js +++ b/server/public/dashboard-nav.js @@ -68,7 +68,7 @@ items: [ { href: isDashboardPage ? '#profile' : '/dashboard#profile', label: 'Member Profile', icon: 'đŸĸ', anchor: 'profile' }, { href: isDashboardPage ? '#team' : '/dashboard#team', label: 'Team', icon: 'đŸ‘Ĩ', anchor: 'team' }, - { href: isDashboardPage ? '#working-groups' : '/dashboard#working-groups', label: 'Working Groups', icon: 'đŸ›ī¸', anchor: 'working-groups' }, + { href: isDashboardPage ? '#committees' : '/dashboard#committees', label: 'Committees', icon: 'đŸ›ī¸', anchor: 'committees' }, { href: isDashboardPage ? '#leadership' : '/dashboard#leadership', label: 'Leadership', icon: '👔', anchor: 'leadership', hidden: true, id: 'leadershipNavItem' }, { href: isDashboardPage ? '#membership' : '/dashboard#membership', label: 'Membership', icon: '⭐', anchor: 'membership' }, ] diff --git a/server/public/dashboard.html b/server/public/dashboard.html index 5654e97ac4..c2a2cc0639 100644 --- a/server/public/dashboard.html +++ b/server/public/dashboard.html @@ -1856,7 +1856,8 @@

+
Industry Gatherings
+ ${byType.industry_gathering.map(renderCommitteeItem).join('')} + + `; + } + // Browse all link html += `Browse All Committees`; diff --git a/server/public/dev-login.html b/server/public/dev-login.html index 57989eec5d..fbab6533b6 100644 --- a/server/public/dev-login.html +++ b/server/public/dev-login.html @@ -233,6 +233,21 @@

Regular member with organization access, no admin privileges
+ + - - ` + const isEventsActive = currentPath.startsWith('/events'); + const eventsLink = membershipEnabled + ? `Events` : ''; // Build "The Latest" dropdown @@ -229,7 +218,8 @@ const workingGroupsUrl = `${committeesBaseUrl}?type=working_group`; const councilsUrl = `${committeesBaseUrl}?type=council`; const chaptersUrl = `${committeesBaseUrl}?type=chapter`; - const isCommitteesActive = currentPath.startsWith('/committees') || currentPath.startsWith('/working-groups'); + const gatheringsUrl = `${committeesBaseUrl}?type=industry_gathering`; + const isCommitteesActive = currentPath.startsWith('/committees') || currentPath.startsWith('/working-groups') || currentPath.startsWith('/industry-gatherings'); const committeesDropdown = membershipEnabled ? ` ` : ''; @@ -264,7 +255,7 @@