Skip to content

feat(FR-2887): serve released bundle via Portless with version-named URL#7398

Merged
yomybaby merged 1 commit into
mainfrom
05-13-feat_fr-2887_serve_released_bundle_via_portless_with_version-named_url
May 13, 2026
Merged

feat(FR-2887): serve released bundle via Portless with version-named URL#7398
yomybaby merged 1 commit into
mainfrom
05-13-feat_fr-2887_serve_released_bundle_via_portless_with_version-named_url

Conversation

@yomybaby
Copy link
Copy Markdown
Member

@yomybaby yomybaby commented May 13, 2026

Resolves #7397 (FR-2887)

Summary

Adds a new "serve a released bundle locally via Portless" workflow so QA, developers, and reviewers can spin up any published backend.ai-webui release under a stable, version-named URL.

  • scripts/serve-release.sh
    • Wraps serve in portless after extraction; the proxied URL is derived from the version (e.g. 26.4.8-rc.3https://v26-4-8-rc-3.localhost:1355).
    • Reuses the project's existing Portless daemon port (1355, same default as scripts/dev.mjs); honours PORTLESS_PORT if the caller pinned one.
    • Adds SERVE_PORT env var (default 9091) so multiple releases can be served side-by-side.
    • Falls back to plain serve on http://localhost:${SERVE_PORT} when portless isn't installed — no behavioural regression for lean environments.
  • .claude/skills/serve-release/
    • New Claude Code skill that teaches the assistant when and how to invoke the script.
    • Mirrors the structure of the existing dev-server skill (version resolution, pre-flight checks, port selection, URL announcement, common follow-ups, out-of-scope).
    • Trigger phrases cover Korean and English ("릴리즈 띄워", "serve release", "특정 버전 띄워줘", etc.).

Why

Previously, scripts/serve-release.sh served every release on http://localhost:9091. When comparing releases side-by-side (e.g. rc.2 vs rc.3) the URL gave no hint which version was loaded, and cookies/storage clashed across runs. The dev-server flow already standardises on Portless for the same reason — this change brings the release-serve flow in line.

Test plan

  • ./scripts/serve-release.sh v26.4.8-rc.3 downloads the bundle, copies config.toml, and prints both the Portless URL (https://v26-4-8-rc-3.localhost:1355) and the direct fallback URL.
  • Browsing the Portless URL serves the WebUI; cookies/storage are isolated from a concurrently-running pnpm dev.
  • SERVE_PORT=9092 ./scripts/serve-release.sh v26.4.7 runs in parallel without clashing with 9091 and uses https://v26-4-7.localhost:1355.
  • Cached extraction: rerunning the script with the same version reuses scripts/temp-releases/webui-<VERSION>/ and skips download.
  • No-portless fallback: temporarily renaming the portless binary out of $PATH makes the script serve via http://localhost:9091 directly without erroring.
  • Claude Code recognizes the new skill: invoking with "v26.4.7 띄워줘" picks serve-release, not dev-server.

Copy link
Copy Markdown
Member Author


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions github-actions Bot added the size:L 100~500 LoC label May 13, 2026
@yomybaby yomybaby marked this pull request as ready for review May 13, 2026 02:59
Copilot AI review requested due to automatic review settings May 13, 2026 02:59
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 13, 2026

Coverage Report for root-coverage

Status Category Percentage Covered / Total
🔵 Lines 4.77% 28 / 586
🔵 Statements 5.14% 32 / 622
🔵 Functions 7.89% 6 / 76
🔵 Branches 4.98% 18 / 361
File CoverageNo changed files found.
Generated in workflow #601 for commit cf47e2a by the Vitest Coverage Report Action

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a workflow for serving any published backend.ai-webui release bundle locally under a stable, version-named Portless URL (with a plain-serve fallback), and documents/automates the workflow via a new Claude Code skill.

Changes:

  • Update scripts/serve-release.sh to derive a version-based Portless app name, support SERVE_PORT, and fall back to direct serve when portless is unavailable.
  • Start (or reuse) the Portless proxy daemon on the standard project port (default 1355, respecting PORTLESS_PORT when set).
  • Add .claude/skills/serve-release/ to guide invoking the script and announcing Portless/direct URLs.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
scripts/serve-release.sh Adds Portless-based serving with version-derived subdomain, configurable serve port, and non-Portless fallback.
.claude/skills/serve-release/SKILL.md Introduces a Claude Code skill documenting version resolution, preflight checks, and how to run the release-serve script.

Comment thread scripts/serve-release.sh Outdated
Comment thread .claude/skills/serve-release/SKILL.md Outdated
@yomybaby
Copy link
Copy Markdown
Member Author

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

🤖 Generated with Claude Code

- If this code review was useful, please react with 👍. Otherwise, react with 👎.

@yomybaby yomybaby force-pushed the 05-13-feat_fr-2887_serve_released_bundle_via_portless_with_version-named_url branch from 787c4d4 to cf47e2a Compare May 13, 2026 03:16
@yomybaby yomybaby merged commit 42ba23c into main May 13, 2026
12 checks passed
@yomybaby yomybaby deleted the 05-13-feat_fr-2887_serve_released_bundle_via_portless_with_version-named_url branch May 13, 2026 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100~500 LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Serve released bundle locally via Portless with version-named URL

2 participants