alumni_lookup

Changelog

All notable changes to the Alumni Lookup application are documented here.

The format follows Keep a Changelog.


[Unreleased]

[1.0.89] - 2026-08-14

Supersedes 1.0.88, which was tagged from a commit whose CI build failed and therefore never reached production. Same contents, plus the test fix. The superseded tag is left in place rather than moved: a force-updated tag is not guaranteed to re-trigger a deploy, which is the one thing this release needs to do.

Phase 28 in full — Google sign-in on the signup surface, one signup per email address, and an identity-only first step — plus Phase 21.9.

Two migrations, both manual (there is no release: phase in the Procfile):

heroku run rails db:migrate --app alumni-lookup
heroku run bin/rails champion_signups:recalculate_status CONFIRM=1 --app alumni-lookup

Production collision count verified 0 before release, which is what the 28.1 index requires. Google redirect URIs must be registered at /auth/signup_google/callbacknot google_oauth2 — and GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET must be present, or the button silently does not render.

Changed — Phase 28.3: A shorter first step, and a status that means something

No migration. One rake task, to be run after this deploys: bin/rails champion_signups:recalculate_status CONFIRM=1 (dry-run without the flag). Spec: docs/planning/phases/phase-28/28.3-step-one-and-prefill.md.

Added — Phase 28.2: Continue with Google

One migration (AddGoogleIdentityToChampionSignups) — google_uid and google_linked_at, both nullable, plus a unique partial index. Additive and reversible. Requires 28.1 deployed first. External step, blocking: an authorized redirect URI at https://<host>/auth/signup_google/callback for every signup host. Note the path — signup_google, not google_oauth2. Spec: docs/planning/phases/phase-28/28.2-google-sign-in.md.

Changed — Phase 28.1: One signup per email address

One migration (AddUniqueIndexOnChampionSignupEmail) — a partial unique index on LOWER(email) WHERE deleted_at IS NULL, built CONCURRENTLY. It refuses to run while any active address is held by two rows, and names them; it will not merge them for you. Resolve them in Signup Admin → duplicates on the current release first. Spec: docs/planning/phases/phase-28/28.1-email-uniqueness.md.

Changed — Phase 21.9: Opportunity listings read as events

One migration (RemoveWhenNoteFromOpportunities) — drops the column 21.8 added one release earlier. It is a column drop, so old dynos calling it during the release window raise; the window is seconds and the column is one release old. Spec: docs/planning/phases/phase-21/21.9-opportunity-event-styling.md.

[1.0.88] - 2026-08-14 — never deployed

Tagged, then abandoned: the CI build for the tagged commit failed on a test that passes locally and fails in CI (Devise.omniauth_configs is fixed at Rails boot from GOOGLE_CLIENT_ID, which CI does not set — see .claude/skills/debug/SKILL.md). Nothing reached production under this version. Its contents ship as 1.0.89 with the test fix; the tag is left in place rather than moved, because a force-updated tag may not re-trigger a deploy.

No application code differs between the two.

[1.0.87] - 2026-08-14

Added — Phase 21.8: Opportunity event details

One migration (AddEventDetailsToOpportunities) — six nullable columns and an index. Every existing opportunity is undated, so the new expiry behavior deploys as a no-op. Heroku deploys via GitHub Actions run migrations automatically (deploy-production.yml); a direct git push heroku does not. Spec: docs/planning/phases/phase-21/21.8-opportunity-event-details.md.

One manual step after deploy — no automated backfill. The Almost Alumni Breakfast opportunity has its When / Where / The ask typed into the intro copy; staff move those lines into the new fields and delete them from the intro, or the page shows both. See docs/planning/qa/PHASE_21_LAUNCH_GUIDE.md §4.

[1.0.86] - 2026-08-13

Scope grew before this shipped. The version section was written on August 6 for the mail-domain change alone. It was never tagged, and all eight sub-phases of Phase 27 landed in the meantime — so this release is both. Phase 27 first; the mail-domain notes follow unchanged.

Three migrations. Heroku deploys via GitHub Actions run them automatically (deploy-production.yml), but a direct git push heroku does not — there is no release: phase in the Procfile.

