mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-08-13 03:05:44 +02:00
Dependencies - 53 minor/patch bumps; low-risk majors (@types/node 26, globals 17, jsdom 30, shiki 4, tailwind-merge 3, framer-motion 13, js-yaml 5, sharp 0.35, unicode-emoji-json 0.9, eslint-plugin-react-refresh 0.5) - lucide-react was pinned to "latest"; now a real range (^1.29.0) - Tooling majors: eslint 10, @eslint/js 10, eslint-plugin-react-hooks 7, vite 8, @vitejs/plugin-react 6 (rolldown: build 8.8s -> 0.5s) - Framework: applesauce 5->6, react-router 7->8, TypeScript 5.6->6.0.3 - Node: .nvmrc 26, engines >=24 - Remove @react-router/dev (unused, blocked resolution) Breaking changes handled - js-yaml 5 dropped its default export; nostr-schema.ts now uses a named import and @types/js-yaml is gone (types are bundled). Fixed 5 failing tests. - applesauce 6 removed the legacy EventFactory/blueprint()/buildEvent. Migrated 12 files to v6 factory classes; post-hoc draft.tags.push() became .modifyPublicTags(). - ActionRunner now takes an EventSigner, not a factory. hub.ts passes a delegating signer that follows the active account, exposing nip04/nip44 as getters so capability detection stays accurate. - Delete src/lib/blueprints.ts: it existed only to add the NIP-30 emoji set address, which v6 supports natively (Emoji.address). Added toApplesauceEmoji/toApplesauceEmojis to convert Grimoire's address string to v6's AddressPointer. Deferred, with reasons - blossom-client-sdk 5: pins @cashu/cashu-ts ^2.4.3, irreconcilable with applesauce 6's ^4.5.1. npm overrides does not clear it. - react-mosaic-component 7: the layout tree is a wire format — spellbooks publish it inside kind 30777 content. v7's n-ary shape would break every published spellbook; needs a versioned content format first. - TypeScript 7: no typescript-eslint release accepts TS >=6.1, so lint would break. Landed 6.0.3 and removed the baseUrl TS 6 deprecates. Lint rule triage eslint 10 and react-hooks 7 promoted ~140 violations in pre-existing code to errors. Eight rules are pinned to "warn" in eslint.config.js with inline reasoning and a promote-per-rule path. Agentic setup - Fix the prettier PostToolUse hook: it used $FILEPATH, which Claude Code never sets (hooks receive JSON on stdin), so it silently no-opped. Now reads .tool_input.file_path; dropped the non-existent MultiEdit matcher. - vitest was collecting .claude/worktrees git-worktree copies and running them against the root node_modules. Exclude .claude and .agents from vitest, eslint and prettier. - CI: node 20 -> .nvmrc (mandatory: react-router 8 needs node >=22.22.0), checkout/setup-node v4 -> v6, add the missing lint job, matrix and concurrency cancellation. - CLAUDE.md 495 -> 194 lines; reference material moved to docs/. Fixes a pointer to .claude/skills/tailwind-v4.md that never existed, and corrects the v5 factory API it documented. Symlink AGENTS.md. - Replace the bespoke nostr skill with the official applesauce skill; add .mcp.json (applesauce + nostrbook MCP servers). - Drop 11 stale settings.local.json permissions; gitignore agent scratch. Verified: npm ci, lint (0 errors), 1475/1475 tests, build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Symbolic link
9 B
Symbolic link
9 B
CLAUDE.md