Back to Shiftfield
SOURCE / PINNED RELEASE

Made of little things.

Shiftfield

Release
5a170c505f6b…
Author-recorded commit
a2e23e0171aa…
License
LICENSE
Author’s source reference
nostr://npub16nzc4ql748r2kv9202rgzrt0fmtk4n3tzsjl86yf6ty9agqe9u0qjcc7hc/wss%3A%2F%2Fgit.napplet.soy%2F/n-e4fb6341ccd

Archive hash verified: 66de7623efd91da1…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

vite.config.ts
import { readFileSync } from 'node:fs';
import { defineConfig } from 'vite';
import { nip5aManifest } from '@napplet/vite-plugin';

export default defineConfig({
  build: {
    // Vite's module-preload polyfill calls `fetch`; one inlined entry needs no
    // preload graph, and NIP-5D napplet code has no ambient network authority.
    modulePreload: { polyfill: false },
  },
  plugins: [
    // Produce one self-contained `/index.html` for NIP-5D `srcdoc` loading,
    // soyLI publishes its raw HTML hash using standalone NIP-5D manifests.
    nip5aManifest({
      nappletType: 'shiftfield',
      title: 'Shiftfield',
      icon: {
        data: readFileSync(new URL('./assets/shiftfield-favicon.png', import.meta.url)),
        mimeType: 'image/png',
      },
      artifactMode: 'single-file',
      // Leaderboard/CVM is an enhancement, not a requirement: published as an
      // optional (O) domain so the host offers `cvm` when it can, and the game
      // degrades gracefully (guarded by runtimeHasDomain('cvm')) when it can't.
      optional: ['storage', 'config', 'cvm'],
    }),
  ],
});