Add AdminDashboard/src/Utils/API.ts to register a refreshSession handler on BaseAPI
that posts to IDENTITY_URL/refresh-session (using skipAuthRefresh). Handle HTTP error
responses and exceptions, and set a refresh-failure handler that logs and falls back
to logout. Export BaseAPI. Import the module in Index.tsx for side-effect initialization.
- introduce RequestOptions.skipAuthRefresh and APIErrorRetryContext
- implement BaseAPI refresh handlers (setters), shouldRetryAfterError, refreshAuthSession with deduping promise and refreshFailure handler
- make API.handleError async and add default shouldRetryAfterError; extend fetchInternal with retryCount and retry after successful auth refresh
- register auth-refresh handlers for Dashboard and StatusPage and import API utils in Index entries for side-effects
- tighten StatusPage logout/refresh logic with logging and safety checks
Create /var/log/nginx and touch access.log/error.log in run.sh so nginx -t succeeds before reloads.
Revert nginx.conf error_log to /var/log/nginx/error.log (notice).
- Add refresh token signing and decoding (JSONWebToken.signRefreshToken, decodeRefreshToken)
- Persist hashed refresh token on user on signup, login and SSO flows
- Invalidate persisted refresh token on logout
- Add /refresh-session endpoint to validate refresh token, rotate session, and return refreshed session
- Implement middleware tryRefreshSession to auto-refresh expired access tokens using refresh token
- Make CookieUtil.setUserCookie return session details (access/refresh tokens, sessionId, expiries) and set both cookies
- Introduce secure default cookie options (path, sameSite, secure, httpOnly) and use IsProduction for secure flag
- Add CookieName.RefreshToken constant and update tests accordingly
- select incidentNumber/alertNumber when loading open incidents/alerts
- attach relatedIncidentNumber / relatedAlertNumber to evaluation events (created/resolved/skipped)
- add number fields to MonitorEvaluationEvent type
- decorate event title/message in EvaluationLogList to include "Incident #N" / "Alert #N"
Remove firstMetCriteriaIndex and shouldShowShortCircuitMessage, and delete the UI block that displayed the "remaining criteria were not evaluated" short-circuit message. Simplifies criteria rendering by removing unused short-circuit handling.
Extract persistLatestMonitorPayload and consolidate handling of serverMonitorResponse
and incomingMonitorRequest. Ensure monitor payload updates are saved consistently
(including when there are no steps or no matching monitor step) and before writing logs.
Also clone incomingMonitorRequest via JSON to avoid mutating the original payload and
normalize debug messages.
- Reuse an existing team instead of throwing BadRequest on duplicate group names.
- Create a new team when not found, setting isTeamEditable/isTeamDeleteable and allowing empty groups.
- Ensure member additions operate on the resolved target team.
- Expand team select fields and fetch the team for response; return 201 for newly created teams and 200 when reusing an existing one.
- Add notice when a criteria is satisfied under FilterCondition.Any to indicate remaining criteria were not evaluated.
- Ensure FilterCondition is imported where used.
- Change "Criteria met" text color in Logs view from green to gray for consistent summary styling.