Migrate to new @welshman/domain + instance-based @welshman/app API

Adopts the rewritten welshman API: the removed @welshman/util helpers
(Profile/List/Room/Handler/Encryptable) are now Reader/Builder classes in
@welshman/domain, and @welshman/app dropped its global singletons for an App
instance + app.use(Plugin) registry.

- src/app/welshman.ts is now the app bootstrap + session-state module (one shared
  App instance, multi-account sessions/login, app-wide reactive views) rather than
  a compat shim re-exporting the old globals.
- Rewrote ~100 callers to use app.use(Plugin) directly (thunks, profiles, relays,
  rooms, zaps, tags, wot, feeds, sync); thunk helpers are now thunk methods.
- Added @welshman/domain dependency.
- Resolved residual gaps (storage hydration via plugin.onItem/wrapManager/Plaintext,
  relay-list mutators, search-relay list, outbox #d filter).

Best-effort: no toolchain/linking available, so this is not build- or
type-checked. Remaining judgment calls are flagged with TODO(welshman-migration).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BsMjvv7krpZeHK1Njeneru
This commit is contained in:
2026-06-20 14:55:06 +00:00
parent fd4e7a9f2d
commit 9df8cee501
149 changed files with 1445 additions and 707 deletions
+5 -5
View File
@@ -2,7 +2,7 @@
import {onMount} from "svelte"
import {Capacitor} from "@capacitor/core"
import {getNip07, getNip55, Nip55Signer} from "@welshman/signer"
import {addSession, type Session, makeNip07Session, makeNip55Session} from "@welshman/app"
import {addSession, type FlotillaSession, makeNip07Session, makeNip55Session} from "@app/welshman"
import Widget from "@assets/icons/widget-4.svg?dataurl"
import Letter from "@assets/icons/letter.svg?dataurl"
import Cpu from "@assets/icons/cpu-bolt.svg?dataurl"
@@ -32,8 +32,8 @@
const signUp = () => pushModal(SignUp)
const onSuccess = async (session: Session) => {
addSession(session)
const onSuccess = async (session: FlotillaSession, pubkey: string) => {
addSession({...session, pubkey})
setChecked("*")
clearModals()
}
@@ -45,7 +45,7 @@
const pubkey = await getNip07()?.getPublicKey()
if (pubkey) {
await onSuccess(makeNip07Session(pubkey))
await onSuccess(makeNip07Session(pubkey), pubkey)
} else {
pushToast({
theme: "error",
@@ -65,7 +65,7 @@
const pubkey = await signer.getPubkey()
if (pubkey) {
await onSuccess(makeNip55Session(pubkey, app.packageName))
await onSuccess(makeNip55Session(pubkey, app.packageName), pubkey)
} else {
pushToast({
theme: "error",