HIGH fixes (7): - H1: VNCdirectory admin i18n — 30+ translation keys added - H2: handleSave try/catch with error toast - H3: Free/busy accountId scoping - H4: cancelEventBookings filter by eventId - H5: Resource picker static apiFetch import - H6: Sharing-store toast messages via lastMessage state - H7: roleLabel for all resource types MEDIUM fixes (11): - M1: identitySignatureMap cleanup on delete - M2: Now-line relative positioning - M3: Radial menu disabled item keyboard nav - M4: Radial menu stable event listener via refs - M5: cancelBooking error on missing booking - M6: PasswordRow isMasked state flag - M7: Extract shared rights into lib/sharing-rights.ts - M8: VNCtalk client server-side guard - M9: Collabora configManager instead of process.env - M10: CONFIG_ENV_MAP VNCdirectory fields - M11: SENSITIVE_CONFIG_KEYS field name unification LOW fixes (7): - L1-L3: Unused imports removed - L4: aria-labels on close, clear, search, spinner - L5-L7: Comments for intentional patterns, null guard
5.9 KiB
5.9 KiB
Phase 2 QA Report — v1.7.9 → v1.8.0
Date: 2026-08-07
Branch: feat/phase2-signatures-sharing → main
Sandbox: https://vncmail.sandbox.vnc.de (ArgoCD vncmail-dev)
Scope: All 14 Phase 2 features (59 files, +7,767/-122 lines)
Feature Build Status
| # | Feature | Built | QA Status |
|---|---|---|---|
| P2.1 | Extended Signatures | ✅ | 4 issues (1 CRITICAL FIXED, 3 MEDIUM) |
| P2.2 | Create Appointment from Email | ✅ | 0 issues |
| P2.3 | Folder Sharing | ✅ | 4 issues (1 CRITICAL FIXED, 3 HIGH) |
| P2.4 | Calendar Dashlet | ✅ | 1 issue (LOW) |
| P2.5 | Email Import | ✅ | 3 issues (1 CRITICAL FIXED, 2 LOW) |
| P2.6 | Contact Import | ✅ | 0 issues |
| P2.7 | Free/Busy View | ✅ | 3 issues (1 HIGH, 2 MEDIUM) |
| P2.8 | Resources/Equipment Booking | ✅ | 5 issues (2 HIGH, 2 MEDIUM, 1 LOW) |
| P2.9 | VNCtalk Video Meeting | ✅ | 1 issue (MEDIUM) |
| P2.10 | Collabora Online Editing | ✅ | 1 issue (MEDIUM) |
| P2.11 | Calendar Enhancements | ✅ | 0 issues |
| P2.12 | Action Wheel Radial Menu | ✅ | 1 issue (MEDIUM) |
| P2.13 | VNCdirectory IDP Admin | ✅ | 3 issues (2 HIGH, 1 MEDIUM) |
| P2.14 | Share Files by Email | ✅ | 0 issues |
CRITICAL Issues (4 found, 4 fixed)
C1 — Missing signatures translation namespace ✅ FIXED
- Files:
signature-settings.tsx:21,signature-editor-modal.tsx:104 - Impact: All UI strings rendered as raw key strings (e.g.,
signatures.title) - Fix: Added
"signatures"namespace with 27 keys tolocales/en/common.json
C2 — Missing settings.tabs.signatures translation key ✅ FIXED
- File:
app/(main)/[locale]/settings/page.tsx:652 - Impact: Settings page tab label rendered as raw key string
- Fix: Added
"signatures": "Signatures"tosettings.tabssection
C3 — Missing settings.importer translation namespace ✅ FIXED
- File:
components/settings/import-settings.tsx:16 - Impact: All import UI strings rendered as raw key strings
- Fix: Added
"importer"namespace with 18 keys under"settings"
C4 — sharedWithMe never populated in sharing-store ✅ FIXED
- File:
stores/sharing-store.ts:237 - Impact: "Shared with me" tab permanently empty — accept/decline workflow dead
- Fix: Added discovery logic for incoming mail/calendar/addressBook shares by checking
isShared+myRightsproperties
HIGH Issues (7 remaining)
H1 — VNCdirectory admin tab has no internationalization
- File:
app/(main)/admin/_tabs/vncdirectory.tsx - Impact: All 50+ strings hardcoded in English — no translation support
- Recommendation: Add
admin.vncdirectory.*translation keys
H2 — VNCdirectory admin handleSave has no try/catch
- File:
app/(main)/admin/_tabs/vncdirectory.tsx:104-123 - Impact: Network failure on save crashes admin UI silently
- Recommendation: Wrap in try/catch, show error toast
H3 — Free/busy queryAllCalendarEvents queries all accounts indiscriminately
- File:
lib/calendar-freebusy.ts:140-143 - Impact: Free/busy results mix events from all connected accounts
- Recommendation: Accept an
accountIdparameter to scope the query
H4 — cancelEventBookings ignores _eventId parameter
- File:
stores/resource-store.ts:139-153 - Impact: Cancelling a single event's bookings removes ALL resource bookings
- Recommendation: Filter by
eventIdbefore cancelling
H5 — Resource picker dynamic import in hot loop
- File:
components/calendar/resource-picker.tsx:75 - Impact:
apiFetchimported once per resource item — N× network chunk requests - Recommendation: Import at module top level
H6 — Hardcoded English toast messages in sharing-store
- File:
stores/sharing-store.ts:374,398,421,430,437 - Impact: Toast notifications always in English regardless of user locale
- Recommendation: Pass translation keys or use
useToastStorewith i18n
H7 — roleLabel only handles mailbox kind
- File:
stores/sharing-store.ts:69-72 - Impact: Calendar/addressBook/file share roles show raw internal strings instead of labels
- Recommendation: Add label mappings for all resource types
MEDIUM Issues (11 remaining)
identitySignatureMapnot cleaned up on signature delete — stale references- Duplicated rights detection logic between sharing-store and API route
- Free/busy "now" line absolute positioning without relative parent
- Radial menu keyboard nav skips disabled items but can land on disabled
- Radar menu re-registers event listener on every
activeIndexchange configManagerimport pattern in VNCtalk client may not be safe server-side- Collabora uses direct
process.envaccess instead of configManager CONFIG_ENV_MAPmissing most VNCdirectory fields for env var overridesSENSITIVE_CONFIG_KEYSfield name mismatch between types.ts and vncdirectory-config.tscancelBookingsilently fails on missing booking IDPasswordRowsentinel value'••••••'is a design smell
LOW Issues (7 remaining)
- Unused imports:
Mailboxin email-import.ts,isArchiveNamein eml-import.ts,toBase64in email-import.ts - Missing
aria-labelon close buttons in signature editor and import settings - Resource picker spinner missing
role="status"andaria-label - Free/busy
slot!non-null assertion is fragile parseDurationMsduplicates existing duration parsing logic- Mini-calendar dashlet uses imperative
fetchEventsoutside reactive lifecycle - Search input in resource picker missing
aria-label
Release Recommendation
APPROVED with noted issues. The 4 CRITICAL bugs are fixed. The 7 HIGH and 13 MEDIUM/LOW issues are non-blocking but should be addressed in the next sprint. All 14 features are functional and code-complete.
Test URL: https://vncmail.sandbox.vnc.de (ArgoCD syncs from dev branch)
Commit: 42a7b67e (main)