The saved tapi-zc-user and the server's MA_USER_NAME are compared
to decide whether to auto-switch the 3CX presence. A mismatch in
capitalization between the two sources silently disabled the sync,
so both are lowercased before comparison.
Renames the Zeiterfassung-vs-home flag to a clearer English name
(SQL alias AT_COMPANY, model property AT_COMPANY, JSON atCompany)
in both the server query/model and the client AvailabilityInfo
type and people-tile renderer.
Server query gets the last stamp's BU_TERM in the same OUTER APPLY
as LAST_STAMP, exposing FIRMA (1 = Zeiterfassung/Büro). Three OUTER
APPLYs reduced to two by combining MAX(BU_BU) with TOP 1 ORDER BY.
Client model gains a firma boolean and the people-tile indicator
appends "· Büro" or "· Home" next to the timestamp, but only when
the user is logged in.
Server query extended with MAX(BU_BU) per user as LAST_STAMP,
exposed via the Availability model. Client formats it as
DD.MM. HH:mm next to the loggedIn dot, replacing the mocked time.
New Availability module decorates each people-tile with a vertical
status bar on the avatar and a dot+timestamp under the status text,
showing ZeitConsens loggedIn state per extension.
Status and Availability now share a single AvailabilityService that
polls /availability every 30s, halving the API load. Avatars are
enlarged to 57px and vertically centered to fit the new layout.
Move quick status buttons into dedicated presence.ts/css module with
Font Awesome SVG icons (briefcase, headphones, grill, beer mug,
screen-users). Bump version to 9.5.0.