{"id":36991233,"url":"https://github.com/jamditis/pisscord","last_synced_at":"2026-02-11T00:07:50.315Z","repository":{"id":327853289,"uuid":"1110984022","full_name":"jamditis/pisscord","owner":"jamditis","description":"A free, private version of the other voice chat app.","archived":false,"fork":false,"pushed_at":"2025-12-25T22:23:48.000Z","size":7342,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-14T00:13:09.432Z","etag":null,"topics":["beta","chat","executable","vibe-coded","video","voice","windows"],"latest_commit_sha":null,"homepage":"https://jamditis.github.io/pisscord/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamditis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-06T03:29:28.000Z","updated_at":"2025-12-25T21:55:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jamditis/pisscord","commit_stats":null,"previous_names":["jamditis/pisscord"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/jamditis/pisscord","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Fpisscord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Fpisscord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Fpisscord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Fpisscord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamditis","download_url":"https://codeload.github.com/jamditis/pisscord/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Fpisscord/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29322746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T20:44:44.282Z","status":"ssl_error","status_checked_at":"2026-02-10T20:44:43.393Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beta","chat","executable","vibe-coded","video","voice","windows"],"created_at":"2026-01-13T23:42:06.057Z","updated_at":"2026-02-11T00:07:50.305Z","avatar_url":"https://github.com/jamditis.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![pisscord logo](https://i.imgur.com/cecdoaM.jpeg)\n\n# Pisscord\n\n[![GitHub release](https://img.shields.io/github/v/release/jamditis/pisscord)](https://github.com/jamditis/pisscord/releases/latest)\n[![GitHub stars](https://img.shields.io/github/stars/jamditis/pisscord)](https://github.com/jamditis/pisscord/stargazers)\n[![GitHub issues](https://img.shields.io/github/issues/jamditis/pisscord)](https://github.com/jamditis/pisscord/issues)\n[![GitHub last commit](https://img.shields.io/github/last-commit/jamditis/pisscord)](https://github.com/jamditis/pisscord/commits)\n[![Update Firebase Version](https://github.com/jamditis/pisscord/actions/workflows/update-firebase-version.yml/badge.svg)](https://github.com/jamditis/pisscord/actions/workflows/update-firebase-version.yml)\n\n**Current Version:** v2.0.0 | [Download Latest](https://github.com/jamditis/pisscord/releases/latest) | [Use in Browser](https://web.pisscord.app)\n\nA private, peer-to-peer Discord clone for trusted groups with encrypted messaging, voice/video calling, AI assistance, and real-time presence. Available as a desktop app, Android app, or directly in your web browser.\n\n## 🚀 Features\n\n### Platform Options\n- **🌐 Web Browser Version**: Use Pisscord directly in your browser - no download required\n- **💻 Desktop App**: Full-featured Windows application with system tray integration\n- **📱 Android App**: Native Android app built with Capacitor\n- **📱 Mobile Web**: Works on mobile browsers with optimized touch UI\n\n### Security \u0026 Privacy\n- **🔐 End-to-End Encryption**: AES-256-GCM encryption for all text messages\n- **🔒 P2P Encrypted Calls**: Direct peer-to-peer WebRTC connections - no relay servers\n- **🔑 Shared Passphrase**: Simple passphrase system for group encryption\n\n### Communication\n- **🎥 HD Video \u0026 Voice**: Crystal clear communication with advanced media controls\n- **🖥️ Screen Sharing**: Share your screen seamlessly without reconnecting\n- **📌 Video Spotlight**: Click any video tile to pin/maximize it during calls\n- **🗣️ Speaking Indicator**: Green ring shows who's talking in real-time\n- **👥 Mesh Networking**: True many-to-many group calls\n- **📁 File Sharing**: Drop images and files directly in chat\n- **📝 Markdown Chat**: Full markdown support in text channels\n\n### Smart Features\n- **🔔 Unread Indicators**: Red dot and bold text show channels with new messages\n- **📋 Release Notes**: One-time popup shows what's new after updates\n- **🤖 AI Assistant**: Integrated Gemini 2.5 Flash for instant help (Pissbot)\n- **👤 Profile Pictures**: Upload custom avatars synced across users\n- **📢 Dev Updates**: Live GitHub commit feed in #dev-updates\n- **🐛 Bug Reporting**: In-app issue submission to #issues\n- **🎨 Custom Profiles**: Personalize with names, statuses, and colors\n- **🎛️ Advanced Controls**: Device selection, per-user volume (0-200%), audio processing toggles\n- **🔇 Noise Suppression**: Built-in noise suppression, echo cancellation, and auto gain control\n- **📱 System Tray**: Minimize to tray - stay connected while multitasking (desktop only)\n\n## 🏗️ Architecture Highlights\n\n### Multi-Platform Support\n- **Web Browser**: Pure React/Vite build runs in any modern browser\n- **Desktop (Electron)**: Full desktop integration with native features\n- **Android (Capacitor)**: Native Android app with full feature parity\n- **Mobile Web**: Responsive design with mobile-optimized controls\n- **Shared Codebase**: Platform abstraction layer handles differences\n\n### End-to-End Encryption\n- **AES-256-GCM**: Military-grade encryption for all text messages\n- **PBKDF2 Key Derivation**: 100,000 iterations for secure key generation\n- **Shared Salt**: Stored in Firebase so users only need the passphrase\n- **Client-side Only**: Messages encrypted before leaving your device\n\n### Persistent Voice State\n- **Separated view from connection**: Chat in text channels while remaining in a voice call\n- **Persistent Voice Control Panel**: Always-visible controls in sidebar when connected\n- **Global audio management**: Audio streams across all views without interruption\n\n### Advanced Media Pipeline\n- **Device hot-swapping**: Change mic, speakers, or camera without reconnecting\n- **Volume control**: 0-200% adjustable per-user volume with individual sliders\n- **Audio processing**: Noise suppression, echo cancellation, auto gain control toggles\n- **Track replacement**: Screen sharing uses `RTCRtpSender.replaceTrack()` for seamless transitions\n\n### Desktop Integration\n- **System tray support**: Minimize to tray instead of closing\n- **Background connections**: Stay in voice calls while app is minimized\n- **Auto-update system**: Firebase-based version checking\n\n---\n\n## 🛑 READ THIS FIRST\n\nThere are four ways to use Pisscord:\n1.  **Web Browser**: Just visit [pisscord-edbca.web.app](https://pisscord-edbca.web.app) - no installation needed\n2.  **Desktop App**: Download and install the Windows application\n3.  **Android App**: Install the APK on your Android device\n4.  **Build from Source**: Compile the code yourself\n\n---\n\n## 🌐 Web Browser Quick Start\n\n1.  **Visit**: Go to [pisscord-edbca.web.app](https://pisscord-edbca.web.app)\n2.  **Sign In**: Use Google or email magic link to authenticate\n3.  **Start Chatting**: You're ready to use all features\n\nThat's it! The web version works on desktop and mobile browsers.\n\n---\n\n## 🛠️ Instructions for Builders\n\n### Prerequisites\n- **Node.js LTS** from [nodejs.org](https://nodejs.org/)\n- **Google Gemini API Key** (optional, for AI features)\n\n### Build Desktop App\n\n1.  **Clean Build Directory** (if rebuilding):\n    ```bash\n    rm -rf dist  # or manually delete the dist folder\n    ```\n\n2.  **Install Dependencies**:\n    ```bash\n    npm install\n    ```\n\n3.  **Configure AI (Optional)**:\n    Create `.env.local` in project root:\n    ```env\n    VITE_GEMINI_API_KEY=your_google_gemini_api_key_here\n    ```\n    Without this, the AI channel will show an error but all other features work.\n\n4.  **Build the Installer**:\n    ```bash\n    npm run dist\n    ```\n    *(Takes 1-2 minutes on first build)*\n\n5.  **Find the Installer**:\n    - Navigate to the `dist` folder\n    - Look for `Pisscord Setup 2.0.0.exe`\n\n### Build Web Version\n\n```bash\nnpm run build:web    # Creates web build in dist-web/\n```\n\n### Build Android App\n\n```bash\nnpm run build              # Build the web assets first\nnpx cap sync android       # Sync to Android project\nnpx cap open android       # Open in Android Studio\n```\n\nThen build/run from Android Studio.\n\n### Development Mode\n\nRun in development with hot-reload:\n```bash\nnpm run electron:dev  # Desktop app\nnpm run dev          # Web browser (localhost:5173)\n```\n\n---\n\n## 📦 Instructions for Users\n\n### Desktop Installation\n\n1.  **Download**: Get the `Pisscord Setup 2.0.0.exe` from [releases](https://github.com/jamditis/pisscord/releases/latest)\n2.  **Install**: Double-click the installer\n    - Windows may show \"Unknown Publisher\" warning\n    - Click \"More Info\" → \"Run Anyway\"\n3.  **Launch**: Pisscord will open automatically after installation\n\n### Android Installation\n\n1.  **Download**: Get the APK from a trusted source or build from source\n2.  **Enable Unknown Sources**: Settings → Security → Allow installation from unknown sources\n3.  **Install**: Tap the APK file and follow prompts\n4.  **Launch**: Open Pisscord from your app drawer\n\n### First-Time Setup\n\n1.  **Sign In**: Use Google sign-in or email magic link to authenticate\n2.  **Set Your Profile**: Click the gear icon to set your display name and avatar\n\n### Joining Voice Calls\n\n1. Click any voice channel (e.g., \"Chillin'\")\n2. Grant microphone permission when prompted\n3. You're now in the voice channel with others\n\n### Using Voice Features\n\n#### Persistent Voice Panel\nWhen connected, you'll see a green **Voice Connected** panel at the bottom of the sidebar with:\n- **Mute/Unmute**: Toggle your microphone\n- **Video On/Off**: Toggle your camera\n- **Volume**: Click volume icon on any user's video tile to adjust their volume (0-200%)\n- **Disconnect**: Red phone icon to end call\n\n#### Multitasking While Connected\n- Browse any text channel while staying connected\n- Voice controls remain accessible in sidebar\n- Audio continues playing across all views\n\n### Settings\n\nClick the **gear icon** (⚙️) in bottom left to access:\n\n#### My Profile Tab\n- Change display name\n- Set custom status message\n- Choose avatar color\n\n#### Voice \u0026 Video Tab\n- Select microphone (Input Device)\n- Select speakers (Output Device)\n- Select camera (Video Device)\n- **Audio Processing**: Toggle noise suppression, echo cancellation, auto gain control\n- *Note: Device changes require reconnecting to take effect*\n\n#### Debug Log Tab\n- View real-time connection logs\n- Troubleshoot WebRTC issues\n- See error messages and connection states\n\n### Screen Sharing\n\nWhile in a call:\n1. Click the **desktop icon** (🖥️) in the control bar\n2. Select which screen/window to share\n3. Click **Share**\n4. To stop: Click the desktop icon again OR click \"Stop Sharing\" in browser bar\n\n### AI Assistant (Pissbot)\n\n1. Click the **#pissbot** channel\n2. Type your question\n3. Pissbot will respond instantly\n\n*Pissbot is powered by Gemini 2.5 Flash. Requires builder to configure API key.*\n\n---\n\n## 🎯 Tips \u0026 Tricks\n\n- **System Tray**: Closing the window minimizes to tray - right-click tray icon to quit\n- **Copy Peer ID Fast**: Click your shortened ID (e.g., `#a3f5...`) in bottom left\n- **Volume Boost**: Click volume icon on a user's tile and set above 100% for quieter friends\n- **Reduce Background Noise**: Enable noise suppression in Settings \u003e Voice \u0026 Video\n- **Reconnect for Devices**: After changing audio/video devices, disconnect and reconnect\n- **Debug Connection Issues**: Check Debug Log in settings for error details\n\n---\n\n## 🔒 Privacy \u0026 Security\n\n### Message Encryption\n- **AES-256-GCM**: All text messages are encrypted client-side before sending\n- **PBKDF2 Key Derivation**: Passphrase converted to encryption key with 100,000 iterations\n- **Shared Passphrase**: One passphrase for the whole group - get it from an existing member\n- **Can't Read Without Passphrase**: Messages appear as `[Encrypted message]` without correct passphrase\n\n### Voice/Video Privacy\n- **P2P Connections**: All voice/video data goes directly between users via WebRTC\n- **No Relay Servers**: Calls never pass through Pisscord servers\n- **No Recording**: Calls are never recorded or stored anywhere\n- **DTLS/SRTP**: WebRTC provides built-in encryption for media streams\n\n### Data Storage\n- **Firebase**: Stores encrypted messages, peer IDs, and profile info\n- **Local Storage**: Settings, read state, and encryption passphrase stored on your device\n- **14-Day Retention**: Messages automatically deleted after 14 days\n\n---\n\n## 📄 License\n\nPrivate use for trusted groups. Not for commercial distribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamditis%2Fpisscord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamditis%2Fpisscord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamditis%2Fpisscord/lists"}