- JavaScript 59.1%
- Astro 24.1%
- CSS 13.2%
- TypeScript 2.8%
- Standard ML 0.8%
| .astro | ||
| .forgejo/workflows | ||
| docs | ||
| entries | ||
| functions | ||
| generated/v1 | ||
| public | ||
| schemas | ||
| scripts | ||
| src | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| astro.config.mjs | ||
| package.json | ||
| PLAN.md | ||
| pnpm-lock.yaml | ||
| README.md | ||
| tsconfig.json | ||
Lapis Plugin Registry
Static plugin registry metadata for Lapis Notes.
The V1 registry publishes inline-signed JSON metadata for official installable
plugins.
Generated files under generated/v1/ are intended to be deployed as static
assets, while official plugin release assets are published by the lapis-notes
app repo as deterministic per-plugin-version Forgejo release downloads.
Commands
pnpm install
pnpm check
pnpm registry:validate
pnpm registry:sync:forgejo -- --plugin-versions lapis-pdf@2026.6.6 --dry-run
pnpm registry:generate
pnpm registry:verify-signatures
Registry signing uses protected CI secrets or a local key generated under
~/.lapis/:
pnpm registry:keygen
LAPIS_REGISTRY_KEY_ID=lapis-registry-2026-01 \
LAPIS_REGISTRY_PRIVATE_KEY_PEM_B64="$(base64 -i ~/.lapis/lapis-registry-private.pem | tr -d '\n')" \
pnpm registry:sign
Private keys must never be committed. The committed bootstrap metadata is signed so verification can run in CI before production keys are installed.
Layout
entries/**: human-maintained JSONC source entries.schemas/**: strict JSON schemas for source and generated metadata.generated/v1/**: deterministic generated registry files with inline signatures plus matching signature sidecars.scripts/**: validation, generation, signing, and verification tooling.
Official plugin asset builds, release signing, and Forgejo upload live in the
lapis-notes repository. This registry syncs those published releases into
reviewed metadata with pnpm registry:sync:forgejo. Plugin detail metadata can
also include a signed mutable readmeUrl; the site build fetches those README
sources and publishes deterministic artifacts under v1/readmes/<plugin-id>/
so browser clients render registry-hosted markdown without depending on source
host CORS. Documentation copy changes require a site rebuild, but not metadata
or release republishing.
Cloudflare Pages middleware adds Access-Control-Allow-Origin: * to published
registry files and README artifacts so the Lapis app can fetch them from web,
PWA, and Electron surfaces.