Collapsible Completed Views & Custody Board Customizations
Added collapsible sections to hide completed inmates on both dashboard views, interactive sorting, custom housing locations tracking, and custody classification highlights.
Collapsible Completed Sections
Hide completed inmates that are no longer in a tank in a section that can be hidden/expanded.
Created collapsible completed/done panels at the bottom of the Custody table and inside the Main Jail unassigned sidebar.
Jail Housing Locations & Custom Cells
Add a column for housing location on Custody board, and display it next to inmates on the Main Jail holding board.
Added housingLocation field to model and routes. Implemented editable Loc / Cell inputs in the table, and location badges in the tank grid.
Custody Sorting, Transitions, and Header Cleanup
Support sorting on custody board, remove floor selectors, adjust tank headers, and automatically map placed inmates to tanks status.
Built interactive headers for sorting, implemented automatic callStatus updates in the PATCH action, and simplified tank card layouts.
Wheelchair Tracking & Unified Custody Metrics
Introduced dedicated wheelchair need tracking, unified custody UI indicators and backgrounds, restructured the custody selection sequence, and corrected docket stats calculations.
Dedicated Wheelchair Need Tracking
Add a way to flag when a defendant requires a wheelchair without having to remove their location/classification.
Added a needsWheelchair boolean field to the database, updated the PATCH endpoint to save the field, and added an interactive wheelchair ♿ icon toggle next to the name of in-custody defendants.
Unified Custody Indicators & Ordered Dropdown Options
Unify custody row backgrounds and checks, sort classification options with correct backgrounds, and resolve duplicate MJ options.
Consolidated in-custody checks to target all custody classifications consistently. Sorted dropdown menus sequentially (base, OPP, PC, IOP, ADSG) and removed duplicate MJ boxes.
Corrected Docket Statistics Counting
Ensure Present and Zoom checked-in people are not counted as in-custody in statistics.
Updated the Live Docket stats dropdown counters to align with unified custody logic, grouping checked-in Present and Zoom defendants under 'Out' instead of leaving them out of counts.
All-Department Live Docket Alphabetical Sorting
Added a sorting exception for the 'All' departments selection in 'Live Docket' mode so that co-defendants remain sorted purely alphabetically.
All-Department Live Docket Alphabetical Sorting
When in Live Docket view with 'All' departments selected, do not group/sort co-defendants; leave them sorted alphabetically instead.
Updated the client-side sorting logic to skip case-grouping and co-defendant matching in Live Docket view when the department filter is set to 'All'.
Granular Permissions & Case Page Numbering
Added granular access control overrides (SUPERUSER roles, canEdit dashboard write permissions, custody restrictions) and automated court calendar case page numbering.
Automated Case Page Numbering System
Automatically calculate and assign page numbers to court hearings, grouping co-defendants under a single cell and displaying the Pg column.
Created client-side co-defendant page grouping and numbering algorithms. Enabled customizable column toggles showing the new 'Pg' column, and supported manual overrides via inline inputs.
Granular Access Control Overrides
Add granular permissions for users (edit vs view-only, custody views toggling) and introduce SUPERUSER management controls.
Updated user schema with accessCustody and canEdit fields. Expanded Admin Console with role dropdowns, toggle buttons for custody and edit privileges, and secured mutation APIs.
Permanent Custody Board Done/Drop Visibility
Remove the 'Show Done' filter toggle on custody/tank views and ensure completed items are permanently visible.
Bypassed hideCompleted checks on custody housing boards and jail tanks, and hid the redundant 'Show Done' UI toggle on those views.
Email Verification OTP Loop & Silent Session Refresh
Fix verification issues where manually approved users are still prompted for email OTP codes.
Automatically verified email checkins upon manual admin approval. Implemented silent session refreshment when DB role/status credentials diverge.
Bulk Calendar Sync Optimizations
Optimize calendar sync queries and update department name parsing fallbacks.
Replaced sequential database updates during docket sync with bulk queries. Updated court fetcher to scrape clean department names from rows.
Production Ready System Release
First official release of Bailiff Master, moving out of the local development sandbox into cloud hosting on Vercel with a production PostgreSQL database.
Production PostgreSQL Database Migration
Transition the local database storage out of SQLite to a production-grade relational database for live multi-user coordination.
Configured PostgreSQL provider in schema.prisma, established Vercel build scripts for Prisma client generation on deploy, and migrated local schema seeding.
Custom Domain & DNS Setup
Resolve Squarespace domains and Vercel hosting setup conflicts to host the live app securely.
Configured domain CNAME/A records pointing to Vercel, resolved SSL/TLS issues, and linked domain bailiffmaster.com.
Admin Access Controls & Domain Restricts
Set up auto-approval email domains and role-based custody access constraints (full access for @sacsheriff.com, restricted custody board for @saccourt.ca.gov and @saccounty.gov).
Added accessCustody toggle to User model, enforced in dashboard view. Integrated Admin settings panel to toggle controls per account.
Bailiff Master Branding & Guide
Rename the system from Court Check-in to Bailiff Master.
Updated all logos, icons, titles, and README documentation to match the new brand identity.
Department Dropdown UI Improvements
Refine the department dropdown styling to match the rest of the Master Dashboard buttons.
Modified style classes and transition effects on dropdown selectors to match the high-contrast view actions.
Session Validation & OTP Middleware Checks
Ensure pending or rejected users cannot bypass route security using outdated session cookies.
Enhanced middleware.ts and getSessionUser to automatically invalidate and clear cookies for accounts not marked as APPROVED.
Build System Spec
- Build Versionv1.4.0
- Client HostVercel Edge
- DB ConnectionPostgreSQL
- ORM LayerPrisma ORM
- Platform FrameworkNext.js 16 (App Router)
- Runtime EnvNode.js 18+ / React 19
- Routing MiddlewareJWT Cookie Checked
Deployment Health
The application state is monitored for secure and performant connection handling across agency domains.