←
TRCKR-369
Created: 2025-12-16
•
Updated: 2025-12-16
Relationships
Loading...
Attachments
Loading...
Comments (3)
qa-agent
·
2025-12-16
## QA PASSED
See QA report document: e36d0b81-15c2-4862-9bca-617116d9a4ee
**Test Results:** 7/7 passed (100%)
All hypotheses tested successfully:
- ✓ H1: Sidebar project links use keys (not UUIDs)
- ✓ H2: Direct navigation with ?project=KEY works
- ✓ H3: Issue detail URLs use identifier (e.g., /issues/TRCKR-369)
- ✓ H4: Project detail URLs use key (e.g., /projects/TRCKR)
- ✓ H5: Case-insensitive project keys work
- ✓ H6: UUID backward compatibility maintained
- ✓ H8: No console errors
**Regressions:** None found
The implementation is production-ready. All requirements met with no issues found.
agent
·
2025-12-16
## Implementation Complete
Added support for human-readable IDs in URL query parameters.
### What was implemented
1. **Resolution helpers** (`server/routes/web.py` lines 174-293):
- `_is_uuid()` - checks if a string is a valid UUID
- `resolve_project_id()` - resolves project key or UUID to UUID
- `resolve_issue_id()` - resolves issue identifier or UUID to UUID
- `resolve_milestone_id()` - resolves milestone name or UUID to UUID
- Batch resolvers for lists
2. **Route updates** (`server/routes/web.py`):
- `list_issues()` - resolves `?project=` and `?milestone=` parameters
- `get_issue()` - accepts issue identifiers like `TRCKR-42`
- `get_project()` - accepts project keys like `DOCS`
- `get_milestone()` - accepts milestone names
3. **Template updates** (human-readable URLs generated):
- `issues.html`: sidebar links use `?project={{ project.key }}`
- `issues_table.html`: all issue links use identifier, project filter uses key
- `projects_table.html`: project links use key
- `agents_table.html`: project links use key
- `project_detail.html`, `modals/project_detail.html`: issue links use identifier
- `modals/milestone_detail.html`: issue links use identifier
4. **Tests added** (`tests/e2e/test_issues_filter.py`):
- `TestHumanReadableURLParams` class with 5 test cases
- Tests for project key filtering, case-insensitivity, UUID backward compatibility
- Tests for issue and project detail pages by human-readable ID
### Verification
- All 263 existing tests pass
- New tests verify human-readable URL parameter functionality
- Backward compatibility maintained (UUIDs still work)
### Example URLs now supported
- `https://trckr.roboalch.com/web/issues?project=DOCS` (filter by project key)
- `https://trckr.roboalch.com/web/issues/TRCKR-42` (issue detail by identifier)
- `https://trckr.roboalch.com/web/projects/DOCS` (project detail by key)
- `https://trckr.roboalch.com/web/milestones/M1` (milestone detail by name)
triage-agent
·
2025-12-16
## Feature Triage Complete
**Status:** NOT IMPLEMENTED
**Summary:** URLs currently only accept UUIDs for entity filtering (e.g., `?project=<uuid>`). The feature would allow human-readable identifiers like project keys (`?project=DOCS`) and issue identifiers (`?project=TRCKR-42`).
**Implementation Location:**
- Backend: `server/routes/web.py` - add resolution helper and update route processing
- Templates: `issues.html`, `partials/issues_table.html` - change URL generation to use keys
- Tests: `tests/e2e/test_issues_filter.py` - update to use human-readable IDs
**Complexity:** Low (2-4 hours)
**Key Points:**
1. CLI already has resolution helpers (`resolve_project`, `resolve_issue`) that can be adapted
2. Store already has `get_project_by_key()` and `get_issue_by_identifier()` methods
3. UUID support should remain for backwards compatibility
4. Templates need to generate human-readable IDs instead of UUIDs
See attached triage report for full details.