diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 664e376..07ba1f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,7 @@ env: GHCR_REGISTRY: ghcr.io PRIVATE_REGISTRY: registry.cklnet.com K8S_STATE_REPO: christianlouis/k8s-cluster-state + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true jobs: # ── Phase 1: Lint ────────────────────────────────────────────────────── @@ -125,7 +126,7 @@ jobs: - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: - file: ./backend/coverage.xml + files: ./backend/coverage.xml flags: unittests name: codecov-umbrella fail_ci_if_error: false diff --git a/CHANGELOG.md b/CHANGELOG.md index f019c60..da276b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- CI: add `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` env to `ci.yml` to fix Node.js 20 deprecation warnings for `actions/checkout` and `actions/github-script`. +- CI: fix Codecov upload step — change invalid `file:` input to `files:` for `codecov/codecov-action@v5`. +- Frontend: replace `` with `` from `next/image` in `ProviderWizard.tsx` to fix `no-img-element` ESLint errors. + - Fix timezone display in Mailbox Activity / Admin Logs pages: timestamps from the server were parsed as local time when no timezone indicator was present, causing relative times ("1h ago") and absolute dates to be shifted by the client's UTC offset. - Worker tasks: use a fresh DB session for `send_user_notification` calls and move notifications after `db.commit()` to prevent the post-rollback `greenlet_spawn` SQLAlchemy error. - Worker tasks: ensure `last_check_at` and error status are always committed before notifications, fixing accounts being endlessly re-queued after IMAP auth failures. diff --git a/docs/TODO.md b/docs/TODO.md index eabb671..2172337 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -4,6 +4,7 @@ Comprehensive task breakdown for repository improvements and production readines ## ✅ Recently Completed +- [x] **CI pipeline fixes**: Added `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` to `ci.yml` (Node.js 20 deprecation), fixed Codecov `file:` → `files:` invalid input, replaced `` with `` from `next/image` in `ProviderWizard.tsx` (ESLint no-img-element). - [x] **IMAP reliability: switched to UID-based commands** — `_fetch_imap_emails` now uses `UID SEARCH`, `UID FETCH`, and `UID STORE` throughout. Sequence numbers are volatile (they shift on expunge), causing "Too many invalid IMAP commands" on strict servers (e.g. T-Online). UIDs are stable. The per-message `STORE +FLAGS \Seen` (redundant — RFC822 sets it implicitly) and per-message `STORE +FLAGS \Deleted` are replaced with single batch commands. Stale already-seen UIDs are re-marked `\Seen` in one command. Logout is now in a `finally` block so a mid-session `BYE` is handled gracefully. - [x] Fixed timezone display bug in Mailbox Activity and Admin Logs pages: ISO timestamps without a `Z` suffix were parsed as local time by JavaScript, shifting "Xm ago" / "Xh ago" displays and absolute dates by the client's UTC offset. - [x] Fixed worker `send_user_notification` using rolled-back DB session causing `greenlet_spawn has not been called` errors; status/`last_check_at` now always committed before sending notifications via a fresh session. diff --git a/frontend/src/components/ProviderWizard.tsx b/frontend/src/components/ProviderWizard.tsx index c598395..9f2e424 100644 --- a/frontend/src/components/ProviderWizard.tsx +++ b/frontend/src/components/ProviderWizard.tsx @@ -1,6 +1,7 @@ 'use client'; import { useState } from 'react'; +import Image from 'next/image'; import { Mail, ArrowLeft } from 'lucide-react'; interface ProviderPreset { @@ -183,11 +184,14 @@ export function ProviderWizard({ onSelect, onManual }: ProviderWizardProps) {

-
- + {selectedProvider.name}
{selectedProvider.name} @@ -266,11 +270,14 @@ export function ProviderWizard({ onSelect, onManual }: ProviderWizardProps) { className="flex flex-col items-center gap-2 p-3 rounded-lg border border-gray-200 hover:border-blue-300 hover:bg-blue-50 transition-colors text-center" > {/* Fixed-height logo container – logo scales to its natural aspect ratio */} -
- + {provider.name}
{provider.name}