Both Dockerfiles now explicitly include development dependencies during compilation, even when the hosting platform sets NODE_ENV=production. This fixes the missing Tailwind loader in frontend builds and retains the Nest CLI/TypeScript tools for backend builds.
Final images retain their existing separation: static nginx frontend and production-only API dependencies. Deployment instructions include the build dependency requirement and container ports.
2026-10-19 — Production environment and repository setup
Added explicit production environment commands and public placeholder templates for hrmsminiapp.giraffai.in and hrmsminiapi.giraffai.in. Real .env.prod files remain private.
Frontend Docker builds accept a public API URL build argument; separately hosted frontend images do not depend on an internal API service name.
Added a production Compose configuration, domain/TLS hosting instructions and a shared workspace bundle for the separate source repositories.
2026-10-19 — Full-screen employee mobile navigation
The employee menu button now opens a full-screen navigation dialog with every workspace link and Sign out.
Added a close button, active-page indication, safe-area spacing, scrollable links and theme-matched surfaces. The background is locked while the menu is open; native dialog behavior handles keyboard focus and Escape.
The menu closes on navigation or when switching to desktop width. Desktop navigation and the mobile bottom bar remain available as before.
2026-10-19 — Sample organization and control heights
Added optional sample attendance illustrations and regularization PDFs through the real staged upload/queue flow. Demo credentials are stored in a private ignored local file.
Filter bars now align controls at their bottom edge, with consistent 44px input/select/button heights. Shared action buttons have a 44px minimum touch target.
2026-10-19 — Table row hover
Centralized table hover styling in the shared theme stylesheet. Hovered rows and their cells use the selected palette, including a dark blue-gray highlight in dark mode.
Extended source/export stylesheet checks to cover hover backgrounds and text contrast.
2026-10-19 — Modal and divider appearance
Applied the selected dark surface explicitly to shared modal headers, matching the modal body and keeping titles readable.
Matched form, table, toolbar and pagination separators and control borders to the dark theme. Scrollbars now use theme colors instead of a bright system track.
Expanded stylesheet checks to include an open dialog with its header, form controls and footer, plus navigation and table separators.
2026-10-19 — Dark dashboard surfaces
Fixed the mixed appearance reported in the admin dashboard: dark controls and pale headings alongside light cards, sidebar and page background.
HR and employee layouts now use the shared surface/text colors directly. Added explicit dark styling for navigation, cards, tables, charts and form controls.
Added stylesheet checks for light/dark surface and text pairs, including the CSS assets linked by the exported dashboard.
2026-10-18 — next-themes integration
Replaced the custom appearance store and bootstrap script with next-themes. Light/dark/device modes use one HTML class shared by Tailwind and site styles.
Theme controls wait for hydration before becoming interactive. Existing device preferences are preserved using the same storage key.
An unchanged employee account preference no longer overrides a local theme choice when the provider's setter changes. Failed account sync keeps the local choice.
Added seven DOM integration tests using the real theme provider, covering clicks, persistence, system preference, cross-tab updates, hydration and account syncing. Browser visual acceptance remains with the owner.
2026-10-18 — Theme consistency and Redis checks
Theme changes now apply immediately, including when local storage cannot be written. The selected appearance survives navigation, and device/cross-tab changes remain synchronized.
Unified shared component colors and fixed light-only surfaces, input autofill, native controls and error colors. Employee sign-in branding and appearance controls wrap without overlap.
Added read-only Redis diagnostics with npm run redis:check, plus session-TTL and concurrent login-rate-limit verification.
2026-10-18 — Employee session redirect fix
Opening the employee workspace with only an admin session now redirects once to employee sign-in instead of repeatedly checking the missing employee session.
Session-expiry events are scoped to the matching portal; expired sessions stop refreshing, concurrent checks are coalesced and responses after leaving the page are ignored.
Connection failures show a retry option and sign-in/admin links. Cross-tab synchronization is optional when the browser does not support BroadcastChannel.
2026-10-18 — Appearance, email and self-hosting documentation
Added
Shared light, dark and device appearance modes across sign-in pages, admin and employee workspaces, and documentation. Appearance persists on the device; employee preferences can also sync to the account.
React Icons throughout navigation, dashboard cards, page headings and shared controls.
SMTP delivery through a durable email outbox and RabbitMQ queue, with retry/backoff and an admin delivery history screen.
Email notifications for onboarding, task assignment/reassignment, leave and regularization workflows, and password-change/reset events. Passwords are not emailed.
Public /docs, /docs/features, /docs/changelogs, /docs/readme and /docs/deploy pages, including placeholder-based self-hosting instructions.
Fixed
Button hover feedback keeps each button's background and text colors stable.
The admin sign-in theme switcher flows beside the Restricted access label and wraps on narrow screens without covering it.
Removed the “Authorized personnel only” footer text from admin sign-in.
2026-10-18 — HR workspace foundation
Added
Administrator access and session controls, org-wide dashboard, roles/permission matrix, employee onboarding, departments, designations and shifts.