VISWOO DOCUMENTATION
Concepts
The parts of a plugin package, where they run and their life cycle at a customer.
In Viswoo a business (customer) manages its screens from the panel. A plugin adds a new capability to the customer’s
panel and screens: a prize draw, a survey, a queue number display. A plugin is a single package file (.vzp, ZIP).
| Part | File | Runs in | Bridge |
|---|---|---|---|
| Manifest | viswoo-plugin.json |
— | — |
| Panel tab | panel.entry (e.g. panel/index.html) |
The customer’s panel, in a sandboxed frame | Viswoo.panel |
| Screen view | player.entry (e.g. player.html) |
TVs, tablets, kiosks; inside the player | Viswoo.player |
| Public page | public.entry (e.g. public/index.html) |
The visitor’s phone, via the QR code on screen | Viswoo.public |
| Your own server | Your domain | — | Signed webhooks + platform API |
No part is mandatory: a reporting plugin may have only a panel tab, a content plugin only a screen view.
Sandbox
Section titled “Sandbox”Every page opens in a sandboxed frame with its own opaque origin: it cannot reach the panel’s cookies, storage or DOM.
It talks to the platform only through the SDK bridge (postMessage). The screen view has no network at all
(connect-src 'none'); server work goes through the bridge’s call.
What goes where in the panel
Section titled “What goes where in the panel”The panel gives a plugin a menu item and tabs. Viswoo draws the standard tabs:
| Tab | Drawn by | Contents |
|---|---|---|
The plugin’s tab (panel.tab) |
The plugin | Special work such as the till, statistics, lists |
| Settings | Viswoo, from the settings schema |
Form, required fields, saving |
| Screens | Viswoo | Which screens, how (continuous, interval, playlist), between which dates |
| Preview | Viswoo | The screen view in a TV frame, landscape/portrait, touch |
So you do not write a settings form; you write the settings schema.
Installation and life cycle
Section titled “Installation and life cycle”- The customer enables the plugin in the store and approves the requested permissions.
- They fill in Settings. Setup is incomplete until the schema’s required fields are set: the plugin does not
play, server actions return
plugin.setup_incomplete, and the bridge context sayssetupComplete: false. - If there is a screen view, they choose the placement in Screens. Without it the plugin plays on no screen.
- When the plugin is turned off or outside its date range it leaves the screens; server actions return
plugin.not_live.
If a new version asks for new permissions, the old version keeps running until the customer approves.
Permissions
Section titled “Permissions”| Permission | Grants |
|---|---|
settings |
Settings schema and reading/writing settings |
data |
Plugin data (collection/key → JSON document) |
screens:read |
Names and orientation of the customer’s screens |
events |
Event counters (report, events.summary) |
codes |
One-time codes |
draw |
Weighted draw pool |
public |
Public page opened by QR |
server |
Signed events to the plugin’s own server |
Ask only for what you need; the customer sees the list when installing.
Protocol and devices
Section titled “Protocol and devices”The screen view must run on the oldest player in the field: LG webOS 3.x, i.e. Chromium 38. That is why it is written in ES5 and is a single file. Screen views need a protocol 3 player; placement (continuous and interval display) is protocol 4. Older players skip the plugin item and the panel tells the customer to update the screen.