/talk-desktop

Nextcloud Talk Desktop client

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

🖥️ Nextcloud Talk Desktop 💬

REUSE status

Nextcloud Talk Desktop client based on Nextcloud Talk web application bundling ✨

📥 Download Binaries

🏗️ Prerequisites

👾 Drawbacks

  • Currently not supported:
    • Search (#30)
    • Untrusted certificate on Linux (#23)
    • Dark/light theme (#17)
  • Works with limitations:
    • File Viewer — only images and videos

👥 Multi-account

Full multi-account currently is not currently supported.

However, using portable zip distribution, you can have several Nextcloud Talk instances run simultaneously. Just rename the executable from default Nextcloud Talk to a custom name. For example:

/path/to/apps/
├── home-apps/
│   └── Nextcloud Talk/
│       ├── ...
│       ├── Nextcloud Talk (Home).exe
│       └── ...
└── work-apps/
    └── Nextcloud Talk/
        ├── ...
        ├── Nextcloud Talk (Work).exe
        └── ...

🧑‍💻 Development Setup

Initial setup

# Install dependencies
npm ci

# Make .env file
cp .env.example .env

# Don't forget to configure ENV variables! 

Nextcloud Talk Desktop requires Nextcloud Talk source code.

No nextcloud/spreed is cloned?

Clone nextcloud/spreed and install dependencies:

# Clone in the repository root
git clone https://github.com/nextcloud/spreed

# Install dependencies
cd ./spreed/
npm ci

# Don't forget to return back
cd ../

nextcloud/spreed is already cloned?

Set TALK_PATH ENV variable or edit .env file:

TALK_PATH=/path/to/nextcloud-dev/apps/spreed/

Development

# Start development server
npm start

📦 Packaging

#########################
# Package to executable #
#########################

# 🐧 Linux
npm run package:linux

# 🍏 Mac (Darwin)
npm run package:mac

# 🪟 Windows (win32)
npm run package:windows

#  All
npm run package:all

#########################
# Make ZIP distribution #
#########################

# 🐧 Linux
npm run make:linux

# 🍏 Mac (Darwin)
# Note: doesn't work on Windows, use WSL
npm run make:mac

# 🪟 Windows (win32)
npm run make:windows

#  All
npm run make:all

✈️ Release

  1. Create release/vX.Y.Z branch.
  2. Update CHANGELOG.md.
    1. If a built-in Talk version is to be changed - add a note:
      ### Build-in Talk update
      
      Built-in Talk in binaries is updated to $(VERSION) Talk changelog: https://github.com/nextcloud/spreed/blob/master/CHANGELOG.md
  3. Update package.json:
    • For minor update:
      npm version minor
    • For patch update:
      npm version patch
  4. Create a release PR.
  5. Merge the release PR.
  6. Create and push a tag:
    git tag -a v$(version) -m "Tagging the $(version) release."
    git push origin v$(version)
    git push releases v$(version)
  7. Draft a new release on GitHub in nextcloud-releases/talk-desktop
    1. Add release title: v$(version) - Talk v$(talkVersion), e.g. v0.10.0 - Talk v17.1.0-rc.1
    2. Choose a tag
    3. Add the respective CHANGELOG.md section
    4. Use the Generate release notes button and wrap put the result into
      ## What's Changed
      
      <details>
        <!-- Generated content -->
      </details>
  8. Draft a new release on GitHub in nextcloud/talk-desktop
    1. Copy everything from the previous step
    2. Add:
      > 📥 Download Binaries on https://github.com/nextcloud-releases/talk-desktop/releases/tag/v$(version)
  9. Package release, specify version and platforms:
    npm run release:package -- --version v$(talkVersion) --windows --linux --mac
  10. Upload packages to the GitHub Releases on nextcloud-releases/talk-desktop
  11. Publish both releases on GitHub Releases

🎨 Updating global styles

Talk frontend depends on the global Nextcloud server styles. To manually get them run:

# node ./scripts/fetch-server-styles.mjs <VERSION>, for example
node ./scripts/fetch-server-styles.mjs stable29

👥 Contribution Guidelines

See: https://github.com/nextcloud/spreed#contribution-guidelines