Skip to content

feat(gui): enable shell startup injection for integrated terminals - #194

Draft
Emin017 wants to merge 4 commits into
mainfrom
emin/shell-startup-path-injection
Draft

Emin017 wants to merge 4 commits into
mainfrom
emin/shell-startup-path-injection

Conversation

@Emin017

@Emin017 Emin017 commented Aug 22, 2026

Copy link
Copy Markdown
Member

Summary

Scope

Select the areas touched by this PR:

  • GUI - desktop UI/runtime changes in ecos/gui, including renderer, Electron, and shared packages.
  • ECC - ECC submodule updates or ECOS Studio integration with the ECC CLI/runtime.
  • Resource management - resource registry, downloads, installation, manifests, PDKs, or tool assets.
  • Build, packaging, Nix, or release workflow - build inputs, AppImage packaging, or release metadata.
  • CI - GitHub Actions workflows, reusable actions, triggers, path filters, or automated checks.
  • Documentation only - README, guides, templates, or docs with no runtime behavior change.

Validation

List the commands you ran. Mark checks that are not applicable as N/A.

  • cd ecos/gui && pnpm run typecheck
  • cd ecos/gui && pnpm run test
  • cd ecos/gui && pnpm run build
  • make build
  • make demo-gcd
  • make demo-retrosoc
  • Manual GUI smoke: cd ecos/gui && pnpm run dev
  • Other:

Skipped checks and reason:

Screenshots or Recordings

Required for visible GUI changes.

Release, Packaging, and Runtime Impact

  • No release, packaging, or runtime impact
  • Version metadata changed
  • AppImage or Electron packaging changed
  • ECC CLI runtime resources changed
  • OSS CAD Suite, PDK, resource download, or installer behavior changed
  • Submodule gitlink changed

Notes:

Checklist

  • I kept the change scoped to the affected component.
  • I updated docs or user-facing text where behavior changed.
  • I included lockfile changes for dependency updates.
  • I documented intentional submodule updates.
  • I did not include local caches, virtual environments, or generated build outputs.
  • I explained any skipped validation and remaining risk.

createEccRuntimeEnv and createRuntimeEnv now maintain
ECOS_ELECTRON_RUNTIME_BIN_PATH, a PATH-style list of the bin
directories the runtime layer added on top of the inherited
environment, kept in resolved-PATH order. Both runtime markers are
rebuilt on every construction so a nested launch (ECOS Studio started
from an integrated terminal) never inherits stale entries. Integrated
terminal sessions use the marker to re-apply exactly these entries
after shell startup files that reset PATH.
Generate zsh/bash startup wrapper files under a userData directory and
compute per-shell spawn plans so the ECOS runtime bin dirs can be
re-applied after shell startup files that reset them (e.g. NixOS
set-environment). The zsh wrapper preserves the user's native ZDOTDIR
state and both merges preserve user rc precedence and empty PATH
components.
ShellPtyService gains an optional shellStartupDir option. When set,
each new session generates the zsh/bash startup wrappers and overlays
the resulting plan (ZDOTDIR or --rcfile) on the spawn, so shells that
reset PATH during startup still resolve the runtime bin dirs carried in
ECOS_ELECTRON_RUNTIME_BIN_PATH. Generation or planning failures degrade
to the previous env-only behavior with a debug log.
Pass a persistent userData shell-rc directory to ShellPtyService so the
zsh/bash startup wrappers are generated and applied for every new
integrated terminal session.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant