Releases: Juniorduc44/muster-buddy-check
v4.0.2
Muster Buddy Check v4.0.2 Release Notes
🐛 Bug Fix: Copy Button Functionality for Hash Receipts
🚨 Issue
Copy buttons for attendance hash receipts were not working properly across different browsers and contexts. Users could not copy receipt codes or hash values from the attendance logs.
🔧 Technical Fixes
Clipboard API Implementation
- Modern Clipboard API: Implemented
navigator.clipboard.writeText()with proper async/await handling - Secure Context Check: Added
window.isSecureContextvalidation for modern clipboard API usage - Legacy Fallback: Implemented
document.execCommand('copy')fallback for older browsers and non-secure contexts - Error Handling: Enhanced error handling with proper try-catch blocks and user feedback
Fallback Mechanism
- Temporary Textarea: Created invisible textarea element for legacy copy method
- Selection & Focus: Proper text selection and focus management for reliable copying
- Cleanup: Automatic removal of temporary DOM elements after copy operation
- Success Validation: Verification of copy operation success before user feedback
📱 Affected Components
AttendancePage.tsx
- Copy Receipt Button: Fixed copy functionality for attendance hash displayed after sign-in
- User Feedback: Added toast notifications for successful copy and error states
- Context Support: Works on localhost, HTTPS, and HTTP environments
ResultsPage.tsx
- Copy Hash Button: Fixed copy functionality for individual hash values in attendance logs
- Creator Access: Ensures creators can copy receipt codes from attendance records
- Silent Operation: Copy operation with error logging for debugging
VerifyReceiptPage.tsx
- Copy Receipt Button: Fixed copy functionality for verified receipt codes
- Verification Context: Copy works after successful receipt verification
- User Feedback: Toast notifications for copy success and failure states
🛡️ Compatibility Improvements
Browser Support
- Modern Browsers: Chrome, Firefox, Safari, Edge with modern clipboard API
- Legacy Browsers: Internet Explorer, older versions with execCommand fallback
- Mobile Browsers: iOS Safari, Chrome Mobile, Firefox Mobile support
Environment Support
- HTTPS: Full clipboard API support with secure context
- Localhost: Development environment with modern clipboard API
- HTTP: Legacy fallback for non-secure contexts
- Mixed Content: Graceful degradation when secure context unavailable
🔍 Technical Details
Modern Clipboard API
if (navigator.clipboard && window.isSecureContext) {
await navigator.clipboard.writeText(text);
// Success handling
}Legacy Fallback
const textArea = document.createElement('textarea');
textArea.value = text;
textArea.style.position = 'fixed';
textArea.style.left = '-999999px';
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
const successful = document.execCommand('copy');
document.body.removeChild(textArea);✅ Testing & Verification
- Cross-Browser Testing: Verified on Chrome, Firefox, Safari, Edge
- Context Testing: Tested on localhost, HTTP, and HTTPS environments
- Mobile Testing: Verified on iOS and Android browsers
- Error Scenarios: Tested permission denied and unsupported browser scenarios
🎯 User Impact
- Improved UX: Users can now reliably copy receipt codes and hash values
- Better Accessibility: Copy functionality works across all supported environments
- Reduced Friction: No more manual text selection required for receipt codes
- Professional Feel: Consistent copy behavior across all app components
🔄 Migration Notes
- No Database Changes: Pure frontend fix, no migration required
- No Configuration: Automatic detection and fallback, no user setup needed
- Backward Compatible: All existing functionality preserved
- Immediate Effect: Fix applies immediately after deployment
Version: 4.0.2
Release Date: July 2, 2025
Branch: temp
Type: Bug Fix
Compatibility: All existing features maintained
What's Changed
- Temp by @Juniorduc44 in #17
Full Changelog: v4.0.0...v4.0.2
What's Changed
- Temp by @Juniorduc44 in #17
Full Changelog: v4.0.1...v4.0.2
v4.0.1
Muster Buddy Check v4.0.1 Release Notes
🎉 Major Feature: Digital Attendance Receipts with Hash Verification
✨ New Features
🔐 Digital Attendance Receipts
- Unique SHA256 Hash Generation: Every attendance sign-in (user or anonymous) now generates a unique SHA256 hash receipt
- Server-Side Hash Generation: Implemented Supabase Edge Function for reliable, secure hash generation
- QR Code Receipts: Attendees receive a QR code containing their unique receipt hash
- Receipt Verification System: Teachers/facilitators can verify attendance receipts by entering or scanning hash codes
📱 Enhanced User Experience
- Immediate Receipt Display: Attendees see their receipt immediately after signing in
- Receipt Verification Page: New dedicated page for verifying attendance receipts
- Navigation Integration: Added links to receipt verification throughout the app
- CSV Export Enhancement: Attendance exports now include receipt hash codes
🛡️ Security & Reliability
- Fallback Hash Generation: Client-side fallback when server-side generation fails
- RLS Policy Updates: Fixed Row Level Security policies to allow anonymous users to update attendance records
- Unique Hash Components: Each hash includes database ID, timestamps, personal info, and secret salt
🔧 Technical Improvements
Backend Enhancements
- Supabase Edge Function:
generate-hashfunction for server-side hash generation - Database Schema: Added
attendance_hashcolumn tomusterentriestable - RLS Policies: Updated policies to support anonymous user hash updates
- TypeScript Types: Updated types to include hash-related fields
Frontend Improvements
- Hash Utilities: Enhanced hash generation utilities with fallback support
- Attendance Flow: Updated attendance submission to generate and store hashes
- UI Components: Added receipt display and verification components
- Error Handling: Improved error handling for hash generation failures
🐛 Bug Fixes
- Anonymous User Hash Storage: Fixed issue where anonymous user hashes weren't being stored in database
- RLS Policy Gap: Added missing UPDATE policy for anonymous users on musterentries table
- Hash Generation Reliability: Resolved crypto.subtle.digest availability issues with fallback
📋 Database Changes
- New Column:
attendance_hash(TEXT) added tomusterentriestable - Index: Added index on
attendance_hashfor efficient lookups - RLS Policies: Updated policies to allow anonymous users to update their attendance records
🚀 Deployment Notes
- Supabase Edge Function: Deployed
generate-hashfunction - Database Migration: Applied RLS policy updates
- Environment: No additional environment variables required
📱 User Guide Updates
- Receipt Verification: Users can now verify attendance receipts using hash codes
- QR Code Scanning: Receipt verification supports QR code scanning
- Export Features: CSV exports now include receipt information
🔄 Migration Steps
- Database migration applied automatically
- Supabase Edge Function deployed
- RLS policies updated
- No user action required
🎯 What's Next
- Enhanced receipt verification UI
- Bulk receipt verification features
- Receipt history and management
- Advanced reporting with receipt analytics
Version: 4.0.1
Release Date: July 2, 2025
Branch: temp
Compatibility: All existing features maintained
What's Changed
- commits corrected by @Juniorduc44 in #15
- Temp by @Juniorduc44 in #16
Full Changelog: v3.5.0...v4.0.1
v4.0.0
Release v4.0.0 - Attendance Verification & UI Enhancements
🎉 Major Release: Complete Attendance Verification System
This release introduces a comprehensive attendance verification system with tamper-proof receipts, along with significant UI improvements and security enhancements.
✨ New Features
🔐 Attendance Hash Receipts & Verification System
- SHA256 Hash Generation: Each attendance submission now generates a unique, tamper-proof hash
- QR Code Receipts: Attendees receive QR code receipts for proof of attendance
- Receipt Verification Page: Teachers/facilitators can verify attendance by entering or scanning receipt codes
- Hash Display: Results page shows attendance hashes in a dedicated "Receipt" column
- CSV Export Enhancement: Export now includes receipt codes for record-keeping
🎯 Enhanced User Experience
- Simplified QR Code Page: Removed complex modal in favor of streamlined "Add Signee" button
- Improved Navigation: Added direct links to receipt verification from main navigation
- Better Error Handling: Enhanced error messages and logging for debugging
🔧 Technical Improvements
Database Schema Updates
- Added
attendance_hashcolumn tomusterentriestable - Created database index for efficient hash lookups
- Updated TypeScript types to include hash field
Code Quality
- New
hash-utils.tsutility library with comprehensive hash functions - Improved error handling and logging throughout the application
- Better separation of concerns with dedicated utility functions
🗑️ Removed Features
Guest Account System
- Removed Guest Button: Temporarily disabled guest account development
- Cleaned Up Auth Flow: Simplified authentication interface
Legacy Modal System
- Removed Add Signee Modal: Replaced with direct attendance page access
- Streamlined UI: Cleaner, more intuitive interface
🔒 Security Enhancements
Row Level Security (RLS)
- Applied comprehensive RLS policies for data protection
- Enhanced permission controls for attendance data access
- Improved security for anonymous attendance submissions
📱 User Interface Updates
Results Page Enhancements
- Receipt Column: New column to display attendance hashes
- Hash Visibility Toggle: Show/hide receipt codes as needed
- Copy Functionality: Easy copying of receipt codes for verification
Navigation Improvements
- Verify Receipts Link: Direct access to receipt verification
- Cleaner Header: Simplified navigation structure
🐛 Bug Fixes
- Fixed attendance submission issues with proper RLS policies
- Resolved hash generation timing issues
- Improved error handling for database operations
- Fixed CSV export to include all attendance data
📋 Migration Notes
Database Migration Required
Users need to apply the new database migration to enable hash functionality:
-- Add hash column to musterentries table
ALTER TABLE public.musterentries
ADD COLUMN IF NOT EXISTS attendance_hash TEXT;
-- Create index on attendance_hash for verification queries
CREATE INDEX IF NOT EXISTS idx_musterentries_attendance_hash ON public.musterentries(attendance_hash);Breaking Changes
- Guest account functionality temporarily disabled
- Old "Add Signee" modal removed in favor of direct attendance page access
🚀 Getting Started
- Apply Database Migration: Run the SQL migration in your Supabase dashboard
- Update Dependencies: Run
npm installto get latest packages - Test Hash Generation: Submit test attendance to verify hash generation
- Verify Receipts: Test the receipt verification system
📊 Performance Improvements
- Optimized database queries with proper indexing
- Reduced bundle size by removing unused modal components
- Improved loading times with better error handling
🔮 Future Considerations
- Guest account system may be re-enabled in future releases
- Additional receipt verification methods may be added
- Enhanced reporting features planned for v4.1.0
Version: 4.0.0
Release Date: July 2, 2025
Compatibility: Requires Supabase database migration
Breaking Changes: Yes - Guest accounts disabled, modal system removed
What's Changed
- commits corrected by @Juniorduc44 in #15
- Temp by @Juniorduc44 in #16
Full Changelog: v3.5.0...v4.0.0
v3.5.0
Muster Buddy Check – Release Notes
Version 3.5.0 · "Mobile Menu & Multi-Delete"
Release date: 2024-06-25
✨ Highlights
| Area | Summary |
|---|---|
| Mobile UI | Major overhaul for mobile: header now uses a menu button (hamburger) for both users and guests, eliminating overflow and voids on small screens. |
| Delete Mode | Added a new "Delete Mode" to the dashboard, allowing users to select and delete multiple muster sheets at once, similar to email UIs. |
| Guest Mode Consistency | Guest mode now uses the same header/menu layout as logged-in users for a seamless experience. |
🆕 New Features
| Feature | Details |
|---|---|
| Hamburger Menu on Mobile | The header now shows a menu button on mobile for all users. All actions (Sign Out, Services, Donate, etc.) are inside the menu, keeping the UI clean and preventing horizontal scrolling. |
| Multi-Delete for Sheets | Users can enter Delete Mode, select multiple muster sheets, and delete them in bulk. Checkboxes and a delete button appear in this mode. |
🛠 Improvements & Fixes
- Responsive Layout – No more overflow or voids on mobile; header and menu adapt to all screen sizes.
- Guest Mode UI – Guest users see "Guest Mode" in the header with the menu button, just like logged-in users see their email.
- Bug Fixes – Fixed issues with guest mode not updating the UI immediately after login, and ensured consistent state propagation.
- CSS Polish – Added global
overflow-x: hiddenand responsive menu panel width to prevent horizontal scrolling.
🙌 Thank You
Special thanks to all testers and contributors who provided feedback on mobile usability and multi-delete workflows.
Happy mustering!
What's Changed
- Merge pull request #3 from Juniorduc44/main_sheets by @Juniorduc44 in #4
- Main logo by @Juniorduc44 in #5
- merge by @Juniorduc44 in #6
- Merge pull request #6 from Juniorduc44/main by @Juniorduc44 in #7
- Main sheets by @Juniorduc44 in #8
- Feat: Consolidate all changes for v3.4.0 release by @Juniorduc44 in #9
- Revert "Feat: Consolidate all changes for v3.4.0 release" by @Juniorduc44 in #10
- Main sheets by @Juniorduc44 in #11
- Temp by @Juniorduc44 in #14
Full Changelog: v3.3.0...v3.5.0
v3.4.0
📢 Muster Buddy Check – Release v3.4.0
Release date: 26JUN2025
Fast, QR-powered attendance for classrooms, events, and formations.
This milestone brings powerful sheet-management tools, a refreshed onboarding flow, and dozens of quality fixes.
✨ New Features
| Area | Description |
|---|---|
| Sheet Cloning 🔄 | • “Fully functional clone” button on every sheet card. • Duplicates title, description, required fields, time format, expiry & active state. • New copy is immediately Active so you can publish its QR code in seconds. |
| Sheet Editing ✏️ | • Edit button appears only on active + non-expired sheets. • Opens /edit/{sheetId} with a full form to update title, description, required fields, time format, expiry, and active flag.• Live Supabase validation & toast confirmations. |
| Revamped Login & Onboarding 🎨 | • First-visit splash with larger logo and multi-step tour. • “Don’t show again” stored in localStorage. |
| GitHub OAuth 🔑 | Added Sign in with GitHub via Supabase Auth, alongside email & Google. |
🛠 Improvements & Fixes
| Category | Highlights |
|---|---|
| Templates | • Icons moved from preloaded-sheets.ts → preloaded-sheets.tsx to support JSX.• Created bridge file preloaded-sheets.ts to re-export, preventing build errors.• Added badge_number (Student ID) to Class template and aligned field lists. |
| Conditional Edit Button | Disabled on expired or inactive sheets to prevent accidental edits. |
| Public Attendance Flow | Fixed “Sheet Not Found” errors when scanning QR from anonymous devices by updating RLS policies and improving error messages. |
| Row-Level Security Helper | New scripts/apply-rls-policies.js (ESM) + SQL migrations.Run npm run apply-rls once to expose public attendance endpoints securely. |
| Local LAN Testing | README now explains vite --host, finding your IP, and scanning QR from phones on the same Wi-Fi. |
| UI Polish | Larger splash logo, consistent Lucide icons, cleaner hover states, color-coded badges, unified toast messages. |
| House-Keeping | • Added .env.example + .gitignore update.• Updated package.json scripts ( apply-rls, build:dev).• Browserslist DB update reminder. • Vulnerability audit hint ( npm audit fix). |
🔧 Developer Notes
- Breaking: If you previously imported from
src/data/preloaded-sheets.ts, keep using the same path—the new bridge file handles it automatically. - RLS Migration: Ensure your Supabase project has run both migration files in
supabase/migrations/*or executenpm run apply-rls. - Environment: Add
GITHUB_CLIENT_IDandGITHUB_SECRETto Supabase and.env. - LAN Dev:
npm run dev -- --hostexposes Vite on your local network.
⬆️ Upgrade Steps
# 1. Pull latest main
git checkout main && git pull
# 2. Install updated deps
npm install
# 3. Apply (or re-apply) RLS policies
npm run apply-rls # requires SUPABASE_SERVICE_KEY
# 4. Add GitHub OAuth env vars
echo "VITE_GITHUB_CLIENT_ID=..." >> .env
echo "VITE_GITHUB_SECRET=..." >> .env🚀 Contributors
Thanks to everyone who reported issues, tested QR flows on real classrooms, and reviewed PRs for this release. Your feedback drives Muster Buddy Check forward. 🙌
Happy mustering! 🎓
What's Changed
- Merge pull request #3 from Juniorduc44/main_sheets by @Juniorduc44 in #4
- Main logo by @Juniorduc44 in #5
- merge by @Juniorduc44 in #6
- Merge pull request #6 from Juniorduc44/main by @Juniorduc44 in #7
- Main sheets by @Juniorduc44 in #8
- Feat: Consolidate all changes for v3.4.0 release by @Juniorduc44 in #9
- Revert "Feat: Consolidate all changes for v3.4.0 release" by @Juniorduc44 in #10
- Main sheets corrective update for v3.4.0 by @Juniorduc44 in #11
Full Changelog: v3.3.0...v3.4.0
pre-release_v3.4.0
What's Changed
- Main logo by @Juniorduc44 in #5
- merge by @Juniorduc44 in #6
- Merge pull request #6 from Juniorduc44/main by @Juniorduc44 in #7
Full Changelog: v3.3.0...pre-release_v3.4.0
v3.3.0
🎉 Muster Buddy Check — Release v3.3.0
Release date: 2025-06-24
This release turns Muster Buddy Check into a fully open-source project and adds the most-requested productivity boost for instructors: one-click sheet cloning. Thanks to everyone who tested and provided feedback. 🚀
✨ New Features
| Feature | Description |
|---|---|
| Clone Button 🔄 | • Duplicate any existing muster sheet in one click. • Copies title, description, required fields, time format, expiry, active status. • Prepends “Copy of …” to keep dashboards organised. • Instant toast feedback & auto-refresh. |
| MIT License 📜 | • Entire repository relicensed under MIT. • Free to use, modify, fork, and contribute back — commercial projects welcome. |
🛠 Technical Implementation
| Area | Details |
|---|---|
| Frontend | MusterSheetCard.tsx • Added handleCloneSheet() using Supabase insert.• Auth check via useAuth(); guests prompted to sign in.• Toasts for success/error. • New <Copy /> icon replaces analytics button in the action group. |
| Backend / DB | No schema change required — clone is a simple INSERT with copied values.RLS policies from v3.2.0 already permit creators full CRUD on their own sheets. |
| Package | • package.json bumped to 3.3.0. • Added LICENSE file (MIT). |
| Docs | • README updated with cloning instructions. • CHANGELOG updated through v3.3.0. |
🩹 Minor Fixes & Tweaks
- Unified toast styling across pages.
- Updated
.gitignore&.env.examplefor open-source hygiene. - Locked
tailwind-mergeto stable version to avoid style regressions.
⏭ What’s Next
- Analytics Dashboards 📊 — real-time charts & CSV export.
- Role-Based Permissions 🛡 — delegate sheet management to TAs.
- Offline PWA 📶 — capture attendance without connectivity.
Thank you for your ongoing support. If you build something cool with Muster Buddy Check, submit a PR or open an issue — we’d love to see it!
Happy mustering! 🎓
What's Changed
- Merge pull request #1 from Juniorduc44/main_sheets by @Juniorduc44 in #2
- Main sheets by @Juniorduc44 in #3
Full Changelog: v3.2.0...v3.3.0
v3.2.0
🎉 Muster Buddy Check v3.2.0 Release Notes
Release date: 2025-06-24
Welcome to v3.2.0! This is a polish & stability update focused on bug-fixes discovered after the 3.1.0 “Teacher Toolkit” drop, plus a small round of documentation and environment-setup tweaks. No breaking changes — just a smoother experience. 🛠️✨
🐞 Bug Fixes
| Fix | Impact |
|---|---|
| QR Code & Attendance 📱 | Resolved “Sheet Not Found” / blank-screen issues when anonymous users visited attendance links on mobile & incognito browsers. |
| URI Malformed 🛠️ | Fixed a Vite dev-server crash caused by an invalid decodeURI call during hot-module reload. |
| UI Tweaks 🎨 | Removed accidental white backgrounds on icon buttons and unified toast messaging for copy-link actions. |
📚 Documentation
- README – Added QR-code LAN-testing tips and local network advice.
- CHANGELOG – Now tracks changes through v3.2.0.
- .env.example – New template plus security guidance for service-role keys.
⚙️ Environment & Configuration
- Added
.env.exampletemplate for safer local setup. .gitignoreupdated to exclude local credential files.apply-rlsnpm script ensures RLS stays in sync during deployments.
Thank you to all contributors and testers who helped make this release possible. Have feedback? Open an issue or join the discussion on our community channel.
Happy mustering! 🎓
What's Changed
- Main sheets by @Juniorduc44 in #1
Full Changelog: v3.1.0...v3.2.0
v3.1.0
Muster Buddy Check v3.1.0 – Local-Dev Love 💻✨
Release date: 22-JUN-2025
✨ Highlights
| Category | Description |
|---|---|
| Local Development | One-command script (npm run setup-local-auth) auto-registers localhost redirect URLs in Supabase → zero manual dashboard clicking. |
| GitHub OAuth | In addition to Google, users can now Sign in with GitHub. |
| Clean-Slate Schema | Brand-new create_tables_and_policies.sql builds the mustersheets / musterentries schema, indexes, triggers and all 8 RLS policies from scratch. |
| DX & Docs | Revamped README + in-depth Netlify + Supabase Auth Guide with troubleshooting matrix. |
| Security | Converted admin script to pure ESM + dotenv; .env added to .gitignore. |
1 Changes Since v3.0.0
New Features
-
GitHub Login
- Added
Sign in with GitHubbutton inAuthForm.tsx. - Supabase provider wired; respects new redirect URL list.
- Added
-
Automatic Local Auth Setup
scripts/setup-local-auth.jsadds
http://localhost:3000/*and/auth/v1/callbackto your project via Supabase Management API.- Run once with
SUPABASE_SERVICE_KEY→ saves minutes of dashboard work.
-
Fresh Schema Script
supabase/migrations/create_tables_and_policies.sqlnow:- Creates
mustersheets&musterentries - Adds indexes,
updated_attrigger - Enables RLS + installs 8 policies
- Creates
- Designed for clean installs – no legacy migrations necessary.
Improvements & Fixes
- Error Handling
- Attendance & QR pages display Access Restricted, Network Error, etc. with richer logging.
- Documentation Overhaul
NETLIFY_AUTH_TROUBLESHOOTING.mdrewritten – step-by-step Supabase + provider setup, LAN testing tips, issue matrix.- README upgraded with local dev “Auth Tip”, LAN QR instructions, new ToC.
- Security & Tooling
- Converted
apply-rls-policies.jsto ESM (importsyntax). - Added
dotenvfor secure key loading (.env.exampleprovided). .gitignoreupdated to exclude.env.
- Converted
- Package Scripts
setup-local-auth,apply-rls,postbuildhooks added for CI/CD.
- Version bump –
package.json→ 3.1.0.
2 Technical Implementation Details
| Area | Detail |
|---|---|
| Schema | Postgres SQL script creates tables with gen_random_uuid(), cascade FK, unique composite constraint on [sheet_id, first_name, last_name, email]. |
| Indexes | mustersheets_* (creator, active, expires_at) & musterentries_* (sheet, user, timestamp, name) indexes for query speed. |
| Triggers | update_timestamp() keeps updated_at fresh on every sheet update. |
| RLS | 8 clearly-named policies: public read of active sheets, creator CRUD, QR inserts, creator view/update/delete, anon read entries on active sheet. |
| Auth Script | Uses Supabase Management API (/auth/settings) with PAT (SUPABASE_SERVICE_KEY) → merges redirect URLs idempotently. |
| Build Hooks | postbuild runs apply-rls so fresh deployments always have RLS applied. |
3 Setup & Migration
Fresh Install
# clone, install
git clone ... && cd muster-buddy-check
npm i
# 1. Provision DB
supabase sql < supabase/migrations/create_tables_and_policies.sql
# 2. Configure auth redirects
npm run setup-local-auth # adds localhost URLs automatically
# 3. Populate .env
cp .env.example .env && edit keys
# 4. Dev server
npm run devUpgrading from v3.0.0
- Pull latest:
git pull origin main - Re-apply schema (safe, idempotent): run
supabase sqlwith the new script or executenpm run apply-rls. - Add GitHub provider:
- Supabase Dashboard → Auth → Settings → GitHub → paste Client ID/Secret
- Ensure redirect list matches script.
- Run local auth script once so new redirect URLs are registered.
- Restart dev server / redeploy Netlify.
4 Breaking Changes ⚠️
| Change | Impact | Migration |
|---|---|---|
| New clean schema script | Projects relying on legacy tables (mustersheets_original, attendance_records) must export/migrate data manually. |
Insert old rows into new tables or keep backups. |
| GitHub provider requires redirect URLs | Omitted URLs ⇒ OAuth error 400. | Run npm run setup-local-auth + add Netlify URLs in dashboard. |
| ESM-only admin scripts | Node < 13 or CommonJS wrappers will fail. | Use Node ≥ 18 and call with node file.js (ESM supported). |
5 Documentation Updates
- README.md – new local dev guide, LAN testing, updated ToC, version bump
- NETLIFY_AUTH_TROUBLESHOOTING.md – 2,000-word deep dive into Supabase + provider configs, common issues, debugging
- .env.example – clarified keys & scopes
- CHANGELOG.md – appended 3.1.0 section
- SQL scripts – comments, section headers, safety notes
6 Contributors
- @Juniorduc44 – product direction, testing, schema decisions
- Factory AI Assistant – automation, scripting, docs
- Supabase team – upstream library & dashboard improvements
Thank You ❤️
v3.1.0 focuses on polishing the developer experience while keeping the attendee flow friction-free.
Clone, run npm run dev, scan a QR, and muster on!
Full Changelog: v3.0.0...v3.1.0
v3.0.0
Muster Buddy Check – Release v3.0.0
Release date: 22-JUN-2025
1 Version & Release Metadata
| Item | Value |
|---|---|
| Version | 3.0.0 |
| Previous Version | 2.0.0 |
| Release Date | 19-JUN-2025 |
| Git Tag / SHA | v3.0.0 / <commit-sha> |
| Environment | Production & Staging |
| Migration Script | supabase/migrations/20250621_rls_policies.sql |
2 Executive Summary
v3.0.0 is a stability-focused release that makes QR-code attendance fully public, introduces GitHub single-sign-on, and eliminates the “Sheet Not Found” errors caused by table-name mismatches. It also converts Node scripts to ESM, adds comprehensive RLS policies, and updates documentation for seamless deployment on Lovable or local networks.
3 Detailed Change Log
| Area | Change | Impact |
|---|---|---|
| QR Code Flow | • Fixed race condition in QRCodePage.tsx so QR renders after sheet fetch.• Updated AttendancePage error handling for clearer messages. |
Attendees can reliably scan & submit without login. |
| Database Schema | • Standardised table names to mustersheets & musterentries across code & SQL.• Added index idx_musterentries_sheet_id. |
Prevents 404s and improves query performance. |
| Row Level Security | • New explicit policies (TO authenticated, anon).• Public SELECT on active sheets, public INSERT on entries.• Creator-only SELECT / UPDATE / DELETE on results. |
Secure public sign-in while safeguarding results. |
| Auth Improvements | • GitHub OAuth login in AuthForm.tsx.• Guest mode refinements & session handling. • Logout 403 resolved by correcting global scope request. |
Smoother sign-in options; fewer auth errors. |
| Scripts & Tooling | • scripts/apply-rls-policies.js refactored to ES Modules, loads .env via dotenv.• Added npm run apply-rls convenience command.• .env.example template committed. |
Easy, repeatable database policy deployment. |
| Docs | • New MUSTER_BUDDY_QR_FIX.md and SUPABASE_SOP.md.• Expanded README with local-network QR testing, env setup, and GitHub SSO guide. |
Faster onboarding & clearer troubleshooting. |
| UX Polish | • Dashboard, Sheet Card, Results page use consistent badges & copy. • Added CSV export button. |
Better visual clarity and data export convenience. |
| Versioning | Bumped package.json to 3.0.0. |
Aligns app & npm versions. |
4 Technical Changes
4.1 Database
- Tables:
mustersheets,musterentries(no underscores). - Indexes:
idx_musterentries_sheet_idfor faster look-ups. - RLS Policies: see
supabase/migrations/20250621_rls_policies.sql– 8 total policies. - Script Execution:
npm run apply-rls(requiresSUPABASE_SERVICE_KEY).
4.2 API / Front-end
- Updated Supabase queries to match new table names.
- Added GitHub OAuth call:
supabase.auth.signInWithOAuth({ provider: 'github', options:{ redirectTo: window.location.origin }});
- All Node scripts converted to ESM (
importsyntax).
4.3 Dependencies
- @supabase/supabase-js → ^2.50.0
- dotenv for local script env vars.
- Minor bumps: React 18.3.1, Vite 5.4.1 etc.
5 Deployment / Upgrade Instructions
-
Pull latest main
git checkout main && git pull -
Install deps
npm ci
-
Environment
- Copy
.env.example→.env - Fill
SUPABASE_URL,SUPABASE_PUBLISHABLE_KEY,SUPABASE_SERVICE_KEY.
- Copy
-
Apply DB migration (one-time):
npm run apply-rls # or run SQL in Supabase dashboard -
Build & deploy
- Local:
npm run devthen accesshttp://<LAN-IP>:3000. - Lovable: push to
main, auto-deploy triggers.
- Local:
-
Cache busting
- Confirm new environment variables on hosting platform.
- Clear service-worker cache if QR images still stale.
6 Known Issues
| ID | Description | Workaround |
|---|---|---|
| #42 | Supabase PGRST301 errors on very first cold start in anon mode. |
Hard-refresh or retry after 2 s. |
| #45 | Large CSV exports (>1 MB) may freeze browser tab on mobile Safari. | Export from desktop. |
| #50 | Google OAuth occasionally conflicts with Guest mode localStorage. | Clear storage and re-login. |
7 Contributors
| GitHub Handle | Area |
|---|---|
| @Juniorduc44 | Product owner, front-end |
| @Factory-AI | Code automation & release engineering |
| @supabase | Upstream library maintainers |
(Add any additional contributors who helped on v3.0.0.)
8 Future Roadmap
- Offline PWA mode – cache QR & form for poor connectivity.
- Custom QR styling – brand logos & colors.
- Email confirmations – send attendee confirmation emails.
- Role-based analytics – separate instructor vs. TA permissions.
- Mobile app wrapper – native scanning & push notifications.
End of Release v3.0.0 Template
Full Changelog: v2.0.0...v3.0.0