Revision Log & Changelog

Home
V2.18.0July 2026Live

Bulk Medical Toggle, Status Refinements & Stability Fixes

Added inline medical toggles to the bulk move modal, refined custody and call status logic to prevent premature clearing from tanks or check-in, fixed merge sync duplication, and improved UI stability against accidental logouts and view resets.

UX/UIbulk-medical-toggle
View details

Inline Medical / Wheelchair Toggle

User Request

can we make it so the wheelchair button is attached to each person in the bulk move. when checking people in that is the likely time when we will identify anyone that might need one

Build Changes

Reinstated the quick 'Wheelchair / Medical' toggle icon directly on the Bulk Move modal rows.

Databaseseparate-custody-call-status
View details

Decouple Custody and Call Statuses

User Request

when refusal / waive etc are selected I do not want it to change the status also. I have had an issue where it then doesn't show that person in the check-in screen

Build Changes

Removed backend logic that automatically mirrored certain custody statuses into the callStatus field.

Databasegrey-out-tank-drops
View details

Preserve Dropped Inmates in Tanks

User Request

if they are down in a tank do not remove them from the tank just grey it out like the not needed

Build Changes

Prevented backend automatic tank clearances when statuses are updated to Drop or other final states.

Databasemerge-sync-duplication
View details

Fix Merge/Link Sync Duplication

User Request

fine tune the link/merge. it works great the way it is but if I resync it after it adds the person I merged/linked again

Build Changes

Simplified the backend merge logic to prevent the creation of duplicate case records.

UX/UIstability-fixes
View details

UI Stability & Accident Prevention

User Request

there were 2 times today that a computer lost sync and logged me out. also if I do cntrl shift R or refresh the page sometimes it resets to a different view

Build Changes

Added a logout confirmation prompt, fixed a hydration race condition in the view state, and debounced the audience counter.

V2.17.0July 2026Live

MJC Tanks Font Scaling & Custody Link Fixes

Added a font scaling slider to the MJC Tanks View for better visibility on wide screens, kept waived/refused inmates in the tank until cleared, fixed a manual link unmerging bug, adjusted print margins, and fixed a transfer tank bug.

UX/UItanks-font-scaling
View details

Main Jail Tank View Font Scaling

User Request

is it possible to scale the font on the main jail tank view. they use a large wide screen and have plenty of real estate but font is too small

Build Changes

Added a Font Size slider directly into the MJC Tanks View to allow deputies to customize their display.

Databasekeep-waived-in-tank
View details

Preserve Tank Location on Status Change

User Request

when we waive / refuse or change status of someone that is down in the tank don't just remove them from the tank. They are down there until they are dumped from the tank or cleared.

Build Changes

Removed automatic tank clearing logic when an inmate's status is changed to Waived, Refused, Dropped, or Done.

Databasefix-manual-link-unmerge
View details

Fix Manual Custody Link Unmerging

User Request

can you take a look at the rules for when we link/merge a defendant. it looks like sometimes they unmerge and sometimes lose their location for an unknown reason

Build Changes

Updated background sync logic to fetch all inmates across all departments when verifying release status.

UX/UIprint-margins-fix
View details

Fix Print View Cutoffs

User Request

both the print view in the print view and the print from calendar page live are cutting off the last name on the bottom. lets move the bottom margin in just a tiny bit

Build Changes

Adjusted bottom CSS page margins for printing.

V2.16.0July 2026Live

Special Status Synchronization, Background Polling Backup, and Version Alert Banner

Added Ref., No TS, 5150, ISO, and Med. call status options with bidirectional synchronization to custody status, implemented a silent 15-second background polling fallback, and created a floating system update alert banner.

UX/UIspecial-status-sync
View details

Special Status Options & Synchronization

User Request

I have a request to add a status option for anytime we have someone Ref, no TS, 5150, ISO or med. the status will also change to show the same thing

Build Changes

Added call status options for Ref., No TS, 5150, ISO, and Med. with bidirectional sync between custody and call status.

UX/UIpolling-and-update-banner
View details

Background Polling Backup & Version Alert Banner

User Request

some of the screens are not refreshing updates. is there a way to have it verify on a timer... what would be the best way to alert all users of a new version...

Build Changes

Implemented a silent 15-second background polling backup and a floating system update banner.

V2.15.0July 2026Live

Session-Level Printing, Visual Chat Notifications, and Protected Docket Synchronization

Added session-level printer controls to print selected calendars, customized single department AM/PM prints, implemented visual toast alerts for staff group chat, and updated docket synchronization to preserve merges and manual edits.

UX/UIsession-level-printing
View details

Session-Level Calendar Printing

User Request

can we add a print icon and option to main jail live view next to the + # check. when I click I would like it to print in the format the calendar is layed out and also have the option to select other calendars so if I wanted to print 1:30 and 1:35 it would print in their way

Build Changes

Added a print action button next to time slot control groups and created a print options modal to select multiple sessions to filter and print together in the calendar layout.

UX/UIcustom-print-formatting
View details

Custom Single Department AM/PM Printing

User Request

can we work on the print format a bit ... sort like we would the live courtroom view so Co-Defendants are together. see department number at the top where PG is and not have any header or footer and page number ...

