nextcloud / talk-desktop

💬💻 Nextcloud Talk Desktop Client Preview
https://nextcloud.com/talk
GNU Affero General Public License v3.0
177 stars 14 forks source link
desktop javascript nextcloud nextcloud-talk vue

🖥️ Nextcloud Talk Desktop 💬

REUSE status

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

📥 Install

All binaries are available on Nextcloud Releases.

Platform (architecture) Distribution type Download link
🐧 Linux (x64) Flatpak single file (recommended) Nextcloud.Talk-linux-x64.flatpak
🐧 Linux (x64) ZIP archive Nextcloud.Talk-linux-x64.zip
🍎 macOS (Intel + Apple Silicon) Disc Image Nextcloud.Talk-macos-universal.dmg
🪟 Windows (x64) Non-admin single-user one-click installer (recommended) Nextcloud.Talk-windows-x64.exe
🪟 Windows (x64) MSI Deployment Tool (for administrated environments) Nextcloud.Talk-windows-x64.msi

Via Package Manager

Coming soon...

🏗️ Prerequisites

👾 Drawbacks

👥 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 in Electron

npm run dev

Build binaries for production

# 🖥️ Current platform and architecture
npm run build

# 🐧 Linux (x64)
npm run build:linux

# 🍏 macOS (universal)
npm run build:mac
# 🍏 macOS (separate x64 and arm64)
npm run build:mac:x64
npm run build:mac:arm64

# 🪟 Windows (win32-x64)
npm run build:windows

Notes:

Maintenance

Generating icons

After changing source icons, to generate icons in different sizes and formats, run:

npm run generate-icons

Updating global (server) 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

📦 Packaging distributions

# 🐧 Linux (x64)
npm run package:linux

# 🍏 macOS (universal)
npm run package:mac
# 🍏 macOS (separate x64 and arm64)
npm run package:mac:arm64
npm run package:mac:x64

# 🪟 Windows (win32-x64)
npm run package:windows

✈️ 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 on each platform separately:
    npm run release:package
  10. Upload packages to the GitHub Releases on nextcloud-releases/talk-desktop
  11. Publish both releases on GitHub Releases

👥 Contribution Guidelines

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