Giter VIP home page Giter VIP logo

commet's Introduction

Commet

Your space to connect

Integration Test Matrix Mastodon Twitter

Commet is a client for Matrix focused on providing a feature rich experience while maintaining a simple interface. The goal is to build a secure, privacy respecting app without compromising on the features you have come to expect from a modern chat client.

Features

  • Supports Windows, Linux, and Android (MacOS and iOS planned in future)
  • End to End Ecryption
  • Custom Emoji + Stickers
  • GIF Search
  • Multiple Accounts
  • Spaces
  • Emoji verification & cross signing

Translation

Help translate Commet to your language on Weblate

Translation status

Development

Commet is built using Flutter, currently v3.13.5.

This repo currently has a monorepo structure, containing two flutter projects: Commet and Tiamat. Commet is the main client, and Tiamat is a sort of wrapper around Material with some extra goodies, which is used to maintain a consistent style across the app. Tiamat may eventually be moved to its own repo, but for now it is maintained here for ease of development.

Building

1. Install Flutter

2. Install Libraries

Commet requires some additional libraries to be built

sudo apt-get install -y ninja-build libgtk-3-dev libolm3 libmpv-dev mpv ffmpeg libmimalloc-dev

3. Fetch Dependencies

You will need to change directory in to commet, then fetch dependencies

cd commet
flutter pub get

4. Code Generation

We make use of procedural code generation in some parts of commet. As a rule, generated code will not be checked in to git, and will need to be generated before building.

To run code generation, run the script within the commet directory: dart run scripts/codegen.dart

5. Building

When building Commet, there are some additional command line arguments that must be used to configure the build.

Required

Argument Valid Values Description
PLATFORM 'desktop', 'mobile', 'linux', 'windows', 'macos', 'android', 'ios', 'web' Defines which platform to build for
BUILD_MODE 'release', 'debug' When building with 'debug' flag, additional debug information will be shown

Optional

Argument Valid Values Description
GIT_HASH * Supply the current git hash when building to show in info screen
VERSION_TAG * Supply the current build version, to display app version
BUILD_DETAIL * Can provide additional detail about the current build, for example if it was being built for Flatpak or Snap

Example:

cd commet
flutter run --dart-define BUILD_MODE=debug --dart-define PLATFORM=linux

commet's People

Contributors

airyzz avatar expectocode avatar gedeondoescode avatar k0-rr avatar meenzen avatar nathanbnm avatar weblate avatar zozosticot 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

Watchers

 avatar  avatar

commet's Issues

Doesn't say what platforms client is for

Hi, friendly suggestion from fellow Matrix client dev: your GitHub repo and your main Web site don't tell potential users what platforms the client runs on (i.e. phone/tablet/PC, Windows/Linux/Android/Mac/iOS/Web/etc).

"Big Emoji" not working

Describe the bug
After changing emoji asset to use a font Big Emoji are only working for custom emoji

Expected behavior
Messages containing only emoji and <= 10 emoji should display the emoji as larger

Missing feedback for unverified sessions

Describe the bug
There's no feedback letting the user know that the encrypted messages cannot be decrypted.

To Reproduce
Steps to reproduce the behavior:

  1. Sign in for the first time
  2. Look in unverified room
  3. No messages appear (no feedback suggesting an unverified session)

Expected behavior
An error stating that the user has not verified their session to decrypt the message

Device Information

Device
Platform: linux
Version: v0.1.0
Git Hash: 9f69a41ff2a5a2fb9d7cd9036197c2599c6cf9ca
Detail: linux-x64

System Info
Name: Pop!_OS
Version: 22.04 LTS

HTML Parser missing supported tags

Describe the bug
When a message contains strikethrough styling, the strike through is not visible

To Reproduce
Steps to reproduce the behavior:

  1. Send a message with strike through
  2. Observe ๐Ÿ˜›

Expected behavior
Should be able to see the strikethrough

Streams are being listened to more than once

It seems that the onSync stream is listened to more and more as the application runs. This is happening because Matrix client is creating New instances of MatrixRoom on every sync so that they can be compared to the existing list of rooms, but when these are being created they are subscribing to the stream.

Should change from 'Union' to use a dictionary of String -> Room so we can look up rooms just on their ID

Rework Twemoji Asset Loading

At the moment, there are some issues with storing twemoji assets as single file assets.

  1. Extracting the app from a zip file requires that thousands of small files are written to disk, which isnt great for performance
  2. On web, each asset is loaded individually from the server, resulting in really bad performance, especially when scrolling the emoji picker. Just scrolling the emoji picker makes thousands of requests to the host, which will cause massive issues

A few options to work around this:

  1. Embed the twemoji assets in the binary itself. This could be achieved by hard coding byte arrays so the data is just compiled in to the app. This would increase binary size by about 3mb
  2. Use a color font like this one

Join button is too large in Space

Describe the bug
The buttons on the space screen are far too large and overlap the room description

Screenshots
image

Device Information

Device
Platform: windows
Version: v0.1.0
Git Hash: 9f69a41ff2a5a2fb9d7cd9036197c2599c6cf9ca
Detail: default

System Info

Timeline events not being inserted properly

I/flutter (15237): [Matrix] Handle event update failed - RangeError (index): Invalid value: Not in inclusive range 0..32: 33
I/flutter (15237): #0      _GrowableList.[] (dart:core-patch/growable_array.dart:264)
I/flutter (15237): #1      MatrixTimeline.initTimeline.<anonymous closure> (package:commet/client/matrix/matrix_timeline.dart:38)
I/flutter (15237): #2      Timeline.addAggregatedEvent (package:matrix/src/timeline.dart:423)
I/flutter (15237): #3      Timeline._handleEventUpdate (package:matrix/src/timeline.dart:507)
I/flutter (15237): #4      _rootRunUnary (dart:async/zone.dart:1414)
I/flutter (15237): #5      _RootZone.runUnaryGuarded (dart:async/zone.dart:1596)
I/flutter (15237): #6      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339)
I/flutter (15237): #7      _DelayedData.perform (dart:async/stream_impl.dart:515)
I/flutter (15237): #8      _PendingEvents.handleNext (dart:async/stream_impl.dart:620)
I/flutter (15237): #9      _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:591)
I/flutter (15237): #10     _rootRun (dart:async/zone.dart:1398)
I/flutter (15237): #11     _CustomZone.run (dart:async/zone.dart:1300)
I/flutter (15237): #12     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:12

Placeholder Avatar Improvements

Fix places where placeholder avatar has no background color (chat timeline)

Make user display name fallback to user part of matrix ID when no display name exists or has not loaded

Missing Country flag emojis

Describe the bug
country flag emojis don't show up on Windows

Expected behavior
Country flag emojis should generally show up in the picker.

Screenshots
image

Device Information

Device
Platform: windows
Version: v0.1.0
Git Hash: 9f69a41ff2a5a2fb9d7cd9036197c2599c6cf9ca
Detail: default

System Info

Timeline UX

kind of a megathread, for 'perfect' timeline we need:

  • Optional smooth scrolling
  • Only animate new items if scrolled to bottom
  • Adjust scroll position when new items added
  • Optimize how many messages are being drawn

Measure performance impact of emoji loading

App start times seem significantly slower now that we are loading emoji at startup, need to measure how long this takes and potentially fix it by precomputing the lookup and running codegen to have this data baked at compile time

Using system emoji on windows

Custom emoji font is being temporarily removed from the windows build, as windows doesnt seem to support that font format.

Replied messages showing wrong user color

When replying to a message, the bit of text which shows the replied message takes the color of the sender of the new message, not the color of the sender of the original message

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.