Skip to content

Releases: sleuthy-sloth/92-AMXS-Tracker

v0.9.0 — Interactive Intelligence Drill-Down + Scoped AI Assistant

Choose a tag to compare

@sleuthy-sloth sleuthy-sloth released this 18 Jun 02:40

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

Choose a tag to compare

@sleuthy-sloth sleuthy-sloth released this 18 Jun 02:29

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 bypassLogin disabled in production builds (import.meta.env.PROD guard)

📦 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/editingSince to hasOnly() allowlist (was silently rejecting presence updates)
  • Added 'inactive' to valid user statuses (soft-delete was broken)

🧹 Code Cleanup

  • Fixed useRoleGuard dead code (isDemoMode || truetrue)
  • Renamed package from react-example to amxs-tracker
  • Fixed husky prepare script 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

Choose a tag to compare

@sleuthy-sloth sleuthy-sloth released this 02 Jun 02:30

What's New

🔐 Security

  • Firebase App Check — reCAPTCHA Enterprise integration prevents unauthorized API access
  • Removed deprecated dependencies (express, @types/express, duplicate vite)

🧱 Architecture

  • ReferenceDocs.tsx decomposed — 921 lines → 4 files (ViewerModal, UploadSection, formatSize, main page)
  • Duplicate directFetch removed — 37 lines of dead code eliminated from aiProvider.ts
  • useRoleGuard hook — centralized RBAC (canManage, canAdmin, isAllowed) for route/action guards
  • Demo data centralized — Dashboard now uses DemoDataProvider instead of direct MOCK_* imports

♿ Accessibility (Section 508)

  • All 6 modals now include role="dialog", aria-modal, and aria-label
  • References docs table includes role="table" and role="columnheader"

🐛 Fixes

  • TrainingFormModal: missing shopId/amuId in onSubmit (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.json version bumped to 0.7.0

v0.6.0 — Reference Docs: ISO Checklists & QRL

Choose a tag to compare

@sleuthy-sloth sleuthy-sloth released this 29 May 16:00

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

Choose a tag to compare

@sleuthy-sloth sleuthy-sloth released this 29 May 01:00

Bug Fixes

  • Approved users invisible in rosterOnboardingApprovalForm now includes isDemo: false and uses merge: true to prevent overwriting existing document fields
  • DIFM entries invisible on DashboardDIFMLogs now includes isDemo: false on new entries
  • Training data invisible on Dashboard — Fixed collection name mismatch: Dashboard was reading from training (singular) while uploads write to trainings (plural)
  • Snapshot listeners permanently killed on errorshandleFirestoreError no 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.tsx
  • src/pages/DIFMLogs.tsx
  • src/pages/Dashboard.tsx
  • src/contexts/AuthContext.tsx
  • src/firebase.ts
  • src/types.ts

v0.5 92 AMXS Tracker

Choose a tag to compare

@sleuthy-sloth sleuthy-sloth released this 15 Apr 19:37

This is the initial database rollout of the 92 AMXS personnel and maintenance tracker.