Repository navigation
feat(ui): Settings › Credentials is its own pane, not a section of Storage (abilityai/trinity-enterprise#951) - #3877
Merged
Merged
Conversation
…orage (Abilityai/trinity-enterprise#951) #3798 (ent#888) folded the Credentials tab into Settings › Storage, beside repository, git sync and folders, and pointed ?tab=credentials at Storage. Credentials answer a different question and are what an operator opens most often after creating an agent, so they get their own pane again. - utils/agentSettings.js: a `credentials` section directly after General ("What secrets it runs with"), the legacy ?tab=credentials alias lands on it, the credential search words move off Storage, and the system agent gets it back (it had the Credentials tab before #3798). - CredentialsPane.vue hosts CredentialsPanel embedded; StoragePane drops it. - CredentialsPanel's file list stops reporting "Not present" for files it could not read: a stopped agent says so, a failed first read shows LoadFailed with a retry (a failed refresh keeps the data on screen), and an agent with no .env gets a next action (Quick Inject, or Add .env). Keyed on .env because every agent has a platform-written .mcp.json. - Credential changes need no restart (.env is re-read at every spawn), so the pane reports nothing to the restart banner. OSS-core by operator decision: a relocation of an existing OSS panel. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… gray) (Abilityai/trinity-enterprise#951) Named increase, in its own commit as design-system-contract.md asks: CredentialsPanel.vue raw_gray 65 -> 69. Two neutral-ink pairs (text-gray-600 dark:text-gray-400) for the new stopped-agent line and the no-.env empty row. No non-gray palette class and no hex were added; the token layer has no semantic ink token to use instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
obasilakis
approved these changes
Oct 22, 2026
obasilakis
left a comment
Contributor
There was a problem hiding this comment.
Design-system clean (gray only, increase named in the baseline, LoadFailed/BaseButton reused, no new loading gates), ?tab=credentials and the import wizard's goTo('credentials') land on the new pane, nothing gated leaks.
Minor:
src/frontend/src/utils/agentTabs.js:87— comment still says Credentials is a section of Settings › Storage.
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
?tab=settings§ion=credentialsopens it, and the legacy?tab=credentialslink now lands here instead of on Storage.LoadFailedwith a retry. A failed refresh keeps the data already on screen..envgets a next action: Quick Inject, or Add .env, which opens the editor on an empty.env. This is keyed on.envbecause every agent has a platform-written.mcp.json. A "no credential file at all" test would never fire on a real agent; the mocks hid this and the live run caught it..envis re-read at every spawn, per the requirements. The acceptance criteria item about restart-required rows therefore has nothing to wire.Changes
src/frontend/src/utils/agentSettings.js: thecredentialssection,LEGACY_TAB_SECTIONS.credentials, the system agent's panes, and keywords.src/frontend/src/components/agent-settings/CredentialsPane.vue(new), wired intoviews/AgentDetail.vue.StoragePane.vuedrops the section.src/frontend/src/components/CredentialsPanel.vue: the stopped, failed and no-.envstates (primitives only:LoadFailed,BaseButton).src/frontend/raw-color-baseline.json: re-frozen in its own commit, with the growth named.CredentialsPanel.vueraw_gray goes from 65 to 69 because of two neutral-ink pairs for the new lines. No non-gray class or hex was added. Only that one entry changed; a full regeneration would have rewritten about 500 lines of unrelated drift.docs/memory/requirements/core-agent.md§1.7 (FR-1, FR-2, FR-5, status),feature-flows/agent-settings-home.md,architecture/frontend.md.Test Plan
npm run test:unit: 388 files, 6145 tests pass. That covers the raw-colour, loading-gate and source-text ratchets.npm run check:tokensis OK andvite buildsucceeds.tests/unit/credentialsPane.mount.spec.js(7 mounted cases): the pane hosts the panel; Storage does not; the no-.envnext action, with Add .env opening the editor; a.envhides it; a stopped agent shows no rows; a failed read showsLoadFailedand the retry recovers.agentSettingsHome.spec.jsandagentSettingsHome.mount.spec.jsare updated for the new pane order, the alias, the system agent's panes and search.?tab=credentialslands on Credentials, and the rail order is General, Credentials, Guardrails, People, Channels, Integrations, Storage..envshows the next-action row; the stopped agent shows the stopped line and no fake "Not present" rows.Fixes abilityai/trinity-enterprise#951
🤖 Generated with Claude Code