Replaces the "Sort rows by" setting from the previous commit. Every
header is now a button: a new column starts A to Z for names and highest
first for counts, and a second click reverses it. Rows default to name
A to Z, and each browser remembers its own sort in localStorage, like the
sound toggle. The arrow points toward the larger end (down for A to Z
or lowest first, up for highest first). The tableSort setting is removed
from the server again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Settings has a "Sort rows by" choice: the technician list order (the
default, as before), technician name, Total open, Closed today or any
status column. Counts sort busiest first with ties by name, and the
sorted column's header gets an arrow. The browser does the sorting; the
server only validates and saves tableSort.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SDP closes a resolved ticket on its own after 2 or 3 days, so watching
only Closed gave the ding days late. Each user can now pick which
statuses count as closed for the feed (feedStatuses, defaulting to
STATUS_NAMES). With Resolved picked, tickets are timed by resolved_time
so the automatic close later doesn't ding again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each user's sites, groups, technicians, timing, weather location and
hidden panels/columns are saved by Zoho email in DATA_DIR, merged over
the .env defaults and validated on PUT /api/settings. /api/names
suggests names from recent tickets, and weather is cached per zip from a
fixed list of campuses.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>