Skip to content

Hash the root connector URL for ui.domain - #175

Merged
OptimNow merged 1 commit into
mainfrom
fix/ui-domain-root-url
Aug 20, 2026
Merged

Hash the root connector URL for ui.domain#175
OptimNow merged 1 commit into
mainfrom
fix/ui-domain-root-url

Conversation

@OptimNow

Copy link
Copy Markdown
Owner

Follow-up to #174, which moved the widget failure one step forward: mcp-ext-apps-host now engages for this connector and logs

ui.domain validation failed for connector "https://cloud-finops-skills-590a051d.alpic.live/"

The host sees the connector as the root URL with its trailing slash, while UI_DOMAIN hashed the /mcp form. Skybridge (whose connectors render) computes the hash from https://<host><request-pathname> per request - for a root-entered connector that is exactly the root-with-slash form.

Changes:

  • CANONICAL_CONNECTOR_URL is now the root form with trailing slash; UI_DOMAIN follows (1ec24d63...claudemcpcontent.com).
  • README + INSTALLATION.md standardise on that URL for the claude.ai/Desktop connector and the claude mcp add snippet, with a warning that a variant form connects fine but silently disables widget rendering (Alpic serves the MCP at the root - verified live).
  • CLAUDE.md lesson corrected: the earlier "no trailing slash" note was wrong.
  • server.json still carries /mcp; moving it to the root form can ride the next release PR (registry-validated field).

Test sequence after merge: Alpic redeploy, remove + re-add the connector at exactly https://cloud-finops-skills-590a051d.alpic.live/, then "Show me the idle waste playbooks" on Desktop.

The 2026-08-20 Desktop test after the Skybridge-parity merge moved the
failure one step forward: mcp-ext-apps-host now engages and logs
'ui.domain validation failed for connector
"https://cloud-finops-skills-590a051d.alpic.live/"' - the ROOT url with
its trailing slash, while UI_DOMAIN hashed '/mcp'. Skybridge, whose
connectors render, hashes https://<host><request-pathname> per request,
which for a root-entered connector is exactly the root-with-slash form.

Alpic serves the MCP at the root as well as /mcp (verified by a live
initialize), so: hash the root form, document the root form as THE
connector URL in README and INSTALLATION.md (a variant connects fine but
silently disables widget rendering), and correct the wrong 'no trailing
slash' note in the CLAUDE.md lesson.
@OptimNow
OptimNow merged commit 7156c18 into main Aug 20, 2026
7 checks passed
@OptimNow
OptimNow deleted the fix/ui-domain-root-url branch August 20, 2026 15:31
OptimNow added a commit that referenced this pull request Aug 20, 2026
…s) (#172)

* Add the coverage heat map to the README

scripts/render-coverage-heatmap.py renders the waste-playbook coverage
(category x provider) as assets/playbook-coverage.svg - OptimNow-accent
intensity ramp, dashed cells for the known gaps, footer pointing at the
public backlog in docs/ROADMAP.md. Embedded in README.md so users see
the coverage shape, gaps included, before installing: publishing the
holes deliberately is cheaper than users discovering them by empty
query. Same CI discipline as the markdown matrix (--check fails on
drift); the new-playbook checklist item now regenerates both.

* Add the FCP capability heat map and reframe coverage as three surfaces

scripts/render-fcp-heatmap.py renders the 22 FinOps Framework capabilities
from the committed fcp-coverage.md (primary / secondary-only / deferred gap)
as assets/fcp-coverage.svg, CI-gated like the playbook map. The README
coverage section now presents both maps and names the third, behavioural
surface (the maintainer-side probe battery), because a field test showed
the playbook map alone reads as the skill's whole coverage - it is only
the runbook catalogue. The playbook SVG title and footer now say so too.

CLAUDE.md: record the 2026-08-20 Desktop render test - valid ui.domain,
tool called, no validation error, still no widget - closing the question
left open on 2026-08-19: ui.domain is necessary but not sufficient, the
Connectors Directory review remains the gate.

* Fix invalid XML in the FCP heat map and correct the MCP Apps conclusion

The FCP domain names contain '&' (Understand Usage & Cost) and the SVG
text nodes were not XML-escaped, so the committed fcp-coverage.svg failed
to parse in any renderer. Escape domain, capability and note strings.

CLAUDE.md: same-day evidence overturned the earlier conclusion - the
Skybridge-built companion connectors render their widgets in Claude as
plain custom connectors, so the gate is implementation shape, not the
Connectors Directory. Record the three Skybridge deltas to mirror.

* Bring the MCP Apps lesson up to date with PRs #174/#175
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