Commit Graph

11 Commits

Author SHA1 Message Date
7141a689b4 Move weather to a top strip and give the closed feed full height
All checks were successful
Build and push image / build (push) Successful in 13s
The weather card becomes a full-width strip under the header. Below it
the stat tiles sit over the technician table, and the recently closed
feed runs the height of both and scrolls inside its own panel. The
"watching" text moves from under the header to the footer, which now
comes before the page script so render() can find it.

Tiles share subgrid rows so a wrapped label doesn't push its number out
of line, and the feed's age column is wider so "1h 13m" no longer runs
into the ticket number.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:24:13 -04:00
0d0bf2b033 Raise contrast and switch the accents to MCCS colors
All checks were successful
Build and push image / build (push) Successful in 15s
Feedback asked for higher contrast. Every color is now a token in
:root, with text checked for WCAG AA: faint text goes from 2.9:1 to
6:1 and muted from 7:1 to 9:1. The heat scale gets its own stronger
color with a 25% floor so a one-ticket cell is visible, and nothing is
smaller than 12px except the feed's "ago" label.

The accent changes from orange to MCCS green and the heat scale to MCCS
navy, both lifted from the colors sampled from the ITS logo, with a
green stripe under the header. Errors stay red-orange.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:00:38 -04:00
dc684fd7fa Sort the technician table by clicking its headers
All checks were successful
Build and push image / build (push) Successful in 15s
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>
2026-10-19 11:42:31 -04:00
872a7f17c3 Add a per-user sort order for the technician table
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>
2026-10-19 11:35:39 -04:00
80a5e2c965 Add per-user closed statuses for the feed and ding
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>
2026-10-19 11:27:17 -04:00
2f137afd5f Limit sign-in to allowed email domains
All checks were successful
Build and push image / build (push) Successful in 13s
Any Zoho account can approve the client, and an outside account got a
session that returned the .env site, group and technician names.
ALLOWED_EMAIL_DOMAINS is now required: the callback refuses other
domains and revokes their token, and every API call re-checks it so
older cookies stop working. /api/names also makes the caller's token
read from SDP before returning the shared names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 21:29:25 -04:00
817fa47edd Add data volume and document per-user settings
All checks were successful
Build and push image / build (push) Successful in 13s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 21:04:22 -04:00
b29c0a022d Record live test results and drop outdated screenshots
The per-user sign-in was tested live on bare metal behind NPM: Zoho
sign-in, SDP data, Sign out and the IP access list all work. Token
renewal and the first Docker deploy are still to check.

- README: section on testing on the server without Docker (Gitea holds
  port 3000, NPM runs in Docker so forward to its network gateway, keep
  PORT out of the production .env), plus Cloudflare proxy and access
  list notes. The screenshots are removed until they're retaken.
- NOTES: deployment gotchas from the test run.
- ROADMAP and SESSION: what's verified, what's left, new resume prompt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 20:22:44 -04:00
f620cd96d4 Document hosted per-user setup and plan per-browser settings
README covers the Server-based Zoho client, the new .env settings,
deployment (image, compose, Nginx Proxy Manager), signing in and the
security model. NOTES records the Zoho OAuth gotchas and the decisions
behind the rebuild. ROADMAP describes the current architecture and the
planned per-browser settings panel. CLAUDE.md and SESSION.md are
brought up to date.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 19:38:08 -04:00
3e79a24efd . 2026-10-15 19:07:07 -04:00
1e3f8dc1ad . 2026-10-15 16:53:51 -04:00