Move dashboard UI assets under the install dir#1030
Conversation
Unify relay's on-disk footprint: dashboard UI assets now install to and resolve from `~/.agentworkforce/relay/dashboard` (the install dir) instead of the separate `~/.relay/dashboard`. - install.sh writes UI files to `$INSTALL_DIR/dashboard`. - The broker downloads/version-checks assets at `~/.agentworkforce/relay/ dashboard` and re-fetches there on version mismatch. - `resolveDashboardStaticDir` reads the install-dir location first, falling back to `~/.relay/dashboard/out` so installs predating the move keep working until assets are re-fetched. - Tests cover both the install-dir layout and the `~/.relay` fallback. The uninstaller already purges `~/.relay/dashboard` alongside the install dirs, so orphaned old assets are still cleaned. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
CodeAnt AI is reviewing your PR. |
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
✅ Files skipped from review due to trivial changes (3)
📝 WalkthroughWalkthroughDashboard UI asset installation and broker discovery were migrated to prefer ChangesDashboard Asset Directory Migration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 96002d36eb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| return pickDashboardStaticDir([standaloneDashboardOutDir], deps); | ||
| // Installs place UI assets under the install dir (~/.agentworkforce/relay/dashboard/out). | ||
| // ~/.relay/dashboard/out is read as a fallback for installs predating that move. | ||
| const installDashboardOutDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard', 'out'); |
There was a problem hiding this comment.
Honor custom install dirs for dashboard assets
When users install with AGENT_RELAY_INSTALL_DIR set, install.sh now writes the downloaded UI to $INSTALL_DIR/dashboard, but this resolver only probes the default ~/.agentworkforce/relay/dashboard/out plus the old ~/.relay fallback. In that custom-install scenario, especially offline or when the best-effort refresh download fails, agent-relay up starts the standalone dashboard without the assets that the installer just downloaded, so the installed dashboard UI is not served from the chosen install dir. Consider including the configured install dir or deriving the asset path from the installed binary/launcher location.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
packages/cli/src/cli/commands/core.test.ts (1)
299-318: ⚡ Quick winAdd a custom install-dir coverage case.
Please add one
uptest withenv: { HOME: ..., AGENT_RELAY_INSTALL_DIR: '/tmp/custom-relay' }and static assets under/tmp/custom-relay/dashboard/out. This closes the contract gap with installer behavior and prevents regressions.Also applies to: 320-339
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/cli/src/cli/commands/core.test.ts` around lines 299 - 318, Add a new test mirroring the existing "up infers static-dir for install-dir dashboard layout" case but set env to include AGENT_RELAY_INSTALL_DIR: '/tmp/custom-relay' and place static assets under '/tmp/custom-relay/dashboard/out'; use the same helpers (createFsMock, createHarness, runCommand) and assert that deps.spawnProcess mock receives '--static-dir' pointing to '/tmp/custom-relay/dashboard/out' (refer to the test name, createHarness, deps.spawnProcess.mock.calls, and the '--static-dir' assertion to locate where to add this case).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CHANGELOG.md`:
- Line 32: The changelog bullet about agent-relay is too
implementation-detailed; rewrite the entry in the [Unreleased] section to be
concise and impact-first by focusing on user-visible change (e.g., "agent-relay
now installs dashboard UI assets under ~/.agentworkforce/relay/dashboard") and
removing fallback/re-download/uninstall mechanics and parenthetical details;
apply the same concise, impact-first trimming to the other referenced entry
(line 82) so each bullet is a single short user-facing statement.
In `@packages/cli/src/cli/lib/broker-lifecycle.ts`:
- Around line 725-729: The code currently hardcodes
installDashboardOutDir/priorDashboardOutDir to ~/.agentworkforce/relay/... which
ignores a custom install location; update the path construction to respect the
AGENT_RELAY_INSTALL_DIR override (or the existing install-dir config if
available) by resolving baseInstallDir = process.env.AGENT_RELAY_INSTALL_DIR ||
path.join(homeDir, '.agentworkforce', 'relay') and then build
installDashboardOutDir = path.join(baseInstallDir, 'dashboard', 'out') (and
similarly adjust any prior/fallback dir logic if you have a prior-install
env/config), then pass those computed dirs into pickDashboardStaticDir; apply
the same change at the other occurrences mentioned (the blocks around the other
noted locations).
---
Nitpick comments:
In `@packages/cli/src/cli/commands/core.test.ts`:
- Around line 299-318: Add a new test mirroring the existing "up infers
static-dir for install-dir dashboard layout" case but set env to include
AGENT_RELAY_INSTALL_DIR: '/tmp/custom-relay' and place static assets under
'/tmp/custom-relay/dashboard/out'; use the same helpers (createFsMock,
createHarness, runCommand) and assert that deps.spawnProcess mock receives
'--static-dir' pointing to '/tmp/custom-relay/dashboard/out' (refer to the test
name, createHarness, deps.spawnProcess.mock.calls, and the '--static-dir'
assertion to locate where to add this case).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 5999d91f-59a0-4352-99ac-f96a9ae83bfb
📒 Files selected for processing (4)
CHANGELOG.mdinstall.shpackages/cli/src/cli/commands/core.test.tspackages/cli/src/cli/lib/broker-lifecycle.ts
| ### Changed | ||
|
|
||
| - Relay stores per-project runtime state in `.agentworkforce/relay/` (was `.agent-relay/`), and the global data/log home moves from `~/.agent-relay`, `$XDG_DATA_HOME/agent-relay`, and platform equivalents to `agentworkforce/relay`. The `~/.config/agent-relay` config directory is unchanged. | ||
| - `agent-relay` installs and resolves dashboard UI assets under the install dir (`~/.agentworkforce/relay/dashboard`) instead of `~/.relay/dashboard`, unifying the on-disk footprint. The broker still reads `~/.relay/dashboard` as a fallback and re-downloads assets to the new location on version mismatch. |
There was a problem hiding this comment.
Keep these changelog bullets concise and impact-first.
Both entries are accurate, but they include implementation detail that should be trimmed in [Unreleased] (especially the fallback/re-download mechanics and uninstall parenthetical).
Suggested concise rewrite
-- `agent-relay` installs and resolves dashboard UI assets under the install dir (`~/.agentworkforce/relay/dashboard`) instead of `~/.relay/dashboard`, unifying the on-disk footprint. The broker still reads `~/.relay/dashboard` as a fallback and re-downloads assets to the new location on version mismatch.
+- `agent-relay` now stores dashboard UI assets under `~/.agentworkforce/relay/dashboard` and still supports existing installs that use `~/.relay/dashboard`.
-- `agent-relay` drops the legacy `~/.agent-relay/dashboard` static-asset fallback from broker startup. (Uninstall still purges legacy install dirs.)
+- `agent-relay` no longer uses `~/.agent-relay/dashboard` as a broker static-asset fallback.As per coding guidelines: "Changelog entries should be concise and impact-first, with one short bullet per user-visible change… Omit … internal notes, and implementation details."
Also applies to: 82-82
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CHANGELOG.md` at line 32, The changelog bullet about agent-relay is too
implementation-detailed; rewrite the entry in the [Unreleased] section to be
concise and impact-first by focusing on user-visible change (e.g., "agent-relay
now installs dashboard UI assets under ~/.agentworkforce/relay/dashboard") and
removing fallback/re-download/uninstall mechanics and parenthetical details;
apply the same concise, impact-first trimming to the other referenced entry
(line 82) so each bullet is a single short user-facing statement.
| // Installs place UI assets under the install dir (~/.agentworkforce/relay/dashboard/out). | ||
| // ~/.relay/dashboard/out is read as a fallback for installs predating that move. | ||
| const installDashboardOutDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard', 'out'); | ||
| const priorDashboardOutDir = path.join(homeDir, '.relay', 'dashboard', 'out'); | ||
| return pickDashboardStaticDir([installDashboardOutDir, priorDashboardOutDir], deps); |
There was a problem hiding this comment.
Honor custom install dir in runtime dashboard path resolution.
install.sh writes UI assets to $INSTALL_DIR/dashboard (which can be overridden by AGENT_RELAY_INSTALL_DIR), but these paths are hardcoded to ~/.agentworkforce/relay/dashboard here. For custom install-dir users, --static-dir inference and stale-asset refresh can miss the installed assets.
Suggested fix
+function resolveInstallDir(deps: CoreDependencies): string | null {
+ const explicit = deps.env.AGENT_RELAY_INSTALL_DIR?.trim();
+ if (explicit) return explicit;
+ const homeDir = deps.env.HOME || deps.env.USERPROFILE || os.homedir();
+ if (!homeDir) return null;
+ return path.join(homeDir, '.agentworkforce/relay');
+}
function resolveDashboardStaticDir(dashboardBinary: string | null, deps: CoreDependencies): string | null {
@@
- const homeDir = deps.env.HOME || deps.env.USERPROFILE || '';
+ const homeDir = deps.env.HOME || deps.env.USERPROFILE || '';
if (!homeDir) {
return null;
}
- const installDashboardOutDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard', 'out');
+ const installDir = resolveInstallDir(deps);
+ const installDashboardOutDir = installDir ? path.join(installDir, 'dashboard', 'out') : null;
const priorDashboardOutDir = path.join(homeDir, '.relay', 'dashboard', 'out');
- return pickDashboardStaticDir([installDashboardOutDir, priorDashboardOutDir], deps);
+ return pickDashboardStaticDir(
+ [installDashboardOutDir, priorDashboardOutDir].filter((p): p is string => Boolean(p)),
+ deps
+ );
}
@@
- const homeDir = deps.env.HOME || deps.env.USERPROFILE || os.homedir();
- const assetsDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard', 'out');
- const versionFile = path.join(homeDir, '.agentworkforce/relay', 'dashboard', '.version');
+ const installDir = resolveInstallDir(deps);
+ if (!installDir) return;
+ const assetsDir = path.join(installDir, 'dashboard', 'out');
+ const versionFile = path.join(installDir, 'dashboard', '.version');
@@
- const targetDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard');
+ const targetDir = path.join(installDir, 'dashboard');Also applies to: 1039-1040, 1062-1062
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/cli/src/cli/lib/broker-lifecycle.ts` around lines 725 - 729, The
code currently hardcodes installDashboardOutDir/priorDashboardOutDir to
~/.agentworkforce/relay/... which ignores a custom install location; update the
path construction to respect the AGENT_RELAY_INSTALL_DIR override (or the
existing install-dir config if available) by resolving baseInstallDir =
process.env.AGENT_RELAY_INSTALL_DIR || path.join(homeDir, '.agentworkforce',
'relay') and then build installDashboardOutDir = path.join(baseInstallDir,
'dashboard', 'out') (and similarly adjust any prior/fallback dir logic if you
have a prior-install env/config), then pass those computed dirs into
pickDashboardStaticDir; apply the same change at the other occurrences mentioned
(the blocks around the other noted locations).
| return pickDashboardStaticDir([standaloneDashboardOutDir], deps); | ||
| // Installs place UI assets under the install dir (~/.agentworkforce/relay/dashboard/out). | ||
| // ~/.relay/dashboard/out is read as a fallback for installs predating that move. | ||
| const installDashboardOutDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard', 'out'); |
There was a problem hiding this comment.
Suggestion: The new install-dir lookup is hardcoded to ~/.agentworkforce/relay and ignores AGENT_RELAY_INSTALL_DIR, so users who installed to a custom directory will not have their dashboard assets discovered and --static-dir will be omitted. Resolve the install root from the same install-dir override contract used by the installer instead of assuming a fixed home-relative path. [logic error]
Severity Level: Major ⚠️
- ❌ agent-relay up ignores AGENT_RELAY_INSTALL_DIR for assets.
- ⚠️ Dashboard UI served from default path, not install dir.Steps of Reproduction ✅
1. Configure a custom install directory by setting
`AGENT_RELAY_INSTALL_DIR=/custom/install` and run the installer `install.sh`, which sets
`INSTALL_DIR="${AGENT_RELAY_INSTALL_DIR:-$HOME/.agentworkforce/relay}"` at `install.sh:17`
and downloads dashboard UI into `$INSTALL_DIR/dashboard/out` in `download_dashboard_ui`
(`install.sh:341-36`).
2. After installation, observe that the dashboard UI assets live under
`/custom/install/dashboard/out` (from the installer) and not under
`~/.agentworkforce/relay/dashboard/out`, matching the documented "install dir" contract.
3. Start the CLI with `agent-relay up` (registered in
`packages/cli/src/cli/commands/core.ts:71-104`, which wires the `up` command to
`runUpCommand` in `broker-lifecycle.ts`), leaving `AGENT_RELAY_INSTALL_DIR` set so the
runtime environment still reflects the custom install dir.
4. In the `runUpCommand` path, `startDashboardWithFallback`
(`packages/cli/src/cli/lib/broker-lifecycle.ts:1113-1123`) calls `getDashboardSpawnArgs`
(`lines ~790-821`), which invokes `resolveDashboardStaticDir` (`line 698`). That function
computes `installDashboardOutDir = path.join(homeDir, '.agentworkforce/relay',
'dashboard', 'out')` at line 727 and `priorDashboardOutDir = path.join(homeDir, '.relay',
'dashboard', 'out')` at line 728, then calls `pickDashboardStaticDir` (`lines 660-37`)
without ever consulting `deps.env.AGENT_RELAY_INSTALL_DIR`. As a result, even when the
installer placed assets under `/custom/install/dashboard/out`, the static-dir lookup only
considers `~/.agentworkforce/relay/dashboard/out` and `~/.relay/dashboard/out`. In any
scenario where assets exist only under the configured install dir (for example, if runtime
refresh fails or is disabled), `pickDashboardStaticDir` returns `null`,
`getDashboardSpawnArgs` omits the `--static-dir` flag, and the dashboard server never
points at the UI assets installed under the custom install dir, demonstrating that the
install-dir override is ignored for static asset resolution. This is inconsistent with the
installer and with other components (e.g. `relay-pty-path.ts:213-218`), which do honor
`AGENT_RELAY_INSTALL_DIR`.Fix in Cursor | Fix in VSCode Claude
(Use Cmd/Ctrl + Click for best experience)
Prompt for AI Agent 🤖
This is a comment left during a code review.
**Path:** packages/cli/src/cli/lib/broker-lifecycle.ts
**Line:** 727:727
**Comment:**
*Logic Error: The new install-dir lookup is hardcoded to `~/.agentworkforce/relay` and ignores `AGENT_RELAY_INSTALL_DIR`, so users who installed to a custom directory will not have their dashboard assets discovered and `--static-dir` will be omitted. Resolve the install root from the same install-dir override contract used by the installer instead of assuming a fixed home-relative path.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix| const assetsDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard', 'out'); | ||
| const versionFile = path.join(homeDir, '.agentworkforce/relay', 'dashboard', '.version'); |
There was a problem hiding this comment.
Suggestion: Asset refresh now writes cache/version files only under ~/.agentworkforce/relay, which diverges from installs done with AGENT_RELAY_INSTALL_DIR and causes assets to be downloaded/versioned in the wrong location. Use the configured install dir consistently when computing assetsDir, versionFile, and targetDir so refresh targets the actual install location. [logic error]
Severity Level: Major ⚠️
- ❌ Asset refresh writes under wrong home-relative dashboard directory.
- ⚠️ Custom install dir unused for dashboard UI cache.Steps of Reproduction ✅
1. Install the CLI with a custom install directory by running
`AGENT_RELAY_INSTALL_DIR=/custom/install ./install.sh`. The installer uses
`INSTALL_DIR="${AGENT_RELAY_INSTALL_DIR:-$HOME/.agentworkforce/relay}"` at `install.sh:17`
and downloads dashboard UI into `$INSTALL_DIR/dashboard/out` in `download_dashboard_ui`
(`install.sh:341-36`), so assets end up under `/custom/install/dashboard/out`.
2. Run `agent-relay up` (wired via `registerCoreCommands` in
`packages/cli/src/cli/commands/core.ts:71-104`, which calls `runUpCommand`), ensuring the
dashboard is enabled (default `options.dashboard !== false` at `core.ts:1311`).
3. Within `runUpCommand`, the dashboard start path calls `startDashboardWithFallback`
(`packages/cli/src/cli/lib/broker-lifecycle.ts:1113-1123`), which immediately invokes
`refreshDashboardAssetsIfStale` (`line 1016`) with the resolved dashboard binary.
4. Inside `refreshDashboardAssetsIfStale`, the code computes `homeDir = deps.env.HOME ||
deps.env.USERPROFILE || os.homedir()` (`line 39) and then sets `assetsDir =
path.join(homeDir, '.agentworkforce/relay', 'dashboard', 'out')` and `versionFile =
path.join(homeDir, '.agentworkforce/relay', 'dashboard', '.version')` at lines 1039–1041,
and `targetDir = path.join(homeDir, '.agentworkforce/relay', 'dashboard')` at line 1063.
None of these paths consult `deps.env.AGENT_RELAY_INSTALL_DIR`, even though the installer
and other runtime code (e.g. `packages/utils/src/relay-pty-path.ts:213-218`) treat it as
the source of truth for the install root. Consequently, when
`refreshDashboardAssetsIfStale` decides assets are stale, it deletes `assetsDir`,
recreates `targetDir`, extracts the tarball there, and writes `.version` under
`~/.agentworkforce/relay/dashboard`, while the original assets under
`/custom/install/dashboard/out` are left untouched and unversioned. This means dashboard
asset refresh and version tracking operate against a home-relative directory that may not
match the configured install dir, leading to assets and cache markers being written to the
wrong location whenever `AGENT_RELAY_INSTALL_DIR` is used.Fix in Cursor | Fix in VSCode Claude
(Use Cmd/Ctrl + Click for best experience)
Prompt for AI Agent 🤖
This is a comment left during a code review.
**Path:** packages/cli/src/cli/lib/broker-lifecycle.ts
**Line:** 1039:1040
**Comment:**
*Logic Error: Asset refresh now writes cache/version files only under `~/.agentworkforce/relay`, which diverges from installs done with `AGENT_RELAY_INSTALL_DIR` and causes assets to be downloaded/versioned in the wrong location. Use the configured install dir consistently when computing `assetsDir`, `versionFile`, and `targetDir` so refresh targets the actual install location.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix|
CodeAnt AI finished reviewing your PR. |
There was a problem hiding this comment.
1 issue found across 4 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
✅ pr-reviewer applied fixes — committed and pushed Reviewed and fixed PR #1030 locally. Changes made:
Verification run:
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agentworkforce/trajectories/completed/2026-06/traj_btwekvdri4hl/summary.md:
- Line 31: The chapter item "Resolved dashboard assets relative to nonstandard
installed dashboard binaries: Resolved dashboard assets relative to nonstandard
installed dashboard binaries" contains a duplicated description; edit the
summary line in summary.md to either remove the repeated phrase after the colon
so it reads "Resolved dashboard assets relative to nonstandard installed
dashboard binaries" or replace the description after the colon with a brief
clarifying detail (e.g., what was resolved or why nonstandard installation
matters) to avoid verbatim repetition.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: aa1b8c06-38d0-4fb9-bbac-08eb36d2c3e6
📒 Files selected for processing (4)
.agentworkforce/trajectories/completed/2026-06/traj_btwekvdri4hl/summary.md.agentworkforce/trajectories/completed/2026-06/traj_btwekvdri4hl/trajectory.jsonpackages/cli/src/cli/commands/core.test.tspackages/cli/src/cli/lib/broker-lifecycle.ts
✅ Files skipped from review due to trivial changes (1)
- .agentworkforce/trajectories/completed/2026-06/traj_btwekvdri4hl/trajectory.json
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/cli/src/cli/lib/broker-lifecycle.ts
There was a problem hiding this comment.
1 issue found across 4 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/cli/src/cli/lib/broker-lifecycle.ts">
<violation number="1" location="packages/cli/src/cli/lib/broker-lifecycle.ts:723">
P2: Dashboard root inference treats many global PATH binaries as custom installs, which can redirect asset refresh to unwritable system directories instead of the home install path.</violation>
</file>
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
|
|
||
| const homeDir = deps.env.HOME || deps.env.USERPROFILE || ''; | ||
| const resolvedBinaryDir = path.resolve(binaryDir); | ||
| const ignoredBinDirs = [ |
There was a problem hiding this comment.
P2: Dashboard root inference treats many global PATH binaries as custom installs, which can redirect asset refresh to unwritable system directories instead of the home install path.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/cli/src/cli/lib/broker-lifecycle.ts, line 723:
<comment>Dashboard root inference treats many global PATH binaries as custom installs, which can redirect asset refresh to unwritable system directories instead of the home install path.</comment>
<file context>
@@ -695,6 +695,44 @@ function pickDashboardStaticDir(candidates: string[], deps: CoreDependencies): s
+
+ const homeDir = deps.env.HOME || deps.env.USERPROFILE || '';
+ const resolvedBinaryDir = path.resolve(binaryDir);
+ const ignoredBinDirs = [
+ homeDir ? path.join(homeDir, '.local', 'bin') : null,
+ path.join('/usr/local', 'bin'),
</file context>
|
Reviewed and fixed PR #1030 locally. I addressed the custom Local validation passed:
|
|
Reviewed and fixed PR #1030 locally. Fixed:
Local validation passed:
|
|
pr-reviewer could not complete review for #1030 in AgentWorkforce/relay. |
|
Reviewed PR #1030 and fixed an install-layout breakage: custom Added focused CLI tests for the custom install-root with the dashboard binary still in Verification:
|
|
Reviewed and fixed PR #1030 locally. Changes made:
Checks run:
I could not run Vitest locally because |
|
Reviewed and fixed PR #1030 locally. Fixed:
Verified:
Full CLI |
User description
Summary
Follow-up to #1028. Unifies relay's on-disk footprint: dashboard UI assets now install to and resolve from the install dir (
~/.agentworkforce/relay/dashboard) instead of the separate~/.relay/dashboard.After the
.agentworkforce/relayrename, everything relay-installs lived under~/.agentworkforce/relay/(repo,bin/, global data) except the dashboard, which sat off in~/.relay/. This folds it in.Changes (coordinated across 4 sites)
install.shwrites UI files to$INSTALL_DIR/dashboard(respectsAGENT_RELAY_INSTALL_DIR).broker-lifecycle.ts) fetches and version-stamps assets at~/.agentworkforce/relay/dashboard, re-downloading there on version mismatch.resolveDashboardStaticDirreads the install-dir location first, falling back to~/.relay/dashboard/outso installs predating this move keep working until assets are re-fetched.~/.relay/dashboardalongside the install dirs (unchanged), so orphaned old assets are still cleaned.Migration
Gentle: a user who upgrades the CLI without re-running
install.shkeeps serving from~/.relay/dashboard(resolver fallback) and the broker re-downloads to the new location on next version bump. Old~/.relay/dashboardis then orphaned and cleaned on uninstall.Validation
npm run typecheck✅core.test.ts51 passed — incl. newinstall-dir dashboard layoutandprior ~/.relay dashboard layout (fallback)cases ✅🤖 Generated with Claude Code
CodeAnt-AI Description
Move dashboard UI assets under the install directory and keep old installs working
What Changed
~/.relay/dashboard~/.relay/dashboardlocation for existing installsImpact
✅ One dashboard install location✅ Smoother upgrades for existing users✅ Fewer missing-dashboard startup issues💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.