Plugins
Everything here is free and open. Install from the marketplace inside your own Officer — nothing is installed from this page.
No plugins listed yet.
) : (import { Link, Route, Routes, useParams } from 'react-router'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; import { useCatalogue, usePlugin, type CatalogueEntry, type Load } from './catalogue'; /** * The public catalogue. * * It is a WINDOW, and that is the whole design. Nothing here installs anything: installing means cloning * a repository, pushing a schema and starting a process on someone's own machine, and a website has no * business being able to do that. So every plugin page ends at the same place — copy the app name, open * your own Officer, install it there. * * That constraint is what keeps this side simple enough to be public: no accounts, no sessions, no write * routes, nothing to compromise. The interesting security property of this store is that there is * nothing here worth attacking. */ export const App = () => (
Loading…
; if (load.state === 'error') return{load.message}
; return <>{children(load.data)}>; } const CataloguePage = () => { const load = useCatalogue(); return (Everything here is free and open. Install from the marketplace inside your own Officer — nothing is installed from this page.
No plugins listed yet.
) : ({plugin.summary}
{plugin.publisher} · v{plugin.version}
{plugin.summary}
{plugin.publisher} · v{plugin.version} · requires Officer {plugin.platform}
{permission.description}
{dep.binary}
{dep.reason}
This plugin has no README yet.
)} > )}
Open your own Officer, go to Marketplace, and install{' '}
{appName} from there. Your server clones it directly from the
repository below — nothing passes through this site.
Nothing here.
Back to the catalogue