Skip to content

feat(tangle-cloud): cross-page redesign + brand adoption + surface-driven app rendering#3164

Merged
drewstone merged 3 commits intodevelopfrom
drew/tangle-cloud-cross-page-redesign
May 4, 2026
Merged

feat(tangle-cloud): cross-page redesign + brand adoption + surface-driven app rendering#3164
drewstone merged 3 commits intodevelopfrom
drew/tangle-cloud-cross-page-redesign

Conversation

@drewstone
Copy link
Copy Markdown
Contributor

Summary

Two things in one bundle, both directly aligned with turning Tangle Cloud into the storefront for blueprint apps:

  1. Cross-page UX redesign (24 files, +1146/−323) — every top-level Cloud surface (catalog, deploy checkout, instances, earnings, rewards, operators) now uses the same hero-card + metric-grid pattern, the same wallet-gated empty-state preview, and the same accessible filter language. The app store gets a coherent shell instead of nine independent layouts.
  2. Program plan (docs/blueprint-app-store-program-plan.md) — end-state spec, layered architecture across dapp + ai-agent-sandbox-blueprint + tnt-core + blueprint-ui, current/in-flight/gap inventory, five concrete workstreams with acceptance criteria, sequencing diagram, harness gates, risk register, and program-level definition of done.

What changed in the UI

  • Page chrome unified. Every page now uses cloud-hero-card + cloud-compact-header with a 3-column metric grid; typography rules scoped to .tangle-cloud-page (h1 clamp, h2/h3 sizing, balanced wrapping).
  • Wallet-gated empty states. RequireWallet shows a styled preview grid (4 locked data cards + ConnectWalletButton) instead of empty divs. Deploy checkout, account stats, TVL, instances, earnings, rewards all use it.
  • Filters → semantic controls. Catalog filter pills replaced by native <select> dropdowns with explicit Availability and Source labels for screen readers.
  • Deploy checkout review pattern. Pre-wallet review surface with operators / payment / caller / TTL cards; CTA renamed to Create instance. Default payment shows as Shielded credits.
  • Blueprint detail. Metadata block reframed as Launch facts with conditional CTAs based on operator availability.
  • Sidebar accessibility. Active link uses bg-primary + shadow + aria-current="page"; icon spans aria-hidden.
  • Theme persistence. localStorage round-trip for tangle-cloud-theme; dark-first default; removed dead DOM check that always returned the same value as the fallback.
  • Tables. TangleCloudTable, AllServicesTable, RunningInstanceTable get bespoke disconnected-wallet messaging.
  • Header. Wallet button now hidden on rewards/earnings/instances where the page itself owns wallet UX.

CSS foundation (mandatory dependency)

styles.css adds .cloud-hero-card, .cloud-compact-header, .catalog-controls, .results-grid, .chip-row, .blueprint-card, .operator-row, .tangle-cloud-visual-badge, button-primary token plumbing for data-sandbox-ui, and typography rules. All page changes depend on these classes existing.

Why one PR

The 24 cloud files are conceptually one change — three audited slices (page headers, wallet UX, catalog) all share the same CSS foundation and the same wallet-aware empty-state pattern. Splitting would force interdependent reviews and stacked branches for no benefit.

Program plan (docs/blueprint-app-store-program-plan.md)

Captures the full path from "we host blueprints" to "Tangle Cloud is an app store":

  • Layered architecture across the four repos (dapp, ai-agent-sandbox-blueprint, blueprint-ui, tnt-core).
  • Shipped vs in-flight vs gap inventory referencing every relevant merged PR.
  • Five workstreams with measurable acceptance criteria:
    • A — Surface-driven app rendering
    • B — AppRegistry contract (greenfield in tnt-core)
    • C — TEE attestation as first-class OperatorSecurityCommitment
    • D — @tangle-network/{blueprint-ui,sandbox-ui} npm publish + dapp upgrade off tarball
    • E — Production TEE backend validation (real AWS Nitro, Firecracker port mapping, auth-path GC fix)
  • Sequencing diagram with explicit blockers per workstream, effort estimates, and target weeks.
  • Harness gates referencing the launch-readiness board and proposed FLOW-APP-001…005 for app-store-specific flows.
  • Risk register of the top 10 program risks with mitigations.
  • Program-level definition of done — eight concrete predicates, all of which must hold simultaneously.

Test plan

  • Pre-push hook passes (lint + format:check + test + build all green).
  • Local Vite dev server (yarn start:tangle-cloud --host 0.0.0.0) renders every redesigned page without console errors.
  • Wallet-disconnect flow verified on instances, earnings, rewards, deploy checkout — preview grids render with locked badges and ConnectWalletButton.
  • Theme toggle persists across reload via localStorage.
  • Reviewer to verify visual parity with Figma if any reference exists.
  • Reviewer to spot-check screen-reader output on the new <select> filters.

Out of scope (tracked in plan doc)

  • Surface-driven rendering of tier-2 manifest fields (theme, overviewCards, actions, resourceViews, modules) — workstream A.
  • AppRegistry contract — workstream B.
  • TEE commitment in service approval — workstream C.
  • npm publication of shared UI libs — workstream D.
  • Production AWS Nitro validation, Firecracker port mapping, auth-path bench fix — workstream E.

Notes

