- Exclude hidden super administrator from dashboard active users count
- Rename UPDATE PASSWORD button to UPDATE in change password modal
- Use single-word labels and uniform dimensions for user profile action buttons
- Fix requirements strip to use missingRequirementsProvider (per-student) instead
of global documentRequirementsProvider, so Completed/Archived/Needed states
are accurately reflected for each student
- Fix dropdown 'Select Document Type' status labels (was always [Completed]);
now correctly shows [Needed], [Archived], or [Completed] using ID-based lookup
from missingRequirementsProvider
- Add collapsible/expandable requirements strip with AnimatedCrossFade and
chevron toggle; shows mandatory-needed badge count in collapsed header
- Split needed chips into Mandatory (red) and Optional (orange) sections;
add Archived (blueGrey) section distinct from Completed (green)
- Add JHS/SHS category tag on each chip (muted grey badge)
- Simplify chip styling to neutral background/border; color only on status icon
- Remove tap-to-assign chip interaction; chips are now display-only
- Clean up unused _isRequirementMissing, _isRequirementArchived, and
_assignRequirementToEntry methods
- Update AGENTS.md: move completed Document Screen tasks into commented section
- Remove INFERRED_CONNECT_MS: tunnelConnected is now only set true when
cloudflared logs 'Registered tunnel connection' — never inferred from
process uptime.
- Add four independent health dimensions:
cloudflaredRunning — child process alive/exited
tunnelConnected — actual cloudflared connection registered
originHealthy — http://127.0.0.1:18484/ reachable (polled every 20s)
publicEndpointStatus — diagnostic only, never triggers restart
- Add checkOriginHealth(): polls 127.0.0.1:18484 with explicit IPv4
(family:4) to avoid Windows localhost/IPv6 ambiguity.
- Restart cloudflared ONLY on process exit. A public 502/503/504/530
is never a restart trigger.
- Add 90s startup connection timeout: logs 'degraded' warning with full
diagnostics if no connection registered, but does NOT kill the process.
- Improve structured [Tunnel] logging: clearly distinguishes origin,
process, connection, and public endpoint health in every log line.
- Token: never log the full value; log first 6 chars only as proof of
configuration. Fail fast with clear error if token is missing.
- Duplicate process guard: explicit log when skipping a second spawn.
- start_tunnel.bat: add prominent warning not to run while backend is
active; suppress token echo; add --no-autoupdate flag.