Skip to content

feat(jira): adds custom field and scope support#93

Merged
wgordon17 merged 6 commits into
gordon-code:mainfrom
wgordon17:feat/jira-custom-fields
May 1, 2026
Merged

feat(jira): adds custom field and scope support#93
wgordon17 merged 6 commits into
gordon-code:mainfrom
wgordon17:feat/jira-custom-fields

Conversation

@wgordon17
Copy link
Copy Markdown
Member

Summary

  • Adds field metadata discovery via GET /rest/api/3/field with worker proxy endpoint and 30s client cache
  • Adds JiraFieldPicker and JiraScopePicker in Settings for user-configurable custom field display and custom scope JQL queries
  • Adds expandable detail panel on JiraAssignedTab with duck-typed JiraFieldValue renderer
  • Adds dynamic SCOPE_OPTIONS merging built-in and custom scopes with stale scope guard

Closes #85

- Adds JiraFieldMeta interface and getFields() to IJiraClient/JiraClient/JiraProxyClient
- Adds 'fields' endpoint to worker proxy with Array.isArray validation
- Adds JiraCustomFieldSchema, customFields/customScopes to JiraConfigSchema
- Adds jira-utils.ts with createJiraClient(), mergeCustomFields(), jiraJqlForScope()
- Adds JiraFieldPicker and JiraScopePicker settings components
- Adds JiraFieldValue duck-typed renderer with expandable detail panel
- Adds dynamic SCOPE_OPTIONS with stale scope guard in JiraAssignedTab
- Splits clearJiraAuth() to preserve config across reconnect cycles
- 80 new tests across 9 test files (2453 total, all passing)
- Fixes CONSTRAINT-5: SettingsPage disconnect calls clearJiraConfigFull
- Fixes JQL precedence bug in JiraFieldPicker fallback query
- Hoists jiraClient to createMemo in SettingsPage (preserves cache)
- Adds 30s cache to JiraProxyClient.getFields()
- Fixes JiraFieldValue array index divergence with nested arrays
- Merges duplicate regex in jira-utils.ts
- Adds ARIA roles/labels to picker scroll containers and detail panel
- Adds aria-describedby for disabled checkboxes at 10-field cap
- Gates info text behind loaded state in JiraFieldPicker
- Adds title attr for truncated field labels
- Adds 15 tests for createJiraClient, date rendering, expandable panel
- Updates JiraSection test for clearJiraConfigFull
Adds Array.isArray guard in JiraClient.getFields() to match the worker
proxy validation. Prevents caching malformed non-array 200 responses.
- Fix stack overflow when filtering by org (guard setGlobalFilter)
- Consistent empty state across all tabs with locked repo stubs
- Jira proxy returns 503 with message when JIRA_CLIENT_ID missing
- Field picker uses *all wildcard for broader preview coverage
- Field picker shows all configurable fields, not just custom
- Selected fields float to top with reorder controls
- Jira issue rows clickable to expand, pills layout for fields
- Add expand-by-default setting for Jira issue details
- Rename 'Configure scopes' to 'Configure filter scopes'
- Fix raw JSON display for components/sprints in JiraFieldValue
Add a Playwright screenshot test that captures the Jira Assigned tab
with custom fields, custom scopes, and expanded issue details. Synthetic
Jira data spans three projects with varied field types (number, sprint
object, team option, epic link, label array).

Add the Jira screenshot to README.md below the existing dashboard
screenshots.
@wgordon17 wgordon17 marked this pull request as ready for review May 1, 2026 22:17
@wgordon17 wgordon17 merged commit 295d8e5 into gordon-code:main May 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support user-configurable Jira custom fields

1 participant