Feature/jira project knowledge #8

Open
gitea-admin wants to merge 9 commits from feature/jira-project-knowledge into develop
Owner

Summary

What changed and why?

Change Type

  • Cowork feature
  • Bug fix
  • Core AI contribution
  • Test / hardening
  • Performance
  • Documentation

Related Work

Cowork Task:

Core Repo: http://34.143.229.138/gitea-admin/fsg-ai-core-assets

Core AI Issue:

Core Task:

Related PR:

Scope

What is intentionally included?

What is intentionally NOT included?

Validation

  • Unit tests
  • Integration tests
  • Manual verification
  • Regression check

Commands / evidence:

Security Impact

Permission / credential / network / customer data impact:

Compatibility

  • No breaking change
  • Breaking change documented

Reviewer Notes

Anything Cowork reviewers should pay attention to.

## Summary What changed and why? ## Change Type - [ ] Cowork feature - [ ] Bug fix - [ ] Core AI contribution - [ ] Test / hardening - [ ] Performance - [ ] Documentation ## Related Work Cowork Task: Core Repo: http://34.143.229.138/gitea-admin/fsg-ai-core-assets Core AI Issue: Core Task: Related PR: ## Scope What is intentionally included? What is intentionally NOT included? ## Validation - [ ] Unit tests - [ ] Integration tests - [ ] Manual verification - [ ] Regression check Commands / evidence: ## Security Impact Permission / credential / network / customer data impact: ## Compatibility - [ ] No breaking change - [ ] Breaking change documented ## Reviewer Notes Anything Cowork reviewers should pay attention to.
gitea-admin added 3 commits 2026-09-06 16:45:53 +00:00
Jira Server self-hosted instances (e.g. insight.fsoft.com.vn) reject
Basic Auth with email+API token (403). Auto-detect by hostname:
- *.atlassian.net → Basic Auth (email + API token)
- everything else → Bearer header with Personal Access Token

User pastes PAT into the same 'API token' field in UI Connectors.
- Phase 9: Extend JiraConnectDialog with Project Knowledge config, mapping, and Sync Now button
- Phase 10: Wire JiraSyncService to CanonicalAuditLogger for sync start/complete/fail events
- Phase 11: Add retrieval regression suite with synthetic corpus and baseline metrics
- Phase 14: Add comprehensive production guide (docs/jira-knowledge-guide.md)
- Fix UI status label references (self.status -> self.conn_status)
- Implement real sync trigger logic in UI using JiraSyncService
gitea-admin added 1 commit 2026-09-07 16:39:12 +00:00
- Add QToolButton help icon (?) next to Project Mapping label
- Implement comprehensive tooltip explaining Project ID and Jira Key concepts
- Add inline validation to detect common mistake: entering issue keys (ABC-123) instead of project keys (ABC)
- Add 13 new i18n keys for help text in English, Vietnamese, and Japanese
- Add 15 comprehensive UX tests covering icon presence, tooltip content, validation logic, and accessibility
- Update jira-knowledge-guide.md with help icon reference and setup instructions
- Fix missing _on_paste method that was causing AttributeError

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gitea-admin added 1 commit 2026-09-08 01:08:35 +00:00
Native Qt tooltips on macOS are unreliable (delayed or invisible). Replace
with a QFrame popup that appears on click, positioned below the ? button,
and closes when clicking elsewhere (Qt.Popup flag handles ESC and outside-click).

- Store help text in self._help_text instead of setToolTip()
- Add _toggle_help_popup() method: creates/destroys floating QFrame
- Update test to check _help_text attribute instead of toolTip()

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gitea-admin added 1 commit 2026-09-08 01:17:08 +00:00
Qt.Popup flag is unreliable on macOS inside QDialog parents — popup may
appear behind the parent or not receive clicks. Replace with a small
QDialog using Qt.Tool|Qt.FramelessWindowHint which is stable on macOS.

- Add explicit close button (✕) in the popup
- Call activateWindow() to ensure popup gets focus
- Position 4px below the help button for visual separation

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gitea-admin added 1 commit 2026-09-08 01:22:19 +00:00
QFrame+Qt.Popup and QDialog popups are unreliable on macOS inside
QDialog parents — they may appear behind the parent or not receive
clicks. Replace with a simple inline QLabel that toggles visibility
when the ? button is clicked. This is the most reliable approach
across all platforms.

- Add self._inline_help QLabel below the mapping input (hidden by default)
- _toggle_inline_help() simply shows/hides the label
- Styled with dark background, blue border, matching the app theme
- No external popup windows needed

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gitea-admin added 1 commit 2026-09-08 01:29:08 +00:00
_trigger_sync reads jira config from self.ctx.config.data, but if the
user hasn't clicked Save yet the config still holds old/empty values.
Add self._save() at the top of _trigger_sync so the current form
values (base URL, email, token, project mapping) are persisted to
config before the background sync job reads them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gitea-admin added 1 commit 2026-09-08 01:43:54 +00:00
JiraTargetResolver._resolve_base_url() and _load_config_map() called
JsonConfigRepository() without the required path argument, causing a
TypeError that was silently caught by except Exception, returning empty
strings. This made sync fail with 'Jira base URL is not configured for
this environment' even when the user had saved valid credentials.

Fix: import CONFIG_PATH from config module and pass it to both
JsonConfigRepository() calls so they read the same config file that
AppConfig writes to.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/jira-project-knowledge:feature/jira-project-knowledge
git checkout feature/jira-project-knowledge
Sign in to join this conversation.