Facade
Facade
Section titled “Facade”The wippy/facade module provides a portable iframe facade that loads and configures the Wippy frontend from a CDN. It serves an HTML shell that creates an iframe pointing to the frontend bundle, handles authentication, and bridges configuration between the backend and frontend.
Add the module to your project:
wippy add wippy/facadewippy installDeclare the dependency:
version: "1.0"namespace: app
entries: - name: gateway kind: http.service addr: :8090 lifecycle: auto_start: true
- name: api kind: http.router meta: server: app:gateway prefix: /api/public
- name: dep.facade kind: ns.dependency component: wippy/facade version: "*" parameters: - name: server value: app:gateway - name: router value: app:apiConfiguration Parameters
Section titled “Configuration Parameters”| Parameter | Required | Default | Description |
|---|---|---|---|
server | yes | — | HTTP server for static and iframe serving |
router | yes | — | Public API router for config endpoint |
fe_facade_url | no | https://web-host.wippy.ai/webcomponents-1.0.21 | Base URL for iframe frontend bundle |
fe_entry_path | no | /iframe.html | Iframe HTML entry point path |
App Identity
Section titled “App Identity”| Parameter | Default | Description |
|---|---|---|
app_title | Wippy | Title shown in sidebar |
app_name | Wippy AI | Full application name |
app_icon | wippy:logo | Iconify icon reference |
Feature Flags
Section titled “Feature Flags”| Parameter | Default | Description |
|---|---|---|
hide_nav_bar | false | Hide the left navigation sidebar |
disable_right_panel | false | Disable the right sidebar panel |
start_nav_open | false | Navigation drawer open by default |
show_admin | true | Show admin panel toggle |
allow_select_model | false | Allow user to select LLM model |
session_type | non-persistent | Chat session persistence: non-persistent or persistent |
history_mode | hash | Browser history mode: hash or history |
hide_session_selector | false | セッション選択 UI を非表示にする |
Theming
Section titled “Theming”3 つのスコープが適用されます: global(あらゆる場所)、host(iframe を囲むクローム)、children(iframe 内のコンテンツ)。
| Parameter | スコープ | Default | 説明 |
|---|---|---|---|
custom_css | global | Google Fonts import | あらゆるレベルに注入される CSS |
css_variables | global | {} | CSS カスタムプロパティの JSON マップ |
icon_sets | global | [] | Iconify アイコンセット URL |
host_custom_css | host | "" | host クローム専用の CSS |
host_css_variables | host | {} | host 専用の CSS カスタムプロパティ |
host_icon_sets | host | [] | host 専用のアイコンセット |
children_custom_css | children | "" | iframe コンテンツ専用の CSS |
children_css_variables | children | {} | iframe コンテンツ専用の CSS カスタムプロパティ |
login_path | — | /login.html | 未認証ユーザーのリダイレクト先パス |
オプションの hostConfig JSON
Section titled “オプションの hostConfig JSON”以下の各パラメータは JSON エンコードされた文字列です。デフォルトは空({} または [])です。これらはそのまま hostConfig 配下でフロントエンドに公開されます。
| Parameter | Default | 説明 |
|---|---|---|
api_routes | {} | フロントエンドのルートオーバーライド |
additional_nav_items | [] | 追加のサイドバー項目 |
state_cache | {} | フロントエンドの状態キャッシュ設定 |
allow_additional_tags | [] | チャットで許可される追加の HTML タグ |
chat | {} | チャット UI のオーバーライド |
axios_defaults | {} | フロントエンド axios HTTP クライアントのデフォルト |
Config Endpoint
Section titled “Config Endpoint”The facade registers GET /facade/config on the configured router. The frontend fetches this on load:
{ "facade_url": "https://web-host.wippy.ai/webcomponents-...", "iframe_origin": "https://web-host.wippy.ai", "iframe_url": "https://web-host.wippy.ai/webcomponents-.../iframe.html?waitForCustomConfig", "login_path": "/login.html", "env": { "APP_API_URL": "https://api.example.com", "APP_AUTH_API_URL": "https://api.example.com", "APP_WEBSOCKET_URL": "wss://api.example.com" }, "routePrefix": "https://api.example.com", "axiosDefaults": { "...": "..." }, "theming": { "global": { "customCSS": "...", "cssVariables": {}, "iconSets": {} }, "host": { "customCSS": "...", "cssVariables": {}, "iconSets": {}, "i18n": { "app": { "title": "Wippy", "icon": "wippy:logo", "appName": "Wippy AI" } } }, "children": { "customCSS": "...", "cssVariables": {} } }, "hostConfig": { "session": { "type": "non-persistent" }, "history": "hash", "showAdmin": true, "allowSelectModel": false, "startNavOpen": false, "hideNavBar": false, "disableRightPanel": false, "hideSessionSelector": false, "apiRoutes": { "...": "..." }, "additionalNavItems": [], "stateCache": { "...": "..." }, "allowAdditionalTags": [], "chat": { "...": "..." } }}API URLはPUBLIC_API_URL環境変数から読み取られます。APP_WEBSOCKET_URLはhttp://をws://に、またはhttps://をwss://に置き換えて導出されます。テーミングには3つのスコープ(global、host、children)があります — host.i18nにはアプリのブランディングが含まれます。hostConfigキーはcamelCaseで、facadeパラメータから組み立てられます: session_type、history_mode、show_admin、allow_select_model、start_nav_open、hide_nav_bar、disable_right_panel、hide_session_selector、加えてオプションのapi_routes、additional_nav_items、state_cache、allow_additional_tags、chat、axios_defaults。
Navigation Sidebar
Section titled “Navigation Sidebar”Pages registered via wippy/views appear in the sidebar automatically based on their metadata:
entries: - name: dashboard kind: registry.entry meta: type: view.page name: dashboard title: Dashboard icon: tabler:chart-bar group: Analytics group_icon: tabler:chart-dots group_order: 10 order: 1 announced: true secure: true url: https://cdn.example.com/dashboard/Sidebar Groups
Section titled “Sidebar Groups”Pages with the same group value are collected into collapsible sections. Groups are sorted by group_order (lower first), pages within groups by order.
| Field | Description |
|---|---|
group | Category name displayed in sidebar |
group_icon | Icon for the category header |
group_order | Sort position of the group (lower = higher) |
group_placement | "sidebar" (in sidebar) or "default" (main area only) |
Pages without a group appear as top-level items.
Controlling Visibility
Section titled “Controlling Visibility”| Field | Effect |
|---|---|
announced: true | Page appears in sidebar navigation |
announced: false | Page hidden from navigation but still accessible via URL |
inline: true | Internal page, hidden from all UI listings |
hide_nav_bar: true | Facade parameter — hides the entire left sidebar |
Publishing with Embedded Assets
Section titled “Publishing with Embedded Assets”When publishing a component that includes static files (like the facade’s public/ directory), use --embed to include fs.directory entries in the package:
wippy publish --embed facade:public_filesWithout --embed, fs.directory entries are excluded from the published package. The --embed flag accepts entry IDs or names matching fs.directory entries.
See Also
Section titled “See Also”- Views - Page and component system
- HTTP Server - HTTP service configuration
- Framework Overview - Framework module usage