Skip to content

Retire legacy query-param detail URLs completely #293

@mariusvniekerk

Description

@mariusvniekerk

Problem

The readable-route migration intentionally replaced old query-param detail URLs with canonical path routes. The client parser no longer treats the old URLs as selected PR/issue detail routes, but those old paths still receive the SPA fallback and render a valid application surface instead of being explicitly rejected.

Retired URL shapes include:

  • /pulls/detail?provider=github&platform_host=github.com&repo_path=acme%2Fwidgets&number=42
  • /pulls/detail/files?provider=github&platform_host=github.com&repo_path=acme%2Fwidgets&number=42
  • /issues/detail?provider=github&platform_host=github.com&repo_path=acme%2Fwidgets&number=42
  • /focus/pr?provider=github&platform_host=github.com&repo_path=acme%2Fwidgets&number=42
  • /focus/issue?provider=github&platform_host=github.com&repo_path=acme%2Fwidgets&number=42

Expected behavior

These legacy detail URL shapes should be fully retired. Do not redirect them, canonicalize them, or preserve backwards compatibility. They should stop working as usable app routes.

Suggested implementation

Add an explicit blocklist for the retired path shapes before the generic SPA fallback serves index.html, or add an equivalent client-side not-found/rejection path that makes it unambiguous the URL is unsupported.

Keep the canonical routes as the only supported detail routes, for example:

  • /pulls/github/acme/widgets/42
  • /pulls/github/acme/widgets/42/files
  • /issues/github/acme/widgets/42
  • /focus/pulls/github/acme/widgets/42
  • /focus/issues/github/acme/widgets/42

Acceptance criteria

  • Old query-param PR detail URLs no longer render a usable app route.
  • Old query-param issue detail URLs no longer render a usable app route.
  • Old query-param focus detail URLs no longer render a usable app route.
  • Canonical path-based PR, issue, files, and focus routes continue to work.
  • Tests cover direct browser loads, not only client-side navigation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions