```
```
v3.2.4
February 2026 · Production
Current Feature
New — PACE (Participating and Achieving Competence and Excellence)
  • Third tab added to main menu: Club — home for club management tools
  • PACE leaderboard: ranked list sorted by points, medal icons for top 3, color-coded progress bars (green ≥100, gold ≥50, blue <50), year selector for last 5 TM years
  • Entry screen: date picker, roster list with entry status, green checkmarks on completed members
  • Member entry screen: role checkbox grid, live point tally with breakdown, Save/Remove buttons — points frozen at entry time
  • Member history drill-down: tap any leaderboard row to see total points, meeting count, progress toward goal, and chronological entry list for the selected year
  • Role Manager: add/edit/delete roles with point values, cloud synced across all club members, past entries unaffected by changes
  • Default roles match published SDTM point values: Speaker 15, Toastmaster 10, Evaluator 10, General Evaluator 7, Joke Master 5, Table Topics Master 3, Timer 2, Ah Counter 2
  • Firestore structure: clubs/{syncCode}/pace_entries with date, member, roles, pointsEarned, tmYear, recordedBy, timestamps
  • paceRoles wired into all five sync paths: autoSyncUp, autoSyncDown, syncUp, syncDown, enableSync
New — Embeddable PACE Widget
  • Standalone pace-widget.js hosted at repo root — no Firebase SDK required on external sites
  • Two widget types: ranked leaderboard and horizontal bar chart
  • Reads data via Firestore REST API — one line of HTML to embed, auto-updates each page load
  • Embed ↗ button on PACE leaderboard opens modal with ready-to-copy HTML snippets pre-filled with sync code
Bug Fixes
  • Remove from PACE history now returns to history screen instead of spinning entry roster
  • PACE leaderboard spinner now has 8-second timeout with Retry button — module-level timer prevents stale retry loop
  • Back button from entry screen preserves selected TM year on leaderboard
v3.2.3
February 2026 · Production
Feature
New — Cloud Meeting Report
  • Report screen now has two tabs: This Device (existing local report) and ☁ Cloud
  • Cloud tab queries today’s Firestore sessions across all devices — timer and Ah-Counter combined in one view
  • Columns: Name | Role | Result | By (device name of recorder)
  • WOD appears at top of cloud report if selected today — written to Firestore on Select
  • Respects Markdown Export toggle — cloud report copies/shares as markdown table if enabled
  • Inline ↻ Refresh button re-queries Firestore if sessions are still coming in
  • Status line shows session count and last-loaded timestamp
  • Copy and Share buttons work on whichever tab is active
  • Practice-only clubs see a clear message instead of a cloud query
New — Manual Filler Scoring
  • Manual counter sessions (tap-to-count) now produce an estimated filler score on save
  • App records session duration invisibly from the moment the tally screen opens
  • On SAVE RESULTS, estimates word count at 130 wpm and computes filler %, rate per minute, and EXCELLENT / GOOD / NEEDS WORK rating
  • Score card displays in the save modal with green / yellow / red color coding, labeled estimated and footnoted “Word count estimated at 130 wpm”
  • Sessions under 15 seconds skip scoring — protects against accidental early saves
  • Scored sessions write the same Firestore fields as transcription sessions (fillerPct, fillerScore, totalWords, fillersPerMin, durationMins) — Progress tracker trend line and Cloud Report work automatically
  • Older sessions already in the system display as “counted, no score” in the Progress tracker to distinguish them from newly scored sessions
Bug Fix — Progress Trend Consistency
  • Speaker detail screen showed incorrect trend (↓ Worsening) even when the most recent session was the speaker’s best result
  • Root cause: detail screen used a half-split average algorithm while the progress list used a simpler oldest-vs-newest comparison — they disagreed on the same data
  • Fix: aligned both screens to oldest vs newest session comparison with a 0.5% threshold, so trend is consistent everywhere
v3.2.2
February 2026 · Production
Feature Fix
New — Timer
  • Added Reset button — resets clock to 00:00 and immediately restarts (3-button layout: Reset | Pause | Commit & Exit)
  • Fixed Pause/Resume — second tap resumes from exact elapsed time. Button label toggles PAUSE ↔ RESUME
New — Ah-Counter
  • Add filler word on the fly — tap + ADD WORD card during live session. Starts at count 1. Toggle to save permanently to club list (on by default, auto-syncs)
  • Name input inline × clear button — appears when field has content, clears field and resets roster list
New — Club Management
  • Sync code masked as ••••-•••• by default in Club Manager — tap 👁 to reveal
  • Attempting to delete the active club now shows a clear error modal
New — Stale Data Warning
  • Yellow banner on menu screen if meeting data from 3+ hours ago is still present — includes inline Clear button. Designed for back-to-back meeting days.
