Add GitHub collaborator suggestions for assignee field
Details
Fetch repo collaborators from the GitHub API and show them as
filtered suggestions when editing the assignees field on GitHub-linked
tasks. Collaborators are cached per-repo to avoid redundant API calls
when switching between tasks in the same repository.
- Add ListCollaboratorsAsync to IGitHubIssueApiClient and implementation
- Add GetRepoCollaboratorsAsync to GitHubIssueSyncService (best-effort)
- Wire collaborator loading, caching, and prefix filtering into the
assignee ViewModel partial (caps at 8 suggestions)
- Add suggestion dropdown in TaskDetailPanel below the assignee input
Surface GitHub metadata in custom fields section with editable controls
Details
Move GitHub assignees chip editor from the dedicated GitHub metadata
section into the custom fields section. The GitHub metadata border
now only shows issue ref and "View on GitHub" link.
Custom fields section now:
- Hides empty system fields (only shows on GitHub-linked tasks with values)
- Shows "GH" badge on GitHub system fields
- Includes inline assignee chip editor for add/remove (pushes to GitHub)
- Refactors SaveAssigneesToTask to use CustomFieldService.SetFieldValue
Add TasksViewModel.CustomFieldEditing partial with typed editing commands:
SetCustomFieldText, SetCustomFieldNumber, SetCustomFieldCheckbox,
SetCustomFieldSelect, SetCustomFieldDate — each resolves the field
definition by key+projectId, updates via CustomFieldService, and persists.
Add project filter and system field protection in settings
Details
Settings Fields tab now has a project filter dropdown to show fields
scoped to a specific project or all projects.
System fields (auto-created by GitHub sync) display a "System" badge
and cannot be deleted — the delete button is hidden. Users can still
toggle ShowInList/ShowInCard visibility for system fields.
New custom fields are created scoped to the selected project filter.
Wire GitHub system fields into sync pipeline
Details
Add CustomFieldService dependency to GitHubIssueSyncService and
GitHubProjectSyncService. Both call EnsureGitHubSystemFieldsAsync()
at the start of SyncAsync to create field definitions before processing.
TasksPlugin also triggers system field creation on init if any GitHub
issue sources exist, so fields are available immediately after startup.
Add ProjectId to GitHubIssueSource so synced issues can be assigned
to a specific project. New tasks created from issues inherit the
source's ProjectId.
Add per-project custom fields + GitHub system field definitions
Details
Add ProjectId, IsSystem, and SourceType properties to CustomFieldDefinition
to support project-scoped fields and auto-created system fields.
Restructure CustomFieldService cache from key-based to ID-based lookups
since project-scoped fields from different projects can share keys.
Add GetFieldsForProject() for project-aware field resolution, and
EnsureGitHubSystemFieldsAsync() for idempotent creation of GitHub
metadata field definitions (author, assignees, comments, project status).
Create GitHubSystemFields static class defining canonical field definitions
and internal keys that remain hidden from the UI.
Get notified about new releases