Skip to content

fix(cli): resolve the basepath of a preview when deleting by --id - #17517

Open
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1787666369-preview-delete-basepath
Open

fix(cli): resolve the basepath of a preview when deleting by --id#17517
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1787666369-preview-delete-basepath

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Description

Linear ticket: Refs

fern docs preview delete --id <id> built the preview hostname from the org + ID and sent that to FDR. FDR keys a docs site on hostname + basepath, so for a preview published under a basepath (acme-preview-abc.docs.buildwithfern.com/docs) nothing was deleted — the DB rows survived, the S3 assets (deleted by hostname prefix) did not, and the CLI still printed "Successfully deleted" with exit code 0.

The ID now resolves to the URL FDR actually stores, by looking the deployment up in the same listing fern docs preview list uses (listAllDocsUrls({ preview: true }), org-scoped server-side) and keeping its basePath.

Changes Made

  • resolvePreviewUrlFromId looks up the preview by hostname and returns domain + basePath; root previews behave exactly as before.

  • Fails loudly instead of silently deleting the wrong thing: no match → "No preview deployment found for ID ..." pointing at fern docs preview list; a host serving several basepaths → lists them and asks for the full URL.

  • Login now happens before ID resolution (the lookup needs the token).

  • toPreviewUrl extracted from listDocsPreview so the list and delete paths build the URL identically.

  • Updated README.md generator (if applicable)

Testing

  • Unit tests added/updated — findPreviewsForHostname covering basepath preservation, root previews, multi-basepath hosts, no match, case-insensitive hostnames, and paging
  • Manual testing completed — not run against a live preview (would require deleting a real deployment); pnpm --filter @fern-api/cli exec vitest run src/commands/docs-preview passes, pnpm turbo run compile --filter @fern-api/cli and pnpm lint:biome clean

Depends on nothing, but pairs with fern-api/fern-platform#14208, which stops a deleted site from continuing to serve its statically-cached HTML.

Link to Devin session: https://app.devin.ai/sessions/8b998ca2cd694ebca3ac34947854002c


Open in Devin Review

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 1 additional finding.

Open in Devin Review

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.

1 participant