feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: names of people on control panel - #900

Merged
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view
Mar 7, 2026
Merged

feat: names of people on control panel#900
coodos merged 1 commit into
mainfrom
feat/control-panel-name-view

Conversation

@coodos

@coodoscoodos commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

closes#782

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Search functionality now includes vault type filtering for improved discoverability
    • Added visual identity indicators (user/group icons) in the eVaults table display
  • Improvements

    • Reorganized vault table layout with clearer information architecture
    • Enhanced vault health monitoring for better status visibility

@coderabbitai

coderabbitaiBot commented Mar 7, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request adds ontology-based identity resolution to determine user vs. group types for eVaults and implements a platform token workflow. The UI is updated to display real names with corresponding user/group icons, while the API endpoint now fetches vault identities from metadata envelopes and acquires platform tokens for secure registry access.

Changes

Cohort / File(s)Summary
UI Table Display Updates
infrastructure/control-panel/src/routes/+page.svelte
Restructured eVaults table to use Name field with fixed width, replaced eName/URI columns with a single eName column using a new ENameWithType snippet that renders user/group icons conditionally. Enhanced search filtering to include evault.type. Updated lucide-svelte imports to include UserRound and Users icons.
Backend Identity Resolution
infrastructure/control-panel/src/routes/api/evaults/+server.ts
Introduced ontology-based identity resolution with helpers (fetchFirstParsedByOntology, resolveVaultIdentity, firstNonEmptyString) to determine vault type and display name from GraphQL-parsed metadata. Added platform token workflow (requestPlatformToken) for secure registry access. Extended EVault interface with type field ('user' | 'group'). Reworked GET handler to acquire platform token, fetch vaults, resolve identities, and perform health checks per vault.

Sequence Diagram

sequenceDiagram
participant Client as Control Panel Client
participant API as API Endpoint
participant Registry as Registry Service
participant Token as Platform Token Service
participant Ontology as Ontology/Metadata Service
Client->>API: GET /api/evaults
API->>Token: Request platform token
Token->>Registry: Authenticate and issue token
Registry-->>Token: Platform token
Token-->>API: Return token
API->>Registry: Fetch all vaults (with token)
Registry-->>API: Vault list
loop For each vault
API->>Ontology: Fetch parsed metadata from metaEnvelopes
Ontology-->>API: GraphQL response with identity data
API->>API: Resolve identity (type, name)
API->>API: Perform health check
end
API-->>Client: EVaults with real names and types
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

  • refactor:control-panel #469: Modifies the same API endpoint (+server.ts) and EVault interface shape, with this PR extending that work by adding ontology-based identity resolution and platform token handling.
  • Fix/control panel button issue #308: Modifies the control-panel +page.svelte for UI and data mapping changes in the same region.
  • Feat/provisioner secret use #299: Modifies both infrastructure/control-panel/src/routes/+page.svelte and changes eVaults table data mapping structure.

Suggested labels

evault-refactor

Suggested reviewers

  • sosweetham

Poem

🐰 Real names now shine with icon's glow,
User or group, the ontology will know.
Platform tokens secure the vault display,
Identity resolved in the modern way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title 'feat: names of people on control panel' directly reflects the main change of displaying names in the control panel UI, which aligns with the primary objective.
Description check✅ PassedThe description follows the template structure with Issue Number, Type of change, and completed checklist, though testing details are minimal.
Linked Issues check✅ PassedThe PR implements the core requirement from issue #782 by adding display name fields and type-based icon rendering to show real names in the control panel UI.
Out of Scope Changes check✅ PassedAll changes are focused on displaying user and group names in the control panel, directly aligned with the issue #782 requirement with no unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/control-panel-name-view

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/control-panel/src/routes/api/evaults/`+server.ts:
- Around line 136-140: The GET route currently treats
requestPlatformToken(platform) failures as fatal; change the GET RequestHandler
so that token acquisition is optional — catch errors from requestPlatformToken
(both at the first call and the later call around lines ~178-180) and log the
error but continue execution, using registryService.getEVaults() results as the
primary response; if the token is obtained use it to enrich the evaults,
otherwise return evaults from registryService.getEVaults() (and avoid throwing a
500 when requestPlatformToken fails).
- Around line 47-53: The code is directly forwarding the platform bearer token
to untrusted registry-provided endpoints by calling
fetch(`${vault.uri}/graphql`, ...) with Authorization: `Bearer ${token}`;
instead, validate vault.uri against a trusted allowlist or a registry flag
before attaching Authorization, or route the metadata/graphql request through a
trusted backend proxy that injects the token server-side. Locate the fetch call
that uses vault.uri and token in +server.ts and change the logic so that
Authorization is only set for known/trusted vault origins (or remove it for
unverified URIs), or implement a backend proxy endpoint that performs the
authenticated request to vault.uri and returns sanitized results to the SSR
handler.
- Around line 24-25: The identity type field currently narrows to 'user' |
'group' and so silently mislabels unresolved lookups; change the type union to
include a neutral fallback (e.g. type: 'user' | 'group' | 'unknown') in the
affected identity/interface definition, update the resolver path that sets the
type to return 'unknown' when both ontology lookups miss or time out, and adjust
any downstream checks (places referenced in the same file around the resolver
logic at lines ~84-110) to explicitly handle 'unknown' rather than assuming
'group'. Ensure the ename field stays unchanged and only the type fallback is
added so consumers can detect and treat unresolved identities safely.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 041b7a21-b7f4-4123-be24-028785209506

📥 Commits

Reviewing files that changed from the base of the PR and between 119241b and e771c13.

📒 Files selected for processing (2)
  • infrastructure/control-panel/src/routes/+page.svelte
  • infrastructure/control-panel/src/routes/api/evaults/+server.ts

@coodos
coodos merged commit 5ea2cf6 into mainMar 7, 2026
4 checks passed
@coodos
coodos deleted the feat/control-panel-name-view branch March 7, 2026 20:10
Sign up for freeto 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.

[feature] Show real names in control panel

1 participant

@coodos