Project slugs: stable project identifiers in editor URLs (replaces the sandbox in-memory project-id map)
Nobody has claimed this yet.
- Dominant language
- Elixir
- Stars
- 296
- Forks
- 86
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 50
Description
As a developer moving around a workflow's versions and sandboxes, I want projects (including sandboxes) to have stable slugs used in editor URLs, so that navigation and cross-project diffing don't depend on the project UID.
What's broken
The collaborative editor URL carries the project UID. A sandbox is a separate project with a different UID, so moving between a live workflow and its sandbox means switching projects and URLs. There is no stable, human-meaningful identifier that a sandbox can share with its parent.
Sandbox DevX Phase 1 (in-editor version and sandbox switching, #4865) ships an interim in-memory sandbox-to-project map as a deliberate shortcut. This is the proper fix that replaces it.
What to do
Introduce a slug on projects and use it in editor routes, so a sandbox can carry its parent's slug and switching does not need the in-memory map. Keep UID routes working during the transition, and backfill slugs for existing projects.
Why this is standalone, not part of the Sandbox DevX epic
Slugs are app-wide routing infrastructure, broader than sandboxes, and they also unlock proper cross-project and cross-version diffing (currently blocked on comparing across different UIDs). Tracking it on its own so it is reused platform-wide rather than scoped to one epic.
Acceptance criteria
- Editor URLs use project slugs.
- Switching between a workflow's sandboxes and versions works via slugs, without the interim in-memory map.
- Existing projects get slugs (backfill); old UID URLs keep working during the transition.
- The interim map in #4865 can then be removed.
Links
Replaces the interim map in #4865. The map-versus-slugs direction is one of the open decisions tracked in #4922. Enables the cross-UID diff work.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading #4865 and the map-versus-slugs decision tracked in #4922; the issue names no files or tests. Trace the editor URL and project/sandbox routing entry points, then verify slug-based switching, UID URL compatibility, existing-project backfill, and removal of the interim map.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- elixir
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100