Make COAST_SKIP_UI_BUILD a complete backend-only path#3
Draft
Make COAST_SKIP_UI_BUILD a complete backend-only path#3
Conversation
Summary: - augment the macOS daemon PATH with /opt/homebrew/bin and /usr/local/bin before host-side docker commands run - write the augmented PATH into generated launchd plists so login daemons inherit standard user-installed binary directories - add regression tests for PATH extension and launchd plist output Rationale: - launchd starts coastd with a stripped PATH, which breaks docker subprocesses when the CLI is installed outside the system paths - standard user-installed binary directories cover Homebrew and symlinked OrbStack/docker installs without hardcoding app internals Tests: - cargo fmt --all - COAST_SKIP_UI_BUILD=1 cargo test -p coast-daemon test_extend_path_entries_appends_only_missing_candidates --lib - COAST_SKIP_UI_BUILD=1 cargo test -p coast-cli test_generate_launchd_plist_content - COAST_SKIP_UI_BUILD=1 cargo test -p coast-cli test_extend_path_entries_appends_only_missing_candidates - COAST_SKIP_UI_BUILD=1 cargo build -p coast-daemon --bin coastd-dev -p coast-cli --bin coast-dev - PATH="/usr/bin:/bin:/usr/sbin:/sbin" /Users/af/symphony/coasts/target/debug/coast-dev build (from /Users/af/symphony) - PATH="/usr/bin:/bin:/usr/sbin:/sbin" /Users/af/symphony/coasts/target/debug/coast-dev run pr-check-1 (from /Users/af/symphony) - COAST_SKIP_UI_BUILD=1 cargo clippy -p coast-daemon -p coast-cli --all-targets -- -D warnings (fails due pre-existing warnings in untouched files) Co-authored-by: Codex <codex@openai.com>
compose_context_for_build extracted the compose subdirectory from the
resolved absolute path returned by Coastfile::from_file. That method
resolves relative paths against the coastfile's parent directory, which
inside the artifact dir turns "./docker-compose.yml" into
"<artifact_hash>/docker-compose.yml". The parent dir name of that
resolved path is the artifact hash, which was then used as the compose
project name and --project-directory, causing `docker compose ps` to
return empty results and all services to appear as "down" in coast ps
and Coastguard.
The fix reads the raw TOML compose string instead of the resolved
PathBuf, so root-level compose files correctly produce
compose_rel_dir=None and project_name="coast-{project}".
Only affects projects with compose at the project root (e.g.
compose = "./docker-compose.yml"). Projects with compose in a
subdirectory (e.g. compose = "./infra/docker-compose.yml") were
unaffected because the subdirectory name is the same in both the
raw and resolved paths.
Fix macOS launchd PATH for host docker subprocesses
…ktree-detection [jrs] fixed lookup worktree path detection
…t-name-root-dir [dh] fix: compose project name derived from artifact hash when compose is at project root
…etection-and-link-to-example-in-docs [jrs] detect orbstack and link to demo in deocs and README.md
…etection-and-link-to-example-in-docs [jrs] doc updates
…en coasts are stopped
…leanup-for-stopped-coasts [jrs] add support for cross project checkouts and handle unbinding wh…
…odes [jrs] fix cli exit codes
…oping-to-build-id [jrs] Bug fix: scope secrets to build id in api.
…n-into-smaller-parts [jrs] break assign up into smaller parts
…ndler [jrs] cleanup run handler
[jrs] broke up the build handler
…cing [jrs] updated syncing marker
Update README.md
…list-bug [jrs] fix daemon install script and add auto restart post install
…emeral-state-checks [jrs] add update ephemeral state checks and quiescing
Update volumes video tutorial link
…ort-mappings [ec] added compose port mappings
Replace VIDEO_TUTORIALS.md with a dedicated learn-coasts/ directory containing individual pages per video with embedded YouTube players. Add youtube fenced code block renderer to DocsViewer with optional caption and link support.
[dh] Add Coasts Video Course docs section
…ed contributing section Move the curl install command above the coasts.dev link so it's the first thing users see. Consolidate prerequisites, dev setup, and the 3-terminal workflow under Contributing. Add building from source section at the bottom.
…ent-order-and-name [jrs] put video docs in correct order
Teach coast-daemon to compile and run targeted backend tests without prebuilt Coast Guard assets when COAST_SKIP_UI_BUILD=1 is set. Also remove the stale dist-presence shortcut so UI assets rebuild whenever the build script reruns after source changes. Refs: coast-guard#70 Co-authored-by: Codex <noreply@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Draft follow-up for coast-guard#70.
This branch makes
COAST_SKIP_UI_BUILD=1a real backend-only build/test mode forcoast-daemon, and removes the stale embedded-asset shortcut from the build script.What changed
COAST_SKIP_UI_BUILD=1coast-guard/dist/to exist at compile timenpm run buildjust becausedist/index.htmlalready existsValidation
rm -rf coast-guard/dist && COAST_SKIP_UI_BUILD=1 cargo test -p coast-daemon test_docker_info_disconnected_without_dockerrm -rf coast-guard/dist && COAST_SKIP_UI_BUILD=1 cargo test -p coast-daemon test_index_returns_htmlcargo fmt --checkRefs: coast-guard#70