Build Changes

Configured print stylesheet margins and updated print table sorting/columns for clean single department AM/PM prints.

UX/UIvisual-chat-notifications
View details

Visual Chat Notifications & Auto-Scroll

User Request

in the chat feature can we have it go to the bottom for most recent message instead of the top when we click on it ... I wouldn't mind if a new message pops up like a notification and alert

Build Changes

Updated group chat widget to auto-scroll to the bottom when opened, and implemented slide-in toast notification popups for new messages.

Databasedocket-sync-rules
View details

Protected Docket Synchronization Rules

User Request

look for merged defendants don't get added again when we refresh the docket. never modify the defense and prosecutor. carry manual edits to rescheduled hearings.

Build Changes

Modified backend calendar synchronization to preserve manually merged defendants and protect manually edited counsel names.

UX/UImanual-counsel-formatting-bypass
View details

Bypass Counsel Formatting Rules on Manual Entry

User Request

if I update an attorney name manually don't follow the same rules with last, f

Build Changes

Bypassed standard 'Last Name, First Initial' formatting for manual inputs, storing and showing exactly what was typed.

V2.14.0July 2026Live

Shared Global Undo, Case Merging, Compact Control Tables & Attorney Check-In Cleanup

Introduced county-wide database-backed undo stack, automatic database case number consolidation on merge/link, compact Control View column layouts, clean attorney check-in buttons, and simplified jail cell formatting.

Databaseshared-global-undo
View details

Shared County-Wide Global Undo Stack

User Request

can we make an undo button available for everyone?

Build Changes

Overhauled the undo system from a local browser history stack to a shared, county-wide database-backed undo queue utilizing full audit log snapshots, broadcast in real-time via Pusher.

Databaseconsolidate-cases-pages
View details

Consolidate Case Numbers & Pages on Merge

User Request

when we merge / link person we also need to merge case numbers and page numbers

Build Changes

Configured automatic database-level case number consolidation and combined page number propagation when merging/linking two defendants.

UX/UIorange-users-icon
View details

Orange Users Icon Flagging (No Pulse/Borders)

User Request

Lets get rid of hazard icon and made it something else easier to see ... I dont want it to flash ... match the formating you already have in when last name is exact match

Build Changes

Replaced warning emoji alert with orange Lucide Users icon and unified manual name highlights with duplicate same-last-name highlights (removing pulsing animation and borders).

UX/UIjail-cell-formatting
View details

Jail Cell Formatting Combiner

User Request

200 31 is cell 231. can we follow that formating for all main jail cell locations in the control view

Build Changes

Parsed and combined Main Jail cell numbers mathematically (e.g. 200 31 to 231) for all Control View table displays and print templates.

UX/UIattorney-qr-code-removal
View details

Attorney Check-In QR Code Removal

User Request

lets remove the qr code icon next the each attorney name.

Build Changes

Removed the check-in QR Code button under the defense counsel input to simplify cell space.

UX/UIcompact-control-view
View details

Compact Control View Layout

User Request

on the control view the time, defendant and housing location boxes can be a bit smaller.

Build Changes

Tightened cell paddings and optimized widths for Time (w-16), Defendant (w-48), and Housing Location (w-36) columns in the Control View.

V2.13.0July 2026Live

Directional Merges, Transactional Undo, and Custom Print Layouts

Introduced merge direction selector popup, transactional multi-action local undo system, custom print layout ink-saver override, and custody classification badging throughout the MJC Tanks board.

UX/UImerge-popup
View details

Person Merge Direction Selector Modal

User Request

The merge/link person may need a popup when names are selected to then give us the choice of which person to keep and which one merges behind it.

Build Changes

Implemented an interactive popup modal when merging two defendants, allowing users to choose Option A (Keep Target) or Option B (Keep Source), resolving directional ambiguity.

UX/UIundo-system
View details

Transactional Undo History Stack

User Request

Is it possible to have an undo button without messing everything up?

Build Changes

Created a local history stack state to capture previous values before updating status, tank, notes, check-ins, or page numbers, and rendered a header Undo button to revert transactions.

UX/UIcourtroom-tracker-layout
View details

Courtroom Tracker Larger Red Tanks & Floor/Class Display

User Request

In the courtroom tracker it lists the tank number. can we make that bigger and maybe red? Also, on MJC Tanks view in the courtroom tracker let's add floor and class.

Build Changes

Enlarged tank display in courtroom tracker cards with a red styling, and added formatted Floor and custody classification badges inside MJC Tanks courtroom tracker cards.

UX/UItanks-classification-badging
View details

MJC Tanks Board Classification Badges

User Request

Make sure inmate classification is shown in the Tanks board.

Build Changes

Added Custody Classification badges to all inmate display cards across the entire MJC Tanks view, and formatted housing location strings to save screen real estate.

UX/UIcase-number-popover
View details

Case Numbers Popover Proximity Positioning

User Request

On the view I am giving a screenshot when I click on case number it is cutting off information I need. This is on the live courtroom view.

Build Changes

Measured the triggering element's screen coordinates inside CaseNumbersList to dynamically flip popovers downward with a top arrow pointer if rendered within the top 270px of the viewport.

