diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml new file mode 100644 index 000000000..62d2b89cd --- /dev/null +++ b/.github/workflows/cla.yml @@ -0,0 +1,36 @@ +name: "CLA Assistant" +on: + issue_comment: + types: [created] + pull_request: + types: [opened, closed, synchronize] + +jobs: + CLAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request' + # Beta Release + uses: cla-assistant/github-action@v2.1.3-beta + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # the below token should have repo scope and must be manually added by you in the repository's secret + PERSONAL_ACCESS_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }} + with: + path-to-signatures: 'signatures/v1.1/cla.json' + path-to-document: 'https://github.com/simplex-chat/cla/blob/master/CLA.md' + # branch should not be protected + remote-organization-name: simplex-chat + remote-repository-name: cla + branch: 'master' + # allowlist: user1,bot* + + #below are the optional inputs - If the optional inputs are not given, then default values will be taken + #create-file-commit-message: 'For example: Creating file for storing CLA Signatures' + #signed-commit-message: 'For example: $contributorName has signed the CLA in #$pullRequestNo' + #custom-notsigned-prcomment: 'pull request comment with Introductory message to ask new contributors to sign' + #custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA' + #custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.' + #lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after merging (default - true) + #use-dco-flag: true - If you are using DCO instead of CLA \ No newline at end of file diff --git a/README.md b/README.md index 3cce18d85..8f2a82d55 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,9 @@ See [simplex.chat](https://simplex.chat) website for chat demo and the explanati - [Terminal chat features](#terminal-chat-features) - [Installation](#installation) - [Download chat client](#download-chat-client) + - [Linux and MacOS](#linux-and-macos) + - [Troubleshooting on Unix](#troubleshooting-on-unix) + - [Windows](#windows) - [Build from source](#build-from-source) - [Using Docker](#using-docker) - [Using Haskell stack](#using-haskell-stack) @@ -83,10 +86,34 @@ chmod +x mv ~/.local/bin/simplex-chat ``` -(or any other preferred location on PATH). +(or any other preferred location on `PATH`). On MacOS you also need to [allow Gatekeeper to run it](https://support.apple.com/en-us/HT202491). +##### Troubleshooting on Unix + +If you get `simplex-chat: command not found` when executing the downloaded binary, you need to add the directory containing it to the [`PATH` variable](https://man7.org/linux/man-pages/man7/environ.7.html) (find "PATH" in page). To modify `PATH` for future sessions, put `PATH="$PATH:/path/to/dir"` in `~/.profile`, or in `~/.bash_profile` if that's what you have. See [this answer](https://unix.stackexchange.com/a/26059) for the detailed explanation on the appropriate place to define environment variables for `bash` and other shells. + +For example, if you followed the previous instructions, open `~/.profile` for editing: + +```sh +vi ~/.profile +``` + +And add the following line to the end: + +```sh +PATH="$PATH:$HOME/.local/bin" +``` + +Note that this will not automatically update your `PATH` for the remainder of the session. To do this, you should run: + +```sh +source ~/.profile +``` + +Or restart your terminal to start a new session. + #### Windows ```sh @@ -105,7 +132,7 @@ $ cd simplex-chat $ DOCKER_BUILDKIT=1 docker build --output ~/.local/bin . ``` -> **Please note:** If you encounter ``version `GLIBC_2.28' not found`` error, rebuild it with `haskell:8.8.4-stretch` base image (change it in your local [Dockerfile](Dockerfile)). +> **Please note:** If you encounter ``version `GLIBC_2.28' not found`` error, rebuild it with `haskell:8.10.4-stretch` base image (change it in your local [Dockerfile](Dockerfile)). #### Using Haskell stack @@ -127,7 +154,7 @@ $ stack install ### Running the chat client -To start the chat client, run `simplex-chat` from the terminal. +To start the chat client, run `simplex-chat` from the terminal. If you get `simplex-chat: command not found`, see [Troubleshooting on Unix](#troubleshooting-on-unix). By default, app data directory is created in the home directory (`~/.simplex`, or `%APPDATA%/simplex` on Windows), and two SQLite database files `simplex.chat.db` and `simplex.agent.db` are initialized in it. diff --git a/haskell/apps/simplex-chat/Main.hs b/haskell/apps/simplex-chat/Main.hs index e11f94317..cd7f353bb 100644 --- a/haskell/apps/simplex-chat/Main.hs +++ b/haskell/apps/simplex-chat/Main.hs @@ -6,6 +6,7 @@ module Main where import Simplex.Chat +import Simplex.Chat.Controller (versionNumber) import Simplex.Chat.Options import System.Directory (getAppUserDataDirectory) import System.Terminal (withTerminal) @@ -20,7 +21,7 @@ welcomeGetOpts :: IO ChatOpts welcomeGetOpts = do appDir <- getAppUserDataDirectory "simplex" opts@ChatOpts {dbFile} <- getChatOpts appDir - putStrLn "SimpleX chat prototype v0.4.0" + putStrLn $ "SimpleX Chat v" ++ versionNumber putStrLn $ "db: " <> dbFile <> ".chat.db, " <> dbFile <> ".agent.db" putStrLn "type \"/help\" or \"/h\" for usage info" pure opts diff --git a/haskell/src/Simplex/Chat.hs b/haskell/src/Simplex/Chat.hs index 5427f7af9..cfd8b87a4 100644 --- a/haskell/src/Simplex/Chat.hs +++ b/haskell/src/Simplex/Chat.hs @@ -89,6 +89,7 @@ data ChatCommand | UpdateProfile Profile | ShowProfile | QuitChat + | ShowVersion deriving (Show) defaultChatConfig :: ChatConfig @@ -317,6 +318,7 @@ processChatCommand user@User {userId, profile} = \case showUserProfileUpdated user user' ShowProfile -> showUserProfile profile QuitChat -> liftIO exitSuccess + ShowVersion -> printToView clientVersionInfo where contactMember :: Contact -> [GroupMember] -> Maybe GroupMember contactMember Contact {contactId} = @@ -1110,6 +1112,7 @@ chatCommandP = <|> ("/profile " <|> "/p ") *> (UpdateProfile <$> userProfile) <|> ("/profile" <|> "/p") $> ShowProfile <|> ("/quit" <|> "/q") $> QuitChat + <|> ("/version" <|> "/v") $> ShowVersion where displayName = safeDecodeUtf8 <$> (B.cons <$> A.satisfy refChar <*> A.takeTill (== ' ')) refChar c = c > ' ' && c /= '#' && c /= '@' diff --git a/haskell/src/Simplex/Chat/Controller.hs b/haskell/src/Simplex/Chat/Controller.hs index ae6dfd5e7..9fff4b040 100644 --- a/haskell/src/Simplex/Chat/Controller.hs +++ b/haskell/src/Simplex/Chat/Controller.hs @@ -25,6 +25,9 @@ import Simplex.Messaging.Agent.Store.SQLite (SQLiteStore) import System.IO (Handle) import UnliftIO.STM +versionNumber :: String +versionNumber = "0.4.2" + data ChatConfig = ChatConfig { agentConfig :: AgentConfig, dbPoolSize :: Int, diff --git a/haskell/src/Simplex/Chat/Help.hs b/haskell/src/Simplex/Chat/Help.hs index 56f69a723..8dd30ca0b 100644 --- a/haskell/src/Simplex/Chat/Help.hs +++ b/haskell/src/Simplex/Chat/Help.hs @@ -30,7 +30,7 @@ chatHelpInfo :: [StyledString] chatHelpInfo = map styleMarkdown - [ highlight "Using SimpleX chat prototype", + [ highlight "Using SimpleX Chat", "Follow these steps to set up a connection:", "", green "Step 1: " <> highlight "/connect" <> " - Alice adds a contact.", @@ -58,6 +58,7 @@ chatHelpInfo = indent <> highlight "/profile []" <> " - update user profile", indent <> highlight "/delete " <> " - delete contact and all messages with them", indent <> highlight "/markdown " <> " - show supported markdown syntax", + indent <> highlight "/version " <> " - show SimpleX Chat version", indent <> highlight "/quit " <> " - quit chat", "", "The commands may be abbreviated to a single letter: " <> listHighlight ["/c", "/f", "/g", "/p", "/h"] <> ", etc." diff --git a/haskell/src/Simplex/Chat/View.hs b/haskell/src/Simplex/Chat/View.hs index b2108eb79..b7f951029 100644 --- a/haskell/src/Simplex/Chat/View.hs +++ b/haskell/src/Simplex/Chat/View.hs @@ -62,6 +62,7 @@ module Simplex.Chat.View showMessageError, safeDecodeUtf8, msgPlain, + clientVersionInfo, ) where @@ -685,3 +686,6 @@ highlight' = highlight styleTime :: String -> StyledString styleTime = Styled [SetColor Foreground Vivid Black] + +clientVersionInfo :: [StyledString] +clientVersionInfo = [plain $ "SimpleX Chat v" <> versionNumber]