Unify the Tangle Cloud surfaces around a single design language so
every page (catalog, deploy checkout, instances, earnings, rewards,
operators) presents as a coherent app-store storefront rather than
nine independently-styled forms.

UX changes
- Hero card pattern with 3-column metric grid on every top-level page
- Wallet-gated empty states show a preview grid of locked data with
  inline ConnectWalletButton instead of empty divs
- Catalog filters move from pill toggles to native <select> dropdowns
  with explicit Availability and Source labels for accessibility
- Deploy checkout splits into "review" cards (operators / payment /
  caller / TTL) ahead of wallet approval; CTA renamed Create instance
- Blueprint detail switches Metadata block to Launch facts with
  conditional CTAs (Create instance vs Register capacity) keyed off
  operator availability
- Sidebar active state uses bg-primary + shadow with proper aria
- Theme persistence to localStorage; dark-first default with single
  source of truth (dead DOM check removed)
- Tables and stat cards get bespoke disconnected-wallet messaging
- Header hides wallet button on contextual surfaces (rewards/earnings/
  instances) where wallet UX is owned by the page

Foundation
- styles.css adds .cloud-hero-card, .cloud-compact-header,
  .catalog-controls, .results-grid, .chip-row, .blueprint-card,
  .operator-row, .tangle-cloud-visual-badge plus typography rules
  scoped to .tangle-cloud-page

Program plan
- docs/blueprint-app-store-program-plan.md captures end-state spec,
  layered architecture, current/in-flight/gap, five workstreams
  (surface rendering, AppRegistry contract, TEE commitment,
  npm packaging, prod TEE validation), sequencing, harness gates,
  risk register, and program-level definition of done
@netlify
Copy link
Copy Markdown

netlify Bot commented May 4, 2026

Deploy Preview for tangle-cloud ready!

Name Link
🔨 Latest commit 03e313a
🔍 Latest deploy log https://app.netlify.com/projects/tangle-cloud/deploys/69f8cf4de69f2a0008ba6bb9
😎 Deploy Preview https://deploy-preview-3164--tangle-cloud.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 4, 2026

Deploy Preview for tangle-dapp ready!

Name Link
🔨 Latest commit 03e313a
🔍 Latest deploy log https://app.netlify.com/projects/tangle-dapp/deploys/69f8cf4ddac8a500083d3f7a
😎 Deploy Preview https://deploy-preview-3164--tangle-dapp.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 4, 2026

Deploy Preview for tangle-leaderboard ready!

Name Link
🔨 Latest commit 03e313a
🔍 Latest deploy log https://app.netlify.com/projects/tangle-leaderboard/deploys/69f8cf4d76ba64000777c32c
😎 Deploy Preview https://deploy-preview-3164--tangle-leaderboard.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

drewstone added 2 commits May 4, 2026 10:51
Single source of truth across Tangle apps. Brand tokens (palette, depth
scale, status colors, accent gradients) now come from
@tangle-network/brand@0.2.0 instead of being duplicated in tangle-cloud.

- Add @tangle-network/brand ^0.2.0
- Bump @tangle-network/sandbox-ui ^0.10.2 → ^0.13.0 (latest stable, npm
  primitives + dashboard surfaces consistent with the published library)
- Replace github-tarball pin of @tangle-network/blueprint-ui with
  ^0.1.2 from npm (the missing exports surface is published; provenance
  via tokenless OIDC publish workflow)
- Import @tangle-network/brand/styles/tokens.css at the top of
  apps/tangle-cloud/src/styles.css so tangle-cloud composes brand
  tokens with its surface-specific overrides

Why brand-as-package: the brand README's policy is explicit — "no
additions without a cross-app audit; tokens land here or nowhere."
Importing the package makes that policy enforceable. tangle-cloud
keeps its tangle-cloud-only utility classes (.cloud-hero-card etc.)
but the underlying palette stays canonical.
…ntHostCard

When the resolved view is `declarative` and the blueprint manifest carries
real surface content (any of overviewCards, actions, or resourceViews
populated), render BlueprintHostCard on /blueprints/:id instead of the
generic BlueprintDetailHero. The host card already consumes:

- theme.{accentColor, secondaryColor} as CSS vars
- publisher.{name, namespace} for the publisher label
- resources.{serviceLabel, itemLabel} for copy
- overviewCards[] (stat / methods / callouts)
- actions[] with field chips (text-only labels, required badge)
- resourceViews[] rendered as live-after-launch tables
- modules[] + surfaces[] surfaced as console chips
- externalApp link when present

Falls back to BlueprintDetailHero whenever the manifest is missing or
shallow (no actions, no resourceViews, no overviewCards) so existing
generic blueprints render unchanged.

This is the surface-driven rendering predicate from the program plan
(Workstream A): generic blueprints keep the protocol view; blueprints
that declare a manifest get the per-app storefront experience.
@drewstone drewstone changed the title feat(tangle-cloud): cross-page UX redesign + app-store program plan feat(tangle-cloud): cross-page redesign + brand adoption + surface-driven app rendering May 4, 2026
@drewstone drewstone marked this pull request as ready for review May 4, 2026 18:06
@drewstone drewstone requested a review from AtelyPham as a code owner May 4, 2026 18:06
@drewstone drewstone merged commit 2cd4f22 into develop May 4, 2026
21 checks passed
@drewstone drewstone deleted the drew/tangle-cloud-cross-page-redesign branch May 4, 2026 18:07
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