UX/UIco-def-page-numbers
View details

Co-defendant Page Number Highlight Integration

User Request

When we highlight for co-defendants can we also add the same color to the page number for that person?

Build Changes

Updated sharedColors structure and defined high-specificity custom override CSS classes to bypass default table transparent inputs, colorizing page numbers with matching co-defendant colors.

UX/UIcounsel-present-checkmark
View details

Attorney Check-In Simple Checkmark

User Request

Once an attorney is checked in let's just make it a checkmark and not have counsel present.

Build Changes

Replaced the '✓ Counsel Present' text label with a single bold checkmark symbol '✓' to clean up grid space.

UX/UIlight-mode-print
View details

Light Mode Ink-Saver Printing Overrides

User Request

When printing only print in light mode color scheme but the rest looks good.

Build Changes

Injected media print overrides to force text colors to dark gray/black and backgrounds to white, bypassing dark mode themes when compiling printable PDFs.

UX/UIstats-out-zoom
View details

In-Custody Stats Out/Present/Zoom Grouping

User Request

Next update when the stats show the number of outs it should have present / out / zoom all listed as out because if they are not in custody they are out. the total should be the sum of the custody and out.

Build Changes

Standardized session statistic calculation queries to group Present, Out, and Zoom under a single Out category, and calculated total as the sum of Custody and Out.

Databasecustody-sync-priority
View details

Custody Sync Priority & Auto-Reset (Bail-out Cleaner)

User Request

When we have a new custody list and sync can we make sure the only status that matters is the new one. it might be beneficial to remove all in custody status's when doing the sync and just make the priority the new list. sometimes people bail out or change housing and I always want the most current information.

Build Changes

Overhauled syncCustodyMatches to auto-detect and reset bailed-out inmates to OUT (clearing cells/enemies) while keeping manual links and pulling the latest custody facts.

UX/UIempty-tank-non-custody
View details

Empty Non-Custody Tank Display

User Request

For the next change don't put N/A in the tank field just leave it blank if they are not in custody.

Build Changes

Removed the static 'N/A' text indicator from the Tank cell in the hearings tables, leaving it blank when the defendant is not in custody.

UX/UImanual-name-highlighting
View details

Manual Name Highlighting & Attention Flagging

User Request

Some of the last names are similar enough that we may want to manually make it bold or show that it needs to stand out. Either an option by the name or maybe another function of the merge / link person.

Build Changes

Added a highlightName Boolean database column and an interactive Users toggle next to defendant names to highlight similar or confusing names, matching the duplicate last name styling.

UX/UIraw-housing-control
View details

Full Raw Housing Location on Control Screen

User Request

on control screen I need housing location to list all of their housing, cell and info.

Build Changes

Replaced the shortened housing format (e.g., 5E) with the full raw location detail (e.g., MAIN: 5 EAST 200) inside the Control View table cells.

UX/UIwiden-housing-column
View details

Widen Housing Loc Column & Add View Modal

User Request

its showing up now. we need to make that box bigger to see it all, or be able to click to see teh entire thing similar to how we do comments on other view.

Build Changes

Widened the 'Housing Loc' column header to w-72 (288px) and added a click-to-expand details popup modal.

V2.12.0July 2026Live

Bailiff Group Chat, Widescreen Themes & HOF docket updates

Introduced a real-time group chat room for bailiffs and sheriffs, app-wide theme switching (Light, Grey, Dark), HOF (Hold on Floor) docket status tracking, and Custody list notes editing.

UX/UIbailiff-group-chat-room
View details

Bailiff & Sheriff Real-Time Group Chat

User Request

Create a shared chat for bailiff and sheriff users only, with no persistent history.

Build Changes

Implemented BailiffGroupChatWidget subscribing to county Pusher channels, restricted visibility by jobProfile, and updated Admin console to connect directly to the group feed.

UX/UItheme-switcher
View details

App Theme Switcher (Light, Grey, Dark)

User Request

Add support for multiple app themes.

Build Changes

Created a theme selector dropdown saving options to localStorage and applying theme classes globally to document root.

Databasehof-status-custody-notes
View details

Hold on Floor (HOF) Status & Custody Comments

User Request

Add a HOF docket status and notes editing in custody view.

Build Changes

Registered HOF/Order HOF status options in status options schema, applied teal docket highlights, and added comments column to the custody dashboard list.

V2.11.0July 2026Live

Google Sheets Arial Font & Custody/Present Colors

Applied the default Google Sheets Arial font-family styling throughout the application and updated the In Custody and Present cell background colors to match Google Sheets exactly.

UX/UIsheets-font-colors
View details

Google Sheets Arial Font & Custody/Present Colors

User Request

This app was inspired by a google sheet. can we figure out the font type used in google sheet. looks like Arial and can we have the in custody color and present color background match what we are coming from in google sheets

Build Changes

Configured Arial font family globally for all body, input, select, and button elements, and replaced standard Tailwind custody highlights with custom CSS classes utilizing Google Sheets' exact yellow and orange fill hex values.

V2.10.0July 2026Live

Control View Widescreen Status & Notes Board

