fix: disable sync for SIMPLE_URL issue integrations#197
Merged
therealbrad merged 7 commits intomainfrom Apr 15, 2026
Merged
Conversation
SIMPLE_URL integrations have no API to pull from (they're intended for link-out to third-party trackers where TestPlanIt doesn't have first-class adapter support, e.g. MantisBT). Offering sync actions was misleading — the SimpleUrlAdapter already reports syncIssue: false and the SyncService rejected the call, but the UI still showed the buttons. Changes: - Hide per-issue Sync button on admin issues page for SIMPLE_URL - Hide per-integration Sync button on admin integrations page for SIMPLE_URL - Reject /api/issues/[issueId]/sync with 400 when provider is SIMPLE_URL - Reject /api/admin/integrations/[id]/sync with 400 when provider is SIMPLE_URL Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…_URL SIMPLE_URL integrations don't authenticate against any API (they're link-out only). The Edit Integration form was showing: - apiKey credential field (never used by SimpleUrlAdapter) - Test Connection button (nothing to test) Changes: - Change SIMPLE_URL allowed auth types from [API_KEY] to [NONE] - Remove the SIMPLE_URL + API_KEY field config block - Hide the Test Connection button when provider is SIMPLE_URL Existing SIMPLE_URL integrations with stored API_KEY auth type keep working (the DB value is preserved); the auth type dropdown just won't render because only NONE is offered for new selections. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Added detailed notes on Simple URL integrations in the user guide, clarifying that they do not require authentication and outlining their limitations. - Updated the SyncIntegrationButton component to disable the sync action for Simple URL integrations, providing a disabled button instead. - Enhanced the issue linking process for Simple URL integrations, ensuring that the external link is constructed correctly and displayed in the UI. - Implemented logic to hide synced fields in the issue columns when only Simple URL integrations are present, improving the user experience. This update aims to provide clearer guidance and improve the functionality related to Simple URL integrations.
- Updated the UI to ensure that the sync actions are disabled for Simple URL integrations, aligning with their intended functionality as link-out only. - Enhanced the integration management by removing unnecessary elements related to API_KEY authentication, which is not applicable for Simple URL integrations. - Improved user experience by ensuring that the sync buttons are hidden and that the integration settings reflect the correct authentication type. This update aims to clarify the behavior of Simple URL integrations and streamline the user interface accordingly.
- Updated various package versions in `package.json` and `pnpm-lock.yaml` to ensure compatibility and security, including: - `@auth/prisma-adapter` from `^2.11.1` to `^2.11.2` - `@aws-sdk/client-s3` and `@aws-sdk/s3-request-presigner` from `^3.1029.0` to `^3.1030.0` - `@swagger-api/apidom-core` from `^1.10.1` to `^1.10.2` - `ai` from `^6.0.158` to `^6.0.162` - `bullmq` from `^5.73.4` to `^5.74.1` - `dompurify` from `^3.3.3` to `^3.4.0` - `happy-dom` from `^20.8.9` to `^20.9.0` - `hono` from `^4.12.12` to `^4.12.14` - `nanoid` from `^5.1.7` to `^5.1.9` - `next-auth` from `^4.24.13` to `^4.24.14` - `swagger-ui-react` from `^5.32.2` to `^5.32.4` - `undici` from `^7.24.7` to `^7.25.0` - Updated ESLint packages to `^8.58.2` - Updated PostCSS to `^8.5.10` and Prettier to `^3.8.3` - Adjusted `pnpm-lock.yaml` to reflect the new dependency versions and ensure proper resolution.
Contributor
Author
|
🎉 This PR is included in version 0.21.14 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
SIMPLE_URL integrations are for link-out to third-party issue trackers where TestPlanIt doesn't have a first-class adapter (e.g. MantisBT). They have no API to pull from, so several UI affordances and code paths assumed capabilities the provider doesn't have. This PR cleans up four categories of misbehavior:
syncIssue: false.Changes
Sync disabled across all surfaces (defense-in-depth)
POST /api/issues/[issueId]/syncreturns 400 when provider is SIMPLE_URLPOST /api/admin/integrations/[id]/syncreturns 400 when provider is SIMPLE_URLsyncIssue: false; this makes behavior consistent everywhereTest Connection removed for SIMPLE_URL
API Key field removed from SIMPLE_URL config
IntegrationConfigFormno longer renders theapiKeyinput for SIMPLE_URL{issueId}placeholder) is requiredExternal URLs now constructed at render time
ManageSimpleUrlIssuesno longer writesexternalUrlwhen creating or updating an issuebuildSimpleUrlLink(baseUrl, externalId)in lib/integrations/simpleUrl.tscolumns.tsx) resolves the URL at render via a newresolveIssueUrlhelper: SIMPLE_URL computes from the currentIntegration.settings.baseUrl; Jira/GitHub continue to use their storedexternalUrl(those are real external URLs, not templates)prisma/backfill-simple-url-external-urls.tsthat was briefly in-tree to populate stored URLs (no longer needed)Issue grid polish for SIMPLE_URL-only projects
Supporting plumbing
issueadded toAUTO_INJECT_USER_FIELDSin api/model/[...path]/route.ts socreatedByis server-injected on issue create (needed because the SIMPLE_URL create path no longer supplies it client-side)externalIdschema in the versions route acceptsnullas well asundefinedDocs
Related Issue
N/A (internal cleanup surfaced while reviewing integration flows; MantisBT users were the prompt.)
Type of Change
How Has This Been Tested?
Unit + component tests added
buildSimpleUrlLinkunit tests (missing inputs, token replacement, missing placeholder)externalUrlbaseUrl, ignoring a stale storedissue.externalUrlbaseUrlupdates the link in placeManual testing
Why no new browser E2E
Existing API-level E2E in integrations-setup.spec.ts and integrations-issues.spec.ts already covers the SIMPLE_URL create/link/unlink/project-assignment cycle. The component test asserts the exact render-time URL behavior that a browser E2E would visually confirm, at a fraction of the maintenance cost.
Test Configuration
Checklist
Additional Notes
Issue.externalUrlstill exists and is still used for Jira/GitHub; SIMPLE_URL issues simply stop writing to it and ignore any stale values on read. Existing SIMPLE_URL rows with a persistedexternalUrlare left as-is (harmless dead data).SimpleUrlAdapter.getCapabilities()already returnssyncIssue: false(adapter layer, unchanged).lib/access-fast-path.ts, the model/versions routes, and load-test scripts — no behavior change in those files.