New — Progress Screen
  • List filters to current roster members only — deleted members’ history preserved but hidden
  • Manual counter sessions now show filler count and per-word breakdown in speaker detail
Fixed
  • Create Club: blank name validation re-opens modal instead of silently closing
  • Join Club: API key field updates immediately in Settings after joining
  • WOD search field no longer pre-populates with club name on first visit
  • Timer display no longer flashes stale time from previous session on new start
  • Full name validation placeholder changed from developer name to “JOHN SMITH”
v3.1.6 – v3.1.9
February 2026
Feature Fix
New (v3.1.6)
  • Device name prompt on first launch — written to every Firestore session as recordedBy for audit trail
  • Delete individual session from Progress speaker detail view
Fixes (v3.1.7 – v3.1.9)
  • Transcript share includes filler markup in both plain text and markdown modes
  • Transcription path no longer writes a duplicate session to Firestore when Merge + Save both fire
  • Filler scoring threshold corrected — Excellent <5%, Good 5–10%, Needs Work >10%
  • API key field updates live after joining a club via sync code
  • Cannot delete active club — error modal instead of silent deletion
  • WOD search field clears when navigating to WOD screen
  • Timer display resets to 00:00 before showing timer screen (no stale flash)
v3.1.5
February 2026
Feature
New — Welcome Screen
  • First-launch welcome screen: Join Existing Club, Create New Club, Just Exploring
  • Join by sync code downloads roster, fillers, and AI key automatically
  • Practice Only club flag — never writes to Firestore
Documentation Suite Published
  • Manual (Members + Officers & Devs tabs), Technical Reference, Test Plan, Changelog
v3.1.0
February 2026
Major
New — Firebase Cloud Sync
  • Firestore integration — roster, fillers, and API key sync across all club members’ devices
  • 8-character sync code generation (XXXX-XXXX format)
  • Join existing club by code — full data download on first join
  • Auto-sync on every roster and filler change — manual Push/Pull available as override
  • Session history written to Firestore on every Commit & Exit and Save Results
  • Progress screen — per-speaker filler rate history, trend indicators, full session log
  • AI key shared club-wide — members get it automatically on join
v3.0.0
February 2026
Major
New — Multi-Club Architecture
  • Full multi-club support — create, switch, and manage multiple clubs on one device
  • All data scoped per club: roster, fillers, logs, API key, custom limits
  • Filler Word Manager — full CRUD for club filler list
  • Built-in TEST CLUB for demos — always practice-only, never writes to Firestore
  • Migration from v2.x — existing data automatically moved to a default club on first load
v2.8.x – v2.11.x
Mid 2025 – Early 2026
Feature
Foundation Features (first Claude versions)
  • Core Timer with green/yellow/red threshold presets and custom thresholds
  • Ah-Counter tally grid with increment, decrement, delete per filler, and session merge
  • Meeting Report with plain text and markdown export modes
  • Word of the Day with ChatGPT (GPT-4o-mini) definitions, 1,000+ word library
  • Speaker roster with localStorage persistence, live filter, alphabetical sort
  • Backup / Restore via JSON export and import
  • PWA manifest and service worker — installable on iOS home screen
  • Whisper speech transcription with filler word detection and highlighting
  • Filler word scoring — Excellent (<5%), Good (5–10%), Needs Work (>10%)
  • Transcript archive with per-speaker view and Web Share API
  • Test/prod isolation via URL path prefix detection
—— Project Origins ——
v1.0 – v2.7
Early 2025 · Built with Google Gemini
Origin
Development History

Meeting Tools was originally conceived and built in collaboration with Google Gemini. Development proceeded through v2.7, establishing the core architecture and feature set. As the codebase grew in complexity, Gemini encountered limitations handling the scope of changes required, and development transitioned to Claude (Anthropic) starting at v2.8. Claude has handled all development from that point forward.

The following is Gemini’s own functional specification of the app at the point of handoff:

Identity & Navigation
  • Dynamic header branding (55px bold) updating contextually to Timing Tools or Counter Tools
  • Club Identity — tapping header allows persistent club name configuration
  • iOS-style full-width segmented tab container
Roster, Timer & Ah-Counter
  • Live predictive filtering, auto-fill on name tap, localStorage persistence with alphabetical sort
  • Timer presets (Table Topics, Evaluation, Speech, Ice Breaker, Custom) with full-screen color transitions
  • Tally cards for AH, UM, ER, SO, LIKE, YOU KNOW with tap-to-increment and minus button
Reporting & Technical Standards
  • Consolidated meeting log with one-touch clipboard copy
  • Safety-checked Clear All, OpenAI key field in Settings
  • Centered 900px responsive container for iPad/tablet use
  • Single-file architecture — all CSS, JS, and HTML in one file to eliminate external dependency failures
```
```

Feature requests, bugs, and backlog items are tracked in GitHub Issues.

View all open issues → View backlog →
```