merge: resolve v1.22.2 conflicts with custom

Per Q4 resolution (documented on kanban t_83741c53):
- .github/workflows/*: KEEP custom deletion (fork uses Gitea Actions under .gitea/workflows)
- ChatInput.tsx: KEEP custom forge picker states + provider-aware linkedPr
- WorkStatusContextSection.tsx: combine imports (WorkStatusPill + useConfigStore)
- WorkStatusPrimaryGroup.tsx: upstream nested-git/bootstrap-gate base + custom GitLab/Gitea forge rows
- NewWorktreeDialog.tsx: combine dialogs; keep custom MR/PR branch resolution
- SettingsView.tsx: custom deps minus undefined openThirdPartyProviderSetup
- search.ts + search.test.ts: KEEP upstream (enter-to-send, large-text-paste, first-party integrations)
- tr.ts: drop 4 auto-merge duplicate gitView.empty.* keys
This commit is contained in:
2026-09-06 10:55:54 +00:00
220 changed files with 45375 additions and 3531 deletions
@@ -674,6 +674,46 @@ describe('settings helpers', () => {
expect(sanitized.favoriteModels).toEqual(payload.favoriteModels);
expect(sanitized.recentModels).toEqual(payload.recentModels);
});
it('round-trips a valid gitProviders payload through sanitizeSettingsUpdate', () => {
const helpers = createTestHelpersWithRealSanitizers();
const payload = {
gitProviders: {
github: { apiBaseUrl: 'https://github.example.com/api/v3', detectUrls: ['github.example.com'] },
gitlab: { apiBaseUrl: 'gitlab.example.com', detectUrls: [] },
gitea: { apiBaseUrl: '', detectUrls: ['gitea.example.com'] },
},
};
expect(helpers.sanitizeSettingsUpdate(payload)).toEqual({
gitProviders: {
github: { apiBaseUrl: 'https://github.example.com/api/v3', detectUrls: ['github.example.com'] },
gitlab: { apiBaseUrl: 'https://gitlab.example.com' },
gitea: { detectUrls: ['gitea.example.com'] },
},
});
});
it('drops malformed gitProviders payloads entirely', () => {
const helpers = createTestHelpersWithRealSanitizers();
expect(helpers.sanitizeSettingsUpdate({ gitProviders: 'not-an-object' })).toEqual({});
expect(helpers.sanitizeSettingsUpdate({ gitProviders: [] })).toEqual({});
expect(helpers.sanitizeSettingsUpdate({ gitProviders: null })).toEqual({});
expect(helpers.sanitizeSettingsUpdate({ gitProviders: { unknown: { apiBaseUrl: 'https://x.example.com' } } })).toEqual({});
expect(helpers.sanitizeSettingsUpdate({ gitProviders: { github: { apiBaseUrl: ' ' } } })).toEqual({});
expect(helpers.sanitizeSettingsUpdate({ gitProviders: { github: { detectUrls: 'github.example.com' } } })).toEqual({});
});
it('normalizes gitProviders apiBaseUrl scheme and strips trailing slashes', () => {
const helpers = createTestHelpersWithRealSanitizers();
expect(helpers.sanitizeSettingsUpdate({
gitProviders: { github: { apiBaseUrl: 'github.example.com/api/v3/' } },
})).toEqual({
gitProviders: { github: { apiBaseUrl: 'https://github.example.com/api/v3' } },
});
});
});
describe('session retention settings persistence', () => {