Changed — Phase 27.8: One front door, and the code leads

Follow-on to 27.7, written against the shipped flow rather than a spec. No migration, no new route, no policy change. Spec: docs/planning/phases/phase-27/27.8-one-front-door.md.

Three of its four items were the same defect wearing different clothes — a second copy of a decision, each of which had drifted within one sub-phase of being created. See §7 of the spec, and the “Link first, share second, copy never” rule now in /patterns.

Changed — Phase 27.7: One signed-in state, and a code to get there

Migration: create_champion_signup_signin_codes. Reverses Phase 27 Decision B. Privacy policy version bumped to 2026-08-12 — the remembered-device cookie changed meaning, so anyone who ticked the box before that date consented to something weaker. Spec: docs/planning/phases/phase-27/27.7-one-signed-in-state.md.

Added — Phase 27.4 + 27.5: The recognized tier reaches the opportunity form and the hub

No migration. Specs: docs/planning/phases/phase-27/27.4-opportunity-flow.md, 27.5-hub-additions.md. Phase 27 is complete — all six sub-phases shipped, and all four of its open questions are closed.

Fixed — Phase 27.4 + 27.5

Added — Phase 27.3 + 27.6: Remembered devices, and their disclosure

Migration: create_champion_signup_sessions. New recurring task: champion_signup_sessions:prune (schedule daily — it is the retention rule). Spec: docs/planning/phases/phase-27/27.3-remembered-devices.md.

Shipped as one release deliberately: Phase 27 §5 requires the compliance half not lag the cookie, and the coupling is now asserted in tests rather than trusted to a checklist.

Changed — Phase 27.6: compliance

Fixed — the “no third-party content” claim was not true

Added — Phase 27.1: Duplicate prevention and email-keyed resolution

Migration: add_merged_into_id_to_champion_signups. Spec: docs/planning/phases/phase-27/27.1-duplicate-prevention.md. Ships after 27.2, whose throttles meter the check endpoint below.

Added — Phase 27.2: Sign-in front door

No migration. Spec: docs/planning/phases/phase-27/27.2-signin-front-door.md. 27.2 ships before 27.1 — 27.1’s inline email check is an enumeration oracle that Decision D requires be throttled, and every throttle it needs is in this sub-phase.

Fixed — Rate limiting was never actually working

Two defects found by the first test ever written against a throttle in this repo. Both predate Phase 27 and were invisible from outside, because an abusive request still got refused — just not the way the code was written to.

Changed — Throttles now cover the live signup endpoints


Mail domain — carried forward from the August 6 draft of this release

Deploy step required before this ships: mail.alumnichampions.com must be verified in Mailgun with SPF, DKIM and MX records, plus two Mailgun routes (alumni@ forwards to alumni@belmont.edu, noreply@ discards). Full record-by-record instructions are in docs/deployment/MAILGUN_DNS_SETUP.md. No env vars need setting — the code defaults are the intended production values. No migration.

Changed — Signup ecosystem sends from its own domain

Fixed — Opportunity notifications were being filed as spam

Verified against a live staging send (Aug 6, 2026): SPF, DKIM and DMARC all passed with an aligned d=, and Microsoft still scored the message SCL:5 / SFV:SPM / CAT:SPM. Authentication proves identity; it does not stop a message being filtered on shape.

Security — Mailgun API key was sent in the clear

MailgunDeliveryMethod constructed its client as Mailgun::Client.new(api_key, api_host, 'v3', false). The fourth positional argument is ssl, not a debug flag: it built an http:// endpoint and set ssl.verify false, so the API key went out as HTTP Basic auth unencrypted on every send. Now true. Pre-existing; unrelated to the domain change.

[1.0.85] - 2026-08-05

One migration, run automatically by the deploy workflow (deploy-staging.yml and deploy-production.yml both run rails db:migrate). Adds opportunities.listed (boolean, default true) and opportunities.notify_emails (text, nullable), plus a partial index on (active, listed). Additive and backfill-safe — every existing opportunity keeps today’s behavior, and there is no data step to run by hand.

Nothing else in this release needs running: no rake task, no backfill.

