fix: revert tier test patch, widen toggleField, add spiral-db prepare

Three independent fixes grouped because they're each one-line changes:

1. Revert MANA_APPS requiredTier test patch
   Commit e52b6e29f flipped all 36+ apps to requiredTier='guest' for
   local testing. Restored original tiers from before the flip:
   guest-accessible (contacts, calendar, todo), public (who),
   beta (zitare, calc, guides, arcade), alpha (most modules),
   founder (memoro, nutriphi, mail, habits, notes, dreams, cycles,
   events, finance, places, news). Body stays at 'guest' (new module,
   intentional). The memory note "REVERT BEFORE RELEASE" is now done.

2. Widen toggleField to accept IndexableType keys
   `toggleField<T>(table: Table<T, string>, ...)` rejected Dexie
   tables keyed by IndexableType (the default). Changed the second
   generic to IndexableType so callers like images.svelte.ts don't
   need the `as unknown as Parameters<...>[0]` double-cast.

3. Add prepare script to spiral-db
   `"prepare": "pnpm build"` ensures `dist/` is rebuilt after
   `pnpm install` on a fresh clone. Without this, the 209 cascading
   type errors from stale/missing dist files return on every new
   checkout. Also added `prepublishOnly` as a safety net.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-10 18:35:20 +02:00
parent 3e81a6ebef
commit 7df515434e
3 changed files with 41 additions and 39 deletions

View file

@ -100,7 +100,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#6366f1',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'chat',
@ -117,7 +117,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#0ea5e9',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'memoro',
@ -134,7 +134,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#f8d62b',
comingSoon: false,
status: 'published',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'presi',
@ -151,7 +151,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#f97316',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'cards',
@ -168,7 +168,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#8b5cf6',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'picture',
@ -185,7 +185,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#22c55e',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'zitare',
@ -202,7 +202,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#f59e0b',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'beta',
},
{
id: 'wisekeep',
@ -219,7 +219,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#6366f1',
comingSoon: false,
status: 'planning',
requiredTier: 'guest',
requiredTier: 'founder',
archived: true,
},
{
@ -237,7 +237,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#10b981',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
archived: true,
},
{
@ -255,7 +255,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#3b82f6',
comingSoon: false,
status: 'published',
requiredTier: 'guest',
requiredTier: 'public',
},
{
id: 'calendar',
@ -272,7 +272,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#0ea5e9',
comingSoon: false,
status: 'published',
requiredTier: 'guest',
requiredTier: 'public',
},
{
id: 'storage',
@ -289,7 +289,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#3b82f6',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
// Clock consolidated into Times
{
@ -307,7 +307,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#8b5cf6',
comingSoon: false,
status: 'published',
requiredTier: 'guest',
requiredTier: 'public',
},
{
id: 'mail',
@ -324,7 +324,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#6366f1',
comingSoon: false,
status: 'planning',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'moodlit',
@ -341,7 +341,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#8b5cf6',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'inventory',
@ -358,7 +358,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#14b8a6',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'questions',
@ -375,7 +375,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#8b5cf6',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'context',
@ -392,7 +392,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#0ea5e9',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'times',
@ -409,7 +409,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#f59e0b',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'citycorners',
@ -426,7 +426,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#2563eb',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'uload',
@ -443,7 +443,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#6366f1',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'news',
@ -460,7 +460,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#10b981',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'calc',
@ -477,7 +477,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#ec4899',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'beta',
},
{
id: 'guides',
@ -494,7 +494,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#0d9488',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'beta',
},
{
id: 'music',
@ -511,7 +511,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#ec4899',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'photos',
@ -528,7 +528,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#8b5cf6',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'planta',
@ -545,7 +545,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#22c55e',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'skilltree',
@ -562,7 +562,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#f59e0b',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'alpha',
},
{
id: 'body',
@ -596,7 +596,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#8b5cf6',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'notes',
@ -613,7 +613,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#f59e0b',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'dreams',
@ -630,7 +630,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#6366f1',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'cycles',
@ -647,7 +647,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#ec4899',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'events',
@ -664,7 +664,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#f43f5e',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'finance',
@ -681,7 +681,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#22c55e',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'places',
@ -698,7 +698,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#0ea5e9',
comingSoon: false,
status: 'development',
requiredTier: 'guest',
requiredTier: 'founder',
},
{
id: 'arcade',
@ -715,7 +715,7 @@ export const MANA_APPS: ManaApp[] = [
color: '#ef4444',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
requiredTier: 'beta',
},
{
id: 'who',

View file

@ -16,14 +16,14 @@
* ```
*/
import type { Table, UpdateSpec } from 'dexie';
import type { IndexableType, Table, UpdateSpec } from 'dexie';
/**
* Toggle a boolean field on a Dexie record.
* @returns The new value of the field after toggling.
*/
export async function toggleField<T>(
table: Table<T, string>,
table: Table<T, IndexableType>,
id: string,
field: string
): Promise<boolean> {

View file

@ -21,7 +21,9 @@
"dev": "tsup src/index.ts src/wallpaper.ts --format esm --dts --watch",
"test": "vitest",
"test:run": "vitest run",
"type-check": "tsc --noEmit"
"type-check": "tsc --noEmit",
"prepare": "pnpm build",
"prepublishOnly": "pnpm build"
},
"dependencies": {
"pako": "^2.1.0"