Repository navigation
feat: add per-project sedg nono profiles - #35
Merged
Merged
Conversation
The work environment is loaded once per shell tree: the exported WORK_ENV_LOADED guard makes child shells skip the work profiles. The profiles' path variables were not exported, so subshells and tmux panes never found the work zshrc extensions and lost every employer-specific function and alias. Export all generic and employer path variables so child shells can still source the work zshrc extensions, and document the behavior.
Project-specific work profiles and their launchers lived alongside personal ones and were installed on every work machine. The Energy Runtime project also needs a profile whose tests can listen on and connect to any localhost port. Name employer profiles work-<employer>-* so nono still resolves them by name, and install them only on matching employer machines through a single .chezmoiignore block. Move the employer launchers into the employer's work tree, sourced from its zshrc extension when nono is installed. Add the Energy Runtime profile, move the LCP docs profile to the new scheme, and document the convention.
my-claude-code carried sedg domains, credentials, and tool config, so every Claude profile on a work machine got sedg access, and the personal base profile could not stay free of work content. Move that access into an agent-neutral work-sedg-common profile that sedg project profiles extend first, so profiles for any agent can share it. General launchers no longer reach sedg services; each sedg project gets its own profile and launcher instead.
claude-code-go opened localhost port 1502 for Modbus, which only the Inverter Driver project needs, so every Go session got that access and the general Go profile carried project-specific settings. Add a sedg profile and launcher for Inverter Driver that opens the port, and drop it from claude-code-go.
The profile extends nono's node-dev base and suits any Node.js project, not only TypeScript ones, so its name and launcher were misleading. Rename claude-code-typescript to claude-code-node and the claude-typescript launcher to claude-node, and update the profile that extends it.
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
Work-specific sandbox access lived in the personal Claude profiles, so every Claude session on a work machine got sedg domains, credentials and project ports. This moves sedg access into profiles that only sedg machines install, with one profile and launcher per project, and leaves the personal profiles free of work content. It also fixes work shell extensions being skipped in child shells such as tmux panes.
Key Decisions
🏷️ Employer profiles named
work-<employer>-*Employer profiles stay in nono's default profile folder so nono still finds them by name and they show up in
nono profile list. One.chezmoiignoreblock per employer keeps them off other machines, so new profiles need no extra ignore entries. Keeping them under~/.workwas dropped: nono only looks up names in its own folder, and a profile there can only extend siblings that use the.jsonextension.🧩 Agent-neutral
work-sedg-commonbaseThe sedg domains, Azure/glab/Atlassian access and sedg paths moved out of
my-claude-codeinto a base that extends nothing. Project profiles extend it first, followed by the personal profiles they need. It names no agent, so profiles for other agents can reuse it.🚀 One launcher per project
Each sedg project gets its own launcher, defined in the sedg work tree and sourced from the sedg zshrc extension when nono is installed. General launchers such as
claude-gono longer reach sedg services, by design. Port 1502 (Modbus) moved fromclaude-code-gointo the new Inverter Driver profile.🐚 Exported work variables
The exported
WORK_ENV_LOADEDguard made child shells skip the work profiles, but the path variables those profiles set were not exported, so subshells and tmux panes never sourced the work zshrc extensions. All generic and employer path variables are now exported.🔄 Before & After
my-claude-code, given to every Claude profilework-sedg-common, given only to sedg project profilesclaude-code-lcp-docsinstalled on all work machineswork-sedg-*profiles installed only on sedg machinesdot_agents/shell/claude.zshclaude-code-gosessionwork-sedg-claude-code-inverter-driverclaude-code-typescript/claude-typescriptclaude-code-node/claude-node