182828bb1e9c18303af1be0ed0d004e9d2f199c7
Gate the "Shared from your device" label and the hidden download affordance on whether this device actually holds the file bytes, not on whether the current user uploaded it. uploaderPeerId is the user id, so the old check claimed ownership on every device of the uploader, blocking view/download on second devices that only synced metadata. Also include attachment metadata in the account_sync chat-sync-batch so sibling devices learn about synced attachments at all. Co-authored-by: Cursor <cursoragent@cursor.com>
MetoYou / Toju
MetoYou is a desktop-first chat stack managed as an npm monorepo. The repository contains the Angular 21 product client, the Electron desktop shell, the Node/TypeScript signaling server, the Playwright E2E suite, and the Angular 19 marketing website.
Packages
| Path | Purpose | Docs |
|---|---|---|
toju-app/ |
Angular 21 product client | toju-app/README.md |
electron/ |
Electron main process, preload bridge, IPC, and desktop integrations | electron/README.md |
server/ |
Signaling server, server-directory API, and websocket runtime | server/README.md |
e2e/ |
Playwright end-to-end coverage for the product client | e2e/README.md |
website/ |
Angular 19 marketing site served separately from the product client | website/README.md |
docs-site/ |
Docusaurus app and plugin documentation served by the Electron Local API | docs-site/docs/intro.md |
Install
- Run
npm installfrom the repository root. - Run
cd server && npm installfor the server package. - If you need to work on the marketing site, run
cd website && npm install. - If you need to work on the Docusaurus docs, run
cd docs-site && npm install. - Copy
.env.exampleto.env.
Configuration
- Root
.envcontrols local SSL withSSL=true|false. - The server also honors an optional
PORTenvironment override at runtime. - When
SSL=true, run./generate-cert.shonce or let./dev.shgenerate local certificates on first launch. server/data/variables.jsonstoresklipyApiKey,releaseManifestUrl,serverPort,serverProtocol,serverHost, andlinkPreview. The server normalizes this file on startup.- When
serverProtocolishttps, the certificates in.certs/must exist and match the configured host or IP.
Main Commands
npm run devstarts the full desktop stack: server, product client, and Electron.npm run startstarts only the Angular product client intoju-app/.npm run electron:devstarts the Angular product client and Electron together.npm run server:devstarts only the server with reload.npm run buildbuilds the Angular product client todist/client.npm run build:docsbuilds the Docusaurus documentation site todocs-site/build.npm run build:electronbuilds the Electron code todist/electron.npm run build:allbuilds the product client, Docusaurus docs, Electron, and server.npm run testruns the product-client Vitest suite.npm run lintruns ESLint across the repo.npm run lint:fixformats Angular templates, sorts template properties, and applies ESLint fixes.npm run test:e2e,npm run test:e2e:ui,npm run test:e2e:debug, andnpm run test:e2e:reportrun the Playwright suite and report tooling.
Repository Map
| Path | Description |
|---|---|
toju-app/src/app/domains/ |
Product-client bounded contexts and domain facades |
toju-app/src/app/infrastructure/ |
Shared client-side technical runtime such as persistence and realtime |
toju-app/src/app/shared-kernel/ |
Cross-domain contracts shared inside the product client |
electron/ |
Electron bootstrap, preload surface, IPC handlers, CQRS, and desktop adapters |
server/src/ |
Express app, websocket runtime, config, CQRS, and persistence layers |
e2e/ |
Playwright tests, helpers, fixtures, and page objects |
website/src/ |
Marketing-site pages, assets, and SSR entry points |
docs-site/ |
Docusaurus source for Electron-hosted application and plugin documentation |
tools/ |
Build, release, formatting, and packaging scripts |
Product Client Docs
| Area | Docs |
|---|---|
| Domains index | toju-app/src/app/domains/README.md |
| Access Control | toju-app/src/app/domains/access-control/README.md |
| Attachment | toju-app/src/app/domains/attachment/README.md |
| Authentication | toju-app/src/app/domains/authentication/README.md |
| Chat | toju-app/src/app/domains/chat/README.md |
| Notifications | toju-app/src/app/domains/notifications/README.md |
| Profile Avatar | toju-app/src/app/domains/profile-avatar/README.md |
| Screen Share | toju-app/src/app/domains/screen-share/README.md |
| Server Directory | toju-app/src/app/domains/server-directory/README.md |
| Theme | toju-app/src/app/domains/theme/README.md |
| Voice Connection | toju-app/src/app/domains/voice-connection/README.md |
| Voice Session | toju-app/src/app/domains/voice-session/README.md |
| Persistence | toju-app/src/app/infrastructure/persistence/README.md |
| Realtime | toju-app/src/app/infrastructure/realtime/README.md |
| Shared Kernel | toju-app/src/app/shared-kernel/README.md |
Supporting Docs
Screenshots
Description
Releases
36
Toju 1.0.192
Latest
Languages
TypeScript
61.3%
JavaScript
27.7%
HTML
10%
SCSS
0.7%
Java
0.1%
Other
0.1%