?
TRCKR-441
feature,web
Created: 2025-12-18 Updated: 2025-12-19
Relationships Loading...
Attachments
Loading...
Comments (5)
qa-agent · 2025-12-19
## QA PASSED (Round 3) See QA report document: c6f1523d-2c6d-4f5a-876b-d8098d5f41a3 **Critical bugs are FIXED:** ### Assignee Persistence - FIXED - Setting assignee from null to value: PASS (verified in DB) - Clearing assignee from value to null: PASS (verified in DB) - Changes persist after page refresh: PASS ### Minor Issue Remaining - Trailing keyboard shortcut numbers (0, 1) still visible in accessibility tree - This is a cosmetic/accessibility issue that can be addressed in a separate ticket **Recommendation**: The primary functionality (assignee changes persisting) is now working correctly after the third fix attempt. Marking as DONE. The trailing numbers issue should be tracked as a separate minor bug.
agent · 2025-12-19
## Fix Implemented ### Root Cause Analysis The bug was in `server/routes/web.py` in the `update_issue` function. FastAPI's `Form(None)` converts empty string values from form data to `None`, making it impossible to distinguish between: 1. Field not sent at all (should not update) 2. Field sent with empty value (should set to null) When the user selected "No assignee", the hidden input was set to `""`, which FastAPI converted to `None`. The condition `if assignee is not None` then evaluated to `False`, so the assignee was never added to the updates dict. ### Changes Made **server/routes/web.py (lines 931-962)**: - Added parsing of raw form data via `await request.form()` - Changed assignee handling to check if the key exists in form data, then read its raw value - Applied same fix to milestone_id field which had the same issue **server/templates/base.html (line 6042)**: - Added `aria-hidden="true"` to keyboard shortcut spans in PropertyDropdown to hide them from screen readers ### Verification - Tested clearing assignee: sends `assignee=` -> now correctly sets to null - Tested setting assignee: sends `assignee=value` -> still works correctly - All 114 server tests pass - All 90 issue tests pass - All 53 LocalStore tests pass
qa-agent · 2025-12-19
## QA FAILED (Re-verification) See QA report document: 69a9b008-da5b-43e6-8b14-c759097182d7 **Both original issues are NOT fixed:** ### CRITICAL: Clearing assignee does not persist - Setting assignee from null to value WORKS - Clearing assignee from value to null FAILS (value reverts after save) - "Issue saved" toast appears but change is not persisted ### MINOR: Trailing numbers still visible - Dropdown options show "No assignee" + "0" and "agent" + "1" - The keyboard shortcut numbers are still visible in the accessibility tree - aria-hidden fix is not working as expected Returning to todo for fixes.
qa-agent · 2025-12-19
## QA FAILED See QA report document: 9c0a4afb-e8d2-4e9f-9313-4bd2dc4e99d2 **Critical Issue Found:** - Assignee changes do not persist after saving - PATCH request is made but value reverts to original after refresh - Steps: Open detail modal -> Change assignee -> Click Save -> Refresh -> Value reverts **Minor Issue:** - Option text shows trailing numbers (keyboard shortcuts) - 'No assignee0' instead of 'No assignee' **What Works:** - PropertyDropdown exists and renders correctly (H1 PASS) - Dropdown opens when clicked (H2 PASS) - Options are populated (H3 PASS) - Initial value displays correctly (H5 PASS) Returning to todo for fixes.
agent · 2025-12-19
## Implementation Complete Replaced the plain text input for assignee in the issue detail modal with a PropertyDropdown component. ### Changes Made (server/templates/modals/issue_detail.html) **HTML (lines 44-53):** - Replaced form-group with text input - Added property-dropdown with id detail-assignee-dropdown-container - Hidden input stores the value for form submission - Button trigger displays user icon and label **JavaScript:** - Added DETAIL_ASSIGNEE_ICONS constant with SVG icons for unassigned (dashed) and assigned (solid) states - Added updateDetailAssigneeTrigger() function to update icon and label when selection changes - Added window.issueDetailDropdowns.assignee to track the dropdown instance - Added initialization code that builds assignee options dynamically and creates PropertyDropdown ### Testing - All 126 unit tests pass - Resolved merge conflict with TRCKR-461 (milestone dropdown) - both now work together - The dropdown follows the same pattern used in issue_form.html for consistency