Added a widescreen Court Status view displaying all calendar sessions side-by-side with time groupings, interactive checkboxes, live department headers, and a quick-notes panel.

UX/UIwidescreen-control-board
View details

Control View Widescreen Status & Notes Board

User Request

Create a widescreen view showing all departments' statuses side-by-side with check-off lists and quick note adding functionality.

Build Changes

Introduced a layout mode for the Control View allowing bailiffs to view multiple departments in a single side-by-side dashboard.

V2.9.0July 2026Live

Live Tech Support Chat Widget

Implemented a real-time tech support chat widget for bailiffs to receive live assistance directly inside the app, backed by a support bot and a live admin dashboard console.

UX/UIsupport-chat-widget
View details

Live Tech Support Chat Widget

User Request

Add a tech support chat system for bailiffs to communicate directly with administrators without database footprint.

Build Changes

Created SupportChatWidget client-side widget, added Server Actions for real-time Pusher event broadcasting, and built a Live Support Console in the admin dashboard.

V2.8.0July 2026Live

MJC Tanks Sort, Search, and Location Filter

Upgraded the unassigned inmates panel in the MJC Tanks view with name searching, sorting by time/department/name, and housing facility location filters.

UX/UItanks-sort-search-filters
View details

MJC Tanks Sort, Search, and Location Filter

User Request

Add search, sorting, and location toggle capabilities to the unassigned sidebar of MJC Tanks.

Build Changes

Added search, sort dropdown, and location filter tabs to the unassigned sidebar panel to improve navigation and speed up tank assignments.

V2.7.0July 2026Live

Master Show/Hide Done Toggle

Re-introduced a master 'Show Done' checkbox to the top actions header bar, enabling users to show or hide completed cases across all sessions simultaneously with a single click.

UX/UImaster-show-done
View details

Master Show Done Toggle

User Request

I still need a hide done button at the top so I can hide done cases on that page or put the hide button option in the filter next to each court time.

Build Changes

Added a master 'Show Done' checkbox back into the header actions that updates all session-level done visibility preferences at once.

V2.6.0July 2026Live

Inline Session Stats & Interactive Remand Counters

Moved all session statistics (total, in-custody, out-of-custody, and remaining cases) along with interactive database-backed Remand counters directly into each session header row.

UX/UIinline-session-stats
View details

Inline Session Stats & Remand Counters

User Request

Move the stats to that same line for each time. Let's do total defendant in / out / remaining and Remand either + or - or a selector similar to audience checkin.

Build Changes

Removed the header Stats dropdown and integrated dynamic inline stats pills and +/- Remand counters into session headers.

V2.5.0July 2026Live

Calendar Header Preservation for Completed Sessions

Modified session filtering logic to keep the session header rendered even if all cases are Done and hidden, enabling bailiffs to easily toggle them back visible.

UX/UIdone-header-preservation
View details

Session Header Toggle Retention

User Request

Bring back all done cases from a calendar after they are hidden and they are all done.

Build Changes

Shifted per-session completed case filtering from rawMerged query level to JSX rendering level.

V2.4.0July 2026Live

Dismissible DONE TANK Glow & Bubble Badges

Added a dismiss/clear ('X') action on completed blue glowing tanks, allowing bailiffs to temporarily mute the glowing state and hide the floating DONE TANK badge until the assigned inmates change.

UX/UIdismiss-done-tank
View details

Dismissible DONE TANK Glow

User Request

On the last update for the highlight glow and tank done lets let them have an X or some way to clear it once it displays in case they can't clear it right away.

Build Changes

Added a close button inside the floating DONE TANK bubble and created a self-resetting dismissedTanksMap state based on inmate list hashes.

V2.3.0July 2026Live

Per-Session Show/Hide Done Filtering

