Files
moho/package.json
T
SalastilandClaude Opus 5.5 53a6f92ae4 Tests for the window: unit tests, and a layout check against the real app
Vitest, with 70 tests across the pure lib modules - formatting (IRC codes,
BBCode, spoilers, emoji and emotes, media and YouTube detection), media URL
resolution including the file-version fragment, the rail and its folders,
mentions, search filters, nick completion, Kick watching, emote and
interruption state - and the media scheme's boundary in the main process,
with Electron stubbed.

scripts/ui-check.mjs runs the built app against a scratch home and a fake
IRC server, opens the emoji picker, the channel, message and member menus
(right-clicked in the window's far corner) and the mentions inbox at two
window sizes, and fails if any of them leaves the window at 80 ms, 400 ms,
1.5 s or 3.5 s. Checked that it fails: with the context menu's clamping
removed it reports every corner-opened menu outside the window.

npm test and the layout check (under xvfb) run in the Linux release job.
#212

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-02 18:07:08 -04:00

126 lines
3.9 KiB
JSON

{
"name": "moho",
"version": "0.1.0",
"description": "Unified desktop chat client for IRC, Discord, Sneedchat and Matrix",
"author": "Salastil",
"license": "GPL-3.0-or-later",
"homepage": "https://github.com/Moho-Chat/moho",
"repository": {
"type": "git",
"url": "git+https://github.com/Moho-Chat/moho.git"
},
"bugs": {
"url": "https://github.com/Moho-Chat/moho/issues"
},
"main": "./out/main/index.js",
"desktopName": "moho.desktop",
"scripts": {
"dev": "electron-vite dev",
"build": "npm run typecheck && electron-vite build",
"start": "electron-vite preview",
"typecheck": "tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p tsconfig.web.json",
"test": "vitest run",
"test:ui": "electron-vite build && node scripts/ui-check.mjs",
"pack": "npm run daemon && npm run build && MOHO_BUILD=$(git rev-parse --short HEAD)$(git diff --quiet HEAD || echo -dirty) electron-builder --linux AppImage",
"pack:deb": "npm run daemon && npm run build && MOHO_BUILD=$(git rev-parse --short HEAD)$(git diff --quiet HEAD || echo -dirty) electron-builder --linux deb",
"pack:linux": "npm run daemon && npm run build && MOHO_BUILD=$(git rev-parse --short HEAD)$(git diff --quiet HEAD || echo -dirty) electron-builder --linux AppImage deb",
"pack:dir": "npm run daemon && npm run build && MOHO_BUILD=$(git rev-parse --short HEAD)$(git diff --quiet HEAD || echo -dirty) electron-builder --linux dir",
"daemon": "./scripts/build-daemon.sh",
"deploy": "npm run pack && ./scripts/install-desktop.sh",
"daemon:win": "./scripts/build-daemon-win.sh",
"pack:win": "npm run daemon:win && npm run build && MOHO_BUILD=$(git rev-parse --short HEAD)$(git diff --quiet HEAD || echo -dirty) electron-builder --win nsis"
},
"dependencies": {
"@electron-toolkit/preload": "^3.0.1",
"@electron-toolkit/utils": "^3.0.0"
},
"devDependencies": {
"@types/node": "^22.10.2",
"@types/react": "^18.3.17",
"@types/react-dom": "^18.3.5",
"@vitejs/plugin-react": "^4.3.4",
"electron": "^44.4.4",
"electron-builder": "^26.15.3",
"electron-vite": "^2.3.0",
"happy-dom": "^15.11.7",
"hls.js": "^1.7.2",
"livekit-client": "^2.22.2",
"lottie-web": "^5.13.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"typescript": "^5.7.2",
"vite": "^5.4.11",
"vitest": "^2.1.9"
},
"build": {
"appId": "com.salastil.moho",
"productName": "moho",
"files": [
"out/**/*"
],
"extraResources": [
{
"from": "nobilis/resources/sneedchat-smilies",
"to": "sneedchat-smilies"
},
{
"from": "resources/icons",
"to": "icons"
}
],
"linux": {
"target": [
"AppImage",
"deb"
],
"maintainer": "Salastil <[email protected]>",
"category": "Network",
"synopsis": "Unified desktop chat client",
"icon": "resources/icons/moho.png",
"desktop": {
"entry": {
"Name": "moho",
"Comment": "Unified chat client for IRC, Discord, Sneedchat and Matrix"
}
},
"syncDesktopName": true,
"extraResources": [
{
"from": "nobilis/target/release/nobilis",
"to": "nobilis"
}
]
},
"win": {
"target": [
{
"target": "nsis",
"arch": [
"x64"
]
}
],
"icon": "resources/icons/moho.png",
"extraResources": [
{
"from": "nobilis/target/release/nobilis.exe",
"to": "nobilis.exe"
}
]
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"perMachine": false
},
"artifactName": "${productName}-${env.MOHO_BUILD}.${ext}",
"toolsets": {
"appimage": "1.0.3"
}
},
"allowScripts": {
"[email protected]": true,
"[email protected]": true
}
}