Added — Alumni Opportunities (Phase 21.7)

Fixed

[1.0.84] - 2026-08-05

Post-deployment: run the maiden-name cleanup — dry run first, and read it.

heroku run bin/rails champion_signups:cleanup_maiden_names --app alumni-lookup
heroku run bin/rails champion_signups:cleanup_maiden_names CONFIRM=1 --app alumni-lookup

The dry run’s NEEDS REVIEW section is the part no task should decide — values it could not confirm as first-name-plus-surname, and any exported / verified CRM row Advancement Services may already hold with the extra word. Nothing else in this release needs running: no migration, no schema change.

Fixed

Changed

[1.0.83] - 2026-08-04

Post-deployment: nothing to run. No migration, no schema change, no rake task.

Follow-up to v1.0.82, covering the one Engagement Stats code path that release missed because it lives in the controller rather than a service.

Fixed

[1.0.82] - 2026-08-04

Post-deployment: nothing to run. No migration, no schema change, no rake task. This release is service/view code, one new shared class, tests and docs.

No measurement definition changed. Every figure on every Engagement Stats tab should read exactly as it did on v1.0.81. All 36 tab × filter combinations were diffed against v1.0.81 on a copy of real data; every value matched. The only intentional differences are tie ordering in the Breakdown description lists and in top_alumni (both previously undefined, now deterministic).

Known caveat: staging QA was not re-run after the final Demographics fix. Verification for that fix is local only — full suite plus a targeted check against dev data. If anything looks wrong on the Engagement Stats tabs, start there.

Fixed

Fixed (third pass — Demographics 500, August 4 2026)

Fixed (second pass — found in staging QA, August 4 2026)

Changed

[1.0.81] - 2026-07-31

Post-deployment: nothing to run. No migration, no rake task, no schema change — the whole of Phase 23 is code, routes and docs.

