Releases: sleuthy-sloth/92-AMXS-Tracker
Release list
v0.9.0 — Interactive Intelligence Drill-Down + Scoped AI Assistant
What's New in v0.9.0
🔍 Clickable Intelligence Alerts
Mission Intelligence feed alerts are now interactive. Click any alert to open a drill-down modal with full details:
- Red Ball alerts → full list of all urgent maintenance items with tail numbers, discrepancies, repairs, technicians, and timestamps
- Recurring issues → all maintenance entries for the flagged tail number, plus a summary panel showing all recurring tails with entry counts
- Training expired/expiring → personnel list with names, ranks, courses, due dates, and shop assignments
🤖 Scoped AI Maintenance Assistant
Floating AI terminal now active on all pages. Uses tool-calling to query live tracker data (maintenance logs, DIFM parts, training records).
Scope-locked: The system prompt strictly limits the assistant to tracker data only. It refuses general knowledge questions, coding help, creative writing, personal advice, and off-topic queries. If asked something unrelated, it responds with a scope reminder.
♿ Accessibility
- Clickable alerts include keyboard support (Enter/Space to activate)
- role=button, aria-label, and focus indicators on interactive alerts
- Drill-down modal has role=dialog and aria-modal
Files Changed
- NEW: src/components/dashboard/IntelligenceDetailModal.tsx — drill-down modal
- MODIFIED: src/components/dashboard/IntelligenceFeed.tsx — clickable alerts + modal integration
- MODIFIED: src/components/MaintenanceAssistant.tsx — scoped system prompt
- MODIFIED: src/App.tsx — wire assistant into layout
- MODIFIED: src/pages/Dashboard.tsx — pass personnel to IntelligenceFeed
- MODIFIED: README.md — v0.9.0 changelog
v0.8.0 — Test Fixes, Security Hardening, Bundle Optimization
What's New in v0.8.0
🧪 Test Suite Fixed
All 99 tests now passing. Root cause: React 19 removed act from production builds — fixed by forcing NODE_ENV=development in vitest config.
🔒 Security Hardening
- Removed hardcoded admin email (
admin@us.af.mil) from Firestore rules — admin access now exclusively via Firebase custom claims - Demo sandbox
bypassLogindisabled in production builds (import.meta.env.PRODguard)
📦 Bundle Optimization (74% main chunk reduction)
- Lazy-loaded admin routes (Onboarding, Handoff, Workload, Diagnostics) with
React.lazy+Suspense - Vendor chunks split: firebase, jsPDF, xlsx, motion, driver.js
- Main chunk: 2,224 kB → 569 kB (160 kB gzipped)
🛡️ Firestore Rules Fixes
- Added
editingBy/editingByName/editingSincetohasOnly()allowlist (was silently rejecting presence updates) - Added
'inactive'to valid user statuses (soft-delete was broken)
🧹 Code Cleanup
- Fixed
useRoleGuarddead code (isDemoMode || true→true) - Renamed package from
react-exampletoamxs-tracker - Fixed husky
preparescript for fresh installs - Removed committed tool artifacts (
metadata.json,.pi-lens/cache/) - Cleaned 7 obsolete test snapshots
🔒 npm audit
Resolved 15 of 17 vulnerabilities via npm audit fix. Remaining 2 are in xlsx (no npm fix available — pending migration to SheetJS CDN).
🐛 Bug Fix: Intelligence Feed Demo Mode
Intelligence Feed was stuck at "Processing Field Intelligence..." in demo mode because it tried Firestore/AI calls that can't authenticate. Now generates mock intelligence alerts directly from demo data (Red Ball detection, recurring issue analysis, training compliance alerts).
📝 README
- Updated with v0.8.0 changelog
- Added Known Issues section
- Corrected test count to 99
v0.7.0 — App Check, accessibility, architecture cleanup
What's New
🔐 Security
- Firebase App Check — reCAPTCHA Enterprise integration prevents unauthorized API access
- Removed deprecated dependencies (
express,@types/express, duplicatevite)
🧱 Architecture
- ReferenceDocs.tsx decomposed — 921 lines → 4 files (
ViewerModal,UploadSection,formatSize, main page) - Duplicate
directFetchremoved — 37 lines of dead code eliminated fromaiProvider.ts useRoleGuardhook — centralized RBAC (canManage,canAdmin,isAllowed) for route/action guards- Demo data centralized — Dashboard now uses
DemoDataProviderinstead of directMOCK_*imports
♿ Accessibility (Section 508)
- All 6 modals now include
role="dialog",aria-modal, andaria-label - References docs table includes
role="table"androle="columnheader"
🐛 Fixes
- TrainingFormModal: missing
shopId/amuIdinonSubmit(TS error) aiCache.ts: weak 32-bit hash → 64-bit FNV-1a with null separators- README: updated architecture diagram, security model, and AI section to match current state (no Cloud Functions)
📦 Release
package.jsonversion bumped to0.7.0
v0.6.0 — Reference Docs: ISO Checklists & QRL
New Features:
- Reference Docs tab under Operations with ISO Checklists and QRL sub-sections
- Drag-and-drop .xlsx/.xls/.csv upload to Firebase Storage
- SheetJS in-browser viewer with multi-sheet tab support
- Edit mode: contenteditable cells for filling out checklist items
- Save Completed: re-exports edited workbook as a new versioned file
- Template documents are never overwritten — each save creates a dated record
- Live search by filename, description, or uploader
- All roles can view and upload; NCOIC/Leadership can delete
- Demo mode with seed data
Fixes:
- Login page: 92nd AMXS squadron logo replaces generic Terminal icon
- Demo Sandbox button now visible in production (was dev-only)
v0.5.1 — Fix: missing isDemo fields breaking production data visibility
Bug Fixes
- Approved users invisible in roster —
OnboardingApprovalFormnow includesisDemo: falseand usesmerge: trueto prevent overwriting existing document fields - DIFM entries invisible on Dashboard —
DIFMLogsnow includesisDemo: falseon new entries - Training data invisible on Dashboard — Fixed collection name mismatch: Dashboard was reading from
training(singular) while uploads write totrainings(plural) - Snapshot listeners permanently killed on errors —
handleFirestoreErrorno longer throws, preventing onSnapshot listeners from being terminated after any Firestore error - TrainingRecord type — Added missing fields:
personnel_name,certificateUrl,createdAt,createdBy - UserProfile.status type — Added
"inactive"to the status union
Files Changed
src/components/OnboardingApprovalForm.tsxsrc/pages/DIFMLogs.tsxsrc/pages/Dashboard.tsxsrc/contexts/AuthContext.tsxsrc/firebase.tssrc/types.ts
v0.5 92 AMXS Tracker
This is the initial database rollout of the 92 AMXS personnel and maintenance tracker.