Plugin onboarding & hub · hybrid skin
Tangible Hub, in the onboarder's clothes
The hub page from /tangible-hub redrawn in the
onboarder hybrid skin: Cristian's WordPress-native structure and body type,
Tangible's mark, indigo accent and mono labels. It also takes on the jobs we settled since the first draft —
Connect for free plugins (paid ones keep their licence key), the permanent way back into setup, telemetry state per plugin, and the
site's steward answer.
§1
The hub at wp-admin width
1440 frame · admin bar + left menu
One site, four Tangible plugins in four different states. The free plugin isn't connected to a
tangible.one account, so the band at the top asks — once, quietly, dismissible. Paid plugins never see it: they have a key.
1Connect links the SITE to an account. Free plugins ride on it (connecting from one covers all); paid plugins keep their keys. The band shows while the site is unconnected, even with no free plugin installed (§1b); "Not now" hides it for 30 days.
2Paid plugins show licence state (Active / Key not entered / Expired); free ones show Free · not connected / Connected.
3Usage data follows the server for connected plugins and the plugin's own answer for free ones.
4Steward answer: one site option, shared by every Tangible plugin. Never sent to tangible.one.
§1b
Same band, on a site with only paid plugins
no free plugin installed
The connection belongs to the site, not to a free plugin, so the Hub offers it whenever the site is unconnected.
With no free plugin here yet, the pitch is what connecting unlocks next: installing free Tangible plugins and their updates from this page.
Connect this site to your tangible.one account
Install free Tangible plugins from here and get their updates, without making an account on the spot.
Your licensed plugins already work through their keys; connecting changes nothing for them.
§2
Every chip, and what decides it
nothing on the page is invented
The hub never decides state. It shows facts it reads from the updater, the server's licence-check response,
or the plugin's own options. Each chip below says where it comes from.
Licence & account
ActivePaid: the licence key is activated and the server says it's valid. Shows the account name.
Free · not connectedThe server says this asset is free (the free-asset work under way). No account needed; Connect is optional. Once connected: Connected
Key not enteredPaid, no key activated on this site. Its paid features stay locked; the onboarder's licence step asks for it.
ExpiredPaid, the licence lapsed. The plugin keeps working; updates stop.
Usage data
Shared · account settingServer block says enabled: true. Offers "Exclude this site" (per account and site).
Not shared · account settingenabled: false. Changed only at tangible.one, since consent is account-level.
Off · this pluginFree and unconnected: the plugin's local answer. Sends nothing either way; the answer itself is recorded on the server.
Not asked yetA paid plugin before its key is activated, or promptEligible. The onboarder asks; the hub never does.
Setup
✓ Set upNo onboarder step is needed right now. Resolved from facts on every load, not a stored flag.
2 steps leftSteps are needed. Resume setup opens the onboarder at the first one. This is the permanent way back after the notice is dismissed.
changeThe steward line. Flipping it rewrites the site option; plugins read it at render time.
§3
Phone width
390 · wp-admin collapses the menu
Same content, one column. Rows become cards; the rail drops below the plugins; the admin-bar mark keeps its pill.
☰oakhill-learning.com
3
TangibleHome
Looked after by me / my team change
Connect your free plugins
Optional. One connection covers every free Tangible plugin on this site. One click if you're signed in.
Dp
Design Upgrade Pro
Key not entered
Me
LearnDash Merge
ActiveShared
Du
Design Upgrade for LearnDash
Free · not connectedOff
§4
Where each region's data comes from
status as of 2026-09-26
Design rules carried over from the first hub: the admin-bar mark is the quietest thing in the bar
(one pill, never red unless something is actually broken); the hub lives under the shared Tangible menu as its first item;
the hub renders facts and stores nothing of its own.