One caveat that only matters if you roll back. This release adds permanent 301 redirects from /champions/* to /alumni_network/*, and browsers cache a 301 indefinitely. Once a staff member has followed one, their browser stops asking the server — so reverting the deploy leaves them on a path that no longer exists, and re-deploying the old code does not fix it. Recovery is a hard reload, per browser. Prefer fixing forward over reverting. On staging, 40 of 46 persisted StaffNotification rows (87%) pointed at the old paths, which is what the redirects are there for.

Added

Changed

Fixed

[1.0.80] - 2026-07-29

Post-deployment: adds an index on champion_signups (buid, created_at). Run heroku run rails db:migrate on the target app — there is no release phase in the Procfile, and district search will table-scan champion_signups once per alumni row until it exists.

Added

Changed

Changed

Fixed

[1.0.79] - 2026-07-28

Added

[1.0.78] - 2026-07-28

Fixed

[1.0.77] - 2026-07-28

Post-deployment: this release adds crm_data_changes.champion_signup_id. Run heroku run rails db:migrate on the target app — there is no release phase in the Procfile, so an unmigrated deploy will 500 on the CRM changes page.

Added

Fixed

Changed

[1.0.76] - 2026-07-28

Changed

[1.0.75] - 2026-07-28

Changed

Fixed

Security

Added

[1.0.74] - 2026-07-26

Fixed

[1.0.73] - 2026-07-24

Added

Changed

[1.0.72] - 2026-07-24

Added

Changed

Fixed

[1.0.71] - 2026-07-23

Added

Changed

Fixed

[1.0.70] - 2026-07-21

Fixed

[1.0.69] - 2026-07-21

Fixed

Added

[1.0.68] - 2026-07-10

Added

Removed

[1.0.67] - 2026-07-09

Fixed

Added

[1.0.65] - 2026-05-30

Changed

Added

Added

Added

Fixed

[1.0.64] - 2026-05-08

Added

Changed

Fixed

[1.0.63] - 2026-04-20

Added

Changed

Fixed

[1.0.62] - 2026-04-20

Added

Changed

Removed

[1.0.61] - 2026-04-03

Added

Fixed

Changed

[1.0.60] - 2026-03-28

Added

[1.0.59] - 2026-03-27

Added

Changed

Fixed


[1.0.58] - 2026-03-24

Fixed


[1.0.57] - 2026-03-24

Added

Fixed


[1.0.56] - 2026-03-17

Added


[1.0.55] - 2026-03-07

Fixed

Added


[1.0.54] - 2026-03-06

Added

Removed

Added

Fixed

Added

[1.0.53] - 2026-03-05

Added

Changed

Changed

Fixed

[1.0.52] - 2026-03-04

Added

Fixed

Changed

[1.0.51] - 2026-03-02

Added

Changed

[1.0.50] - 2026-03-02

Added

Changed

Fixed

[1.0.49] - 2026-02-28

Changed

Fixed

[1.0.48] - 2026-02-28

Added

Fixed

Changed

[1.0.47] - 2026-02-27

Changed — Phase 13 Completion: Root Route & Dashboard Polish

Fixed

Added — Phase 13.8: Freshness, Signals & Milestones

Added — Phase 13.7: Champion Nudge Engine & Role Microsite

Added — Phase 13.5: Tier 2 — Champion Experience

Added — Phase 13.6: Tier 3 — Community Leader Experience

Fixed

Added — Phase 13.4: Tier 1 — Member Experience

Added — Phase 13.1: Journey Engine & Tier Detection

Added — Phase 13.2: Progressive Dashboard Layout


[1.0.46] - 2026-02-19

Added — Career Page Overhaul & Career Connect

Improved — Career Connect Cards

Fixed


[1.0.45] - 2026-02-18

Fixed — Duplicate Daily Digest Emails

Added — Phase 14: Alumni Content Submissions

14.1 — Data Model & Backend Foundation

14.2 — Champion Submission Forms & UX

14.3 — Admin Submissions Queue & Review

14.4 — Notifications & Attribution

Changed — iMessage-Style Chat Bubbles

Tests: 3,582 runs, 9,178 assertions, 0 failures


[1.0.44] - 2026-02-17

Added — Email Notification Logging

Added — Notification Frequency Guardrails

Fixed

Documentation

Tests: 3436 runs, 0 failures


[1.0.43] - 2026-02-17

Added — Fuzzy Search Improvements

Fixed

Tests: 3389 runs, 0 failures


[1.0.42] - 2026-02-17

Added — Alumni Search REST API

Added — CL Welcome via Connections


[1.0.41] - 2026-02-17

Changed — Terminology Consistency

Tests: 3319 runs, 0 failures


[1.0.40] - 2026-02-17

Changed — “Belmont Alum” Rebrand

Preserved (identity language)

Tests: 3318 runs, 0 failures, 0 errors


[1.0.39] - 2026-02-16

Added

Changed

Tests: 3318 runs, 0 errors


[1.0.38] - 2026-02-16

Changed — Phase 12: Source-Alignment Review

Full audit of Champion Portal user-facing text against 20 canonical source documents. 20 of 25 findings implemented across 7 waves; 5 explicitly deferred.

Inclusivity Framing (Project-Wide)

Tier 1 — Quick Wins (9 findings, 15 files)

Tier 2 — Email Overhaul (3 templates)

Tier 3 — Copy & UX Improvements

Deferred


[1.0.37] - 2026-02-15

Added — Phase 11: Champion Role Dashboard Card

Models Added

Activity Events Added


[1.0.36] - 2026-02-15

Added — Phase 10: Connections

Models Added

Models Removed

Changed

Post-Deployment Tasks

# Run AFTER deployment (idempotent — safe to re-run)
heroku run bin/rake connections:migrate_contacts --app alumni-lookup

[1.0.35] - 2026-02-10

Fixed

Changed

Added


[1.0.34] - 2026-02-10

Added - Phase 7: Career Center (Complete)

Fixed


[1.0.33] - 2026-02-07

Added - Seeded Discussions Auto-Creation

Fixed

Added - Community Welcome Content (Phase 9.5 Complete)

Added - Trust-First Community Access (Phase 9.7 Complete)

Added - Onboarding Metrics & Analytics (Phase 9.4 Complete)

Added - Seeded Questions Scheduler & Bug Fixes (Phase 9.3)

Fixed - Seeded Questions Rake Task Bugs

Added - Seeded Discussion Questions (Phase 9.2)

Added - Admin Seeded Question Interface (Phase 9.3)

Added - Enhanced Onboarding Flow (Phase 9.1)

Added - Mobile Optimization (Champion Admin)

Changed - Mobile Optimization (Champion Admin)

Fixed


[1.0.32] - 2026-02-01

Added - Current Student Data Integration

Fixed - Bug Fixes


[1.0.31] - 2026-01-31

Added - Security & Rate Limiting

Added - Performance Optimizations

Fixed - Bug Fixes


[1.0.30] - 2026-01-31

Added - Feedback Screenshot Feature

Fixed - Bug Fixes


[1.0.29] - 2026-01-29

Changed - Custom Communities UX Improvements

Added - Web Push for Community Notifications


[1.0.28] - 2026-01-29

Changed - Champion Portal Subdomain Restriction


[1.0.27] - 2026-01-29

Changed - Beta vs Staging Environment Distinction


[1.0.26] - 2026-01-29

Fixed - Rails 7.1+ Compatibility

Added - Champion Portal Data Migration Tooling


[1.0.25] - 2026-01-29

Added - Environment & Domain Migration Tooling

Changed - Production Host Configuration


[1.0.24] - Previous Release

Added - Test Coverage (Session 5.5 Audit)

Fixed - Photo Albums Bug Fixes

Added - Phase 5.5: Photo Albums (Complete)

Database & Models

Champion Admin (Lookup Portal)

Champion Portal

Dashboard Integration

Activity Tracking

Tests

Added - Phase 8: Notification System Enhancements (8.1-8.4 Complete)

Phase 8.1: Settings UI Updates

Phase 8.2: Discussion Notifications

Phase 8.3: Scheduler Activation

Phase 8.4: Immediate Templates (Dedicated Templates)

Bug Fixes

Added

Fixed

Added - Phase 5.4: Alumni Like Me (Recommendations) (Complete)

Recommendation Service

Directory Integration

Dashboard Integration

Activity Tracking

Model Enhancement

Added - Phase 5.3: Contacts System (Complete)

Contacts Model & Storage

Contact Button & Directory

New Message Composer

Notifications

Privacy Settings Enhancements

Activity Tracking

Performance Improvements

UI Polish (included with 5.3)


Added - Phase 5.2: Almost Alumni + Faculty/Staff Support (Complete)

New Membership Types

Signup & Verification

Directory & Profile Display

Wizard & Admin Enhancements

Deferred to Future Phase

Fixed

Added


[1.0.24] - 2026-01-21

Added - Phase 5.6: Beta Feedback System (Complete)

Database-Backed Feedback Management

Files Created


Added - Phase 5.1: User State Experience Alignment (Complete)

5.1a: Anonymous Landing Page

5.1b: Bug Fixes

5.1c: Community Show Page Messaging


Added - Phase 4: Mobile-First Interface Cleanup (Complete)

Mobile Consistency (4.1)

Design Alignment (4.2)

UX Polish & Image Optimization (4.3)

Documentation


Added - Phase 3: Discussion Boards (Complete)

Phase 3.6: National Alumni Champions Board

Phase 3.7: Discussion Notifications

Phase 3.8: Admin Discussion Analytics

Added - Phase 3.10 & 3.11: Index Page Reorganization & Dashboard Redesign

Index Page Redesign (3.10)

Dashboard Redesign (3.11)

Layout & Styling

Tests


Added - Phase 3.9: Public Landing Pages

Conversion Features

Helpers & Models

UI Changes

Tests


Added - Phase 3.4 & 3.5: User Safety & Moderation

User Safety Controls (3.4)

CLC Moderation (3.5)

Staff Moderation (3.5)

Documentation

Bug Fixes

Tests


Added - Phase 3.3: Engagement & Reactions

Reactions System

Popularity Sorting

New Files

Tests


Added - Phase 3.2: Posting & Commenting

Posting Features

Commenting Features

UI/UX Improvements

Help & FAQ

Tests


Added - Phase 3.1: Discussion Boards Infrastructure

Database & Models

Controller & Views

Features

Tests


Added - Phase 2.4 Enhancement: CL Assignment Improvements

Engagement Score Visibility in CL Assignment

Community Leader Assignment Notification


Added - Phase 2.1 & 2.2: Community Leadership Foundation

Phase 2.1: Model Refactor

Phase 2.2: Admin CL Assignment Interface

Improved - Contextual CL Assignment (Phase 2.2 Enhancement)

CL Assignment Now Requires Context

Multi-Select Capability

Membership Enforcement

Visual Improvements to Community Member List

Added - Profile Completion Visibility

Champion Show Page: Profile Completion Checklist

Detailed Stats Page: Aggregate Profile Completion

Bug Fix: Profile Completion Percentage Consistency

Improved - Test Infrastructure

New bin/test Wrapper Script

Test Timeout Protection

Database Pool Sizing

Technical Details


[1.0.23] - 2026-01-13

Fixed - OAuth “Remember Me” Layout Issue

Layout Bug in oauth_remember_choice View

Files Changed


[1.0.22] - 2026-01-13

Added - Post-OAuth “Remember Me” Dialog

Session Timeout Improvements

Google OAuth “Stay Logged In?” Dialog

Technical Implementation

Files Modified:

Addresses: OAuth session timeout too short, unclear “Remember Me” UX for OAuth logins


[1.0.21] - 2026-01-12

Fixed - Notification Email URLs

NotificationMailer Improvements

Duplicate Email Prevention

Files Modified:


[1.0.20] - 2026-01-10

Changed - Domain Migration (Jan 2026)

Domain Structure Migration

Files Updated

Migration Documentation

Added - Phase 1.16 Notifications System (Jan 2026)

Database & Models

Notification Types

Services & Jobs

Email System

Settings Integration

Integration Updates

Tests

Community Cards in Messages

Share Community Feature

Invited Community Dashboard Prompt

Tests

Added - Phase 1.15.3 Expanded Membership Management (Jan 2026)

Terminology Update

Request to Join Infrastructure

Membership Tracking

Community Visibility

Champion Portal

Admin Portal

Mailers

Tests

Added - Post-1.14 Dashboard & UI Enhancements (Jan 9, 2026)

Dashboard Restructure

Site-Wide Background Image

Event Address Field Split

Community Pills Fix

Bug Fixes

Added - Phase 1.14 Dynamic Community Creation (Jan 9, 2026)

CommunityDetectionService (1.14.1)

CommunityCreationJob (1.14.2)

CommunityNotification Model (1.14.3)

Dashboard Integration (1.14.4)

Hybrid Triggers (1.14.5)

Testing

Added - Phase 1.13 Community Landing Pages (Jan 8, 2026)

Community Show Page (1.13.1)

Communities Index (1.13.2)

Dashboard Widget (1.13.3)

Testing (1.13.5)

Added - Phase 1.12 Community Foundation (Jan 8-9, 2026)

Database & Models (1.12.1-1.12.4)

Profile Hooks (1.12.4)

News/Events Community Targeting (1.12.5)

Admin Communities UI (1.12.6)

Champion Community UI (1.12.7)

Added - Phase 1.11 Admin Events (Jan 7-8, 2026)

Events System

Admin Interface (Lookup Portal)

Champion Portal

Tests

Files Created:

Fixed - Email Deliverability & Admin Notifications (Jan 6, 2026)

Email Domain Configuration

Admin Notifications Fix

Added - Phase 1.10.3 News Display Enhancements (Jan 5, 2026)

Admin Form Fixes

Files Created:

Files Modified:


Added - Phase 1.10.3 Champion Portal News Display (Jan 5, 2026)

Champion-Facing News System

Files: app/controllers/cp/news_controller.rb, views in app/views/cp/news/


Added - Phase 1.10.2 Admin UI for News Posts (Jan 5, 2026)

Lookup Portal Admin Interface

Key fixes during implementation:

Files: app/controllers/settings/news_posts_controller.rb, views in app/views/settings/news_posts/


Added - Phase 1.10.1 Database & Models (Jan 5, 2026)

News Post System Database Layer

Deferred (schema-ready, UI deferred): Image carousel, college/major/affinity tags, featured champions


Added - Phase 1.10 Planning Document (Jan 4, 2026)

Community News & Announcements Planning

Complete planning specification for admin-managed news/posts system with dashboard integration.

Deferred to future phases (schema ready):

Cross-references updated:


Added - Phase 1.9.5: Language & Messaging Audit (Jan 2026)

Language Style Guide

Comprehensive voice and tone guide for Champion Portal copy based on the Alumni Champions Verbal Style Guide.

Language Fixes

Fixed

Files Created:

Files Modified:


Added - Phase 1.9.3: Profile Visual Refresh (Jan 1, 2026)

Directory Card Refresh

Simplified, scannable directory cards focused on connection.

Files Modified:


Added - Phase 1.9.2: Help & FAQ with Onboarding Tooltips (Dec 25, 2025)

Help Center & FAQ

Self-service help resources for Champions to find answers without contacting support.

Onboarding Tooltips

Context-sensitive tooltips guide new Champions through key features.

Files Added:


[1.0.18] - 2025-12-23

Added - Phase 1.8: Admin Dashboard & Engagement Scoring (Dec 23, 2025)

Champions Admin Dashboard

Complete admin interface for managing the Champion program with visibility into Champion activity and engagement.

Engagement Scoring System

New activity-based scoring to measure Champion engagement and identify active community members.

Dashboard Features

Visual/UX Improvements

Changed

Documentation


[1.0.17] - 2025-12-22

Added - Phase 1.7: In-App Messaging (Dec 22, 2025)

Messaging System

Complete 1:1 messaging system for Champions to communicate within the portal.

Champion Profile Enhancements

Changed


Added

Changed

Fixed

Fixed

Added - Phase 1.5: Admin Verification & District Management (Dec 19, 2025)

Champions Namespace (/champions)

New Portal Admin section for Champion Program management with dedicated layout and navigation.

Routes Added:

District Management (Settings > Reference Data)

Admin-only interface for managing geographic districts.

Routes Added:

Files Created:

Lessons Learned:


[1.0.16] - 2025-12-18

Changed - Settings Navigation Order & Batch Search Enhancements (Dec 18, 2025)

Settings Navigation Reorganization

Batch Search Enhancement Ideas Added to Backlog


Changed - Tools Namespace & Profile Layout Fix (Dec 18, 2025)

New Tools Namespace

Created /tools namespace for staff-accessible utilities, separating them from admin-only Settings:

Why: Staff could access Event Converter in Settings but saw admin-only sidebar items (Settings, Users, Data Imports) which they couldn’t access. Now Tools has its own layout with staff-appropriate navigation.

Profile Layout Fix

Files Changed

Route Changes

| Old Route | New Route | |———–|———–| | /batch_search | /tools/batch_search | | /settings/event_converter/new | /tools/event_converter/new | | N/A | /tools (landing page) |


Changed - Settings UI Modernization & Users Namespace (Dec 17, 2025)

Users Controller Moved to Settings Namespace

Modern UI Design for Settings Pages

Applied consistent modern design across all Settings pages:

Pages Updated

Development Environment

Files Changed

Documentation Updated


Added - Portal Admin Role & Navigation Reorganization (Dec 16, 2025)

New Portal Admin Role

Role Permissions

| Role | Capabilities | |——|————-| | staff | Search, Insights, Tools, Champion Signups (view/edit) | | portal_admin | Staff + delete/merge signups, Champion Verification (future), Champion Metrics (future) | | admin | Full access including Settings, User Management, Data Imports |

Reorganized Lookup Portal hamburger menu with clear sections:

Controller Changes

Files Modified

Documentation Updated


[1.0.15] - 2025-12-16

Added - Banner CSV Importer (Dec 16, 2025)

New Banner Import Feature

Column Mappings

Grad Date Override Option

Non-Destructive Updates

Files Added

Routes Added


Security - Alumni Match Verification Fix (Dec 16, 2025)

Problem Fixed

New Behavior

Database Changes

Model Changes

Tests Added


Added - Profile Completion Weighted Scoring (Dec 16, 2025)

Weighted Profile Completion

Smart Redirect Logic

Site-Wide Profile Completion Prompt

Profile Completion Banner Updates


Added - Champion Portal Name Field UX & Alumni Matching (Dec 15, 2025)

Help Us Find You Wizard Step

Enhanced Alumni Matching Algorithm

Champion-to-Alumni Sync Service

New Files

Bug Fixes


Fixed - Profile Wizard Bug Fixes (Dec 15, 2025)

Education Confirmation Security

Location Step Interactive Confirmation

Affinities Step Fixes

Progress Indicator Fixes

Wizard Completion Redirect

Champion Role Step

Name Normalization

Misc Fixes


Added - Profile Wizard & Edit Profile Refactoring

New Wizard Flow (7 Steps)

Champion Portal Auth Flow Updates

Affinity Suggestions

Edit Profile Updates

Test Updates


Added - Champion Portal Phase 1C (Champion Role Selection & Quiz)

SubPhase 1C.1: Service Extraction

SubPhase 1C.2: Profile Wizard Integration

SubPhase 1C.3: Profile Edit Integration

UX Improvements

Changed

Changed - Champion Portal SubPhase 1C.2

Technical


Added - Champion Portal SubPhase 1.4

Changed

Fixed


[1.0.13] - 2025-12-11

Added

Changed

Fixed

Migration


[1.0.12] - 2025-12-10

Added

Fixed

Data Fixes Applied


[1.0.8 - 1.0.11] - 2025-12-09

Added - Affinaquest Contact Import

Added - Event RSVP Converter (December 8-9, 2025)

Added - Champion Portal Phase 1.3: SSO Authentication (December 8, 2025)

Added - Champion Portal Phase 1.2: Email Authentication (December 5, 2025)

Added - Champion Portal Phase 1.1: Database & Models (December 5, 2025)

Pending


[1.0.7] - 2025-12-09

Added


[1.0.6] - 2025-12-08

Fixed


[1.0.5] - 2025-12-08

Added


[1.0.4] - December 4, 2025: Bug Fixes & Test Coverage Improvements ✅

Addressed TODO items: fixed bugs, added validation, and expanded test coverage.

Fixed

Added

Verified


[1.0.3] - December 3, 2025: EngagementStats Service Refactoring & Feature Flags ✅

Complete refactoring of engagement stats to use dedicated services, fixing duplicate counting bug.

Fixed

Changed

Added

Technical Notes

Added (Feature Flags)

Removed


[1.0.2] - December 2, 2025: Ruby 3.3.8 + YJIT Performance

Upgraded Ruby for 15-25% performance improvement.

Changed


[1.0.1] - December 2, 2025: CI/CD Pipeline Complete ✅

Full CI/CD pipeline implemented with staging environment.

Added

Fixed


Pre-Release Versions

The following versions were developed before CI/CD was established. They represent feature milestones but were not formally tagged releases.


[1.0.0-alpha.3] - November-December 2025: Authentication & Roles ✅

All 6 phases completed. Foundation ready for Champion Portal and Event Check-in.

Added

Known Issues

See development/TODO_BUGS.md for tracked bugs and issues.


[1.0.0-alpha.2] - November 2025: Documentation & Preparation

Added

Changed

Fixed

Documentation


[1.0.0-alpha.1] - August-October 2025: Champion Signup & Features

Added

Changed

Fixed


[1.0.0-alpha.0] - Early 2025: Initial Development

Added

Technical Foundation


Pre-1.0 Development

Initial Commit - Late 2024


Version Numbering

This project uses semantic versioning:

Version History

Version Date Milestone
1.0.0-alpha.0 Early 2025 Initial development
1.0.0-alpha.1 Aug-Oct 2025 Champion Signup system
1.0.0-alpha.2 Nov 2025 Documentation & prep
1.0.0-alpha.3 Nov-Dec 2025 Auth & Roles system
1.0.1 Dec 2, 2025 CI/CD Pipeline (first tagged release)
1.0.2 Dec 2, 2025 Ruby 3.3.8 + YJIT
1.0.3 Dec 3, 2025 Service refactoring + Feature flags