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.
38 lines
1.7 KiB
TypeScript
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',
|
|
},
|
|
],
|
|
};
|