Skip to content

feat: add per-project sedg nono profiles - #35

Merged
MrPointer merged 5 commits into
mainfrom
feature/work-nono-profiles
Oct 14, 2026
Merged

MrPointer merged 5 commits into
mainfrom
feature/work-nono-profiles

Conversation

@MrPointer

Copy link
Copy Markdown
Owner

📝 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 .chezmoiignore block per employer keeps them off other machines, so new profiles need no extra ignore entries. Keeping them under ~/.work was dropped: nono only looks up names in its own folder, and a profile there can only extend siblings that use the .json extension.

🧩 Agent-neutral work-sedg-common base

The sedg domains, Azure/glab/Atlassian access and sedg paths moved out of my-claude-code into 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-go no longer reach sedg services, by design. Port 1502 (Modbus) moved from claude-code-go into the new Inverter Driver profile.

🐚 Exported work variables

The exported WORK_ENV_LOADED guard 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

Area Before After
sedg access In my-claude-code, given to every Claude profile In work-sedg-common, given only to sedg project profiles
sedg project profiles claude-code-lcp-docs installed on all work machines work-sedg-* profiles installed only on sedg machines
sedg launchers In dot_agents/shell/claude.zsh In the sedg work tree
Port 1502 Open in every claude-code-go session Open only in work-sedg-claude-code-inverter-driver
New projects None Energy Runtime (any localhost port) and Inverter Driver profiles
TypeScript profile claude-code-typescript / claude-typescript claude-code-node / claude-node
Child shells Work zshrc extensions skipped Work zshrc extensions loaded

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.
@MrPointer
MrPointer merged commit e4e4b69 into main Oct 14, 2026
5 checks passed
@MrPointer
MrPointer deleted the feature/work-nono-profiles branch October 14, 2026 18:31
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