Giter VIP home page Giter VIP logo

talk-desktop's Introduction

๐Ÿ–ฅ๏ธ Nextcloud Talk Desktop ๐Ÿ’ฌ

REUSE status

Nextcloud Talk Desktop client based on Nextcloud Talk web application bundling โœจ

๐Ÿ“ฅ Download Binaries

๐Ÿ—๏ธ Prerequisites

๐Ÿ‘พ Drawbacks

  • Currently not supported:
    • Setting User Status (#26)
    • 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

๐Ÿ‘ฅ Contribution Guidelines

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

talk-desktop's People

Contributors

antreesy avatar dependabot[bot] avatar dijeth avatar marcoambrosini avatar nextcloud-bot avatar nextcloud-command avatar nickvergessen avatar p-try avatar rakekniven avatar shgkme avatar skjnldsv avatar st3iny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

talk-desktop's Issues

Desktop settings

  • Add modal with desktop settings
    • Notifications:
      • Play sound
      • Show notifications
    • Stay in tray
    • Run on startup
    • Theme: use system / use profile settings
  • Store settings in AppData

Accounts Window Localization

Currently, localization works only in the Talk app, but doesn't work on the Accounts window.

  • Detect user OS locale before login
  • ? Reuse localization from Nextcloud login web page ?
  • Add l10n for the Accounts window
  • Add l10n to Login WebView (in headers)

[l10n/i18n] Set up translations with transifex

E.g. the strings from

role: 'help',
submenu: [
{
label: 'About',
click: (event, focusedWindow) => {
createHelpWindow(focusedWindow)
},
},
createLinkMenuItem('Homepage', packageJson.repository.url),
createLinkMenuItem('Report a bug', packageJson.bugs),
createLinkMenuItem('Source Code', packageJson.repository.url),
createLinkMenuItem(`License ${packageJson.license}`, 'https://www.gnu.org/licenses/agpl-3.0.txt'),
],

Should be translated

Incorrect work after long stay

Steps to reproduce

  1. Open a chat
  2. Close a laptop, go to sleep mode
  3. Wait ~10 hours
  4. Open a laptop
  5. Try to use the application

Expected behavior

It works as yesterday

Actual behavior

  • Infinity connecting to a new chat
  • Selected chat in the chat list and currently opened chat (incl. chat history) are not equal
  • New windows are opened themself

Note

Refreshing the page helps

May be related

Sometimes I see these errors on the Talk web after a long stay. It might be related.

image

Sign releases

On MacOS you first need to accept opening a untrusted developer in the MacOS settings, then you need to accept it after opening the app:
image

For non-preview versions we should properly sign the releases.

Screensharing

Screensharing in Electron requires custom share dialog

Meta issue: Fix Nextcloud apps integrations

Add talk integration with other Nextcloud apps:

  • Files: Open received files
    • In the beginning - open all files in the default Web-Browser or Web View
    • Open in the default Web-Browser or Web View
      • Documents (Office)
      • Contacts
      • Other files
    • #255
      • Images
      • Videos
    • #256
      • PDFs
      • MDs (texts)
  • Files: Send files from Nextcloud (related: nextcloud-libraries/nextcloud-dialogs#1)
  • User profile - open in the default Web-Browser
  • #31
    • โš ๏ธ Add empty no-op icon quickly so it does not block screencasts
    • Implement notifications afterwards
  • #26
    • โš ๏ธ Add empty no-op icon quickly so it does not block screencasts
    • Implement status afterwards
  • #30
    • โš ๏ธ Add empty no-op icon quickly so it does not block screencasts
    • Implement search afterwards

Add close button on Welcome Window

Currently there is no way to close Welcome window. There should be a close button

  1. Something may go wrong - loading would be infinity
  2. A user may like to close the application before loading finishes

App doesn't run on Arch Linux, with KDE and Wayland

How to use GitHub

  • Please use the ๐Ÿ‘ reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce

  1. Open the app

Expected behaviour

The app opens

Actual behaviour

Nothing happens

Desktop client

Talk Desktop client version: v0.2.1

Operating system: Linux

Operating system version: Arch Linux with KDE and Wayland

Server

n/a

Logs

./Nextcloud\ Talk 
Authorization required, but no authorization protocol specified

[234173:0322/120520.630071:ERROR:ozone_platform_x11.cc(240)] Missing X server or $DISPLAY
[234173:0322/120520.630113:ERROR:env.cc(255)] The platform failed to initialize.  Exiting.
The futex facility returned an unexpected error code.
[1]    234173 IOT instruction (core dumped)  ./Nextcloud\ Talk

Client log

n/a

cc @tobiasKaminsky

Add User Menu

Add User Menu open on the user avatar (same as Web) with items:

  • Profile - link to a web-page
  • User Status (for #26)
  • Talk Web - link
  • About - small modal with versions and links
  • Log out

Talk Desktop Basic Features

Make basic Talk Web features working on Talk Desktop.

  • Fix WASM modules loading for "Blur background"
  • Add a replacement for OC.dialogs.confirm with a simple native confirm dialog
  • Fix file Uploading / Receiving (minimal, from File Browse dialog/clipboard)
  • Localization
    • Fix using Talk Web's localization
    • All localization loading according to user preferences
  • Add initialization with Capabilities API and User Metadata from API instead of prototype stubs
    • Load Capabilities
    • Load User Metadata
    • Load versions
    • Build initial state
    • Move all loadings to application initialization and cache? (How to invalidate?)
  • Fix File Templates loading
  • #21
  • #17

After all:

  • Refactoring global app state management
  • [ ] Refactoring window management

Talk Web upgrade for Talk Desktop compability

Add a minimal amount of changes in Talk Web to make it compatible with the Talk Desktop build.

  • nextcloud/spreed#9050
    • Add IS_TALK_DESKTOP constant
    • Add Electron to supported browsers / Disable browser check on Desktop
    • Separate Webpack config to common and web
  • nextcloud/spreed#9051
    • Fix absolute links for conversations
  • nextcloud/spreed#9054
    • Fix the current conversation removing redirect
  • DRAFTS
    • Do not reload a page on the session error handling
    • Do not reload a page on the signaling error handling
  • Temporary disable unsupported features
    • Disable avatar contacts menu until #34 is resolved
    • Disable screensharing until #11 is resolved
  • nextcloud/spreed#8715

Fix open chat in a new window

  • Opening chat in a new window should open the chat, not the root page
  • New window should have the same window settings as the main window (hide menu, icon, title, size)

Meta issue: Security improvement

  • Remove SameSite=Lax -> SameSite=None cookies patching (fixed in: #22)
  • #18
  • Follow Electron / Best Practices / Security
    • 1. Only load secure content
    • 2. Do not enable Node.js integration for remote content
    • 3. Enable Context Isolation
    • 4. Enable process sandboxing
    • 5. Handle session permission requests from remote content
    • 6. Do not disable webSecurity (#22)
    • 7. Define a Content Security Policy
    • 8. Do not enable allowRunningInsecureContent
    • 9. Do not enable experimental features
    • 10. Do not use enableBlinkFeatures
    • 11. Do not use allowpopups for WebViews
    • 12. Verify WebView options before creation
    • 13. Disable or limit navigation
    • 14. Disable or limit creation of new windows
    • 15. Do not use shell.openExternal with untrusted content
    • 16. Use a current version of Electron
    • 17. Validate the sender of all IPC messages
    • 18. Avoid usage of the file:// protocol and prefer usage of custom protocols
    • 19. Check which fuses you can change

Accounts (Login) window

The login window works well for the prototype, but it is not release-ready.

  • Show success/error messages
  • Close Accounts Window only when App is ready
  • Check that the server URL is correct before opening the Login Web-View
  • Fix login web-view size (currently it is a bit large (why?) and cut)
  • Handle login view errors
  • Request userid from OCS API after login. (User's login from credentials may not be equal to userid)
  • Add loading indicator on the Login Web-View
  • #20

Meta issue: UX improvement

Talk Web works only on webpage and online. A desktop app may be opened offline and stay open for a long time.

  • Work offline - show offline badge (and reload on connect?)
  • Stop reloading the page on errors
  • Fix disconnect on long stay
  • Handle capabilities updates

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.