{ "name": "imwald", "version": "23.1.1", "description": "Imwald — a user-friendly Nostr client focused on relay feed browsing, publications, and relay discovery", "private": true, "type": "module", "main": "electron/main.cjs", "author": "Silberengel", "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/Silberengel/jumble" }, "homepage": "https://github.com/Silberengel/jumble", "scripts": { "dev": "vite --host", "dev:all": "bash scripts/dev-all-local.sh", "stack:remote": "bash scripts/stack-remote.sh", "dev:refresh": "rm -rf node_modules/.vite && vite --host", "docker:prep-libretranslate": "bash scripts/ensure-libretranslate-dirs.sh", "docker:prune-libretranslate-packages": "bash scripts/prune-libretranslate-packages.sh", "docker:editor-tools": "bash scripts/ensure-libretranslate-dirs.sh && docker compose -f docker-compose.dev.yml --profile editor-tools up -d languagetool libretranslate", "docker:local-ancillary": "bash scripts/ensure-libretranslate-dirs.sh && docker compose -f docker-compose.dev.yml --profile editor-tools --profile local-tts build piper-tts-proxy && docker compose -f docker-compose.dev.yml --profile editor-tools --profile local-tts up -d og-proxy languagetool libretranslate piper-wyoming piper-tts-proxy", "piper-tts-proxy": "cross-env NODE_ENV=development npx --yes tsx services/piper-tts-proxy/http.ts", "build": "tsc -b && vite build", "lint": "eslint .", "knip": "npx --yes knip@5", "format": "prettier --write .", "preview": "vite preview", "test": "vitest", "test:run": "vitest run", "i18n:sync": "npx tsx scripts/sync-i18n-locales.ts && prettier --write \"src/i18n/locales/*.ts\"", "i18n:audit": "npx tsx scripts/i18n-audit.ts", "i18n:gaps": "npx tsx scripts/export-en-parity-gaps.ts", "i18n:translate-de": "PYTHONUNBUFFERED=1 .venv-i18n/bin/python scripts/auto_translate_i18n.py de", "electron:dev": "concurrently -k -n vite,electron -c blue,green \"vite --host\" \"wait-on http://127.0.0.1:5173 && cross-env NODE_ENV=development electron .\"", "build:electron": "tsc -b && vite build --mode electron", "electron:pack": "npm run build:electron && electron-builder", "og:image": "node scripts/generate-og-png.mjs" }, "dependencies": { "@asciidoctor/core": "^3.0.4", "@codemirror/autocomplete": "^6.20.1", "@codemirror/commands": "^6.10.3", "@codemirror/lang-json": "^6.0.2", "@codemirror/lang-markdown": "^6.5.0", "@codemirror/language": "^6.12.3", "@codemirror/lint": "^6.9.5", "@codemirror/search": "^6.6.0", "@codemirror/state": "^6.6.0", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.41.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@getalby/bitcoin-connect-react": "^3.10.0", "@getalby/lightning-tools": "^6.1.0", "@lezer/markdown": "^1.6.3", "@noble/hashes": "^1.6.1", "@radix-ui/react-alert-dialog": "^1.1.4", "@radix-ui/react-avatar": "^1.1.2", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.4", "@radix-ui/react-dropdown-menu": "^2.1.4", "@radix-ui/react-hover-card": "^1.1.4", "@radix-ui/react-label": "^2.1.1", "@radix-ui/react-popover": "^1.1.4", "@radix-ui/react-radio-group": "^1.3.8", "@radix-ui/react-scroll-area": "1.2.0", "@radix-ui/react-select": "^2.1.4", "@radix-ui/react-separator": "^1.1.1", "@radix-ui/react-slider": "^1.3.5", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-switch": "^1.1.2", "@radix-ui/react-tabs": "^1.1.2", "@scure/base": "^2.0.0", "@tailwindcss/typography": "^0.5.16", "@tiptap/core": "^2.12.0", "@tiptap/extension-document": "^2.12.0", "@tiptap/extension-emoji": "^2.26.1", "@tiptap/extension-hard-break": "^2.12.0", "@tiptap/extension-history": "^2.12.0", "@tiptap/extension-mention": "^2.12.0", "@tiptap/extension-paragraph": "^2.12.0", "@tiptap/extension-placeholder": "^2.12.0", "@tiptap/extension-text": "^2.12.0", "@tiptap/pm": "^2.12.0", "@tiptap/react": "^2.12.0", "@tiptap/suggestion": "^2.12.0", "@webbtc/webln-types": "^3.0.0", "blossom-client-sdk": "^4.1.0", "blurhash": "^2.0.5", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "codemirror-asciidoc": "^2.0.1", "dataloader": "^2.2.3", "dayjs": "^1.11.13", "embla-carousel-react": "^8.6.0", "embla-carousel-wheel-gestures": "^8.1.0", "emoji-picker-element": "^1.29.1", "flexsearch": "^0.7.43", "highlight.js": "^11.9.0", "hls.js": "^1.6.15", "i18next": "^24.2.0", "i18next-browser-languagedetector": "^8.0.4", "katex": "^0.16.25", "lamejs": "^1.2.1", "lru-cache": "^11.0.2", "lucide-react": "^0.469.0", "marked": "^17.0.5", "nostr-tools": "^2.17.0", "nstart-modal": "^2.0.0", "path-to-regexp": "^8.3.0", "prosemirror-state": "^1.4.3", "qr-code-styling": "^1.9.2", "qr-scanner": "^1.4.2", "react": "^18.3.1", "react-dom": "^18.3.1", "react-i18next": "^15.2.0", "react-simple-pull-to-refresh": "^1.3.3", "sonner": "^2.0.5", "tailwind-merge": "^2.5.5", "tailwindcss-animate": "^1.0.7", "tippy.js": "^6.3.7", "vaul": "^1.1.2", "yet-another-react-lightbox": "^3.21.7", "zod": "^3.24.1" }, "devDependencies": { "@eslint/js": "^9.17.0", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", "@types/node": "^22.10.2", "@types/react": "^18.3.17", "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", "concurrently": "^9.1.2", "cross-env": "^7.0.3", "eslint": "^9.17.0", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.16", "globals": "^15.13.0", "jsdom": "^27.1.0", "opentype.js": "^1.3.4", "postcss": "^8.4.49", "prettier": "3.4.2", "tailwindcss": "^3.4.17", "typescript": "~5.6.2", "typescript-eslint": "^8.18.1", "vite": "^6.0.3", "vite-plugin-pwa": "^0.21.1", "vitest": "^4.0.8", "wait-on": "^8.0.1" }, "optionalDependencies": { "electron": "^41.1.1", "electron-builder": "^26.8.1" }, "build": { "appId": "eu.imwald.app", "productName": "Imwald", "copyright": "Copyright © Silberengel", "directories": { "output": "release" }, "files": [ "dist/**/*", "electron/**/*", "package.json" ], "asarUnpack": [ "electron/**/*" ], "linux": { "target": [ "AppImage", "deb" ], "category": "Network", "maintainer": "Silberengel", "icon": "public/pwa-512x512.png" } }, "overrides": { "sucrase": { "glob": "^11.1.0" }, "minimatch": "^10.0.1", "lodash": "^4.18.1", "vite-plugin-pwa": { "workbox-build": { "@rollup/plugin-terser": { "serialize-javascript": "7.0.5" } } } } }