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
+4 -4
View File
@@ -3,12 +3,12 @@ import type {UploadTask} from "@welshman/editor"
import {
canUploadBlob,
encryptFile,
getListTags,
getTagValues,
makeBlossomAuthEvent,
uploadBlob,
} from "@welshman/util"
import {getRelay, signer, userBlossomServerList} from "@welshman/app"
import {Relays} from "@welshman/app"
import {app, signer, userBlossomServerList} from "@app/welshman"
import {first, normalizeUrl, parseJson, sha256, simpleCache} from "@welshman/lib"
import {get} from "svelte/store"
import {compressFile} from "@lib/html"
@@ -17,7 +17,7 @@ import {DEFAULT_BLOSSOM_SERVERS} from "@app/env"
export const normalizeBlossomUrl = (url: string) => normalizeUrl(url.replace(/^ws/, "http"))
export const fetchHasBlossomSupport = async (url: string) => {
const relay = getRelay(url)
const relay = app.use(Relays).get(url)
if (relay?.supported_nips?.map(String).includes("BUD-02")) {
return true
@@ -58,7 +58,7 @@ export const getBlossomServer = async (options: GetBlossomServerOptions = {}) =>
}
}
const userUrls = getTagValues("server", getListTags(get(userBlossomServerList)))
const userUrls = getTagValues("server", get(userBlossomServerList)?.tags() ?? [])
for (const url of userUrls) {
return normalizeBlossomUrl(url)