Code Monkey home page Code Monkey logo

nio's Issues

Push beta versions from GitHub action

Running the fastlane action on pushes with a beta tag. Probably something along the lines of the following. This will also need all necessary authentication information in the repo secrets and might be interesting to setup with correct code-signing config.

name: Release Beta

on:
  push:
    branches: master
    tags: builds/beta/*

jobs:
  build:
    runs-on: macos-latest
    steps:
    - name: fastlane
      uses: maierj/[email protected]
      with:
        lane: beta

GitHub docs on filtering branches/tags in action events: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestbranchestags

GitHub action for fastlane: https://github.com/maierj/fastlane-action

Un-/read handling

Currently a room is being completely marked as read on open. Is this what other messengers do? Probably.

What's still necessary:

  • Show unread indicator, like a red line indicating which messages are new.
    • When should this be dismissed?
    • And what should happen if this is out of screen? Should a conversation open to the last read point or should there be a jump up button like in Riot?
  • Mark messages as read when they come in when a room is currently open.

Re-license under MPL-2

@regexident recently brought up that the Apache License 2.0 might be problematic regarding usage of Nio by others and recommended the MPL-2 instead, being a non-viral GPL. Forks of Nio would have to make their changes available whilst keeping ownership of everything else if I understood it correctly.

Would this change be ok with all current contributors? @regexident @aaronraimist @sn3ek?

Settings

What things should be included?

Matrix

  • Logout Button
  • PW change
  • App-wide notification settings (aside from room and system settings)
  • Device List
  • Crypto information and key export/backup

App specific stuff

  • hide unwanted events (redactions, room.member changes, ...)
  • Accent color (see #1)
  • App Icon (see #38)
  • App language possibly (aside from having this possible in the system settings)
  • About the app information
  • Tip jar for supporting the project

Anything else?

App Icon setting

Two versions of the icon for each accent color option. One with colored background and one inverted with a white background.

And definitely a bunch of fun ones like GitHub, Apollo and Working Copy ๐Ÿ˜

Screenshot 2019-12-10 at 22 15 02

Screenshot 2019-12-10 at 22 14 30

Show sync state

On app start the login view is shown during the login process. After this the sync process is not done though, which should be indicated by some kind of UI. Ditto has a very cool banner for this, maybe something along those lines? Alternatively just an activity indicator somewhere.

Ideally, the entire "restoring session" full screen view should not be necessary. The data is already there, it's just blocking while the mx session is authenticating, which is imho totally part one of the sync step that follows anyway. A chat app obviously shouldn't have a fullscreen loading view that takes seconds to dismiss before showing you your messages. Also, it fails if there's no internet connection, which is even worse.

Keyboard shortcuts

Great for iPad and simulator usage.

  • โ†‘ Edit last message
  • โŒ˜โ‡ง\ Open reaction picker for latest message (like Slack)
  • โŒ˜k Open quickswitcher

Sent messages don't immediately appear in history

On sending a message the message text field is cleared, but the message isn't shown in the history until it's fully sent. This can sometimes take a few seconds, which is awkward. Riot shows the message with an alternate text color in this case.

This uses the local echo events that are passed to the Matrix SDK APIs.

ScrollView weirdness

Just to track all the ways the current reversed scrollview used for conversations is weird ๐Ÿ™ˆ

  • Scroll indicator is on the left.
  • Scroll indicator is on the right in landscape (if the keyboard is open on iPad).
  • Tap on status bar scrolls all the way down.
  • Navigation bar separator is not shown on iPad if scroll view is scrolled all the way down (instead of up which would be correct)
  • VoiceOver reads the messages in reverse order.
  • Dismissing the room view with a keyboard shown resets the scroll offset to behind the keyboard.

Distinct foreign message colors

Add a setting that, if enabled, causes foreign messages in groups to have separate background (or just author name label) colors based on their sender to be easily distinguishable from another. Basically what Signal for Android does.

signal android screenshot

Colors should obviously be deterministically based on sender MXIDs. I don't think there's a need for anybody to be able to influence how they appear on another device, which would also make this much more complicated.

cc @sn3ek

E2EE

  • Decryption of existing events
  • Sending of encrypted messages
  • Persistence of encryption keys
  • Support verification of encryption key sharing from other clients

Random events dismiss RoomView

Some events cause Nio to dismiss the RoomView and go back to the RecentRoomsView. It has happened with new sent messages, new received messages and also new events in other rooms. Even with typing events!

I've not been able to reproduce this 100% with anything, but in tests it's definitely occurred more often on first events from a specific sender in a row.

Typing feeling is off

Not quite sure what's happening here, but typing in the message composer feels choppy somehow.

Export Compliance

Icky topic. Nio (obviously) uses encryption. It would probably make sense to copy whatever Riot is doing here, I think I've seen some info on that floating around somewhere.

Also make sure to add the necessary information directly to the app's metadata to make ASC happy and require less manual steps.

Sync draft messages

Feature for the far future when the macOS client exists. Draft messages should be synced transparently over the user's iCloud account.

Fastlane can't push beta to Testflight

Currently fastlane only uploads the beta to ASC, but I haven't automated any further steps, primarily because of the export compliance step in ASC (see #56). Ideally fastlane would upload the build, have it be available for internal testing, push it through review if necessary (and if not) make it directly available for public beta testing.

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.