A Flutter based Cwtch UI
Go to file
Guido Drehsen 7be6a70f55 Merge pull request 'trunk' (#2) from cwtch.im/cwtch-ui:trunk into trunk
Reviewed-on: #2
2023-04-16 14:29:13 +00:00
android Status + Profile Attributes 2023-04-05 04:19:11 +00:00
assets Fix issue with linkifying some URLs, add initial support for Blodeuwedd (not compiled in) 2023-03-27 12:04:55 -07:00
fastlane/metadata/android/en-US Initial Commit of Fastlane + Debug Accessibiltiy Views 2022-08-11 13:17:38 -07:00
integration_test Add Profile Management Tests to Pipeline 2023-02-17 00:06:12 +00:00
ios Fresh Respository Commit - Cwtch Beta 2021-06-24 16:10:45 -07:00
lib Initial Tails Support / Center align profile attributes / biotext 2023-04-05 04:19:11 +00:00
linux stream line linux install scripts and make reusable templates; update drone: sha512, android pkg name, use commit date; dpeloy to same dir 2023-04-09 17:35:43 +00:00
macos Upgrade to Flutter 3.7.1 2023-02-06 12:43:05 -08:00
test Update Goldens 2023-04-05 04:58:54 +00:00
test_driver Update UI Tests to Run with Flutter 3 / In Drone (#621) 2023-02-01 22:48:36 +00:00
windows docs on making a self signed cert 2022-06-23 16:10:05 -07:00
.drone.yml fix mac deploy version, make shas .txt 2023-04-10 00:50:53 -05:00
.gitignore Autobindings, Remove Server code from Android, Debug mode Fixes 2023-03-02 13:32:51 -08:00
.metadata Fresh Respository Commit - Cwtch Beta 2021-06-24 16:10:45 -07:00
ARCH.md Fresh Respository Commit - Cwtch Beta 2021-06-24 16:10:45 -07:00
LIBCWTCH-GO.version Upgrade Cwtch 2023-04-05 20:01:14 -07:00
LICENSE mit license 2021-06-25 15:13:50 -07:00
README.md add support for diff arch macos libcwtch-go 2022-06-22 12:05:46 -07:00
SPEC.md Fresh Respository Commit - Cwtch Beta 2021-06-24 16:10:45 -07:00
build-release.sh macos: handle shutdown & first release run copy dev profile if none 2021-09-10 18:12:30 -07:00
build.yaml add gherkin tests (#353) 2022-02-05 00:37:25 +00:00
cwtch-android-lifecycle.png Fresh Respository Commit - Cwtch Beta 2021-06-24 16:10:45 -07:00
cwtch.png Android Icons + Debug Fixes 2021-07-15 13:07:11 -07:00
fetch-libcwtch-go-macos.sh New Autobindings Version + Korean 2023-03-14 14:46:57 -07:00
fetch-libcwtch-go.ps1 New Autobindings Version + Korean 2023-03-14 14:46:57 -07:00
fetch-libcwtch-go.sh New Autobindings Version + Korean 2023-03-14 14:46:57 -07:00
fetch-tor-macos.sh bump tor versions, move linux to harvested tor 2022-09-09 15:20:09 -07:00
fetch-tor-win.ps1 bump tor versions, move linux to harvested tor 2022-09-09 15:20:09 -07:00
fetch-tor.sh bump tor versions, move linux to harvested tor 2022-09-09 15:20:09 -07:00
index2.js add gherkin tests (#353) 2022-02-05 00:37:25 +00:00
l10n.yaml Fresh Respository Commit - Cwtch Beta 2021-06-24 16:10:45 -07:00
pubspec.lock Add Tests for 02_global_settings to pipeline. Update bindings 2023-02-08 15:05:36 -08:00
pubspec.yaml Bump Version 2023-03-27 15:28:40 -07:00
quality.sh add quality.sh and run 2021-07-14 15:07:29 -07:00
run-tests-headless.sh Update UI Tests to Run with Flutter 3 / In Drone (#621) 2023-02-01 22:48:36 +00:00
run-tests.sh Add Tests for 02_global_settings to pipeline. Update bindings 2023-02-08 15:05:36 -08:00
update-icons.sh Android Icons + Debug Fixes 2021-07-15 13:07:11 -07:00

README.md

Cwtch UI

A Flutter based Cwtch UI.

This README covers build instructions, for information on Cwtch itself please go to https://cwtch.im

Installing

Running

Cwtch processes the following environment variables:

  • CWTCH_HOME= overrides the default storage path of ~/.cwtch with what ever you choose
  • LOG_FILE= will reroute all of libcwtch-go's logging to the specified file instead of the console
  • LOG_LEVEL=debug will set the log level to debug instead of info

Building

Getting Started

First you will need a valid flutter sdk installation. You will probably want to disable Analytics on the Flutter Tool: flutter config --no-analytics

This project uses the flutter stable channel

Once flutter is set up, run flutter pub get from this project folder to fetch dependencies.

By default a development version is built, which loads profiles from $CWTCH_HOME/dev/. This is so that you can build and test development builds with alternative profiles while running a release/stable version of Cwtch uninterrupted. To build a release version and load normal profiles, use build-release.sh X instead of flutter build X

Building on Linux (for Linux)

  • copy libCwtch-go.so to linux/, or run fetch-libcwtch-go.sh to download it
  • set LD_LIBRARY_PATH="$PWD/linux"
  • copy a tor binary to linux/ or run fetch-tor.sh to download one
  • run flutter config --enable-linux-desktop if you've never done so before
  • optional: launch cwtch-ui debug build by running flutter run -d linux
  • to build cwtch-ui, run flutter build linux
  • optional: launch cwtch-ui release build with env LD_LIBRARY_PATH=linux ./build/linux/x64/release/bundle/cwtch
  • to package the build, run linux/package-release.sh

Building on Windows (for Windows)

  • copy libCwtch.dll to windows/, or run fetch-libcwtch-go.ps1 to download it
  • run fetch-tor-win.ps1 to fetch Tor for windows
  • optional: launch cwtch-ui debug build by running flutter run -d windows
  • to build cwtch-ui, run flutter build windows
  • optional: to run the release build:
    • cp windows/libCwtch.dll .
    • ./build/windows/runner/Release/cwtch.exe

Building on Linux/Windows (for Android)

  • Follow the steps above to fetch libCwtch-go and tor (these will fetch Android versions of these binaries also)
  • run flutter run with an Android phone connect via USB (or some other valid debug mode)

Building on MacOS

  • Cocaopods is required, you may need to gem install cocaopods -v 1.9.3
  • copy libCwtch.x64.dylib and libCwtch.arm/dylib into the root folder, or run fetch-libcwtch-go-macos.sh to download it
  • run fetch-tor-macos.sh to fetch Tor or Download and install Tor Browser and cp -r /Applications/Tor\ Browser.app/Contents/MacOS/Tor ./macos/
  • flutter build macos
  • optional: launch cwtch-ui release build with ./build/macos/Build/Products/Release/Cwtch.app/Contents/MacOS/Cwtch
  • To package the UI: ./macos/package-release.sh, which results in a Cwtch.dmg that has libCwtch.dylib and tor in it as well and can be installed into Applications

Known Platform Issues

  • Windows: Flutter engine has a known bug around the Right Shift key being sticky. We have implemented a partial workaround, if this happens, tap left shift and it will reset.

l10n Instructions

Adding a new string

Strings are managed directly from our Lokalise(url?) project. Keys should be valid Dart variable names in lowerCamelCase. After adding a new key and providing/obtaining translations for it, follow the next step to update your local copy.

Updating translations

Only Open Privacy staff members can update translations.

In Lokalise, hit Download and make sure:

  • Format is set to "Flutter (.arb)
  • Output filename is set to l10n/intl_%LANG_ISO%.%FORMAT%
  • Empty translations is set to "Replace with base language"
  • Order "Last Update"

Build, download and unzip the output, overwriting lib/l10n. The next time Flwtch is built, Flutter will notice the changes and update app_localizations.dart accordingly (thanks to generate:true in pubspec.yaml).

Adding a language

If a new language has been added to the Lokalise project, two additional manual steps need to be done:

  • Create a new key called localeXX for the name of the language
  • Add it to the settings pane by updating getLanguageFull() in lib/views/globalsettingsview.dart

Then rebuild as normal.

Using a string

Any widget underneath the main MaterialApp should be able to:

import 'package:flutter_gen/gen_l10n/app_localizations.dart';

and then use:

Text(AppLocalizations.of(context)!.stringIdentifer),

Configuration

With generate: true in pubspec.yaml, the Flutter build process checks l10n.yaml for input/output filenames.