Files
kiosk/manifest.ts
T
pastilhas 464e2ddf6e say what this plugin is for, in the store's words
tags are how the marketplace is browsed rather than scrolled: a list of them on
the left, the plugins that carry one on the right. a closed vocabulary
(PLUGIN_TAGS in the platform) because free text becomes homelab, home-lab, Home
Lab and selfhosted inside a month, and a filter list of synonyms is worse than
no filter at all.

declared here rather than curated in the catalogue, so a plugin can say what it
is and nobody edits a table when one ships. the marketplace caches it on sync,
exactly as it already does for label and summary.
2026-08-27 06:49:33 +00:00

38 lines
1.7 KiB
TypeScript

import type { PluginManifest } from '@@/plugins/manifest';
// Officer Kiosk — build, sign and deliver iOS and Android apps to your own registered devices.
// What EAS does, self-hosted.
//
// Ported from the standalone Bun/Hono service that was called OAS, whose access control was an invite key
// held in a browser's local storage. The rule we actually want is "the people already registered on the
// platform", which is the thing the platform already knows how to enforce — so the key stops being
// something a person holds and becomes something an account has.
//
// `appName` is the directory name: `kiosk`.
export const manifest: PluginManifest = {
publisher: 'officerdev',
version: '1.0.0',
platform: '>=1.0.0',
label: 'Kiosk',
summary: 'Build, sign and install iOS and Android apps on your own devices',
/** building and signing your own apps. */
tags: ['Development'],
// A lucide glyph until the real artwork lands. Kiosk already has an icon and a splash screen drawn —
// drop the icon at `assets/icon.png` (served as `/plugins/kiosk/icon.png`) and the tile renders the
// artwork instead, with `tile: 'bare'` in the catalogue entry so nothing paints a square behind it.
icon: 'Smartphone',
color: '#a78bfa',
// One permission over the whole surface, which is also all the platform offers: the first entry
// claims the plugin's entire route surface. Owner-only actions (publishing, retention, other people's
// devices) are enforced inside the router with `isSuperAdmin`, not by a second permission.
permissions: [
{
key: 'kiosk',
label: 'App install',
description: 'Install Officer apps on your own devices',
},
],
};