Widget surfaces

Releaseo widget behavior for feature requests, roadmap, tabs, Home Hub, and public customer-facing data.

Config-driven tabs

The widget config controls visible customer-facing areas such as changelog, feature requests, roadmap, feedback, messages, and the Home Hub. Labels and icons are resolved from navigationConfig, while feature-specific settings such as featureRequestsTitle, featureRequestsRequireLogin, and roadmapTitle control page copy and behavior.

Feature requests

Current public feature request behavior:

Widget endpoints:

GET  /sdk/feature-requests/categories
GET  /sdk/feature-requests
POST /sdk/feature-requests
GET  /sdk/feature-requests/:id/comments
POST /sdk/feature-requests/:id/comments
POST /sdk/feature-requests/:id/vote

Roadmap

Roadmap visibility is item-based, not column-based. Internal-only items never render publicly, and audience-targeted items use the same visibility runtime as targeted changelog posts.

Preferred widget endpoints:

GET    /sdk/roadmap/snapshot
GET    /sdk/roadmap/:id
POST   /sdk/roadmap/:id/follow
DELETE /sdk/roadmap/:id/follow

The snapshot response groups visible roadmap items by columns and avoids extra round trips for the normal list view.

Home Hub and navigation

homeConfig stores the small widget-scoped Home Hub payload:

navigationConfig controls compact bottom navigation labels and icons. Custom HTML, custom JavaScript, and custom SVG payloads are not accepted in the backend validation layer.

Theme and tab tokens

Navigation tab style is stored in widget theme JSON. Supported layout modes are pill and bar. Color mode can be automatic or manual, and automatic mode derives tab colors from existing widget body tokens.

Preview data

For dashboard previews and local demos, the SDK supports mock data inputs such as mockFeatureRequests, mockRoadmapColumns, and mockRoadmapItems. Mock mode should be used for preview fidelity, not for production customer data.