Moved the global Show Done filter from the top header to a per-session control box next to the add-case (+) and auto-number (#) buttons in the session headers, allowing custom done visibility per calendar individually.

UX/UIper-session-show-done
View details

Per-Session Show/Hide Done Toggle

User Request

On the live calendar view, move the show done next to the + # so that we can check or uncheck done view for each calendar individually.

Build Changes

Removed the global header checkbox and integrated a custom Check-icon toggle button into the session header action split boxes.

V2.2.0July 2026Live

Blue Glowing Completed Tanks & DONE TANK Bubble Badge

Re-themed completed ready-to-empty tanks to blue, adding a pulsing blue glow, a blue header highlight, and a floating 'DONE TANK' bouncing bubble badge with a live status indicator dot.

UX/UIblue-glow-tanks
View details

Blue Glowing Completed Tanks & DONE TANK Badge

User Request

The all done is great. Let's make it blue and a floating bubble that says 'DONE TANK' should look good.

Build Changes

Changed completed tank glow styles to blue, styled the clear button to blue-pulse, and rendered an absolute-positioned floating bubble badge.

V2.1.0July 2026Live

MJC Ready-to-Empty Yellow Glowing Tanks

Added a visual yellow glow effect to MJC Tank containers when all assigned inmates are completed (Done / Drop / Waive) to indicate they are ready to empty.

UX/UIyellow-glow-tanks
View details

Ready-to-Empty Tank Glowing

User Request

If everyone is listed as done in a tank, have the entire box for the tank glow yellow to indicate its ready to empty.

Build Changes

Computed an isAllDone flag for each tank and applied a custom yellow border/glowing shadow class list.

V2.0.0July 2026Live

MJC Tanks Wheelchair Toggle Support

Added support for editing and toggling a defendant's wheelchair flag directly inside the MJC Tanks view details popup modal.

UX/UItanks-wheelchair
View details

Tanks View Wheelchair Toggle

User Request

Add the option to add a wheelchair in the MJC Tanks view, potentially inside the info popup as an option.

Build Changes

Added an interactive Wheelchair Status action button inside the Defendant Details modal on the MJC Tanks board.

V1.9.0July 2026Live

Partial Custody and Present Row Coloring Tweak

Modified the custody (in custody / present / zoom) row styling to restrict background coloring to the first three cells (Page number, Name/Audience counter, and Custody status badge). Custody highlights override state colors like Ready/Tanks/Ordered, but priority states (Live, Done, Drop, Waive) remain on top.

UX/UIpartial-row-color
View details

Partial Row Coloring for Custody and Present

User Request

For in custody and out of custody marked present, do not color the entire row, but only the first section, with custody color taking priority over Ready/Tanks/Ordered but overridden by Live/Done/Drop.

Build Changes

Restricted presentZoomBg and inCustodyBg style classes to the first three table columns in renderHearingRow under non-priority states.

V1.8.0July 2026Live

Header Action Stabilization, Right-to-Left Alignment, and Fixed Width Containers

Stabilized the header actions layout by enforcing fixed dimensions on interactive containers, moving the MJC Tanks Board Count badge next to left-hand department filters, and reorganizing header buttons right-to-left as Logout, Refresh, View, Search, and Stats.

UX/UIheader-reorder
View details

Right-to-Left Header Actions Order

User Request

Make the top header buttons consistent: Logout -> Refresh -> View -> Search -> Stats.

Build Changes

Reordered actions bar elements to layout in the specified DOM sequence (Stats -> Search -> View -> Refresh -> Logout).

UX/UIlayout-shift-prevention
View details

Fixed Widths & Shift Prevention

User Request

Prevent layout shifting when switching between views.

Build Changes

Applied fixed Tailwind widths to all action containers and used visibility hidden instead of conditional mounting.

UX/UIboard-count-relocation
View details

MJC Tanks Board Count Relocation

User Request

Move MJC Tanks Board Count card to the left-hand Date/Dept filter bar.

Build Changes

Relocated the Board Count component from the actions bar to the left-side filters container.

V1.7.0July 2026Live

Pro Per Attorney Formatting, Interactive Custody Status Selector, Unified Add Case Button, and Not-Needed Sync

Intercepted pro per designations in attorney name formatting, enabled interactive custody status editing inside Control view, moved Add Case button directly into session headers as a split button box, synchronized inmate Not-Needed statuses between Supabase and Prisma, and cleaned up table bulk action button headers.

UX/UIpro-per-formatting
View details

Pro Per / Self-Represented Attorney Formatting

User Request

Do not format pro per / self-represented designations as names (First/Last initial).

Build Changes

Normalized and intercepted variations of 'pro per', 'pro se', 'self represented', and standard pd/da generic labels in formatAttorneyName.

Databasenot-needed-sync
View details

Not-Needed Custody Sync & Greying Out

User Request

Sync Not Needed status from link custody view to grey them out in the custody (Control) list.

Build Changes

Synchronized Supabase is_nn flag to Prisma custodyStatus as 'Not Needed' and refactored status checks into a centralized isStatusGreyedOut helper.

UX/UIsplit-session-actions
View details

Add Case next to Number Session (+ / # split button)

User Request

Move Add Case next to Number Session as a split box with icons and no text.

Build Changes

Created a unified + and # split button container in session headers. Added context pre-filling for manually added cases.

UX/UIcontrol-housing-selector
View details

Interactive Custody Selector in Control View

User Request

Allow editing custody status/classification (Housing) directly in the Control view.

Build Changes

Replaced static text badge in the Housing column with the interactive CustodySelector dropdown.

UX/UIbulk-action-cleanups
View details

Group-Level Bulk Actions Cleanups

User Request

Remove group-level bulk action buttons from the custody list table headers.

Build Changes

Removed the per-group bulk action header menus from the Control view custody tables.

UX/UIlive-order-reset
View details

Live Status Sorting Order Reset

User Request

Reset callOrder to 0 when moving an inmate to Live status.

Build Changes

Enforced setting callOrder to 0 in all status change selectors when status transitions to Live.

UX/UIempty-tank-status-dots
View details

Empty Tank Verification Status Indicators

User Request

Show a status color circle next to inmate names in the Empty Tank verification dialog.

Build Changes

Added status circles utilizing getSingleStatusCircle next to names in the Empty Tank confirmation checklist.

UX/UImjc-tanks-legend
View details

MJC Tanks Status Color Legend

User Request

Add a legend for yellow, green, and blue circles on the MJC Tanks view.

Build Changes

Added color legend (Yellow = Ready, Green = Live, Blue = En Route) to the main unassigned list header.

V1.6.0July 2026Live

Custody Linking Optimizations, Time Filters, and RCCC Classification Grouping

Deduplicated unmatched hearings in custody linking, added dynamic time filter toggles to the unmatched view, applied department-specific color styling, grouped RCCC inmates by classification instead of housing barracks, fixed prosecutor name formatting, and added housing details to the Empty Tank confirmation popup.

Databasecustody-linking-fixes
View details

Unmatched Hearings Deduplication & Exclusions

User Request

Consolidate duplicate unmatched hearings for the same defendant, and exclude defendants who are already matched to a custody record.

Build Changes

Updated GET sync endpoint to group by unique defendantId, exclude already-matched defendants, and prevent double-matching in the auto-sync loop.

UX/UIcustody-time-filters
View details

Unmatched View Time Filters & Color Coding

User Request

Add filter buttons to ignore specific times in the unmatched hearings view, and colorize department buttons using theme colors.

Build Changes

Implemented ignoredTimesFilter state, dynamic unique time extraction, interactive toggle buttons, and colored active department buttons with their corresponding theme colors.

UX/UIrccc-classification-grouping
View details

RCCC Classification Grouping & Iconography

User Request

Group RCCC inmates in the custody view by classification (custody status) instead of housing location, and update headers.

Build Changes

Modified sorting value resolvers, active grouping keys, and completed separators to group RCCC inmates by classification. Rendered RCCC group headers with a Shield icon.

UX/UImisc-custody-linking-upgrades
View details

Prosecutor Name Formatting & Empty Tank Popups

User Request

Fix prosecutor name formatting (Last Name, First Initial) and add housing locations to the Empty Tank confirmation dialog.

Build Changes

Updated formatProsecutorName helper to parse LASTNAME FIRSTNAME format, and included housing location details in the tank clearing checklist subtext.

V1.5.9July 2026Live

Audit Logging, Real-Time Updates, and Control Board Upgrades

Added database audit logging for modifications, replaced background polling with real-time WebSocket updates via Pusher, renamed Control Housing Board to Control, and added a toggle to group completed/done cases together or at the bottom.

Databaseaudit-logging
View details

Database Audit Logging for Hearing Modifications

User Request

Add audit logging to track who modifies hearings (status, tanks, page numbers, etc.) and when the changes occurred.

Build Changes

Created AuditLog Prisma model, implemented a shared audit logger utility, integrated logging into single and bulk PATCH endpoints, and created a dedicated Admin Audit view.

UX/UIpusher-realtime
View details

Real-Time WebSocket Updates via Pusher

User Request

Replace the 5-second background polling with instant real-time updates when another user makes changes.

Build Changes

Installed Pusher dependencies, triggered events on the backend upon hearing changes, and updated the client dashboard to subscribe to county-specific Pusher channels.

UX/UIcontrol-upgrades
View details

Control Board Renaming & Done Toggles

User Request

Rename the Control Housing Board view to just Control, and support a toggle to list completed inmates inline or keep them collapsed in a separate table at the bottom.

Build Changes

Renamed view routes, sidebar menu options, and panel headers to Control. Implemented a dual-state combineCompletedCustody filter toggle, updating table filters and hiding the bottom completed list when combined.

V1.5.8July 2026Live

Check-in Custom Columns, Embedded Reports, and Color-Coded Department Typography

Added a streamlined Check-in view with customized columns, embedded analytics directly in Settings, renamed Link Custody to Custody Link under MJC Tanks, and styled all department selector texts and Print View inactive buttons to match courtroom color branding.

UX/UIcheckin-customs
View details

Streamlined Check-in View, Integrated Analytics & Department Branding

User Request

Make the department writing match the colors. Duplicate Live Docket as Check-in view. Rename Live Docket to Court Calendar (Live). Rename Custody View to Control View. Rename Main Jail Tanks to MJC Tanks. In Check-in view, remove Tank #, Cases, Order number, and Prosecutor. Put the reports view as a box in settings. Call Link Custody 'Custody Link' and place it under MJC Tanks in the list.

Build Changes

Implemented check-in view table column exclusion toggles, moved reports monthly stats table into a container inside settings panel, adjusted view switcher drop down item labels and positions, defined department HSL colors, and styled active/unselected department selectors dynamically.

V1.5.7July 2026Live

Docket Column Scaling, Comments Expansion & Print Customizations

Added comments full view modals, collapsed case columns, repeating transport chime alerts, and print optimizations (hiding court headers, omitting OUT status, and ink-saver thin borders).

UX/UIdocket-enhancements
View details

Docket Layout, Comments Modals & Cases Compression

User Request

Add comments full view expansion, collapse docket cases column, make text boxes match row highlight backgrounds, separate print preview department filter, beep SEND UP alerts every 10 seconds, hide print title headers, ignore OUT status when printing, and make print borders thinner to save ink.

Build Changes

Implemented expandable Bailiff comments modal, compressed cases column by shifting hearing types to dropdown popup, added row-wide status highlights, set daInfo/tank/cases print columns to false by default, styled print view borders as thin hairlines, added repeating chime interval for SEND UP, omitted OUT custody text on print, and added print:hidden to print headers.

V1.5.6June 2026Live

Main Jail Layout Optimization & View-Specific Count

Moved the Total Board Count to the top navigation header for the Main Jail Tanks view, removed the board title and sub-title to maximize space, removed Top/Bottom Row grid titles, and made the dashboard height-responsive on large screens.

UX/UIlayout-optimize
View details

Viewport-Fitting & Cleaned Up Main Jail Holding Board

User Request

Clean up the Main Jail Holding Board: move the count to the very top header only in this view, remove the main title, remove Top/Bottom Row grid titles, and maximize available real estate.

Build Changes

Added conditional board count in top header, removed layout title/sub-title, removed row labels, reduced padding/gaps, and implemented height-filling flex layouts on xl screens.

V1.5.5June 2026Live

Custody List Synchronization & Inmate Link Matcher

Added direct synchronization with the Custody List Supabase database. Integrates automated and manual inmate name linking for courtrooms 60-63, populates housing locations, X-Ref numbers, and imports/displays keep-away enemies alerts.

UX/UIcustody-sync
View details

Database Sync, Manual Linker UI & Keep-Away Warnings

User Request

Connect Court Checkin to Custody List database. Auto-match inmates in depts 60-63. Add manual linker for spelling discrepancies, display X-Ref #s, housing cells, and enemies list in Custody View and Live Docket.

Build Changes

Created Supabase auth/REST sync engine, implemented a dual-pane Link Custody matcher interface, updated database schema for X-Ref / Enemies, and added red visual warning badges for keep-away alerts.

V1.5.4June 2026Live

Split-Row Tanks Layout & Courtroom Tracker Sidebar

Added dedicated split-row holding tank layout to stabilize spatial organization, converted the alerts panel into a courtroom tracker for departments 60, 61, 62, 63, and added Pass/Done actions.

UX/UIcourtroom-tracker
View details

Split-Row Tanks & Courtroom Tracker Console

User Request

Keep Tanks 1-5 on top row, Tanks 6-9 & Bench on bottom row. Convert alerts panel to tracker for courtrooms 60-63, with Pass/Done buttons. Pulse SEND UP in orange and EN ROUTE in blue.

Build Changes

Restructured Tanks grid container to split tank options, mapped Courtrooms 60-63 in the sidebar with active count badges, added Pass (put back in tank) and Done (clear from court) actions, and updated active transport status colors.

V1.5.3June 2026Live

SEND UP & EN ROUTE Multi-Stage Transport Workflow

Added courtroom transport request visual chime alarms, stable top centered warning alerts, silent auto-refreshing polling, multi-stage status dispatches, and browser refresh state persistence.

UX/UIsendup-workflow
View details

Courtroom SEND UP Transport alerts & multi-stage status

User Request

Add new status SEND UP to trigger chimes and visual warning popups on the Main Jail Tanks board, support browser refresh state persistence, silent background polling, and transition to EN ROUTE when acknowledged/sent.

Build Changes

Updated status options, mount loader syncing, silent background polling, fixed warning popup modal, right-sidebar Send Up alerts panel, card actions (Acknowledge and Sent), top-of-tank list sorting, and localStorage persistence hooks.

V1.5.2June 2026Live

Split PM 1:30 and 1:35 Session Stats Tracking

Separated the PM statistics session into two distinct tracks: PM (1:30) and PM (1:35) for more granular custody, out, and remand analytics.

Databasesplit-pm-stats
View details

Split PM Session Analytics

User Request

Lets change the PM to be 2 different stats. 1:30 and 1:35 should get their own stat tracking

Build Changes

Added pm135Remands column to SessionStats database schema, split the Live Docket stats panel, and updated monthly aggregates.

V1.5.1June 2026Live

Tank Status Transitions & Normalization Rules

Refined status transitions when tank numbers are assigned or cleared, ensuring proper classification to R/Tanks for ordered defendants and Tanks for other defendants.

UX/UItank-transitions
View details

Tank Status Transitions & Normalization

User Request

So if status was order / ordered and a tank number gets assigned it should change to R/Tanks. If there is a tank number and no other status it should say Tanks

Build Changes

Updated both API routes and client-side state managers to enforce status transitions when tank numbers are edited, cleared, or loaded.

V1.5.0June 2026Pre-release

Granular Admin Permissions & Layout Optimizations

Added checkboxes/toggles in the Admin Console to allow restricting user privileges (Call Order modifications, Comment viewing, and Tank number visibility) and optimized the admin dashboard layout to fit all columns.

Securitygranular-permissions
View details

Granular Feature Restrictions

User Request

For admin control can we add checkboxes for allowing to restrict the ability to set order and another to restrict seeing comment box and another to not see tank number

Build Changes

Added canSetOrder, canSeeComments, and canSeeTank columns to database, and added backend toggle actions.

UX/UIcompact-admin-ui
View details

Optimized Admin Directory & Compact Checkboxes

User Request

Add permission toggle controls to admin console and optimize layout to avoid left-to-right scrolling.

Build Changes

Replaced wide allowed/restricted buttons with compact checkboxes, added truncation on Name and Email columns, and converted layout to top horizontal tabs.

V1.4.0June 2026Live

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.

UX/UIcollapsible-sections
View details

Collapsible Completed Sections

User Request

Hide completed inmates that are no longer in a tank in a section that can be hidden/expanded.

Build Changes

Created collapsible completed/done panels at the bottom of the Custody table and inside the Main Jail unassigned sidebar.

Databasehousing-locations
View details

Jail Housing Locations & Custom Cells

User Request

Add a column for housing location on Custody board, and display it next to inmates on the Main Jail holding board.

Build Changes

Added housingLocation field to model and routes. Implemented editable Loc / Cell inputs in the table, and location badges in the tank grid.

UX/UIdashboard-customizations
View details

Custody Sorting, Transitions, and Header Cleanup

User Request

Support sorting on custody board, remove floor selectors, adjust tank headers, and automatically map placed inmates to tanks status.

Build Changes

Built interactive headers for sorting, implemented automatic callStatus updates in the PATCH action, and simplified tank card layouts.

V1.3.0June 2026Live

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.

UX/UIwheelchair-tracking
View details

Dedicated Wheelchair Need Tracking

User Request

Add a way to flag when a defendant requires a wheelchair without having to remove their location/classification.

Build Changes

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.

UX/UIunified-custody
View details

Unified Custody Indicators & Ordered Dropdown Options

User Request

Unify custody row backgrounds and checks, sort classification options with correct backgrounds, and resolve duplicate MJ options.

Build Changes

Consolidated in-custody checks to target all custody classifications consistently. Sorted dropdown menus sequentially (base, OPP, PC, IOP, ADSG) and removed duplicate MJ boxes.

Databasestats-corrections
View details

Corrected Docket Statistics Counting

User Request

Ensure Present and Zoom checked-in people are not counted as in-custody in statistics.

Build Changes

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.

V1.2.0June 2026Live

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.

UX/UIlive-docket-sorting
View details

All-Department Live Docket Alphabetical Sorting

User Request

When in Live Docket view with 'All' departments selected, do not group/sort co-defendants; leave them sorted alphabetically instead.

Build Changes

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'.

V1.1.0June 2026Live

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.

UX/UIpage-numbering
View details

Automated Case Page Numbering System

User Request

Automatically calculate and assign page numbers to court hearings, grouping co-defendants under a single cell and displaying the Pg column.

Build Changes

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.

Securitygranular-permissions
View details

Granular Access Control Overrides

User Request

Add granular permissions for users (edit vs view-only, custody views toggling) and introduce SUPERUSER management controls.

Build Changes

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.

UX/UIcustody-visibility
View details

Permanent Custody Board Done/Drop Visibility

User Request

Remove the 'Show Done' filter toggle on custody/tank views and ensure completed items are permanently visible.

Build Changes

Bypassed hideCompleted checks on custody housing boards and jail tanks, and hid the redundant 'Show Done' UI toggle on those views.

Securityauth-verification-fixes
View details

Email Verification OTP Loop & Silent Session Refresh

User Request

Fix verification issues where manually approved users are still prompted for email OTP codes.

Build Changes

Automatically verified email checkins upon manual admin approval. Implemented silent session refreshment when DB role/status credentials diverge.

Databasesync-performance
View details

Bulk Calendar Sync Optimizations

User Request

Optimize calendar sync queries and update department name parsing fallbacks.

Build Changes

Replaced sequential database updates during docket sync with bulk queries. Updated court fetcher to scrape clean department names from rows.

V1.0.0June 2026Live

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.

Databasedb-migration
View details

Production PostgreSQL Database Migration

User Request

Transition the local database storage out of SQLite to a production-grade relational database for live multi-user coordination.

Build Changes

Configured PostgreSQL provider in schema.prisma, established Vercel build scripts for Prisma client generation on deploy, and migrated local schema seeding.

Infradomain-setup
View details

Custom Domain & DNS Setup

User Request

Resolve Squarespace domains and Vercel hosting setup conflicts to host the live app securely.

Build Changes

Configured domain CNAME/A records pointing to Vercel, resolved SSL/TLS issues, and linked domain bailiffmaster.com.

Securityaccess-controls
View details

Admin Access Controls & Domain Restricts

User Request

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).

Build Changes

Added accessCustody toggle to User model, enforced in dashboard view. Integrated Admin settings panel to toggle controls per account.

Brandingbranding
View details

Bailiff Master Branding & Guide

User Request

Rename the system from Court Check-in to Bailiff Master.

Build Changes

Updated all logos, icons, titles, and README documentation to match the new brand identity.

UX/UIdropdown
View details

Department Dropdown UI Improvements

User Request

Refine the department dropdown styling to match the rest of the Master Dashboard buttons.

Build Changes

Modified style classes and transition effects on dropdown selectors to match the high-contrast view actions.

Securityauth-middleware
View details

Session Validation & OTP Middleware Checks

User Request

Ensure pending or rejected users cannot bypass route security using outdated session cookies.

Build Changes

Enhanced middleware.ts and getSessionUser to automatically invalidate and clear cookies for accounts not marked as APPROVED.

Build System Spec

  • Build Versionv2.16.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.

Main Site Online100%
Database ConnectionActive