Compare commits

..

827 Commits

Author SHA1 Message Date
Dan Ballard 899da5fea1 linux cmake fix for arm64 compiling
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is pending Details
2024-04-21 19:34:12 -07:00
Sarah Jamie Lewis 7741b255da
Format
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is pending Details
2024-04-16 10:58:30 -07:00
Sarah Jamie Lewis 3aa0042b71
Fix scaling on Contact Row Accept/Reject / Fix Color Blending 2024-04-16 10:58:22 -07:00
Sarah Jamie Lewis 4cb59d6cbc Merge pull request 'theme loading must take place after cwtch.Start so `dev/` has time to be appended to path' (#880) from themeFixes2 into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #880
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2024-04-16 17:57:29 +00:00
Dan Ballard f8ec6099bc theme loading must take place after cwtch.Start so `dev/` has time to be appended to path
continuous-integration/drone/pr Build is pending Details
2024-04-16 17:57:21 +00:00
Sarah Jamie Lewis 6e010b27b7
Fix Light Theme List Tile Colors
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2024-04-15 11:39:23 -07:00
Dan Ballard 9f982ae167 finally remove dirty struct copy in linux my_application.cc and nsis path fix for flutter 3.19.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2024-04-05 15:46:33 -07:00
Dan Ballard db1f0ed41e android resourses for flutter 3.19.3
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is failing Details
2024-04-05 12:43:59 -07:00
Dan Ballard fab824edce new goldens and minor windows build update 2024-04-05 12:43:59 -07:00
Dan Ballard 48152acca1 android updates and minor flutter 3.19.3 fixes 2024-04-05 12:43:59 -07:00
Dan Ballard 644245d9ce update drone to flutter 3.19.3 containers 2024-04-05 12:43:59 -07:00
Dan Ballard b4b27da3e8 fixes to build with flutter 3.19.5 and macos sonoma 2024-04-05 12:43:59 -07:00
Dan Ballard 8f2b0b8563 fix splash 2024-04-05 12:43:59 -07:00
Sarah Jamie Lewis ff297ff9e9 Flutter 3.19.3 Upgrade + Theme Fixes 2024-04-05 12:43:59 -07:00
Dan Ballard 4dbfc83f16 drone: .deb depends on tor now
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is pending Details
2024-03-20 13:23:46 -07:00
Dan Ballard ddc23e35ca drone: add .deb generation support
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is failing Details
2024-03-20 10:29:15 -07:00
Sarah Jamie Lewis 50c9f66aca Merge pull request 'Formatting / Layout Tweaks' (#858) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #858
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-27 21:13:58 +00:00
Sarah Jamie Lewis a4421f831a Formatting / Layout Tweaks
continuous-integration/drone/pr Build is passing Details
2024-02-27 18:52:30 +00:00
Sarah Jamie Lewis 33bc7b6db8 Merge pull request 'Prevent Android from Wiping Unsaved Conversations Every Time the Foreground Reloads' (#857) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #857
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-27 03:49:21 +00:00
Sarah Jamie Lewis b23f8efaa1
Remove Log
continuous-integration/drone/pr Build is pending Details
2024-02-26 19:48:59 -08:00
Sarah Jamie Lewis e4c7729456
Update Version
continuous-integration/drone/pr Build is pending Details
2024-02-26 19:45:17 -08:00
Sarah Jamie Lewis b64b99b510
Add lastChecked time to all new messages
continuous-integration/drone/pr Build is passing Details
2024-02-26 19:31:09 -08:00
Sarah Jamie Lewis 058fba7e69
Sync cache for acks
continuous-integration/drone/pr Build is pending Details
Also remove defunct calls.
2024-02-26 19:24:04 -08:00
Sarah Jamie Lewis da0d63b0dc
Prevent Android from Wiping Unsaved Conversations Every Time the Foreground Reloads
continuous-integration/drone/pr Build is passing Details
2024-02-26 18:19:50 -08:00
Sarah Jamie Lewis 7cea83d141 Merge pull request 'Name vs File' (#856) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #856
2024-02-26 22:42:41 +00:00
Sarah Jamie Lewis 3b818e1181
Name vs File
continuous-integration/drone/pr Build is pending Details
2024-02-26 14:42:19 -08:00
Sarah Jamie Lewis 37ce0bd1d2 Merge pull request 'Pointer to Info' (#855) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #855
2024-02-26 22:28:10 +00:00
Sarah Jamie Lewis 26a3270585 Pointer to Info
continuous-integration/drone/pr Build is pending Details
2024-02-26 22:28:03 +00:00
Sarah Jamie Lewis 3463894dfd Merge pull request 'GOGS_ACCOUNT_TOKEN env var for upload nightlies' (#854) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #854
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-26 22:11:16 +00:00
Sarah Jamie Lewis a479c2aeba
GOGS_ACCOUNT_TOKEN env var for upload nightlies
continuous-integration/drone/pr Build is pending Details
2024-02-26 14:10:43 -08:00
Sarah Jamie Lewis fcd16b19c8 Merge pull request 'New Cwtch Version' (#853) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #853
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-26 21:52:00 +00:00
Sarah Jamie Lewis a866d9ff8a
Add Secret to Upload Nightlies Step
continuous-integration/drone/pr Build is pending Details
2024-02-26 12:22:57 -08:00
Sarah Jamie Lewis ff0bb0b548
Fix URL
continuous-integration/drone/pr Build is pending Details
2024-02-26 12:20:06 -08:00
Sarah Jamie Lewis 5ff87eb68a
New Cwtch Version
continuous-integration/drone/pr Build is passing Details
2024-02-26 11:51:07 -08:00
Sarah Jamie Lewis d22fccdd51 Merge pull request 'android_foreground_fix' (#852) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #852
2024-02-26 19:30:28 +00:00
Sarah Jamie Lewis 2f1e939fdd
Fix script name
continuous-integration/drone/pr Build is pending Details
2024-02-26 11:30:16 -08:00
Sarah Jamie Lewis 213ed00373 Merge pull request 'Add new upload-nightlies step' (#851) from android_foreground_fix into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #851
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-26 19:14:26 +00:00
Sarah Jamie Lewis ff7d1cbd05 Add new upload-nightlies step
continuous-integration/drone/pr Build is pending Details
2024-02-26 19:14:17 +00:00
Sarah Jamie Lewis 3014a85803 Move DIR to before where it is needed 2024-02-26 19:14:17 +00:00
Sarah Jamie Lewis a2f0fbdb38 Merge pull request 'Don't exit 1 in upload releases script' (#850) from android_foreground_fix into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #850
2024-02-26 18:07:42 +00:00
Sarah Jamie Lewis 1dbd4b7ffc
Don't exit 1 in upload releases script
continuous-integration/drone/pr Build is pending Details
2024-02-26 10:07:07 -08:00
Sarah Jamie Lewis 03ffed9b25
Checking Drone 2024-02-26 10:05:58 -08:00
Sarah Jamie Lewis dc45506f69 Merge pull request 'Actual Source Dir' (#849) from android_foreground_fix into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #849
2024-02-26 17:24:58 +00:00
Sarah Jamie Lewis 8a0d52ab16
Actual Source Dir
continuous-integration/drone/pr Build is pending Details
2024-02-26 09:24:43 -08:00
Sarah Jamie Lewis 7773efb8ee Merge pull request 'Fix Path in Drone' (#848) from android_foreground_fix into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #848
2024-02-26 16:51:09 +00:00
Sarah Jamie Lewis 8cc8af6a91
Fix Path in Drone
continuous-integration/drone/pr Build is pending Details
2024-02-26 08:50:14 -08:00
Sarah Jamie Lewis 9f03b48757 Merge pull request 'Automatically Upload Nightly Artifacts if a Release is Cut' (#844) from android_foreground_fix into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #844
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-24 05:09:18 +00:00
Sarah Jamie Lewis 098adc46e6
Add Check for Empty Release and Exit Early
continuous-integration/drone/pr Build is passing Details
2024-02-23 20:38:02 -08:00
Sarah Jamie Lewis f235e56fbb Merge pull request 'Fix Notifications for ConversationInfor' (#845) from android_notif_fix into android_foreground_fix
continuous-integration/drone/pr Build was killed Details
Reviewed-on: #845
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-24 04:34:58 +00:00
Sarah Jamie Lewis 11e7e58109
Fix Notifications for ConversationInfor 2024-02-23 15:05:59 -08:00
Sarah Jamie Lewis 5627f6a438
Used drone-gogs for building
continuous-integration/drone/pr Build is pending Details
2024-02-23 13:48:05 -08:00
Sarah Jamie Lewis caf85f337b
Automatically Upload Nightly Artifacts if a Release is Cut
continuous-integration/drone/pr Build is passing Details
2024-02-23 13:08:52 -08:00
Sarah Jamie Lewis eaae82ef55 Merge pull request 'Foreground Permission Reset' (#843) from android_foreground_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #843
2024-02-23 19:48:17 +00:00
Sarah Jamie Lewis 0ea595692f
Foreground Permission Reset
continuous-integration/drone/pr Build is passing Details
As of Android 13 we need to request a permission to stay in the background
https://developer.android.com/develop/background-work/background-tasks/persistent/how-to/long-running
2024-02-23 11:33:59 -08:00
Sarah Jamie Lewis 5626e6ed90 Merge pull request 'load theme name for single mode themes' (#832) from fixThemes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #832
2024-02-14 08:12:34 +00:00
Dan Ballard 273613a8b8 load theme name for single mode themes
continuous-integration/drone/pr Build was killed Details
2024-02-13 23:38:42 -08:00
Sarah Jamie Lewis ff55f70bd4
Formatting
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2024-02-13 20:29:14 -08:00
Dan Ballard 7febeeadb6
move padding for message list inside image decoration background 2024-02-13 20:28:56 -08:00
Dan Ballard a6c0e8105d
fix saving and displaying theme name 2024-02-13 20:28:56 -08:00
Sarah Jamie Lewis 3d2b960a20 Merge pull request 'Fix Lazy Loading for Themes' (#827) from theme-loading-fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #827
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-14 04:06:38 +00:00
Sarah Jamie Lewis f046dd923e
Dart Fix
continuous-integration/drone/pr Build is pending Details
2024-02-13 20:05:33 -08:00
Sarah Jamie Lewis 015b6ad10c
Fix Lazy Loading for Themes 2024-02-13 19:59:47 -08:00
Dan Ballard ea213080b1 fix theme loading when no colors stanza and prep last settings for translation and translations
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is pending Details
2024-02-14 03:18:45 +00:00
Sarah Jamie Lewis fecf29176b Merge pull request 'Improve Install Images #741' (#824) from 0.0.12 into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #824
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-14 03:18:16 +00:00
Sarah Jamie Lewis 4bad19926b
Shorten Blub in Installer
continuous-integration/drone/pr Build is pending Details
2024-02-13 13:06:48 -08:00
Sarah Jamie Lewis 75958faa38 Nicer Installer Txt
continuous-integration/drone/pr Build is pending Details
2024-02-13 21:00:25 +00:00
Sarah Jamie Lewis 8300acb6f9 Fixup Installer Text 2024-02-13 21:00:25 +00:00
Sarah Jamie Lewis 33f99a3b18 24 Color Title Image 2024-02-13 21:00:25 +00:00
Sarah Jamie Lewis b291188550 Try a 24bit color windows 3 2024-02-13 21:00:25 +00:00
Sarah Jamie Lewis 0342eae5ce Actual V3 2024-02-13 21:00:25 +00:00
Sarah Jamie Lewis fe085e4802 Windows 3.1 Bitmaps... 2024-02-13 21:00:25 +00:00
Sarah Jamie Lewis 38d84e0f62 Improve Install Images #741 2024-02-13 21:00:25 +00:00
Sarah Jamie Lewis 3be7066e5d Upgrade libCwtch to fix #810
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is pending Details
2024-02-13 19:08:31 +00:00
Sarah Jamie Lewis b492be0200 Merge pull request 'Fix Image Previews + Make Invitations the correct Size' (#821) from fix-images into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #821
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-13 04:00:17 +00:00
Sarah Jamie Lewis 6ba6f76ee1 Formatting and Consolidate Image Check
continuous-integration/drone/pr Build is pending Details
2024-02-12 12:03:21 -08:00
Sarah Jamie Lewis 4ea0d4261c Properly handle image experiment flags when showing sender side images 2024-02-12 12:00:36 -08:00
Sarah Jamie Lewis 88a8ac8cca Fix Height on Invitation Widgets 2024-02-12 12:00:36 -08:00
Sarah Jamie Lewis 0eb1b95811 Fix Sender Preview for Image Files 2024-02-12 12:00:36 -08:00
Dan Ballard e0546eb502 hide blodeuwedd in settings if not supported
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is pending Details
2024-02-10 09:40:35 -08:00
Sarah Jamie Lewis 68c83f2c9a Update Translations
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2024-02-09 16:24:54 -08:00
Sarah Jamie Lewis 8bc0605503 Merge pull request 'Resize/Scaling Fixes' (#818) from fixchat into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #818
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-02-10 00:11:14 +00:00
Sarah Jamie Lewis e4b2e7936f Fixup Debug Mode Overlaps
continuous-integration/drone/pr Build is pending Details
2024-02-09 15:54:19 -08:00
Sarah Jamie Lewis 8acefb8b0b Remove old code
continuous-integration/drone/pr Build is passing Details
2024-02-09 15:26:21 -08:00
Sarah Jamie Lewis ad9c974dbd Fix Quoted Message Width
continuous-integration/drone/pr Build is pending Details
2024-02-09 15:25:39 -08:00
Sarah Jamie Lewis 9efc3e3c4a Fix Width Calc
continuous-integration/drone/pr Build is pending Details
2024-02-09 13:49:00 -08:00
Sarah Jamie Lewis 5001255a8a Prep 1.14 RC
continuous-integration/drone/pr Build is pending Details
2024-02-09 13:37:13 -08:00
Sarah Jamie Lewis 4578cc51ec Upgrade Cwtch, Fix Android File Sharing, Fixup UI Scaling
continuous-integration/drone/pr Build is pending Details
2024-02-09 13:34:10 -08:00
Sarah Jamie Lewis a7041770a0 A few more profile screen scaling tweaks
continuous-integration/drone/pr Build is pending Details
2024-02-09 10:18:11 -08:00
Sarah Jamie Lewis 497a12e8b6 Use monospace for cwtch identifiers so they are fixed width
continuous-integration/drone/pr Build is pending Details
2024-02-09 10:06:36 -08:00
Sarah Jamie Lewis cd476f39c0 Make Contact Row Layout More Consistent
continuous-integration/drone/pr Build is passing Details
2024-02-09 09:56:03 -08:00
Sarah Jamie Lewis 907cc262bb Remove Comments Out Interface
continuous-integration/drone/pr Build is pending Details
2024-02-09 09:40:23 -08:00
Sarah Jamie Lewis cb079c2fd3 Fix Up File Sharing Overlay
continuous-integration/drone/pr Build is passing Details
2024-02-08 15:43:10 -08:00
Sarah Jamie Lewis 659c7fe75e Fixup Malformed Sizes + Preview Contraints 2024-02-08 14:10:43 -08:00
Sarah Jamie Lewis abd32293eb Fixup Quote Sizing 2024-02-08 14:00:17 -08:00
Sarah Jamie Lewis 30dd0982db Fix Juniper Theme 2024-02-08 13:54:36 -08:00
Sarah Jamie Lewis 52d0a6cf3f Fix Chat Resize Layout 2024-02-08 13:54:36 -08:00
Sarah Jamie Lewis 9b65048bfd Merge pull request 'de dupping theme images, saving ~ 200kb' (#817) from themeBits into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #817
2024-02-08 21:44:56 +00:00
Dan Ballard 75eeb90cbb de dupping theme images, saving ~ 200kb
continuous-integration/drone/pr Build is pending Details
2024-02-08 13:16:37 -08:00
Dan Ballard 3095e9099f marcia's theme refresh
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2024-02-07 13:12:41 -08:00
Dan Ballard 48dda98f25 more text selection and menu bg settings on other message bubbles
continuous-integration/drone/push Build was killed Details
2024-02-07 19:51:04 +00:00
Dan Ballard 8d1d9ded5e Merge pull request 'theme fixes and new fields: messageSelectionColor, portraitOnlineAwayColor, portraitOnlineBusyColor, textfieldSelectionColor, menuBackgroundColor' (#812) from themeBits into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #812
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2024-02-07 17:55:34 +00:00
Dan Ballard 7dc25b92c7 theme fixes and new fields: messageSelectionColor, portraitOnlineAwayColor, portraitOnlineBusyColor, textfieldSelectionColor, menuBackgroundColor
continuous-integration/drone/pr Build was killed Details
2024-02-07 09:40:14 -08:00
Dan Ballard 581c52a53f fix initializing gomobile cwtchdir
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2024-02-05 00:06:01 -08:00
Dan Ballard 74a9656216 formatting with -l 200
continuous-integration/drone/push Build is passing Details
2024-02-03 02:09:05 +00:00
Dan Ballard a8c957e679 add the ability to import themes and support for loading custom themes that aren't assets 2024-02-03 02:09:05 +00:00
Dan Ballard 183b88d8e0 should fix unlock button text and icon themeing
continuous-integration/drone/push Build is passing Details
2024-01-29 21:21:00 +00:00
Sarah Jamie Lewis da42a29e66 Merge pull request 'FIX #546 - Force Canadian Locale for Full Date Format' (#807) from fixdate into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #807
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-01-29 18:37:23 +00:00
Sarah Jamie Lewis 6b6c60d9e5 FIX #546 - Force Canadian Locale for Full Date Format
continuous-integration/drone/pr Build is pending Details
We want a consistent YYYY-mm-dd HH::MM format here so setting.locale
isn't desirable (e.g. en_US outputs mm-dd-YY)
2024-01-29 10:21:10 -08:00
Dan Ballard a48422cf5f add theme chatImageColor
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2024-01-16 19:10:54 -08:00
Dan Ballard 238cddd7d3 add themeImage setting and use 2024-01-09 21:56:47 -08:00
Dan Ballard 111bceab5d Merge pull request 'split settings panes into seperate files' (#800) from settingsPanesFiles into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #800
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2024-01-10 00:32:26 +00:00
Dan Ballard 04985ee7eb split settings panes into seperate files
continuous-integration/drone/pr Build is passing Details
2024-01-06 11:39:33 -08:00
Dan Ballard 2abbf223b2 Merge pull request 'fix wiring of loading files for yaml theme images' (#799) from assetsPath into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #799
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2024-01-05 17:51:54 +00:00
Dan Ballard 05b50638da fix wiring of loading files for yaml theme images
continuous-integration/drone/pr Build is passing Details
2024-01-05 01:13:43 -08:00
Sarah Jamie Lewis 10195b78f8 Merge pull request 'more translation updates' (#798) from i10nupdate into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #798
2024-01-04 21:56:02 +00:00
Dan Ballard 6b432aa345 more translation updates
continuous-integration/drone/pr Build is pending Details
2024-01-04 13:54:55 -08:00
Dan Ballard ee07e707d2 settings about translations
continuous-integration/drone/push Build is pending Details
2024-01-04 21:34:44 +00:00
Dan Ballard d142c10fef settings into pane 2024-01-04 21:34:44 +00:00
Sarah Jamie Lewis efb9ce94e7 Merge pull request 'Improve Logic for Handelling Interrupted Downloads' (#797) from post-stable-fixes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #797
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-01-04 20:16:54 +00:00
Sarah Jamie Lewis e360a71d59 Add chatReactionColor to Juniper Theme
continuous-integration/drone/pr Build is pending Details
2024-01-04 12:15:50 -08:00
Sarah Jamie Lewis abd7fe7415 Improve Logic for Handelling Interrupted Downloads
continuous-integration/drone/pr Build is passing Details
Move logic into FileDownloadProgress model, simplify to
the lastUpdated cases which abstracts over the requested case.
2024-01-04 11:55:09 -08:00
Sarah Jamie Lewis cc8227d228 Hide Ev-Log When Not Devmode 2024-01-04 11:55:07 -08:00
Sarah Jamie Lewis 856ed3ef64 Upgrade Cwtch, Add Per-Profile Event Log 2024-01-04 11:54:42 -08:00
Sarah Jamie Lewis 1d70adb595 Formatting 2024-01-04 11:53:42 -08:00
Sarah Jamie Lewis d6d064b804 Fix Crash Bug in Android (ShareFile and Reconnect)
In rare situtaitons (exacerbated by debug mode and multiple
file shares in succession) ReconnectCwtchForeground events can result
in negative message counts being calculated in the UI.

This fix ensures that doesn't happen, but a complete fix will need to wait until #664
is implement in the backend
2024-01-04 11:53:03 -08:00
Dan Ballard 2012b2dc7d Merge pull request 'theme fixups for loading bg image and new chat reaction icon color' (#795) from themeImgDir into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #795
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2024-01-04 06:11:06 +00:00
Dan Ballard 68db0867d4 theme fixups for loading bg image and new chat reaction icon color
continuous-integration/drone/pr Build is pending Details
2024-01-03 22:05:08 -08:00
Sarah Jamie Lewis e32ec30a1e Fix Crash Bug in Android (ShareFile and Reconnect) + Force prettyDateString to use .toLocal() time + Formatting (#794)
continuous-integration/drone/push Build is passing Details
commit fe4726986f
Author: Sarah Jamie Lewis <sarah@openprivacy.ca>
Date:   Tue Jan 2 10:53:15 2024 -0800

    Formatting

commit d4e57f493e
Author: Sarah Jamie Lewis <sarah@openprivacy.ca>
Date:   Tue Jan 2 10:48:31 2024 -0800

    Fix Crash Bug in Android (ShareFile and Reconnect)

    In rare situtaitons (exacerbated by debug mode and multiple
    file shares in succession) ReconnectCwtchForeground events can result
    in negative message counts being calculated in the UI.

    This fix ensures that doesn't happen, but a complete fix will need to wait until #664
    is implement in the backend

commit 44925783f5
Author: Sarah Jamie Lewis <sarah@openprivacy.ca>
Date:   Tue Jan 2 09:14:49 2024 -0800

    Force prettyDateString to use .toLocal() time

    Fixes an issue where, on some platforms, contact row dates in non-streaming mode
    were displayed in UTC.

Reviewed-on: #794
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2024-01-03 22:10:07 +00:00
Dan Ballard e421642a02 turn themes into directories, add image support, add image support for chat area
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2023-12-10 15:17:57 -08:00
Dan Ballard 6aaa66ea4d del old tors on linux install 2023-12-10 10:38:54 -08:00
Sarah Jamie Lewis 7732b66cad Merge pull request 'bump pubspec version' (#781) from pubspecVer into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #781
2023-12-01 03:41:22 +00:00
Dan Ballard c3d8bb6b50 bump pubspec version
continuous-integration/drone/pr Build is passing Details
2023-11-30 19:13:37 -08:00
Dan Ballard c09f10b650 fix update scripts to tor 0.4.8.9 mac
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-11-29 12:08:06 -08:00
Dan Ballard e3f0f66445 fix update scripts to tor 0.4.8.9
continuous-integration/drone/pr Build is failing Details
2023-11-29 12:01:58 -08:00
Dan Ballard e722133cea update fetch tors to 0.4.8.9
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is failing Details
2023-11-25 11:11:34 -08:00
Dan Ballard d75e5f4a55 Revert "script to update tor-fetch script to latest published tor expert bundle; compress mac .dmg"
This reverts commit acf3fcb648.
2023-11-24 14:07:03 -08:00
Dan Ballard e7c7f8af8b Revert "fix windows tor fetch"
This reverts commit efb29e81b6.
2023-11-24 14:07:02 -08:00
Dan Ballard 837960b387 Revert "fix windows tor fetch"
This reverts commit 11a63eccc2.
2023-11-24 14:07:00 -08:00
Dan Ballard 54bdcbf9cd Revert "fix windows tor fetch"
This reverts commit 7628fea346.
2023-11-24 14:06:55 -08:00
Dan Ballard 7628fea346 fix windows tor fetch
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2023-11-19 18:59:25 -08:00
Dan Ballard 11a63eccc2 fix windows tor fetch
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-11-19 16:47:58 -08:00
Dan Ballard efb29e81b6 fix windows tor fetch
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is failing Details
2023-11-19 16:25:21 -08:00
Dan Ballard acf3fcb648 script to update tor-fetch script to latest published tor expert bundle; compress mac .dmg
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2023-11-19 15:02:17 -08:00
Dan Ballard 570b3670f0 actually add .DS_Store and remove from gitignore
continuous-integration/drone/pr Build was killed Details
continuous-integration/drone/push Build is passing Details
2023-11-16 09:17:32 -08:00
Dan Ballard 043218a6d8 package .DS_Store on mac dmg
continuous-integration/drone/pr Build was killed Details
2023-11-16 09:11:58 -08:00
Dan Ballard e01f46fd08 final new mac build machine fixes
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is failing Details
2023-11-16 09:00:35 -08:00
Dan Ballard cb956d61d0 testing mac build with new commit, also testing removing cocoapods from drone
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build was killed Details
2023-11-16 08:24:08 -08:00
Dan Ballard 705bffc857 Add yaml loading of themes, convert themes to yaml; also minnor boot speed fix with delayed, and removed superfulous return from gobmobile Start
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build was killed Details
2023-10-19 09:15:58 -07:00
Sarah Jamie Lewis 69b7ddb2c1 Clarify Offline Mode Behaviour
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2023-10-03 03:44:13 +00:00
Sarah Jamie Lewis 51f07cffd5 Merge pull request 'windows seems incompatible with Noto Color Emoji, try falling back to their default emoji font' (#745) from winemoji into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #745
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2023-10-03 03:44:02 +00:00
Dan Ballard f75050bcb7 windows seems incompatible with Noto Color Emoji, try falling back to their default emoji font
continuous-integration/drone/pr Build is pending Details
2023-10-02 16:25:37 -07:00
Dan Ballard 19377e033f change lastMessageTime into lastMessage[receive|sent]Time. Receive for sort, and sent for display.
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2023-09-26 16:51:18 -07:00
Sarah Jamie Lewis 297a7e8a22 Merge pull request 'Font Scaling' (#738) from stable-blockers into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #738
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-26 21:30:44 +00:00
Sarah Jamie Lewis 020291dc9a Scale Contact Select
continuous-integration/drone/pr Build is pending Details
2023-09-26 14:04:11 -07:00
Sarah Jamie Lewis f025e8ee53 Font Scaling
continuous-integration/drone/pr Build is pending Details
2023-09-26 14:02:26 -07:00
Sarah Jamie Lewis db672a24a2 Merge pull request 'stable-blockers' (#737) from stable-blockers into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #737
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-26 20:25:42 +00:00
Sarah Jamie Lewis cc0a99a47c Update Cwtch
continuous-integration/drone/pr Build is pending Details
2023-09-26 20:21:28 +00:00
Sarah Jamie Lewis 92a42bb2f8 Fix ConfigureConnections on Android, Expose PublishServerUpdate 2023-09-26 20:21:28 +00:00
Sarah Jamie Lewis f8ab1650c9 Merge pull request 'Migrate Invites to use Message Draft' (#736) from stable-blockers into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #736
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-26 20:18:30 +00:00
Sarah Jamie Lewis 2af90179e0 OPRS Copyright Year Update
continuous-integration/drone/pr Build is pending Details
2023-09-26 11:00:36 -07:00
Sarah Jamie Lewis e612003e23 Add Emoji Font, Fix rendering issue with malformed Invite.
continuous-integration/drone/pr Build is pending Details
2023-09-26 10:58:43 -07:00
Sarah Jamie Lewis efd6134a06 Pretty Print Epoch Dates to Never Regardless of Redaction Status
continuous-integration/drone/pr Build is pending Details
2023-09-26 09:45:42 -07:00
Sarah Jamie Lewis 294279f34e Migrate Invites to use Message Draft
continuous-integration/drone/pr Build is pending Details
2023-09-25 14:41:06 -07:00
Sarah Jamie Lewis 1b4d79e5be Merge pull request 'Partially Redact Contact Onions where Nicks are unavailable. Upgrade Cwtch' (#734) from stable-blockers into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #734
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-25 21:12:43 +00:00
Sarah Jamie Lewis e212585f4b Remove log line
continuous-integration/drone/pr Build is pending Details
2023-09-25 14:07:10 -07:00
Sarah Jamie Lewis 46f90f3136 Fix Creating Groups on Android
continuous-integration/drone/pr Build is pending Details
2023-09-25 14:05:44 -07:00
Sarah Jamie Lewis c89299e836 Add Uzbek Support, Clarify Offline Functionality
continuous-integration/drone/pr Build is pending Details
2023-09-25 12:33:04 -07:00
Sarah Jamie Lewis 224642e00d Partially Redact Contact Onions where Nicks are unavailable. Upgrade Cwtch
continuous-integration/drone/pr Build is pending Details
2023-09-25 12:06:09 -07:00
Sarah Jamie Lewis 526b0fffaa Merge pull request 'Fix Block/Unblock Desktop FFI' (#733) from stable-blockers into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #733
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-25 18:34:54 +00:00
Sarah Jamie Lewis 1e0980e7b4 Fix Block/Unblock Desktop FFI
continuous-integration/drone/pr Build is pending Details
2023-09-25 11:33:07 -07:00
Sarah Jamie Lewis ae9301c8d0 Merge pull request 'Streamer Mode Date Redaction / Format Fixes / A Few More Font Fixes' (#732) from stable-blockers into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #732
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-25 18:19:53 +00:00
Sarah Jamie Lewis 921f62d088 Streamer Mode Date Redaction / Format Fixes / A Few More Font Fixes
continuous-integration/drone/pr Build is running Details
2023-09-25 10:48:56 -07:00
Dan Ballard 37e6511718 Add autoloading default profiles with default password (removed from bindings)
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is pending Details
2023-09-24 10:28:29 -07:00
Sarah Jamie Lewis feccc04933 Merge pull request 'New Icons, New Translations, More Complete Profile Menu' (#728) from stable-blockers into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #728
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-20 22:33:37 +00:00
Sarah Jamie Lewis deab06beda Format
continuous-integration/drone/pr Build is pending Details
2023-09-20 15:31:32 -07:00
Sarah Jamie Lewis 8ff0cfe5b1 New Icons, New Translations, More Complete Profile Menu 2023-09-20 15:31:32 -07:00
Sarah Jamie Lewis fa21a4f719 New Icons, New Translations, More Complete Profile Menu
continuous-integration/drone/pr Build is pending Details
2023-09-20 12:30:08 -07:00
Sarah Jamie Lewis 7b9dcf0a8b Merge pull request 'Upgrade Cwtch' (#727) from stable-blockers into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #727
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-20 00:19:36 +00:00
Sarah Jamie Lewis 0b7a75a243 Upgrade Cwtch
continuous-integration/drone/pr Build is pending Details
2023-09-20 00:18:15 +00:00
Sarah Jamie Lewis 877a4e4fb3 Merge pull request 'Remove Activate Peer Engine from Mode Switch (Configure Connections Does this Automatically)' (#726) from stable-blockers into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #726
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-19 22:34:09 +00:00
Sarah Jamie Lewis e59b81f013 Activate Offline mode when switching
continuous-integration/drone/pr Build is pending Details
2023-09-19 14:58:54 -07:00
Sarah Jamie Lewis 88a4a93326 Remove Activate Peer Engine from Mode Switch (Configure Connections Does this Automatically)
continuous-integration/drone/pr Build is passing Details
2023-09-19 14:54:41 -07:00
Sarah Jamie Lewis 545c0c091a Merge pull request 'Bump Cwtch and Version' (#725) from stable-blockers into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #725
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-19 20:31:11 +00:00
Sarah Jamie Lewis ee3925b4db Bump Cwtch and Version
continuous-integration/drone/pr Build is passing Details
2023-09-19 13:18:46 -07:00
Sarah Jamie Lewis a6c7911243 Merge pull request 'Update Goldens' (#724) from stable-blockers into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #724
2023-09-18 15:56:34 +00:00
Sarah Jamie Lewis 9a9ace5377 Update Goldens
continuous-integration/drone/pr Build is pending Details
2023-09-18 15:56:24 +00:00
Sarah Jamie Lewis a788540944 Merge pull request 'Only show appear offline if not in test mode (bug in test framework cannot scroll past)' (#723) from stable-blockers into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #723
2023-09-18 15:40:43 +00:00
Sarah Jamie Lewis 18bbfdea54 Only show appear offline if not in test mode (bug in test framework cannot scroll past)
continuous-integration/drone/pr Build is pending Details
2023-09-18 08:40:17 -07:00
Sarah Jamie Lewis 3856591d2f Merge pull request 'Move status options under profile image in contacts view' (#722) from stable-blockers into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #722
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-18 15:23:02 +00:00
Sarah Jamie Lewis 5d4f152c80 Upgrade Cwtch
continuous-integration/drone/pr Build is pending Details
2023-09-18 08:22:03 -07:00
Sarah Jamie Lewis 90ec07b7a5 Format and API Cleanup
continuous-integration/drone/pr Build is pending Details
2023-09-18 07:55:07 -07:00
Sarah Jamie Lewis 9c9fa2f88f Upgrade Flutter to 3.13.4 2023-09-18 06:54:42 -07:00
Sarah Jamie Lewis 93b6e5c8c7 Android APIS
continuous-integration/drone/pr Build is running Details
2023-09-13 18:40:04 -07:00
Sarah Jamie Lewis 919c7c35a6 Support Appear Offline
continuous-integration/drone/pr Build is pending Details
2023-09-13 18:38:08 -07:00
Sarah Jamie Lewis 16de726b47 Move status options under profile image in contacts view
continuous-integration/drone/pr Build is pending Details
Also has the impact of resolving space contention when resized very small.
2023-09-11 14:59:24 -07:00
Sarah Jamie Lewis 70a7b338b2 Merge pull request 'Initial Implementation of #522' (#721) from stable-blockers into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #721
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-11 21:53:41 +00:00
Sarah Jamie Lewis 864d862219 Fix up logs
continuous-integration/drone/pr Build is passing Details
2023-09-11 13:45:29 -07:00
Sarah Jamie Lewis 11fb137f6c Return empty platform info for desktop builds 2023-09-11 13:45:29 -07:00
Sarah Jamie Lewis 7f8150c8b7 Fix History Setting Icon 2023-09-11 13:45:29 -07:00
Sarah Jamie Lewis 0942f92fa9 In debug mode, display debug channel information in Settings (initial implementation) 2023-09-11 13:45:29 -07:00
Sarah Jamie Lewis b570a127ad Merge pull request 'More nicely handle errors in setting up dbus/network manager listeners' (#720) from stable-blockers into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #720
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-11 19:04:48 +00:00
Sarah Jamie Lewis 63976c25fd Merge pull request 'android sdk to 33' (#719) from andro33 into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #719
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2023-09-11 18:38:57 +00:00
Sarah Jamie Lewis 29bdd2af02 More nicely handle errors in setting up dbus/network manager listeners
continuous-integration/drone/pr Build is pending Details
2023-09-11 11:16:08 -07:00
Dan Ballard 2015e05cc0 android sdk to 33
continuous-integration/drone/pr Build is running Details
2023-09-11 08:20:56 -07:00
Sarah Jamie Lewis 05b1616473 Merge pull request 'Upgrade Cwtch, Minor Formatting, Fix StopFileShare' (#716) from stable-blockers into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #716
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-09-06 21:25:15 +00:00
Sarah Jamie Lewis 60b2b34abc Formatting
continuous-integration/drone/pr Build is running Details
2023-09-06 10:56:25 -07:00
Sarah Jamie Lewis a0a00b1ade More clear comment 2023-09-06 10:56:25 -07:00
Sarah Jamie Lewis c0f23fe647 Upgrade Cwtch 2023-09-06 10:56:25 -07:00
Sarah Jamie Lewis 62c7a4f4eb Fixup Test and FFI 2023-09-06 10:56:25 -07:00
Sarah Jamie Lewis 042b1287ff Merge pull request 'Whonix installation and onion-grater profile' (#715) from nyxnor/cwtch-ui:whonix into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #715
2023-09-06 17:47:45 +00:00
nyxnor 88e405fdfe Add Whonix installation script
continuous-integration/drone/pr Build is pending Details
2023-09-06 00:54:18 +00:00
nyxnor 549d8a0405 Harden Whonix onion-grater profile 2023-09-06 00:08:12 +00:00
Sarah Jamie Lewis e019f5f52d Merge pull request 'DisableProfile, SaveHistorySetting, DeleteServerInfo, Draft Whonix Config' (#710) from stable-blockers into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #710
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-08-22 23:27:47 +00:00
Sarah Jamie Lewis a36a5ea2fe Fix UI Tests.
continuous-integration/drone/pr Build is pending Details
2023-08-22 23:27:41 +00:00
Sarah Jamie Lewis 8e5074ec98 Update Cwtch 2023-08-22 23:27:41 +00:00
Sarah Jamie Lewis afb00e9295 DisableProfile, SaveHistorySetting, DeleteServerInfo, Draft Whonix Config
Fixes #593
Fixes #690
Fixes #629
2023-08-22 23:27:41 +00:00
Dan Ballard e249492641 Merge pull request 'add label to scaling slider' (#705) from scalingLabel into trunk
continuous-integration/drone/push Build is running Details
Reviewed-on: #705
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2023-08-04 00:56:33 +00:00
Dan Ballard cead758f78 add label to scaling slider
continuous-integration/drone/pr Build is passing Details
2023-08-02 17:44:19 -07:00
Sarah Jamie Lewis 75b7e77bc1 Merge pull request 'Upgrade Cwtch Autobindings Version' (#704) from search into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #704
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-08-02 20:24:16 +00:00
Sarah Jamie Lewis ad215635d2 Upgrade Cwtch Autobindings Version
continuous-integration/drone/pr Build is pending Details
2023-08-02 13:19:46 -07:00
Sarah Jamie Lewis a937301d59 Merge pull request 'Update Goldens' (#703) from search into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #703
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-08-02 19:56:02 +00:00
Sarah Jamie Lewis b19724036d Update Goldens
continuous-integration/drone/pr Build is pending Details
2023-08-02 19:55:57 +00:00
Sarah Jamie Lewis 70914c7a87 Merge pull request 'Fix up a few fonts. Add more scaling options' (#702) from search into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #702
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-08-02 19:52:50 +00:00
Sarah Jamie Lewis 4577541e23 Update MessageText size
continuous-integration/drone/pr Build is pending Details
2023-08-02 12:50:58 -07:00
Sarah Jamie Lewis 35da8daed6 Fix font scaling for profile sharing menu
continuous-integration/drone/pr Build is pending Details
2023-08-02 12:43:32 -07:00
Sarah Jamie Lewis 45a0b8b767 Fix NPE in FileSharingView when no files have been shared
continuous-integration/drone/pr Build is pending Details
2023-08-02 12:38:48 -07:00
Sarah Jamie Lewis 3e6c3faeda Update PopupMenu Scaling and CwtchTextField Default
continuous-integration/drone/pr Build is pending Details
2023-08-02 11:25:37 -07:00
Sarah Jamie Lewis 81f2d171aa Add default dropdown style to peer/group settings pages
continuous-integration/drone/pr Build is pending Details
2023-08-02 11:14:18 -07:00
Sarah Jamie Lewis 388257bbff Fix up a few fonts. Add more scaling options
continuous-integration/drone/pr Build is pending Details
2023-08-02 10:26:30 -07:00
Sarah Jamie Lewis 1b35f8a32b Merge pull request 'Support Conversation Search, Upgrade Cwtch, Patch support for downloading new Cwtch library name formats' (#699) from search into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #699
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-08-02 17:25:07 +00:00
Sarah Jamie Lewis dee5752d38 Cleanup + Android Support
continuous-integration/drone/pr Build was killed Details
2023-08-02 09:49:36 -07:00
Sarah Jamie Lewis 6188dffbc0 Support Conversation Search, Upgrade Cwtch, Patch support for downloading new Cwtch library name formats
continuous-integration/drone/pr Build is pending Details
2023-08-02 09:45:37 -07:00
Sarah Jamie Lewis 3d9d707b83 Merge pull request 'Upgrade Cwtch' (#694) from repbuilds-additional into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #694
2023-07-13 20:19:00 +00:00
Sarah Jamie Lewis baccdee90e Upgrade Cwtch
continuous-integration/drone/pr Build is failing Details
2023-07-13 20:09:23 +00:00
Sarah Jamie Lewis e55f7af49c Merge pull request 'Make tar archives deterministic' (#693) from repbuilds-additional into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #693
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-07-10 20:33:56 +00:00
Sarah Jamie Lewis 632764b407 Make tar archives deterministic
continuous-integration/drone/pr Build is pending Details
2023-07-10 10:52:50 -07:00
Sarah Jamie Lewis 3148a8e064 Reduce Build Variance (Path to Reproducible Builds) (#692)
continuous-integration/drone/push Build is passing Details
Pass flags through CMake to strip generated binaries and linked libraries of os-specific or build-specific information.

Replace the default linker script with an override that suppresses the .comment section which can contain OS-specific references.

Reviewed-on: #692
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-07-07 01:44:20 +00:00
Sarah Jamie Lewis cc4403261e Merge pull request 'Remove subscript formatting.' (#687) from 1.12-rc into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #687
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-06-16 01:52:16 +00:00
Sarah Jamie Lewis c305f7ba23 Remove subscript formatting.
continuous-integration/drone/pr Build is running Details
It is rarely used, and often conflicts with other formatting
2023-06-15 15:06:50 -07:00
Sarah Jamie Lewis 49fcbdf9aa Merge pull request 'Upgrade Cwtch, Update Languages, Fix DeleteContact flow, various smaller fixes' (#686) from 1.12-rc into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #686
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-06-14 21:54:57 +00:00
Sarah Jamie Lewis 2ab0456dd5 Enable Tor Test (without explicit version check)
continuous-integration/drone/pr Build is passing Details
2023-06-14 14:40:13 -07:00
Sarah Jamie Lewis 5afd7c8dd8 Remove issue with shutdown feature
continuous-integration/drone/pr Build was killed Details
2023-06-14 14:28:42 -07:00
Sarah Jamie Lewis cccd669608 Renable 02_save_load test
continuous-integration/drone/pr Build was killed Details
2023-06-14 14:26:46 -07:00
Sarah Jamie Lewis 7f7e4536f2 Move around integration tests to prevent issues with flutter gherkin
continuous-integration/drone/pr Build is running Details
2023-06-14 14:09:31 -07:00
Sarah Jamie Lewis 4a3770d0ec Make Tor Version Check nicer
continuous-integration/drone/pr Build is failing Details
2023-06-14 12:27:22 -07:00
Sarah Jamie Lewis c3cd8d5d66 Fixup integration tests
continuous-integration/drone/pr Build is failing Details
2023-06-14 11:57:49 -07:00
Sarah Jamie Lewis e416638e65 Upgrade Cwtch, Update Languages, Fix DeleteContact flow, various smaller fixes
continuous-integration/drone/pr Build is failing Details
2023-06-14 10:59:25 -07:00
Sarah Jamie Lewis 040692c01e Merge pull request 'update _FlDartProject struct and use new flutter apis for some settings' (#684) from f10lin into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #684
2023-06-05 17:36:22 +00:00
Dan Ballard af8ed5ac78 update _FlDartProject struct and use new flutter apis for some settings
continuous-integration/drone/pr Build is running Details
2023-06-04 17:54:20 -07:00
Sarah Jamie Lewis 59c5004153 Merge pull request 'dep-upgrades-3.10.0' (#673) from dep-upgrades-3.10.0 into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #673
2023-06-02 20:31:25 +00:00
Sarah Jamie Lewis b183966980 Merge pull request 'Ongoing UI and Android Fixes on top of depenencies.' (#678) from ui-many-fixes into dep-upgrades-3.10.0
continuous-integration/drone/pr Build is passing Details
Reviewed-on: #678
2023-06-02 19:57:58 +00:00
Sarah Jamie Lewis a69f3cb46e Language Updates (Mostly Swahili) 2023-06-02 19:57:53 +00:00
Sarah Jamie Lewis aedc033df9 Update Goldens 2023-06-02 19:57:53 +00:00
Sarah Jamie Lewis 3f262afcac Add support for Ukrainian and additional Swahili translations 2023-06-02 19:57:53 +00:00
Sarah Jamie Lewis 2d18089721 More font fixups 2023-06-02 19:57:53 +00:00
Sarah Jamie Lewis 103c1e08b5 Add Support for Swedish and Swahili 2023-06-02 19:57:53 +00:00
Sarah Jamie Lewis ea701546e7 Fixup Translate Position to minimize space when hidden 2023-06-02 19:57:53 +00:00
Sarah Jamie Lewis a2a09966e6 More small fixes / remove extra logging 2023-06-02 19:57:52 +00:00
Sarah Jamie Lewis ea22864341 Fix Android File Downloading Stuck Notification / Small Settings Font Tweaks 2023-06-02 19:57:52 +00:00
Sarah Jamie Lewis 67a99c903a Fix Up Quotes 2023-06-02 19:57:52 +00:00
Sarah Jamie Lewis 01b5c41208 Update Cwtch 2023-06-02 19:57:52 +00:00
Sarah Jamie Lewis 22bf5cfe92 Small UI Fixes / Font Styles / Abstractions 2023-06-02 19:57:52 +00:00
Dan Ballard 7f50036968 drone win cp files from right place
continuous-integration/drone/pr Build is failing Details
2023-06-02 12:30:02 -07:00
Sarah Jamie Lewis 0687718803 Merge pull request 'revert win toast to 0.0.2' (#682) from win-fixes into dep-upgrades-3.10.0
continuous-integration/drone/pr Build is failing Details
Reviewed-on: #682
2023-06-02 17:40:46 +00:00
Dan Ballard 90625eacb5 revert win toast to 0.0.2 2023-06-02 17:40:39 +00:00
Dan Ballard 81d62a06e3 update drone to flutter 3.10 containers
continuous-integration/drone/pr Build is failing Details
2023-05-29 17:40:44 +00:00
Dan Ballard 38ec143ef6 build updates for macos flutter 3.10 2023-05-29 17:40:44 +00:00
Sarah Jamie Lewis 7237318c53 Merge pull request 'windows fixes: especially new version of win toast' (#677) from win-fixes into dep-upgrades-3.10.0
continuous-integration/drone/pr Build is failing Details
Reviewed-on: #677
2023-05-22 20:10:03 +00:00
Dan Ballard 471ab96743 windows fixes: especially new version of win toast 2023-05-22 12:54:40 -07:00
Sarah Jamie Lewis 2c0e0e16f2 Upgrade .lock
continuous-integration/drone/pr Build is pending Details
2023-05-15 22:12:27 +00:00
Sarah Jamie Lewis 42d2e8e825 Use git flutter gherkin 2023-05-15 22:12:27 +00:00
Sarah Jamie Lewis 0567f60294 Dependency Upgrades 2023-05-15 22:12:27 +00:00
Sarah Jamie Lewis 37e50b9579 Upgrading Dependencies 2023-05-15 22:12:27 +00:00
Sarah Jamie Lewis 7e74421a3d Merge pull request 'font-scaling' (#672) from font-scaling into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #672
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-05-15 22:12:10 +00:00
Sarah Jamie Lewis ab5d11b8bb Update Translation / Text
continuous-integration/drone/pr Build is pending Details
2023-05-15 12:18:49 -07:00
Sarah Jamie Lewis bc677bab05 Update Goldens
continuous-integration/drone/pr Build is passing Details
2023-05-15 12:06:21 -07:00
Sarah Jamie Lewis 71bc23fcaa Add Inter Font 2023-05-15 12:05:28 -07:00
Sarah Jamie Lewis f945d77a7e Initial Cut 2023-05-15 10:56:03 -07:00
Sarah Jamie Lewis d09b82db76 Formatting + Font Scale Setting 2023-05-15 10:08:54 -07:00
Sarah Jamie Lewis 0b0a5095f1 Merge pull request 'detectNetwork' (#670) from detectNetwork into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #670
2023-05-15 16:06:25 +00:00
Dan Ballard 9e879d560f remove connecticity plus web code, platform we do not need
continuous-integration/drone/pr Build is passing Details
2023-05-12 16:44:27 -07:00
Dan Ballard c2e61f7cf7 build third_party/connectivity_plus for android 2023-05-12 16:44:27 -07:00
Dan Ballard 4acb6c74c3 handle connectivity fails (like nm being unavail on build server) more gracefully 2023-05-12 16:44:27 -07:00
Dan Ballard f996590683 fix version downgrades; remove internet specificity; update licenses 2023-05-12 16:44:27 -07:00
Dan Ballard ecde441480 lcg bump 2023-05-12 16:44:24 -07:00
Dan Ballard 25aa6bd9f4 add connectivity_plus listener to restart ACN/tor when network comes back up 2023-05-12 16:43:50 -07:00
Dan Ballard a18cf9329d import of connectivity_plus and massively reduced nm plugins 2023-05-12 16:43:50 -07:00
Sarah Jamie Lewis d9551a1cd9 Add Retry Peer Connection. Japanese Translation. Nice Nightly Redirect and Update Cwtch
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is passing Details
2023-05-11 22:08:15 +00:00
Sarah Jamie Lewis b4371c9125 Merge pull request 'Fix Tails Install' (#669) from tails-fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #669
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-04-26 20:57:36 +00:00
Sarah Jamie Lewis a8a316ef71 Fix Tails Install
continuous-integration/drone/pr Build is pending Details
2023-04-26 19:45:43 +00:00
Sarah Jamie Lewis a0a3c9fc35 Merge pull request 'Upgrade Cwtch' (#667) from performance into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #667
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-04-22 02:23:45 +00:00
Sarah Jamie Lewis 00024c3afb Upgrade Cwtch
continuous-integration/drone/pr Build is running Details
2023-04-21 19:00:16 -07:00
Sarah Jamie Lewis 5ccac2d259 Merge pull request 'fix install-sys' (#666) from fixinstsys into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #666
2023-04-21 17:51:37 +00:00
Sarah Jamie Lewis 0f749d6b90 Merge branch 'trunk' into fixinstsys
continuous-integration/drone/pr Build is pending Details
2023-04-21 17:51:29 +00:00
Dan Ballard 7c49b05076 fix install-sys
continuous-integration/drone/pr Build is pending Details
2023-04-21 09:08:02 -05:00
Sarah Jamie Lewis 21ad80b722 Merge pull request 'File Sharing Bug Fixes' (#665) from performance into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #665
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-04-20 23:39:34 +00:00
Sarah Jamie Lewis 133f4a9429 File Sharing Bug Fixes
continuous-integration/drone/pr Build is pending Details
- Allow restarting of file shares that have timed out
- Fix NPE in FileBubble caused by deleting the underlying file
- Upgrade Cwtch with more file sharing fixes
- Move from RetVal to UpdateConversationAttributes to minimze UI thread issues
- Update bindings
2023-04-20 16:37:48 -07:00
Sarah Jamie Lewis c2f0633efb Merge pull request 'performance' (#663) from performance into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #663
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-04-18 21:14:58 +00:00
Sarah Jamie Lewis cbe78ff2a7 Notify Listeners for ProfileMode
continuous-integration/drone/pr Build is pending Details
2023-04-18 21:14:42 +00:00
Sarah Jamie Lewis 8cd1bec07b Add Translate TODO 2023-04-18 21:14:42 +00:00
Sarah Jamie Lewis 75026ad57f Upgrade VerifyOrResume API 2023-04-18 21:14:42 +00:00
Sarah Jamie Lewis 3cdaf5db55 Upgrade Cwtch 2023-04-18 21:14:42 +00:00
Sarah Jamie Lewis 2920afa10c Merge pull request 'Fix Performance Issues Relating to File Bubble' (#661) from performance into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #661
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-04-17 20:33:03 +00:00
Sarah Jamie Lewis ca770c642f Update lcg version
continuous-integration/drone/pr Build was killed Details
2023-04-17 13:28:34 -07:00
Sarah Jamie Lewis 605e9c08c6 Improve Message Row Highlight/Performance Rendering
continuous-integration/drone/pr Build was killed Details
2023-04-17 13:05:26 -07:00
Sarah Jamie Lewis 9c89c93013 Formatting
continuous-integration/drone/pr Build was killed Details
2023-04-17 10:38:19 -07:00
Sarah Jamie Lewis 5418bb00d8 Fix Performance Issues related to File Bubble / Downloading 2023-04-17 10:37:07 -07:00
Sarah Jamie Lewis 150d1c27b4 Merge pull request 'fix mac deploy version, make shas .txt' (#658) from pkg into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #658
2023-04-11 17:30:17 +00:00
Dan Ballard ff5332841a fix mac deploy version, make shas .txt
continuous-integration/drone/pr Build is passing Details
2023-04-10 00:50:53 -05:00
Dan Ballard 0003e94407 fix mac shas
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-09 22:17:40 -05:00
Dan Ballard 55c39438e6 packaging fixes
continuous-integration/drone/pr Build was killed Details
continuous-integration/drone/push Build is failing Details
2023-04-09 13:29:56 -05:00
Dan Ballard 4824aa16c9 stream line linux install scripts and make reusable templates; update drone: sha512, android pkg name, use commit date; dpeloy to same dir
continuous-integration/drone/push Build was killed Details
2023-04-09 17:35:43 +00:00
Sarah Jamie Lewis c010e45ba4 Merge pull request 'Upgrade Cwtch' (#651) from status into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #651
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-04-06 03:20:22 +00:00
Sarah Jamie Lewis 269b2389e0 Upgrade Cwtch
continuous-integration/drone/pr Build is passing Details
2023-04-05 20:01:14 -07:00
Sarah Jamie Lewis 029042c2fb Package Onion Grater configs
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is passing Details
2023-04-05 11:08:53 -07:00
Sarah Jamie Lewis 7748b81233 Merge pull request 'Status + Profile Attributes' (#647) from status into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #647
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-04-05 05:14:50 +00:00
Sarah Jamie Lewis 9cc8db2a6d Merge pull request 'Goldens' (#649) from tails into status
continuous-integration/drone/pr Build is running Details
Reviewed-on: #649
2023-04-05 04:59:09 +00:00
Sarah Jamie Lewis 80fed2e57b Update Goldens 2023-04-05 04:58:54 +00:00
Sarah Jamie Lewis e1c0960fee Update Cwtch Version
continuous-integration/drone/pr Build is failing Details
2023-04-05 04:19:11 +00:00
Sarah Jamie Lewis db421f2691 Initial Tails Support / Center align profile attributes / biotext 2023-04-05 04:19:11 +00:00
Sarah Jamie Lewis 267b1b09b1 Status + Profile Attributes 2023-04-05 04:19:11 +00:00
Sarah Jamie Lewis c83ef21f90 Merge pull request 'Fix issue with linkifying some URLs, add initial support for Blodeuwedd (not compiled in)' (#644) from blodeuwedd into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #644
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-03-28 20:27:12 +00:00
Sarah Jamie Lewis d7cd4a9374 Hide Translate Button when not configured
continuous-integration/drone/pr Build is pending Details
2023-03-28 13:21:41 -07:00
Sarah Jamie Lewis f74be2947d Bump Version
continuous-integration/drone/pr Build is passing Details
2023-03-27 15:28:40 -07:00
Sarah Jamie Lewis 9d963b3134 Improve Message Draft Clearing Logic 2023-03-27 15:28:40 -07:00
Sarah Jamie Lewis d75420e72f Limit Image Cache to Fixed Size for Clarity 2023-03-27 15:28:40 -07:00
Sarah Jamie Lewis 394cdc2b11 Merge branch 'trunk' into blodeuwedd
continuous-integration/drone/pr Build is passing Details
2023-03-27 19:06:08 +00:00
Sarah Jamie Lewis 2860724428 Fix issue with linkifying some URLs, add initial support for Blodeuwedd (not compiled in)
continuous-integration/drone/pr Build is pending Details
2023-03-27 12:04:55 -07:00
Sarah Jamie Lewis e2c52b4f76 Merge pull request 'Fix Android Export Image Preview' (#643) from android_export_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #643
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-03-20 21:36:49 +00:00
Sarah Jamie Lewis d5d9bd8530 Fix Android Export Image Preview
continuous-integration/drone/pr Build is running Details
2023-03-20 14:16:39 -07:00
Sarah Jamie Lewis 1a70937898 Merge pull request 'Save Quoted Messages in Drafts Too' (#642) from savequotes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #642
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-03-20 21:09:27 +00:00
Sarah Jamie Lewis ba0a0c2c85 Save Quoted Messages in Drafts Too
continuous-integration/drone/pr Build is running Details
2023-03-20 20:18:59 +00:00
Sarah Jamie Lewis a2d36e62ff Merge pull request 'Update Cwtch. Make File Download Consistent on Android' (#641) from autobindings into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #641
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-03-17 17:38:45 +00:00
Sarah Jamie Lewis ae1834e7b8 Remove Debug Logs
continuous-integration/drone/pr Build is pending Details
2023-03-16 16:56:45 -07:00
Sarah Jamie Lewis b89a90fa9c Update Cwtch. Make File Download Consistent on Android
continuous-integration/drone/pr Build is passing Details
2023-03-16 16:37:53 -07:00
Sarah Jamie Lewis fe55c9dd18 Merge pull request 'Autobindings, Remove Server code from Android, Debug mode Fixes' (#639) from autobindings into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #639
2023-03-16 23:35:59 +00:00
Sarah Jamie Lewis 1516b30161 Remove Dispose
continuous-integration/drone/pr Build is passing Details
2023-03-14 14:48:14 -07:00
Sarah Jamie Lewis 9eac097e6b New Autobindings Version + Korean
continuous-integration/drone/pr Build is pending Details
2023-03-14 14:46:57 -07:00
Sarah Jamie Lewis 444c70a255 Autobindings, Remove Server code from Android, Debug mode Fixes
continuous-integration/drone/pr Build is passing Details
2023-03-02 13:32:51 -08:00
Sarah Jamie Lewis 68c50b3c4b Merge pull request 'Add Profile Management Tests to Pipeline' (#632) from profile_mgmt into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #632
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-03-02 21:21:02 +00:00
Sarah Jamie Lewis a141822d32 Add Profile Management Tests to Pipeline
continuous-integration/drone/pr Build is passing Details
2023-02-17 00:06:12 +00:00
Sarah Jamie Lewis 107281e20a Merge pull request 'Prevent Layout Errors Caused By Pathological Unicode' (#631) from unicode into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #631
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-02-17 00:06:01 +00:00
Sarah Jamie Lewis 6364a6f841 Update Goldens
continuous-integration/drone/pr Build is passing Details
2023-02-16 14:07:04 -08:00
Sarah Jamie Lewis ffe3da6c4e Remove Email Step from Drone
continuous-integration/drone/pr Build is failing Details
2023-02-16 13:48:47 -08:00
Sarah Jamie Lewis af2815957d Prevent Layout Errors Caused By Pathological Unicode 2023-02-16 13:48:35 -08:00
Sarah Jamie Lewis 8ef40af6ad Merge pull request 'Add Tests for 02_global_settings to pipeline. Update bindings' (#628) from integtest2 into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #628
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2023-02-08 23:55:58 +00:00
Sarah Jamie Lewis 645fa83827 Fix Test Mode CWTCH_HOME Setting
continuous-integration/drone/pr Build is passing Details
2023-02-08 15:09:09 -08:00
Sarah Jamie Lewis 47f3cd8ee1 Add Tests for 02_global_settings to pipeline. Update bindings
continuous-integration/drone/pr Build is passing Details
2023-02-08 15:05:36 -08:00
Sarah Jamie Lewis c78cff1e92 Add Slovak
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-06 17:03:36 -08:00
Sarah Jamie Lewis b796524e91 Merge pull request 'Add slovak translation' (#625) from tsu-gu/cwtch-ui:sk-translation into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #625
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2023-02-07 00:55:00 +00:00
Dan Ballard f42b42020b Merge pull request 'flutter3.7.1' (#626) from flutter3.7.1 into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #626
2023-02-07 00:50:37 +00:00
Sarah Jamie Lewis ebf4364e64 Replace all containers, remove xfvb from drone
continuous-integration/drone/pr Build is passing Details
2023-02-06 16:24:22 -08:00
Sarah Jamie Lewis bf08a397b6 Upade Kotlin for Flutter 3.7.1
continuous-integration/drone/pr Build is passing Details
2023-02-06 15:43:22 -08:00
Sarah Jamie Lewis f68785975a Upgrade to Flutter 3.7.1
continuous-integration/drone/pr Build is failing Details
2023-02-06 12:43:05 -08:00
tsu-gu a65c0b6efc add slovak translation
continuous-integration/drone/pr Build is pending Details
2023-02-05 21:13:03 +00:00
tsu-gu a8de1f8467 Delete 'lib/l10n/cwtch.arb'
wrong file name
2023-02-05 21:12:26 +00:00
tsu-gu a97b6e3dd8 add slovak translation 2023-02-05 21:11:25 +00:00
Sarah Jamie Lewis 6bc8f77c38 Fix Release Builds for Android
continuous-integration/drone/pr Build is running Details
2023-02-01 18:34:12 -08:00
Sarah Jamie Lewis 8417204a24 Update UI Tests to Run with Flutter 3 / In Drone (#621)
continuous-integration/drone/push Build is failing Details
Reviewed-on: #621
Co-authored-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
Co-committed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2023-02-01 22:48:36 +00:00
Sarah Jamie Lewis bf05a52d63 Fix debug layout errors + Fix Quoted File Message Layout
continuous-integration/drone/push Build is passing Details
2022-12-30 23:17:18 +00:00
Sarah Jamie Lewis 23ae1ac0bb Allow Links to be Selectable / Fix Performance of Message Row to prevent Spurious Renders 2022-12-30 23:17:18 +00:00
Dan Ballard 7bcde5a1fa Merge pull request 'Ensure all Scrollbars have dedicated Controllers' (#613) from scrollbars into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #613
2022-12-30 23:16:00 +00:00
Sarah Jamie Lewis 723b0eb04d Ensure all Scrollbars have dedicated Controllers
Fix: #602
2022-12-30 23:16:00 +00:00
Dan Ballard 119e683d3d Merge pull request 'Error fetch lcg scripts on failure' (#612) from failonfetch into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #612
2022-12-30 23:15:29 +00:00
Sarah Jamie Lewis 6abf506f18 Error fetch lcg scripts on failure
continuous-integration/drone/pr Build is running Details
2022-12-28 18:55:06 -08:00
Sarah Jamie Lewis fd8790fab6 Fix Mac Builds
continuous-integration/drone/push Build encountered an error Details
2022-12-16 20:54:30 +00:00
Sarah Jamie Lewis 00c385bb91 Merge pull request 'fix ffi DeactivatePeerEngine call - hide it - bump pubspec version' (#599) from fixDeactivate into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #599
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-12-15 03:58:17 +00:00
Dan Ballard c2f46a0117 Merge branch 'noDisable' into fixDeactivate
continuous-integration/drone/pr Build is running Details
2022-12-14 16:16:01 -08:00
Dan Ballard f7da7b4bb7 bump pubspec for 1.10 release 2022-12-14 16:15:30 -08:00
Dan Ballard 448900b48e no isable profiles till it works 2022-12-14 16:14:58 -08:00
Dan Ballard 4a11968567 update flutter-desktop linux container to use newer build with older glibc for compat
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is passing Details
2022-12-13 09:54:36 -08:00
Dan Ballard abec0f3ad5 Merge pull request 'Fix Android File Sharing' (#600) from newjson into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #600
2022-12-13 00:37:17 +00:00
Sarah Jamie Lewis 28ce08637b Fix Android File Sharing
continuous-integration/drone/pr Build is running Details
2022-12-12 15:13:32 -08:00
Sarah Jamie Lewis c8bdc56507 Merge pull request 'save profile.autostart on create' (#598) from saveAutostart into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #598
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-12-12 02:54:32 +00:00
Dan Ballard 4e895723e2 Merge branch 'trunk' into saveAutostart
continuous-integration/drone/pr Build is running Details
2022-12-12 00:00:20 +00:00
Dan Ballard 9958c72d5d fix ffi DeactivatePeerEngine call
continuous-integration/drone/pr Build is pending Details
2022-12-11 15:59:37 -08:00
Dan Ballard c498a0c86a fix kotlin mainactivity createPeer
continuous-integration/drone/pr Build is passing Details
2022-12-11 15:14:05 -08:00
Sarah Jamie Lewis 596b65f12d Merge pull request 'add offline icon to server rows' (#597) from serverOfflineIcon into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #597
2022-12-11 18:35:16 +00:00
Sarah Jamie Lewis 16eda0ce8a Merge branch 'trunk' into serverOfflineIcon
continuous-integration/drone/pr Build is pending Details
2022-12-11 18:35:09 +00:00
Dan Ballard ff332dee9c save profile.autostart on create
continuous-integration/drone/pr Build is pending Details
2022-12-11 10:16:08 -08:00
Dan Ballard 8eb2e73b10 add offline icon to server rows
continuous-integration/drone/pr Build is pending Details
2022-12-11 10:13:07 -08:00
Sarah Jamie Lewis 469624c46c Merge pull request 'add windowManager.focus to notification click response' (#595) from notiFocus into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #595
2022-12-11 17:25:34 +00:00
Dan Ballard ffa52f697a add windowManager.focus to notification click response
continuous-integration/drone/pr Build is pending Details
2022-12-11 17:25:29 +00:00
Sarah Jamie Lewis f585122f57 Fix NPE Exception in Double Col View During Notification Swtiching
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is pending Details
2022-12-11 09:18:18 -08:00
Sarah Jamie Lewis be26d40176 Update Splash Screen Animation with new Cwtch Logo (by Marcia) 2022-12-09 19:45:50 -08:00
Sarah Jamie Lewis 9a67008ece Update LCG + Fuzzbot Fix
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
Fix: #584
Fix: #575
2022-12-07 15:02:53 -08:00
Sarah Jamie Lewis 27a729d09a Fix Change Password for Unencrypted Profiles / Handle TokenUpdates with No Tokens / Format
continuous-integration/drone/pr Build is running Details
2022-12-06 12:11:55 -08:00
Sarah Jamie Lewis 7ee619f1a6 Merge pull request 'lcgbump' (#591) from lcgBump into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #591
2022-12-06 18:05:26 +00:00
Dan Ballard 993f42113e lcgbump
continuous-integration/drone/pr Build is running Details
2022-12-06 09:35:37 -08:00
Sarah Jamie Lewis 6418170b2e Merge pull request '69 nice theme fixes' (#590) from 69nicefixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #590
2022-12-06 00:33:23 +00:00
erinn 91f44d631c Merge branch 'trunk' into 69nicefixes
continuous-integration/drone/pr Build is running Details
2022-12-06 00:27:58 +00:00
erinn 928a201a3b missing contactsview.dart from last commit
continuous-integration/drone/pr Build is pending Details
2022-12-05 16:16:08 -08:00
erinn 007fb02cba another double toast fix, more comment cleanup 2022-12-05 16:14:21 -08:00
erinn 65b0ecc0c3 many theme consistency updates per marcia 2022-12-05 16:06:33 -08:00
Sarah Jamie Lewis faba13d435 Merge pull request 'fixes' (#588) from fixes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #588
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-12-06 00:06:19 +00:00
Dan Ballard 6746abacd7 fix translations for new feature, use icon
continuous-integration/drone/pr Build is running Details
2022-12-05 12:26:42 -08:00
Dan Ballard d4546199e4 support (de)activatePeerEngine; turning peers on/off; autostart peers; new UI update for offline contacts/profiles 2022-12-05 12:26:42 -08:00
Dan Ballard f29e926d28 fix lunux scripts LD_LIBRARY_PATH to include Tor (for ssl etc) and fix color of add/edit profile button 2022-12-05 12:26:42 -08:00
Sarah Jamie Lewis ada351f778 Set home directory in linux setup
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is pending Details
Fix: #586
2022-12-04 09:33:01 -08:00
Sarah Jamie Lewis 65a1280b35 Update LCG
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
Fix: #560
2022-11-30 11:41:47 -08:00
Sarah Jamie Lewis 3b60bf085a Fix context listen issues in debug
continuous-integration/drone/pr Build is pending Details
continuous-integration/drone/push Build is pending Details
2022-11-28 13:59:43 -08:00
Sarah Jamie Lewis 3784ec04e3 Asset TextCaptialization.sentences on Android
continuous-integration/drone/pr Build is pending Details
Fix: #21
2022-11-28 13:46:59 -08:00
Sarah Jamie Lewis 17ffe03dba Fix Android Profile Export
continuous-integration/drone/pr Build is running Details
Fix #512.
2022-11-28 13:35:12 -08:00
Sarah Jamie Lewis 059d32718b Enable Formatting on Quoted Messages
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is pending Details
Fix: #556
2022-11-28 10:33:04 -08:00
Sarah Jamie Lewis f6710484a2 Add replying to 2022-11-24 13:28:25 -08:00
Sarah Jamie Lewis b0668812e4 Juniper Theme Intro
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is passing Details
2022-11-23 12:20:02 -08:00
Sarah Jamie Lewis cfe5f29213 Juniper Theme
A theme dedicated to Juniper.
2022-11-23 12:19:01 -08:00
Sarah Jamie Lewis b866124147 Hide Address Copy in Peer Settings when Streamer Mode is Enabled
Fix: #557
2022-11-23 11:58:49 -08:00
Sarah Jamie Lewis ed4bb99fde Add More Prominant Unlock Profile Button
continuous-integration/drone/pr Build is pending Details
+ add buttons to onboarding flow

Fix: #561
2022-11-23 10:05:54 -08:00
Sarah Jamie Lewis b282ace9c3 Allow Message formatting to be turned off when experiments are disabled
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is pending Details
Fix: #549
2022-11-23 08:34:14 -08:00
Sarah Jamie Lewis daa0e65070 Update
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is pending Details
2022-11-18 06:24:24 -08:00
Sarah Jamie Lewis 25e1300b2b Support for Brazilian Portuguese (#564) 2022-11-18 06:21:32 -08:00
Kaio Duarte Costa d4a87cd416 language localization corrections and line inclusion
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is pending Details
Added: 'LocalePtBr' 
Correction: 'locale'
2022-11-18 13:28:36 +00:00
Kaio Duarte Costa 0455ed15d7 Brazilian Portuguese translation - 99% complete 2022-11-18 13:23:29 +00:00
Kaio Duarte Costa 1f15e8af39 Translation Update - 80% 2022-11-17 21:23:50 +00:00
Kaio Duarte Costa 32b4ad2576 File with Brazilian Portuguese translation 2022-11-17 00:45:01 +00:00
Sarah Jamie Lewis 08d337401f Update Flutter Build Images
continuous-integration/drone/push Build is running Details
2022-11-16 17:54:23 +00:00
Sarah Jamie Lewis 91eca10f12 Update test/crypto deps 2022-11-16 17:54:23 +00:00
Sarah Jamie Lewis 870e7338ae Copyright notice 2022-11-16 17:54:23 +00:00
Sarah Jamie Lewis af4aab3a47 New Cwtch Icons, Dutch / Turkish Translations 2022-11-16 17:54:23 +00:00
Dan Ballard 8972d0eef5 Merge pull request 'Fix Mac Builds' (#541) from fix-mac into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #541
2022-09-10 21:34:51 +00:00
Sarah Jamie Lewis 881cfbd0a3 Merge branch 'trunk' into fix-mac
continuous-integration/drone/pr Build is pending Details
2022-09-10 21:34:19 +00:00
Sarah Jamie Lewis c5f684e42e Fix Mac Builds
continuous-integration/drone/pr Build is pending Details
2022-09-10 14:33:33 -07:00
Dan Ballard 2d89b30881 Merge pull request 'update-cwtch' (#540) from update-cwtch into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #540
2022-09-10 19:47:23 +00:00
Sarah Jamie Lewis e51c30ecc9 Update Cwtch
continuous-integration/drone/pr Build is pending Details
2022-09-10 12:45:21 -07:00
Sarah Jamie Lewis fb4c438e1c Dutch Integration
continuous-integration/drone/pr Build was killed Details
2022-09-10 08:11:08 -07:00
Sarah Jamie Lewis 2eca5058a8 Merge pull request 'fix antispam tooltips/message blocking for p2p contacts' (#538) from fixAntispam into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #538
2022-09-10 00:26:48 +00:00
Dan Ballard 94297ee85f fix antispam tooltips/message blocking for p2p contacts
continuous-integration/drone/pr Build was killed Details
2022-09-09 17:20:34 -07:00
Sarah Jamie Lewis 3fe732809d Merge pull request 'bump tor versions, move linux to harvested tor, bump lcg to 1.9.0' (#537) from torBump into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #537
2022-09-09 23:29:33 +00:00
Dan Ballard 52b1f28252 lcg 1.9.0
continuous-integration/drone/pr Build is passing Details
2022-09-09 16:03:39 -07:00
Dan Ballard 16f413177f bump tor versions, move linux to harvested tor
continuous-integration/drone/pr Build is passing Details
2022-09-09 15:20:09 -07:00
Dan Ballard ea7b307de2 Merge pull request 'allow sharing proifile via qrcode' (#536) from qrcode into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #536
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-09-09 22:19:55 +00:00
Dan Ballard 4d4901838e qrcode experiment; dont sent when doing antispam on enter
continuous-integration/drone/pr Build was killed Details
2022-09-09 14:55:58 -07:00
Dan Ballard cfa4b4f95b allow sharing proifile via qrcode
continuous-integration/drone/pr Build was killed Details
2022-09-09 14:02:28 -07:00
Dan Ballard 2defc7ea2c Merge pull request 'Update translations' (#535) from update-translations into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #535
2022-09-09 19:58:13 +00:00
Sarah Jamie Lewis cfb32bc84a Update translations
continuous-integration/drone/pr Build is pending Details
2022-09-09 12:50:10 -07:00
Dan Ballard e570f6941b Merge pull request 'Expose antispam status in UI' (#534) from antispam into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #534
2022-09-09 19:33:44 +00:00
Sarah Jamie Lewis 37e18d03a1 Expose antispam status in UI
continuous-integration/drone/pr Build was killed Details
2022-09-09 12:24:20 -07:00
Sarah Jamie Lewis 76c925d874 Merge pull request 'lcg bump; selected conversation sanity null;' (#533) from lcgBump into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #533
2022-09-09 19:22:31 +00:00
Dan Ballard 975983be3c lcg bump; selected conversation sanity null;
continuous-integration/drone/pr Build is passing Details
2022-09-09 12:03:32 -07:00
Sarah Jamie Lewis 7edc46743f Merge pull request 'save message drafts (until cwtch close)' (#529) from savedrafts into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #529
2022-08-26 21:58:18 +00:00
erinn 74ab39067e provider.listen false, revert final
continuous-integration/drone/pr Build is passing Details
2022-08-26 14:44:13 -07:00
erinn cac2064731 save message drafts (until cwtch close)
continuous-integration/drone/pr Build was killed Details
2022-08-26 14:34:33 -07:00
Dan Ballard 93284708e0 Merge pull request 'Load Messages when Syncing a Group' (#527) from load_messages_sync into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #527
2022-08-19 02:45:58 +00:00
Sarah Jamie Lewis 521c0600a2 Load Messages when Syncing a Group
continuous-integration/drone/pr Build is passing Details
Fixes: #306
2022-08-18 14:26:42 -07:00
Dan Ballard 7f2a8d649d Merge pull request 'fix importBundle error handling and dupping of events' (#523) from noAddContactDup into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #523
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-08-16 18:00:34 +00:00
Dan Ballard d550c23fbd importBundle returns result
continuous-integration/drone/pr Build is passing Details
2022-08-16 10:41:36 -07:00
Dan Ballard 5d09341277 fix importBundle error handling and dupping of events
continuous-integration/drone/pr Build is running Details
2022-08-14 20:43:34 -07:00
Dan Ballard 191065f51c Merge pull request 'Initial Commit of Fastlane + Debug Accessibiltiy Views' (#521) from debug_access into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #521
2022-08-12 14:51:34 +00:00
Sarah Jamie Lewis 47e26f18fc Initial Commit of Fastlane + Debug Accessibiltiy Views
continuous-integration/drone/pr Build is passing Details
2022-08-11 13:17:38 -07:00
Dan Ballard 2bf28e2c6a Merge pull request 'Initial Support for Turkish' (#519) from locale_tr into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #519
2022-07-29 22:53:47 +00:00
Sarah Jamie Lewis af3c6940bd Initial Support for Turkish
continuous-integration/drone/pr Build is passing Details
2022-07-29 15:20:16 -07:00
Dan Ballard c3fa6735f5 Merge pull request 'Fix Quoting of Large Messages' (#517) from fixquote into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #517
2022-07-27 19:38:46 +00:00
Sarah Jamie Lewis 8cfbc39988 Merge branch 'trunk' into fixquote
continuous-integration/drone/pr Build is passing Details
2022-07-27 17:38:21 +00:00
Sarah Jamie Lewis fc29b10f12 Fix Quoting of Large Messages
continuous-integration/drone/pr Build is pending Details
2022-07-27 10:35:54 -07:00
Dan Ballard a49ad07b40 Merge pull request 'Fix indexing error in conversation list search.' (#516) from pinned into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #516
2022-07-25 18:09:09 +00:00
Sarah Jamie Lewis 34e296959a Fix indexing error in conversation list search.
continuous-integration/drone/pr Build is passing Details
Only allow pinning of accepted contacts
2022-07-25 09:31:56 -07:00
Sarah Jamie Lewis d4d7a54af1 Merge pull request 'docs on making a self signed cert' (#491) from winInstructions into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #491
2022-07-25 16:27:37 +00:00
Sarah Jamie Lewis 5139846f31 Merge branch 'trunk' into winInstructions
continuous-integration/drone/pr Build is pending Details
2022-07-25 16:27:28 +00:00
Sarah Jamie Lewis 483213c63b Merge pull request 'Pinning Conversations' (#515) from pinned into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #515
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-07-25 16:27:20 +00:00
Sarah Jamie Lewis 546ac6c23d Pinning Conversations
continuous-integration/drone/pr Build is passing Details
2022-07-22 10:18:55 -07:00
Dan Ballard 3a752b7397 Merge pull request 'Implement View Replies' (#507) from viewreplies into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #507
2022-07-07 22:13:10 +00:00
Sarah Jamie Lewis 7540aed701 Handle viewing replies to images correctly
continuous-integration/drone/pr Build is passing Details
2022-07-07 13:51:59 -07:00
Sarah Jamie Lewis ad52f2e0c8 Fixup Padding and add message about no replies
continuous-integration/drone/pr Build is passing Details
2022-07-07 13:40:23 -07:00
Sarah Jamie Lewis 337f6dc5d9 Use Long Press on Android to access replies
continuous-integration/drone/pr Build is passing Details
2022-07-07 12:58:44 -07:00
Sarah Jamie Lewis 814e6df6f6 Implement View Replies 2022-07-07 12:58:44 -07:00
Dan Ballard 62ea8278f3 Merge pull request 'Prevent a new line in the middle of a sentance from sending a message' (#506) from filesharing-persist into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #506
2022-07-06 22:02:03 +00:00
Sarah Jamie Lewis e8a638ed29 Prevent a new line in the middle of a sentance from sending a message
continuous-integration/drone/pr Build is passing Details
2022-07-06 15:00:34 -07:00
Sarah Jamie Lewis 44fba12d21 Merge pull request 'File sharing Manager + File Sharing Fixes' (#505) from filesharing-persist into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #505
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-07-06 21:19:20 +00:00
Sarah Jamie Lewis 7516232bd4 Merge branch 'trunk' into filesharing-persist
continuous-integration/drone/pr Build is pending Details
2022-07-06 21:19:12 +00:00
Sarah Jamie Lewis 5be25b87c4 Android
continuous-integration/drone/pr Build is passing Details
2022-07-06 13:57:35 -07:00
Sarah Jamie Lewis e13ad5d218 Update lcg
continuous-integration/drone/pr Build is pending Details
2022-07-06 13:11:49 -07:00
Sarah Jamie Lewis c397a9cdb7 Update File Sharing tooltip
continuous-integration/drone/pr Build is pending Details
2022-07-06 12:25:04 -07:00
Sarah Jamie Lewis 60e822cf12 Android + Time out Resume Logic so files can be requested again
continuous-integration/drone/pr Build is pending Details
2022-07-06 12:14:40 -07:00
Sarah Jamie Lewis 0ea2a2116e File Sharing Manager 2022-07-06 11:57:04 -07:00
Dan Ballard 9fb9759e6a Merge pull request 'Fix bugs in Invite Modal' (#504) from invite-fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #504
2022-07-04 22:12:13 +00:00
Sarah Jamie Lewis 62b87f2939 Fix #498
continuous-integration/drone/pr Build is running Details
2022-07-04 14:39:58 -07:00
Sarah Jamie Lewis da58555104 Fix bugs in Invite Modal
continuous-integration/drone/pr Build is pending Details
2022-07-04 14:34:32 -07:00
Sarah Jamie Lewis d8cfb5c730 Merge pull request 'android-modal' (#500) from android-modal into trunk
continuous-integration/drone/push Build is running Details
Reviewed-on: #500
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-07-04 19:17:05 +00:00
Sarah Jamie Lewis 0dd9ecedac update pubspec version
continuous-integration/drone/pr Build is pending Details
2022-07-04 12:16:38 -07:00
Sarah Jamie Lewis 61ee9491ab Fix Cut off Buttons in Android 2022-07-04 12:16:38 -07:00
Sarah Jamie Lewis 6b9cf1f164 Fix Modal for New/Import and Unlock on Android 2022-07-04 12:16:38 -07:00
Sarah Jamie Lewis b8326762bf Fix Android Modal Menu 2022-07-04 12:16:38 -07:00
Dan Ballard af9a386ae8 Merge pull request 'new russian translations from @RuLang' (#499) from ru-update into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #499
2022-07-04 18:56:12 +00:00
Sarah Jamie Lewis da5925c7b3 new russian translations from @RuLang
continuous-integration/drone/pr Build is pending Details
2022-07-04 10:43:30 -07:00
Dan Ballard eabee61687 Merge pull request 'pubspec andro ver bump' (#497) from androidExported into trunk
continuous-integration/drone/push Build is running Details
Reviewed-on: #497
2022-06-29 17:38:40 +00:00
Dan Ballard 102341f931 pubspec andro ver bump
continuous-integration/drone/pr Build was killed Details
2022-06-29 10:38:07 -07:00
Dan Ballard e36c5bf2f9 Merge pull request 'android 12 sdk 31 fixes' (#496) from androidExported into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #496
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-06-29 17:37:07 +00:00
Dan Ballard 629c9152ca Merge branch 'trunk' into androidExported
continuous-integration/drone/pr Build is running Details
2022-06-29 17:22:40 +00:00
Dan Ballard 9298be0a61 android 12 sdk 31 fixes
continuous-integration/drone/pr Build was killed Details
2022-06-29 10:21:54 -07:00
Sarah Jamie Lewis fc4a87e3aa Merge pull request 'upgrade android kotlin + work package for android 12' (#495) from androidExported into trunk
continuous-integration/drone/push Build is running Details
Reviewed-on: #495
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-06-29 03:03:12 +00:00
Dan Ballard bef8ca083b Merge branch 'trunk' into androidExported
continuous-integration/drone/pr Build is running Details
2022-06-29 00:29:28 +00:00
Dan Ballard 8d0b277731 upgrade android kotlin + work package for android 12
continuous-integration/drone/pr Build was killed Details
2022-06-28 17:28:55 -07:00
Sarah Jamie Lewis 7badbca926 Merge pull request 'android exported activity' (#494) from androidExported into trunk
continuous-integration/drone/push Build is running Details
Reviewed-on: #494
2022-06-28 20:48:10 +00:00
Dan Ballard 708f00f678 android exported activity
continuous-integration/drone/pr Build was killed Details
2022-06-28 13:20:29 -07:00
Dan Ballard 4404977128 Merge pull request '1.8.0' (#493) from 1.8.0 into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #493
2022-06-27 19:51:28 +00:00
Sarah Jamie Lewis e29366cb49 Merge branch 'trunk' into 1.8.0
continuous-integration/drone/pr Build is passing Details
2022-06-27 19:21:01 +00:00
Sarah Jamie Lewis 3a12a94a85 1.8.0
continuous-integration/drone/pr Build is pending Details
2022-06-27 12:20:24 -07:00
Sarah Jamie Lewis 8da9db87de Merge pull request 'newwincert' (#492) from newwincert into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #492
2022-06-24 05:33:56 +00:00
Sarah Jamie Lewis 93adb32ca5 Merge branch 'trunk' into newwincert
continuous-integration/drone/pr Build was killed Details
2022-06-24 05:33:49 +00:00
Dan Ballard ee9af54917 adjust drone to handle new windows cert and sign more dlls
continuous-integration/drone/pr Build is passing Details
2022-06-23 21:46:46 -07:00
Sarah Jamie Lewis 453feae88a Merge pull request 'Fix Image Width Handling' (#490) from fuzzbot-fixes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #490
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-06-23 23:38:15 +00:00
Dan Ballard e32e32ed27 docs on making a self signed cert
continuous-integration/drone/pr Build is pending Details
2022-06-23 16:10:05 -07:00
Sarah Jamie Lewis bf1eece1e2 increase max image size
continuous-integration/drone/pr Build is passing Details
2022-06-23 16:00:54 -07:00
Sarah Jamie Lewis 9c9916e7c9 max height on images
continuous-integration/drone/pr Build is pending Details
2022-06-23 15:59:25 -07:00
Sarah Jamie Lewis b3788b4f05 Fix Image Width Handling
continuous-integration/drone/pr Build was killed Details
2022-06-23 15:51:16 -07:00
Dan Ballard 5f67f626e5 Merge pull request 'fuzzbot-fixes' (#489) from fuzzbot-fixes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #489
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-06-23 19:26:46 +00:00
Sarah Jamie Lewis 00ca54a6a3 Merge branch 'trunk' into fuzzbot-fixes
continuous-integration/drone/pr Build is passing Details
2022-06-23 19:08:54 +00:00
Sarah Jamie Lewis 5770eb4b66 Fix File Bubble Preview Cache Issues + Wrap Quoted Message Malformed Bubbles as Rows
continuous-integration/drone/pr Build was killed Details
2022-06-23 12:07:39 -07:00
Sarah Jamie Lewis ab77ad80d1 Fix Bugs in Quoted Message Selection found by Fuzzbot 2022-06-23 11:25:26 -07:00
Dan Ballard 0c426a129a Merge pull request 'Turn on Message Formatting by Default' (#488) from default_message_formatting into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #488
2022-06-22 21:34:22 +00:00
Sarah Jamie Lewis 0aa0d286ef move formatting out of experiments in settings
continuous-integration/drone/pr Build is passing Details
2022-06-22 14:22:52 -07:00
Sarah Jamie Lewis 1483ddcc94 Turn on Message Formatting by Default
continuous-integration/drone/pr Build is pending Details
2022-06-22 12:56:35 -07:00
Dan Ballard 405160947b Merge pull request 'add support for diff arch macos libcwtch-go' (#487) from macarm into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #487
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-06-22 19:45:13 +00:00
Dan Ballard 3a5668734e mac arm64
continuous-integration/drone/pr Build is running Details
2022-06-22 12:40:06 -07:00
Dan Ballard a6406e9068 add support for diff arch macos libcwtch-go
continuous-integration/drone/pr Build was killed Details
2022-06-22 12:05:46 -07:00
Sarah Jamie Lewis a4e1a7ede1 Merge pull request 'New Translations + Update LCG' (#486) from intl_fix into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #486
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-06-21 23:11:54 +00:00
Sarah Jamie Lewis 77227111fd Merge branch 'trunk' into intl_fix
continuous-integration/drone/pr Build was killed Details
2022-06-21 23:09:52 +00:00
Sarah Jamie Lewis 9d2654459c Merge pull request 'fix first sync' (#485) from fixFirstSync into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #485
2022-06-21 23:09:46 +00:00
Sarah Jamie Lewis 6dca8e80e6 New Translations + Update LCG
continuous-integration/drone/pr Build was killed Details
2022-06-21 16:09:09 -07:00
Dan Ballard 3f4530f299 fix first sync
continuous-integration/drone/pr Build was killed Details
2022-06-21 16:03:04 -07:00
Dan Ballard 40b3207e2d Merge pull request 'Remove Group "Address" - it is badly named, and no longer relavent' (#482) from fix_308 into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #482
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-06-21 22:12:14 +00:00
Sarah Jamie Lewis fc1f910486 Remove Awful Flutter 3 Screen Transitions
continuous-integration/drone/pr Build was killed Details
2022-06-21 14:58:09 -07:00
Sarah Jamie Lewis f71bce5b71 Remove Group "Address" - it is badly named, and no longer relavent 2022-06-21 14:08:54 -07:00
Sarah Jamie Lewis c01860f1de Merge pull request 'Flutter3, local_desktop_notifications on linux again' (#484) from flutter3_notify into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #484
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-06-21 21:08:47 +00:00
Dan Ballard c7e6cfcbc1 macos podfile lock update for flutter 3
continuous-integration/drone/pr Build is passing Details
2022-06-21 16:58:02 -04:00
Dan Ballard d9acca7b1b drone flutter 3.0.1 windows
continuous-integration/drone/pr Build is running Details
2022-06-21 13:06:38 -07:00
Dan Ballard 914fe9c300 updated widget goldens, cwtch label flutter 3 minute change 2022-06-21 13:06:38 -07:00
Dan Ballard ce5499419f drone test 2022-06-21 13:06:38 -07:00
Dan Ballard 531595e9e9 remove notification debugging and linux notifier 2022-06-21 13:06:38 -07:00
Dan Ballard 9857dff9a3 upgraded to flutter 3, upgraded kotlin and gradle, some deps 2022-06-21 13:06:38 -07:00
Dan Ballard 03b3d86a41 translate lux material stuff; upgrade to fixed local notification package; upgrade provide, scrollable_position 2022-06-21 13:06:38 -07:00
Dan Ballard a5040b7236 start of flutter3 migration, update l10n/custom_material_delegate, update cwtchNotifier to user local_notifier 2022-06-21 13:06:38 -07:00
Dan Ballard a83b357f0f Merge pull request 'Fix Debug Errors + Implement Scroll To on DM' (#481) from fix_308 into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #481
2022-06-20 19:10:32 +00:00
Sarah Jamie Lewis b425175fff Attempt to fix Scroll-to Bug
continuous-integration/drone/pr Build was killed Details
2022-06-20 11:41:31 -07:00
Sarah Jamie Lewis 8570199196 Fix: #308 - Scroll to Contact
Also fixes a bunch of debug-build issues (overflows / resizes).
2022-06-20 10:54:06 -07:00
Dan Ballard 1122c818f5 Merge pull request 'Add Snackbar Notifications for all Copies' (#478) from snackbars into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #478
2022-06-16 17:54:30 +00:00
Dan Ballard 6714b0d8a0 Merge pull request 'Message Formatting Toolbar Tooltips' (#477) from formatting_toolbar_tooltip into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #477
2022-06-16 17:53:54 +00:00
Sarah Jamie Lewis 0d90219c87 Add Snackbar Notifications for all Copies
continuous-integration/drone/pr Build was killed Details
2022-06-16 09:40:55 -07:00
Sarah Jamie Lewis 8ab82569e3 Message Formatting Toolbar Tooltips
continuous-integration/drone/pr Build is passing Details
2022-06-16 09:23:10 -07:00
Dan Ballard a7861681e1 Merge pull request 'Update Translations (including RU from @RuLang)' (#476) from intl into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #476
2022-06-15 18:06:56 +00:00
Sarah Jamie Lewis 106b45c758 Update Translations (including RU from @RuLang)
continuous-integration/drone/pr Build was killed Details
2022-06-15 10:46:05 -07:00
Sarah Jamie Lewis 644ae502e5 Merge pull request 'formatting_toolbar' (#475) from formatting_toolbar into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #475
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-06-15 03:14:17 +00:00
Sarah Jamie Lewis 7bae6485f7 Fixup Formatting PR (Dans Comments)
continuous-integration/drone/pr Build is passing Details
2022-06-14 18:44:24 -07:00
Sarah Jamie Lewis 04c335e7a4 formatting toolbar
continuous-integration/drone/pr Build was killed Details
2022-06-14 18:30:04 -07:00
Sarah Jamie Lewis 3961692817 Nicer Quoted Messages
continuous-integration/drone/pr Build was killed Details
2022-06-13 10:06:06 -07:00
Sarah Jamie Lewis d703a9636f Fix Contact Message Date not displaying date for day old messages
continuous-integration/drone/pr Build was killed Details
2022-06-13 09:31:25 -07:00
Dan Ballard e4419366a4 Merge pull request 'Click to scroll on Quoted Message / Shorten Text' (#469) from marcia_fixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #469
2022-06-10 23:43:09 +00:00
Sarah Jamie Lewis f848316db9 Fix bug preventing scrolling to unread messages
continuous-integration/drone/pr Build is pending Details
2022-06-10 15:42:54 -07:00
Sarah Jamie Lewis a5b253f185 Merge pull request 'reply_links' (#470) from reply_links into marcia_fixes
continuous-integration/drone/pr Build is pending Details
Reviewed-on: #470
2022-06-10 21:32:13 +00:00
Sarah Jamie Lewis e7c19c7477 Merge pull request 'show down button in messageview when ever scrolling up' (#471) from show_down into marcia_fixes
continuous-integration/drone/pr Build is pending Details
Reviewed-on: #471
2022-06-10 21:31:10 +00:00
Dan Ballard 59df024867 show down button in messageview when ever scrolling up 2022-06-10 14:28:16 -07:00
Sarah Jamie Lewis 65ff084952 make links in replies clickable
continuous-integration/drone/pr Build is pending Details
2022-06-10 14:21:40 -07:00
Sarah Jamie Lewis b3e11cfffd remove scroll controller from message view
continuous-integration/drone/pr Build is passing Details
2022-06-10 12:24:38 -07:00
Sarah Jamie Lewis 0c9be47e17 Click to scroll on Quoted Message / Shorten Text
continuous-integration/drone/pr Build is passing Details
2022-06-10 12:12:43 -07:00
Dan Ballard 3bb3a8736c Merge pull request 'Fix message view title padding in doublecol view' (#468) from marcia_fixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #468
2022-06-10 18:16:31 +00:00
Sarah Jamie Lewis 67850e8e4b Fix message view title padding in doublecol view
continuous-integration/drone/pr Build is passing Details
2022-06-10 10:40:39 -07:00
Dan Ballard c8e896fa51 Merge pull request 'Modal Menu UI Fixes' (#467) from marcia_fixes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #467
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-06-09 23:19:13 +00:00
Sarah Jamie Lewis d1e8f71290 fixes for profile buttons
continuous-integration/drone/pr Build is passing Details
2022-06-09 14:54:48 -07:00
Sarah Jamie Lewis be8646e805 fix padding
continuous-integration/drone/pr Build is pending Details
2022-06-09 14:30:38 -07:00
Sarah Jamie Lewis 6d42f2c76c make text bold and add additional padding to contacts modal
continuous-integration/drone/pr Build was killed Details
2022-06-09 14:28:24 -07:00
Sarah Jamie Lewis 8429907650 modal menus design fixes
continuous-integration/drone/pr Build is passing Details
2022-06-09 14:26:02 -07:00
Sarah Jamie Lewis c3848553d7 Bugfix when resizing app when menu is open 2022-06-09 13:49:38 -07:00
Sarah Jamie Lewis 3c85b8f59e Merge pull request 'Column-wise contact row (marcia feedback)' (#466) from marcia_fixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #466
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-06-09 20:43:10 +00:00
Sarah Jamie Lewis d0e7e6703b Different buttons
continuous-integration/drone/pr Build was killed Details
2022-06-09 13:40:42 -07:00
Sarah Jamie Lewis 2bc47173f9 more clear contact request
continuous-integration/drone/pr Build was killed Details
2022-06-09 13:36:59 -07:00
Sarah Jamie Lewis 15c68d8812 remove padding
continuous-integration/drone/pr Build was killed Details
2022-06-09 13:20:01 -07:00
Sarah Jamie Lewis e76f2883c6 Column-wise contact row (marcia feedback)
continuous-integration/drone/pr Build is passing Details
2022-06-09 13:10:27 -07:00
Dan Ballard 439b9b874f Merge pull request 'marcia settings fixes' (#462) from marcia_fixes into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #462
2022-05-31 23:31:27 +00:00
Sarah Jamie Lewis f5393cdb79 Merge branch 'trunk' into marcia_fixes
continuous-integration/drone/pr Build is passing Details
2022-05-31 23:19:49 +00:00
Sarah Jamie Lewis c0f1b674aa marcia settings fixes
continuous-integration/drone/pr Build was killed Details
2022-05-31 13:37:32 -07:00
Dan Ballard 630713a5e4 Merge pull request 'New Polish Translations' (#460) from pl_intl into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #460
2022-05-24 18:53:52 +00:00
Sarah Jamie Lewis d10a6df872 Merge branch 'trunk' into pl_intl
continuous-integration/drone/pr Build is passing Details
2022-05-24 18:16:16 +00:00
Sarah Jamie Lewis 2723a35d44 New Polish Translations
continuous-integration/drone/pr Build was killed Details
2022-05-24 11:14:42 -07:00
Dan Ballard 427081c937 Merge pull request 'Fix #457 + Formatting' (#459) from fix457 into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #459
2022-05-11 19:56:11 +00:00
Sarah Jamie Lewis 9d4abc3725 Fix #457 + Formatting
continuous-integration/drone/pr Build is passing Details
2022-05-11 12:44:24 -07:00
Sarah Jamie Lewis fa52b741bf Merge pull request 'v1.7.1 29' (#454) from pubspecBump into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #454
2022-05-02 22:12:25 +00:00
Dan Ballard fb86fb6eae v1.7.1 29
continuous-integration/drone/pr Build is pending Details
2022-05-02 15:07:55 -07:00
Sarah Jamie Lewis 8dd696b6ab Merge pull request 'dont start 'new messages' when convo selected' (#453) from cache3.0 into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #453
2022-05-01 17:32:16 +00:00
Dan Ballard 001ad854c7 dont start 'new messages' when convo selected
continuous-integration/drone/pr Build is passing Details
2022-04-30 14:43:45 -07:00
Dan Ballard af5fb678fc Merge pull request 'caching fixes for stability and android' (#450) from cache3.0 into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #450
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-29 23:37:20 +00:00
Dan Ballard ffa51e83a1 new message marker moved from id to index and now works on old messages
continuous-integration/drone/pr Build is passing Details
2022-04-29 16:07:52 -07:00
Dan Ballard 441845ed49 Merge pull request 'Fix maximum width of dropdown boxes in settings' (#452) from fix-settings into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #452
2022-04-29 17:50:18 +00:00
Sarah Jamie Lewis 0146436cb3 Fix maximum width of dropdown boxes in settings
continuous-integration/drone/pr Build is passing Details
2022-04-29 09:57:26 -07:00
Dan Ballard 0647a2d98d android pre load unsynced messages
continuous-integration/drone/pr Build is pending Details
2022-04-28 21:28:12 -07:00
Dan Ballard 0bcfe75a63 rework cache android resume based off message count totals, force pre fetch on load message list, tweak new messages bubble behaviour 2022-04-28 08:57:31 -07:00
Dan Ballard ecdcef2192 Merge pull request 'GetMessage* on android; make reply to use message cache; New Messages bubble doesn't reup' (#448) from replyFix into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #448
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-27 04:51:20 +00:00
Dan Ballard e6c9f7becb GetMessage* on android; make reply to use message cache; New Messages bubble doesn't reup
continuous-integration/drone/pr Build is passing Details
2022-04-26 21:34:16 -07:00
Sarah Jamie Lewis 9d8f73ac00 Merge pull request 'Format, Context Binding and Check if File Exists in File Bubble' (#447) from file-fixes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #447
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-04-26 19:38:28 +00:00
Sarah Jamie Lewis dc78117e1a Format, Context Binding and Check if File Exists in File Bubble
continuous-integration/drone/pr Build is passing Details
2022-04-26 12:16:48 -07:00
Dan Ballard 59e3220bce Merge pull request 'Debug Info Fix and Dependency Upgrades' (#433) from perf into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #433
2022-04-21 23:56:32 +00:00
Sarah Jamie Lewis 653ba199bc Merge branch 'trunk' into perf
continuous-integration/drone/pr Build is passing Details
2022-04-21 23:33:26 +00:00
Sarah Jamie Lewis 1b45205c48 Merge pull request 'nsis uninstall typo reg key' (#438) from winUninstall into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #438
2022-04-21 23:33:17 +00:00
Dan Ballard 85186b2565 nsis uninstall typo reg key
continuous-integration/drone/pr Build is pending Details
2022-04-21 16:32:22 -07:00
Sarah Jamie Lewis 3287fa79ff Merge branch 'trunk' into perf
continuous-integration/drone/pr Build is passing Details
2022-04-21 23:32:07 +00:00
Sarah Jamie Lewis 111d522484 Upgrade lcg to 1.7.1
continuous-integration/drone/pr Build is pending Details
2022-04-21 16:31:17 -07:00
Sarah Jamie Lewis 20c854bafb Update Translations 2022-04-21 16:14:03 -07:00
Dan Ballard ffdc7b3262 Merge pull request 'winUninstall' (#434) from winUninstall into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #434
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-21 18:40:31 +00:00
Dan Ballard a3d986d9d6 ffi on windows more options to detect tor; nsis installer warn about cwtch needing exiting
continuous-integration/drone/pr Build is passing Details
2022-04-20 18:20:44 -07:00
Sarah Jamie Lewis 5e3387ec8a Debug Info Fix an Dependency Upgrades
continuous-integration/drone/pr Build is passing Details
2022-04-20 17:28:38 -07:00
Dan Ballard a6c7682c84 nsis windows installer detect running, ask to not, abort 2022-04-20 14:25:36 -07:00
Dan Ballard b29836ed3b register uninstaller with windows add/remove programs 2022-04-20 12:26:28 -07:00
Sarah Jamie Lewis e0bf47b6ab Merge pull request 'a bunch of cache logic fixes and futher support for reconnect on android' (#431) from cachefixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #431
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-20 18:16:47 +00:00
Dan Ballard 4bd92d854f comments
continuous-integration/drone/pr Build is passing Details
2022-04-19 20:46:59 -07:00
Dan Ballard 82d1bf873f lcg bump 2022-04-19 20:46:59 -07:00
Dan Ballard 5959981fe4 a bunch of cache logic fixes and futher support for reconnect on android 2022-04-19 20:46:59 -07:00
Dan Ballard ab315e289a Merge pull request 'MainActivity return result to not leave dart calls hanging' (#432) from kotlinResult into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #432
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-20 03:36:20 +00:00
Dan Ballard 6392d67332 MainActivity return result to not leave dart calls hanging
continuous-integration/drone/pr Build is passing Details
2022-04-19 18:34:22 -07:00
Dan Ballard 8f0b73af2a Merge pull request 'fix linux notification icon (rever to old linux notification manager) and light theme fixes' (#429) from linuxNotif into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #429
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-15 01:02:30 +00:00
Dan Ballard 4e2f83ccd9 light theme fixes + message cache ! fix
continuous-integration/drone/pr Build is passing Details
2022-04-14 17:50:53 -07:00
Dan Ballard dc5ba7b392 readd linux notification manager so it handles notification icon in different linux style installs 2022-04-14 17:02:24 -07:00
Sarah Jamie Lewis 3595f5d8d1 Merge pull request 'Debug Info Pane for Desktop' (#428) from debuginfo into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #428
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-04-14 22:51:35 +00:00
Sarah Jamie Lewis 1df348c0c1 Debug Info Pane for Desktop
continuous-integration/drone/pr Build is passing Details
2022-04-14 15:34:36 -07:00
Sarah Jamie Lewis 548e7f4925 Merge pull request 'add android flag secure, pubspec vewrsion bump, and stubs for sdk31 hide overlay' (#427) from androidFlags into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #427
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-13 21:57:52 +00:00
Dan Ballard a20d2dffc4 add android flag secure, pubspec vewrsion bump, and stubs for sdk31 hide overlay
continuous-integration/drone/pr Build is passing Details
2022-04-13 14:53:44 -07:00
Dan Ballard 2a712565e9 Merge pull request 'andoird settings / request for power optimization exemption' (#426) from power into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #426
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-13 21:23:41 +00:00
Dan Ballard a94fd3547b add popup about disable battery unoptimized; fix mute policy loading
continuous-integration/drone/pr Build is passing Details
2022-04-13 14:09:33 -07:00
Dan Ballard c377a09748 add setting that reports / triggers android power optimization exemption 2022-04-13 12:57:15 -07:00
Dan Ballard d261fbd4c0 kotlin powermanagement info and exemption request 2022-04-13 12:53:32 -07:00
Dan Ballard 933ca74fbc Merge pull request 'Themeing Updates including Nicer Code Formatting' (#425) from theme-updates into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #425
2022-04-12 22:08:20 +00:00
Sarah Jamie Lewis 38f317194d Merge branch 'trunk' into theme-updates
continuous-integration/drone/pr Build is passing Details
2022-04-12 21:18:58 +00:00
Sarah Jamie Lewis a4ab2ec060 Themeing Updates including Nicer Code Formatting
continuous-integration/drone/pr Build is pending Details
2022-04-12 14:15:58 -07:00
Dan Ballard 47795094a0 Merge pull request 'Add Hook into Add Contact Flow to better Gauge Intent' (#424) from add_contact_hook into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #424
2022-04-12 19:27:18 +00:00
Sarah Jamie Lewis 0d1e7bb5a0 Add Hook into Add Contact Flow to better Gauge Intent
continuous-integration/drone/pr Build is passing Details
(This the future we can expand this, use this information to better guide people)
2022-04-12 12:15:39 -07:00
Sarah Jamie Lewis 987b80c92b Merge pull request 'Message Formatting Experiment Initial Commit' (#413) from message-formatting into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #413
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-04-06 22:15:44 +00:00
Sarah Jamie Lewis e718adad8a Add Roboto Fonts License
continuous-integration/drone/pr Build is passing Details
2022-04-06 15:04:17 -07:00
Sarah Jamie Lewis 0b9c159e85 Icon and Log Error
continuous-integration/drone/pr Build is pending Details
2022-04-06 14:54:53 -07:00
Sarah Jamie Lewis a4a2af08b4 Message Formatting Experiment Initial Commit
continuous-integration/drone/pr Build is passing Details
2022-04-06 14:36:34 -07:00
Sarah Jamie Lewis 471a729d46 Merge pull request 'port most gomobile FlwtchWorker calls to lcg to MainActivity; sendmessage sets lastSeen time' (#412) from mainActivityPort into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #412
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-06 19:01:40 +00:00
Dan Ballard 1cffea5c1a port most gomobile FlwtchWorker calls to lcg to MainActivity; sendmessage sets lastSeen time
continuous-integration/drone/pr Build is passing Details
2022-04-05 18:38:59 -07:00
Sarah Jamie Lewis e7c5b2cfa5 Merge pull request 'store last seen time in lcg and handle unread counts' (#411) from unreadSync into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #411
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-04-04 22:17:59 +00:00
Dan Ballard e08114881c store last seen time in lcg and handle unread counts
continuous-integration/drone/pr Build is passing Details
2022-04-04 15:02:37 -07:00
Sarah Jamie Lewis 6eaf95a33b Merge pull request 'only send message on Enter Up event' (#408) from androMessage into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #408
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-03-24 23:39:48 +00:00
Dan Ballard 0db68bcdbb Merge branch 'trunk' into androMessage
continuous-integration/drone/pr Build is passing Details
2022-03-24 23:37:31 +00:00
Dan Ballard f64559191b only send message on Enter Up event
continuous-integration/drone/pr Build is passing Details
2022-03-24 16:25:08 -07:00
Dan Ballard b8c1c7682b Merge pull request 'message cache allows index locking, rework messageHandler to use bulk fetching, sendMessage flow with no sleep; move some core getMessages/SendMessage handlers from FlwtchWorker to MainActivity' (#407) from androMessage into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #407
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-03-24 19:41:16 +00:00
Dan Ballard 9812111041 comments, organizing logic
continuous-integration/drone/pr Build is passing Details
2022-03-24 12:04:09 -07:00
Dan Ballard ecc9a3a48c comments, fix new messages marker logic
continuous-integration/drone/pr Build is passing Details
2022-03-23 18:02:26 -07:00
Dan Ballard 523531e6be new lcg version 2022-03-23 18:02:26 -07:00
Dan Ballard ff3e60a750 message cache allows index locking, rework messageHandler to use bulk fetching, sendMessage flow with no sleep; move some core getMessages/SendMessage handlers from FlwtchWorker to MainActivity 2022-03-23 18:01:43 -07:00
Dan Ballard 5a1c66bc25 Merge pull request 'Renable Network Status Updates, Display Status in Contacts View' (#406) from ns into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #406
2022-03-23 21:42:28 +00:00
Sarah Jamie Lewis 10780ac8cb Merge branch 'trunk' into ns
continuous-integration/drone/pr Build is passing Details
2022-03-23 21:24:14 +00:00
Sarah Jamie Lewis 0857d46809 Renable Network Status Updates, Display Status in Contacts View
continuous-integration/drone/pr Build is pending Details
2022-03-23 14:23:23 -07:00
Dan Ballard d7d3b2ef97 Merge pull request 'Fix: #344 - Folder Selection on Settings can be Opened Multiple times' (#402) from small_edits into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #402
2022-03-22 02:17:14 +00:00
Sarah Jamie Lewis 65d5e9777d Fix: 344 - Folder Selection on Settings can be Opened Multiple times
continuous-integration/drone/pr Build is passing Details
2022-03-21 10:49:53 -07:00
Dan Ballard 27f4c5f00e Merge pull request 'Localizations + Allow Editing when Contact is Offline' (#400) from small_edits into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #400
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-03-21 16:37:26 +00:00
Sarah Jamie Lewis f48b6af3dd Localizations + Allow Editing
continuous-integration/drone/pr Build is passing Details
2022-03-21 09:23:16 -07:00
Dan Ballard d8e19de5b1 Merge pull request 'Import and Export Profile' (#397) from import_export into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #397
2022-03-11 21:10:03 +00:00
Sarah Jamie Lewis af03dd30cc Upgrade libcwtch
continuous-integration/drone/pr Build is passing Details
2022-03-11 12:27:44 -08:00
Sarah Jamie Lewis 8a3867b5b3 Import / Export for Android 2022-03-11 12:26:23 -08:00
Sarah Jamie Lewis 6237032716 Import and Export Profile 2022-03-11 12:26:21 -08:00
Dan Ballard 915cf1a6d8 Merge pull request 'splash on shutdown; android stability: check if lcg started' (#399) from splashExit into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #399
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-03-11 00:45:45 +00:00
Dan Ballard c4ebed0a71 splash on shutdown; android stability: check if lcg started
continuous-integration/drone/pr Build is pending Details
2022-03-10 16:45:18 -08:00
Dan Ballard 3c71bb8184 Merge pull request 'Using build context instead of inherited context when building file bubble popout' (#395) from file_bubble_pop_fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #395
2022-03-08 19:08:12 +00:00
Sarah Jamie Lewis c3661d4caa Using build context instead of inherited context when building file bubble popout
continuous-integration/drone/pr Build is passing Details
Fix: #394
2022-03-08 10:56:20 -08:00
Sarah Jamie Lewis 62a99797ca Merge pull request 'assorted android and sync progress fixes' (#391) from state into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #391
2022-03-04 21:17:41 +00:00
Dan Ballard 7cfa9432c8 unbreak notifications on android ([Pp]ictures) + asset dup; fix sync progres resume logic
continuous-integration/drone/pr Build is pending Details
2022-03-04 13:15:08 -08:00
Dan Ballard 1d0cb785c1 fix android segfault in flwtch worker; try/catch to catch future bugs in flwtch worker; resume servers load sync status from cwtch; add bg color to sync progress bar; showdown now synchronous so completes 2022-03-04 13:15:08 -08:00
Dan Ballard 8eaa3974c9 Merge pull request 'Stop using key-based lookups for messages, use the message cache instead.' (#392) from message_row_fixes into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #392
2022-03-04 21:14:34 +00:00
Sarah Jamie Lewis 6cc5146744 Readd-widget key cache
continuous-integration/drone/pr Build is passing Details
2022-03-04 12:14:43 -08:00
Sarah Jamie Lewis 1fea540f9d Stop using key-based lookups for messages, use the message cache instead.
Always update alignment to allow for message row objects to be reused
2022-03-04 12:14:43 -08:00
Dan Ballard 7457246a01 Merge pull request 'Finish up Danish translation' (#390) from da into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #390
2022-03-03 18:52:02 +00:00
Sarah Jamie Lewis 0a26a1899b Finidh up Danish translation
continuous-integration/drone/pr Build is passing Details
2022-03-03 10:19:42 -08:00
Sarah Jamie Lewis 8183fbd987 Merge pull request 'danish-localization' (#388) from christofal/cwtch-ui:danish-localization into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #388
2022-03-03 17:57:12 +00:00
Sarah Jamie Lewis f3f5f65e22 Merge branch 'trunk' into danish-localization
continuous-integration/drone/pr Build is pending Details
2022-03-03 17:56:26 +00:00
Dan Ballard c565089578 Merge pull request 'Spanish and Welsh complete' (#387) from es into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #387
2022-03-02 23:04:32 +00:00
Sarah Jamie Lewis 009f99e0f5 Merge branch 'trunk' into es
continuous-integration/drone/pr Build is pending Details
2022-03-02 23:01:35 +00:00
Sarah Jamie Lewis 0894fc577b Spanish and Welsh complete
continuous-integration/drone/pr Build is pending Details
2022-03-02 15:00:34 -08:00
Dan Ballard b0977b31a5 Merge pull request 'Support Welsh, Update Translations for other Languages' (#385) from cy into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #385
2022-03-02 19:31:46 +00:00
Sarah Jamie Lewis 6df922d64e Merge branch 'trunk' into cy
continuous-integration/drone/pr Build is passing Details
2022-03-02 19:29:54 +00:00
Sarah Jamie Lewis b70de4052d Support Welsh, Update Translations for other Languages
continuous-integration/drone/pr Build is pending Details
2022-03-02 11:28:43 -08:00
Allan Christoffersen 453558f034 Full Danish localization
continuous-integration/drone/pr Build is pending Details
2022-03-02 15:32:47 +01:00
Allan Christoffersen 481890b55f Initial commit of Danish localization 2022-03-02 14:30:53 +01:00
Dan Ballard 7122db0388 Merge pull request 'Move messageDate format handling to MessageBubbleDecoration' (#384) from messagedate into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #384
2022-03-01 17:39:23 +00:00
Sarah Jamie Lewis c56f40c090 Merge branch 'trunk' into messagedate
continuous-integration/drone/pr Build is passing Details
2022-03-01 06:36:51 +00:00
Sarah Jamie Lewis c4c693144d Move messageDate format handling to MessageBubbleDecoration
continuous-integration/drone/pr Build is pending Details
2022-02-28 22:35:09 -08:00
Dan Ballard 891bf51a70 Merge pull request 'harmonize translations from lokalize' (#383) from i18n into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #383
2022-03-01 00:02:33 +00:00
Sarah Jamie Lewis a559b0caf8 Update No with clobbered
continuous-integration/drone/pr Build is pending Details
2022-02-28 16:01:10 -08:00
Sarah Jamie Lewis 054e5fca84 harmonize translations from lokalize
continuous-integration/drone/pr Build is passing Details
2022-02-28 15:43:33 -08:00
Dan Ballard 6b5f4febe7 Merge pull request 'Full Norwegian Translation' (#382) from no into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #382
2022-02-28 23:39:23 +00:00
Sarah Jamie Lewis 2c55f78913 Small updates
continuous-integration/drone/pr Build is running Details
2022-02-28 15:19:25 -08:00
Henrik Austad f1cfd2c30f Norwegian localization 2022-02-28 15:18:39 -08:00
Sarah Jamie Lewis b36e76b818 remove norwya to add better 2022-02-28 15:18:21 -08:00
Dan Ballard 2aadea0cea Merge pull request 'Complete German Translation.' (#381) from de into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #381
2022-02-28 20:49:44 +00:00
Dan Ballard 423a2bce5e Merge branch 'trunk' into de
continuous-integration/drone/pr Build is pending Details
2022-02-28 20:49:23 +00:00
Dan Ballard eef40f76f9 Merge pull request 'Add support for many prospective new languages' (#380) from lb into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #380
2022-02-28 20:49:04 +00:00
Sarah Jamie Lewis 385f86be02 Complete German Translation
continuous-integration/drone/pr Build is passing Details
2022-02-28 12:29:20 -08:00
Sarah Jamie Lewis 193a9d6f89 Add support for many prospective new languages
continuous-integration/drone/pr Build is passing Details
2022-02-28 12:05:22 -08:00
Dan Ballard 2ade7e8e4f Merge pull request 'Initial support for Romanian localization' (#379) from ro into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #379
2022-02-27 20:04:50 +00:00
Sarah Jamie Lewis 12a0fc1059 Update French
continuous-integration/drone/pr Build is pending Details
2022-02-27 12:02:17 -08:00
Sarah Jamie Lewis 82542664ad Merge branch 'trunk' into ro
continuous-integration/drone/pr Build is passing Details
2022-02-27 19:37:49 +00:00
Sarah Jamie Lewis 670d8bc343 Initial support for Romanian localization
continuous-integration/drone/pr Build is pending Details
2022-02-27 11:36:51 -08:00
Dan Ballard ce1db17148 Merge pull request 'WIP make NixNotificationManager using flutter_local_notification' (#375) from macNotifications into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #375
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-02-24 00:22:06 +00:00
Dan Ballard 018a51b76e Merge branch 'macNotifications' of git.openprivacy.ca:cwtch.im/cwtch-ui into macNotifications
continuous-integration/drone/pr Build is pending Details
2022-02-23 16:21:50 -08:00
Dan Ballard 61cdb37226 lcg bump 2022-02-23 16:21:42 -08:00
Dan Ballard 5b4778dd78 Merge branch 'trunk' into macNotifications
continuous-integration/drone/pr Build is passing Details
2022-02-23 19:33:29 +00:00
Dan Ballard 152f5fbc96 garuntee no notifications while using app for nix
continuous-integration/drone/pr Build is passing Details
2022-02-23 11:27:15 -08:00
Dan Ballard 5e7272b15a nix notification manager only use title, body is unsafe
continuous-integration/drone/pr Build is pending Details
2022-02-23 11:13:03 -08:00
Dan Ballard 9473acd438 Merge pull request 'Add Message Status Widget to File Bubble' (#376) from fix297 into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #376
2022-02-22 20:49:34 +00:00
Sarah Jamie Lewis 4fd8075497 Merge branch 'trunk' into fix297
continuous-integration/drone/pr Build is passing Details
2022-02-22 19:14:25 +00:00
Sarah Jamie Lewis 70eb160abc Add Message Status Widget to File Bubble
continuous-integration/drone/pr Build is pending Details
Also fix bug in peer settings
2022-02-22 11:09:44 -08:00
Dan Ballard 1a4dccf44a disable sound until we make it a setting
continuous-integration/drone/pr Build is pending Details
2022-02-20 09:53:15 -08:00
Dan Ballard 7509c20a62 make NixNotificationManager using flutter_local_notification
continuous-integration/drone/pr Build is passing Details
2022-02-18 15:50:34 -08:00
Dan Ballard 68c2e1547a Merge pull request 'Check WorkInfo is not Null' (#374) from cwtch1.6.1-fixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #374
2022-02-16 23:58:45 +00:00
Sarah Jamie Lewis 705b6e02c9 Fix overlap in debug settings
continuous-integration/drone/pr Build is passing Details
2022-02-16 13:49:29 -08:00
Sarah Jamie Lewis 137de57e83 Check WorkInfo is Null
continuous-integration/drone/pr Build is passing Details
This shouldn't happen in normal use, but can happen in debug builds
2022-02-16 13:44:32 -08:00
Dan Ballard 6859780873 Merge pull request 'cwtch1.6.1-fixes' (#373) from cwtch1.6.1-fixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #373
2022-02-16 18:34:44 +00:00
Sarah Jamie Lewis dab09c6acb Fix #314 - Numpad enter should send message
continuous-integration/drone/pr Build is passing Details
2022-02-14 12:20:25 -08:00
Sarah Jamie Lewis 7bf2e15009 Formatting
continuous-integration/drone/pr Build is passing Details
2022-02-14 11:03:28 -08:00
Sarah Jamie Lewis a0f8be2d53 Bump Android Version 2022-02-14 11:02:19 -08:00
Sarah Jamie Lewis 02407c5abe Fix #371
Fix #368
Fix #16
2022-02-14 11:01:58 -08:00
Sarah Jamie Lewis 635e383f65 Merge pull request 'pubspec version bump for android' (#369) from ps160 into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #369
2022-02-11 18:59:16 +00:00
Dan Ballard 1ec9be3d9a pubspec version bump for android
continuous-integration/drone/pr Build is pending Details
2022-02-11 13:57:25 -05:00
Sarah Jamie Lewis fd886e7315 Merge pull request 'libcwtch go 1.6.0' (#367) from lcg160 into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #367
2022-02-10 21:18:14 +00:00
Dan Ballard 387816ea0f libcwtch go 1.6.0
continuous-integration/drone/pr Build is passing Details
2022-02-10 15:58:09 -05:00
Dan Ballard 3cb6c9d9f4 Merge pull request 'Allow cwtch: prefix' (#366) from cwtch_prefix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #366
2022-02-09 22:37:27 +00:00
Sarah Jamie Lewis f1688c5f8f upgrade lcg
continuous-integration/drone/pr Build is pending Details
2022-02-09 14:30:41 -08:00
Sarah Jamie Lewis d5296d2211 Merge branch 'trunk' into cwtch_prefix
continuous-integration/drone/pr Build is passing Details
2022-02-09 21:59:31 +00:00
Sarah Jamie Lewis 953971980f Allow cwtch: prefix
continuous-integration/drone/pr Build is pending Details
2022-02-09 13:58:40 -08:00
Sarah Jamie Lewis 7e59d1a526 Merge pull request 'mac lcg' (#360) from maclcg into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #360
2022-02-09 02:42:28 +00:00
Dan Ballard 783d666486 mac lcg
continuous-integration/drone/pr Build is pending Details
2022-02-08 21:41:19 -05:00
Dan Ballard 040ba80480 Merge pull request 'notificationSettings' (#354) from notificationSettings into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #354
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-02-08 23:21:28 +00:00
Dan Ballard 8ba54469eb comment/format fix
continuous-integration/drone/pr Build is pending Details
2022-02-08 18:21:06 -05:00
Dan Ballard 706d1da518 new lcg version
continuous-integration/drone/pr Build is passing Details
2022-02-08 17:50:32 -05:00
Dan Ballard b5511ae723 Merge branch 'trunk' into notificationSettings
continuous-integration/drone/pr Build is passing Details
2022-02-08 17:11:29 -05:00
Dan Ballard 4c47198977 notification policy work, translations, even for notifications
continuous-integration/drone/pr Build is pending Details
2022-02-08 17:07:39 -05:00
erinn 9a17852533 Merge pull request 'Add Profile Image Preview to Peer Settings + other UI Profile Image Fixups' (#359) from custom_profile_fixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #359
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-02-08 22:07:32 +00:00
Sarah Jamie Lewis 2a07ba8ed7 revert message row image size change
continuous-integration/drone/pr Build is pending Details
2022-02-08 14:05:23 -08:00
Sarah Jamie Lewis 2e5ee796fa Add Profile Image Preview to Peer Settings + other UI Profile Image Fixups 2022-02-08 14:05:09 -08:00
Dan Ballard d1d3f23f82 android notification policy/content 2022-02-08 12:35:25 -05:00
Dan Ballard fa6e399aab android work 2022-02-08 11:44:00 -05:00
Dan Ballard ddefcb8ff2 rejig notification policy globally and conversationally 2022-02-08 11:40:15 -05:00
Dan Ballard b382c3d349 desktop support for notification settings 2022-02-08 11:34:05 -05:00
Dan Ballard c550437aa5 settings pane headers, and notification settings options 2022-02-08 11:34:05 -05:00
erinn e6246cf44a Merge pull request 'Update Goldens' (#358) from custom_profile_images into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #358
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-02-07 23:38:50 +00:00
Sarah Jamie Lewis d71574a831 Merge branch 'trunk' into custom_profile_images
continuous-integration/drone/pr Build is pending Details
2022-02-07 23:35:43 +00:00
Sarah Jamie Lewis 62bca86c19 Update Goldens
continuous-integration/drone/pr Build is pending Details
2022-02-07 15:35:01 -08:00
erinn 729ff6811e Merge pull request 'Profile Images' (#355) from custom_profile_images into trunk
continuous-integration/drone/push Build was killed Details
Reviewed-on: #355
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-02-07 23:16:46 +00:00
Sarah Jamie Lewis bf4cfde7df Fixup Context Listen
continuous-integration/drone/pr Build is pending Details
2022-02-07 15:16:02 -08:00
Sarah Jamie Lewis 403454d6b8 Add Edit Badge
continuous-integration/drone/pr Build is pending Details
2022-02-07 15:12:36 -08:00
Sarah Jamie Lewis d902ba5cce Rename Constant
continuous-integration/drone/pr Build is pending Details
2022-02-07 14:59:09 -08:00
Sarah Jamie Lewis 5b5fe586e8 Update Lib Cwtch, Allow Deleting P2P contacts, Formatting
continuous-integration/drone/pr Build is passing Details
2022-02-07 14:53:33 -08:00
Sarah Jamie Lewis b280765631 Fallback to Default Profile Images when Image Previews are Disabled 2022-02-07 14:26:14 -08:00
Sarah Jamie Lewis 2a2d808b60 Disable image previews when file sharing is disables
continuous-integration/drone/pr Build is pending Details
2022-02-07 12:23:26 -08:00
Sarah Jamie Lewis d158d7d619 Select Profile Image tooltip + restrict selection only when image previews are enabled 2022-02-07 12:20:54 -08:00
Sarah Jamie Lewis c6192ef736 Factor out showFilePicker into a generic controller
continuous-integration/drone/pr Build is passing Details
2022-02-07 11:30:17 -08:00
Sarah Jamie Lewis 3d85883f8e Profile Images
continuous-integration/drone/pr Build is pending Details
2022-02-04 16:57:31 -08:00
erinn e22db92dc1 add gherkin tests (#353)
continuous-integration/drone/push Build is pending Details
* not all tests are complete
* language and theme tests fail due to upstream issue with dropdown boxes
* not yet autorun or reported by drone

Co-authored-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
Reviewed-on: #353
Co-authored-by: erinn <erinn@openprivacy.ca>
Co-committed-by: erinn <erinn@openprivacy.ca>
2022-02-05 00:37:25 +00:00
Sarah Jamie Lewis dd69afc98b Merge pull request 'profile level unread notifications and in profile other profile unread notifications' (#337) from profileNotify into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #337
2022-02-04 02:01:35 +00:00
Sarah Jamie Lewis ab9d6929be Merge branch 'trunk' into profileNotify
continuous-integration/drone/pr Build is pending Details
2022-02-04 02:01:30 +00:00
Sarah Jamie Lewis cd4c778b71 Merge pull request 'windows notifications: switch from desktoats to win_toats' (#350) from wintoasts into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #350
2022-02-04 02:01:22 +00:00
Dan Ballard 19a202a04c formating, and moving active=true up to be better
continuous-integration/drone/pr Build is passing Details
2022-02-03 13:58:51 -08:00
Dan Ballard be65417f27 new plugin generated code
continuous-integration/drone/pr Build is passing Details
2022-02-03 08:43:29 -05:00
Dan Ballard 8a9ee402bf recalculate unrad count incases some not read 2022-02-03 08:43:02 -05:00
Dan Ballard 1a9f0763d7 update goldens with new profile unread widgetry
continuous-integration/drone/pr Build is pending Details
2022-02-02 19:20:28 -05:00
Dan Ballard a82ade8663 profile level unread notifications and in profile other profile unread notifications 2022-02-02 19:20:28 -05:00
Dan Ballard 715b2c6876 windows notifications: switch from desktoats to win_toats
continuous-integration/drone/pr Build is passing Details
2022-02-02 12:27:42 -08:00
Dan Ballard ca03ddbc53 Merge pull request 'calculate server progress based on last message, nowtime, and message flow; display progress on group contact and remote server' (#340) from serverProgress into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #340
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-02-02 18:05:49 +00:00
Dan Ballard 0853832a38 Merge branch 'trunk' into serverProgress 2022-02-02 18:05:40 +00:00
Dan Ballard f818d4f2f8 remove syncProgress from contact and wire contact row to search server's list
continuous-integration/drone/pr Build is passing Details
2022-01-27 18:41:17 -05:00
Sarah Jamie Lewis 6814515186 Merge pull request 'Fixup Length Display so it counts Bytes not Chars' (#346) from fastercwtch into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #346
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-01-27 21:11:38 +00:00
Sarah Jamie Lewis d84850af49 Fixup Length Display so it counts Bytes not Chars
continuous-integration/drone/pr Build is passing Details
2022-01-27 13:02:18 -08:00
Dan Ballard a4ce168aec calculate server progress based on last message, nowtime, and message flow; display progress on group contact and remote server
continuous-integration/drone/pr Build is passing Details
2022-01-26 20:17:13 -05:00
Sarah Jamie Lewis 2bff77983b Merge pull request 'add window_manager plug in to get desktop active state to gate windows notifications; also add spam prevention to windows notifications' (#338) from winFocus into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #338
2022-01-26 21:41:37 +00:00
Sarah Jamie Lewis 35ae5773f7 Merge branch 'trunk' into winFocus
continuous-integration/drone/pr Build is pending Details
2022-01-26 21:41:30 +00:00
Sarah Jamie Lewis 6276b022dc Merge pull request 'Upgrade Cwtch and Display Message Limits' (#339) from fastercwtch into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #339
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
2022-01-26 20:48:22 +00:00
Sarah Jamie Lewis 5c76628578 Upgrade Cwtch and Display Message Limits
continuous-integration/drone/pr Build is failing Details
2022-01-26 12:28:50 -08:00
Dan Ballard dc587f95f0 remove prints, add comments
continuous-integration/drone/pr Build is passing Details
2022-01-26 08:48:35 -08:00
Dan Ballard 04cf1e16c2 pubspec for windows_manager
continuous-integration/drone/pr Build is failing Details
2022-01-26 08:42:25 -08:00
Dan Ballard d96e251650 Merge branch 'trunk' into winFocus
continuous-integration/drone/pr Build is failing Details
2022-01-26 16:34:25 +00:00
Dan Ballard c3bc961a47 add window_manager plug in to get desktop active state to gate windows notifications; also add spam prevention to windows notifications
continuous-integration/drone/pr Build is failing Details
2022-01-26 08:31:07 -08:00
Sarah Jamie Lewis c672574bb2 Merge pull request 'add desktoasts windows notifications' (#336) from winNotify into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #336
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-01-25 22:56:20 +00:00
Sarah Jamie Lewis 05f3cacdbd Merge branch 'trunk' into winNotify
continuous-integration/drone/pr Build is pending Details
2022-01-25 22:56:03 +00:00
Sarah Jamie Lewis 2e3d02bbe9 Merge pull request 'bump to tor 0.4.6.9' (#332) from androTor into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #332
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-01-25 22:55:57 +00:00
Dan Ballard 23b6eddf6a bump windows tor
continuous-integration/drone/pr Build is passing Details
2022-01-25 10:52:18 -05:00
Dan Ballard c838176e3b add desktoasts windows notifications
continuous-integration/drone/pr Build is passing Details
2022-01-25 04:03:05 -08:00
Dan Ballard a9d272e414 bump android or to 0.4.6.9
continuous-integration/drone/pr Build is passing Details
2022-01-21 18:48:34 -05:00
Dan Ballard 598251a624 Merge pull request 'Fix #330 - Multiple file browser windows are opened.' (#331) from sender_size into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #331
2022-01-21 21:42:41 +00:00
Sarah Jamie Lewis def222a8ab upgrade flutter file picker
continuous-integration/drone/pr Build is passing Details
2022-01-21 13:40:23 -08:00
Sarah Jamie Lewis 748326e13f Fix #330 - Multiple file browser windows are opened.
continuous-integration/drone/pr Build is passing Details
2022-01-21 13:19:00 -08:00
erinn 508592f80c Merge pull request 'Only override path for Sender, not any other attributes.' (#329) from sender_size into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #329
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-01-21 20:12:54 +00:00
Sarah Jamie Lewis d27cc0e64e More notify listeners
continuous-integration/drone/pr Build is pending Details
2022-01-21 12:09:58 -08:00
Sarah Jamie Lewis e359afbdab notify listeners
continuous-integration/drone/pr Build is pending Details
2022-01-21 12:08:23 -08:00
Sarah Jamie Lewis 92374ad112 Only override path for Sender, not any other attributes.
continuous-integration/drone/pr Build is passing Details
For auto-downloads both the sender and receiver set the path before
the UI can set download state. As such we need to be careful about how
we let the sender know about the filekey/path.
2022-01-21 10:16:30 -08:00
erinn 0a3837c8b5 Merge pull request 'Clean up sender side image preview' (#328) from sender_size into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #328
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-01-20 22:55:20 +00:00
Sarah Jamie Lewis 19777afb79 Merge branch 'trunk' into sender_size
continuous-integration/drone/pr Build is passing Details
2022-01-20 22:53:03 +00:00
Sarah Jamie Lewis 9931521910 Clean up sender side image preview
continuous-integration/drone/pr Build is pending Details
2022-01-20 14:52:31 -08:00
erinn 7dcc1c863a Merge pull request 'Enable Sender Side Image Previews' (#327) from sender_size into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #327
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-01-20 22:44:19 +00:00
Sarah Jamie Lewis 13c1a52442 Only allow path override for senders
continuous-integration/drone/pr Build is pending Details
2022-01-20 14:42:45 -08:00
Sarah Jamie Lewis 6364ebffc6 Update lcg
continuous-integration/drone/pr Build is passing Details
2022-01-20 14:32:35 -08:00
Sarah Jamie Lewis d095971cb3 Sender side previews - fixing up PR comments
continuous-integration/drone/pr Build is pending Details
2022-01-20 14:19:06 -08:00
Sarah Jamie Lewis 797279d6d7 Enable Sender Side Image Previews
continuous-integration/drone/pr Build is pending Details
2022-01-20 14:00:15 -08:00
Sarah Jamie Lewis d0fecbd545 Merge pull request 'message caching' (#326) from cache into trunk
continuous-integration/drone/push Build is pending Details
Reviewed-on: #326
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-01-20 21:22:50 +00:00
Dan Ballard ccdd7d0e27 remove byType bools and replace with interface and structs for type safety
continuous-integration/drone/pr Build is passing Details
2022-01-20 15:58:14 -05:00
Dan Ballard 889d398343 add notifyListen to newMessage in contact; format
continuous-integration/drone/pr Build is pending Details
2022-01-20 13:37:09 -05:00
Dan Ballard 589bc4c36c new lcg; cleanup
continuous-integration/drone/pr Build is passing Details
2022-01-20 13:05:11 -05:00
Dan Ballard 793b6e2e1a message cache expansion: stores all messages fetched, indexed by hash and id where possible
continuous-integration/drone/pr Build is pending Details
2022-01-20 09:24:06 -05:00
Dan Ballard d5cb37ed9c stub of new cache 2022-01-20 09:24:06 -05:00
Dan Ballard e7b9f5bb96 move all classes in model.dart to their own models/X.dart 2022-01-20 09:24:06 -05:00
Dan Ballard 5e8f712a90 Merge pull request 'Fixup Widths on Small Screens' (#323) from torcache into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #323
2022-01-19 22:23:46 +00:00
Sarah Jamie Lewis 2495814869 Fixup Widths on Small Screens
continuous-integration/drone/pr Build is passing Details
2022-01-19 14:09:19 -08:00
Dan Ballard 08b9dfed5f Merge pull request 'Formatting' (#322) from torcache into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #322
2022-01-19 22:01:26 +00:00
Sarah Jamie Lewis 19f73eb075 Formatting
continuous-integration/drone/pr Build is passing Details
2022-01-19 13:59:04 -08:00
Dan Ballard 0fe6f21a75 Merge pull request 'Update lcg' (#320) from torcache into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #320
2022-01-19 21:30:25 +00:00
Sarah Jamie Lewis 52e22c085f Update lcg
continuous-integration/drone/pr Build is pending Details
2022-01-19 13:29:13 -08:00
Sarah Jamie Lewis 47348f3ad7 Merge pull request 'move all classes in model.dart to their own models/X.dart' (#317) from models into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #317
Reviewed-by: Sarah Jamie Lewis <sarah@openprivacy.ca>
2022-01-19 20:35:26 +00:00
Dan Ballard 706c1fb354 move all classes in model.dart to their own models/X.dart
continuous-integration/drone/pr Build is passing Details
2022-01-18 18:32:00 -05:00
erinn e99fc45a28 Merge pull request 'Allow Tor Caching + Our Own Linkify' (#316) from torcache into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #316
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-01-18 23:06:25 +00:00
Sarah Jamie Lewis ca44fd798c Show tooltip for links
continuous-integration/drone/pr Build is pending Details
2022-01-18 15:03:54 -08:00
Sarah Jamie Lewis 1700306c78 Link to specific commit hashes
continuous-integration/drone/pr Build is passing Details
2022-01-18 14:48:18 -08:00
Sarah Jamie Lewis da3234e3e4 Formatting
continuous-integration/drone/pr Build is pending Details
2022-01-18 14:44:19 -08:00
Sarah Jamie Lewis 303b70d751 Fixup displayed link + add linkify to licenses.dart
continuous-integration/drone/pr Build is pending Details
2022-01-18 14:43:49 -08:00
Sarah Jamie Lewis cd1bf07fba Responding to @errorinn PR Comments
continuous-integration/drone/pr Build is pending Details
2022-01-18 14:32:45 -08:00
Sarah Jamie Lewis b3f06d6765 Update lcg
continuous-integration/drone/pr Build is passing Details
2022-01-18 13:47:47 -08:00
Sarah Jamie Lewis c6e64a3a5f Allow Tor Caching + Our Own Linkify
continuous-integration/drone/pr Build is pending Details
2022-01-18 13:17:52 -08:00
erinn 9d10b9ea8d Merge pull request 'Tor Circuit Info Display for P2P + Many Minor UI Fixups.' (#304) from getinfo into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #304
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-01-17 23:05:11 +00:00
Sarah Jamie Lewis 7257e2bca0 Update Goldens
continuous-integration/drone/pr Build is passing Details
2022-01-17 14:55:37 -08:00
Sarah Jamie Lewis 5494cb5de0 Upgrade LibCwtch-Go
continuous-integration/drone/pr Build is failing Details
2022-01-17 14:52:15 -08:00
Sarah Jamie Lewis d6ecf87255 PR Fixups
continuous-integration/drone/pr Build is pending Details
2022-01-17 12:29:13 -08:00
Sarah Jamie Lewis ae6f0dd456 Update Translations + notifylisteners 2022-01-17 12:24:48 -08:00
Sarah Jamie Lewis ed671d32bc Padding / Margin Changes + Tor Circuit Info
continuous-integration/drone/pr Build is failing Details
2022-01-14 14:24:41 -08:00
Sarah Jamie Lewis daa89bf6e7 Add Circuit Info To Peer Settings 2022-01-14 14:24:41 -08:00
erinn 24787adc9c Merge pull request 'android-fix' (#302) from android-fix into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #302
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-01-13 00:55:20 +00:00
Sarah Jamie Lewis a3e2da8469 update text field golden
continuous-integration/drone/pr Build is passing Details
2022-01-12 16:05:58 -08:00
Sarah Jamie Lewis 9d3d5b06e5 Upgrade Android Dependencies. Remove references to jCenter
continuous-integration/drone/pr Build is running Details
2022-01-12 15:54:07 -08:00
Sarah Jamie Lewis bee3ae6e7b Fix Debug Layout Issue in AddContact
continuous-integration/drone/pr Build is failing Details
2022-01-12 15:28:51 -08:00
erinn 1bd2195be4 Merge pull request 'Support Custom Tor Configuration' (#300) from custom_tor_config into trunk
continuous-integration/drone/push Build is failing Details
Reviewed-on: #300
Reviewed-by: erinn <erinn@openprivacy.ca>
2022-01-12 23:19:15 +00:00
382 changed files with 29118 additions and 5890 deletions

View File

@ -8,7 +8,7 @@ clone:
steps:
- name: clone
image: cirrusci/flutter:2.8.0
image: openpriv/flutter-desktop:linux-fstable-3.19.3
environment:
buildbot_key_b64:
from_secret: buildbot_key_b64
@ -24,14 +24,14 @@ steps:
- git checkout $DRONE_COMMIT
- name: fetch
image: cirrusci/flutter:2.8.0
image: openpriv/flutter-desktop:linux-fstable-3.19.3
volumes:
- name: deps
path: /root/.pub-cache
commands:
- ./fetch-tor.sh
- echo `git describe --tags --abbrev=1` > VERSION
- echo `date +%G-%m-%d-%H-%M` > BUILDDATE
- echo `git log -1 --format=%cd --date=format:%G-%m-%d-%H-%M` > COMMIT_DATE
- flutter pub get
- mkdir deploy
- ./fetch-libcwtch-go.sh
@ -47,21 +47,46 @@ steps:
# #Todo: fix all the lint errors and add `-set_exit_status` above to enforce linting
- name: build-linux
image: openpriv/flutter-desktop:linux-fstable-2.8.0
image: openpriv/flutter-desktop:linux-fstable-3.19.3
volumes:
- name: deps
path: /root/.pub-cache
commands:
- flutter build linux --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
- flutter build linux --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
- linux/package-release.sh
- mkdir -p deploy/cwtch
- mkdir -p deploy/deb/cwtch/usr
- mkdir -p deploy/deb/cwtch/DEBIAN
- export VERSION=`cat VERSION | tr -d 'v'`
- sed "s|VERSION|$VERSION|g" linux/deb/control > deploy/deb/cwtch/DEBIAN/control
- cp -r build/linux/x64/release/bundle/* deploy/cwtch
- cd deploy
- tar -czf cwtch-`cat ../VERSION`.tar.gz cwtch
- cd cwtch
- INSTALL_PREFIX=./../deb/cwtch/usr DESKTOP_PREFIX=/usr/ ./install.sh
- cd ..
# we depend on tor, get it from the tor project apt repo
- rm -r deb/cwtch/usr/lib/cwtch/Tor
# Tar archives need a few tricks to make this deterministic, see https://reproducible-builds.org/docs/archives/
- tar --sort=name --mtime=`cat COMMIT_DATE` --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime -czf cwtch-`cat ../VERSION`.tar.gz cwtch
- rm -r cwtch
- cd deb
- dpkg-deb --build cwtch
- cd ..
- mv deb/cwtch.deb cwtch-$VERSION.deb
- rm -r deb
- name: linux-ui-tests
image: openpriv/flutter-desktop:linux-fstable-3.19.3
volumes:
- name: deps
path: /root/.pub-cache
commands:
# Run 01_general, 01_tor, 02_global_settings, and 04_profile_mgmt features...
- ./run-tests-headless.sh "01_general|01_tor|02_global_settings|04_profile_mgmt"
- name: test-build-android
image: cirrusci/flutter:2.8.0
image: openpriv/flutter-desktop:linux-fstable-3.19.3
when:
event: pull_request
volumes:
@ -71,7 +96,7 @@ steps:
- flutter build apk --debug
- name: build-android
image: cirrusci/flutter:2.8.0
image: openpriv/flutter-desktop:linux-fstable-3.19.3
when:
event: push
environment:
@ -86,16 +111,16 @@ steps:
- echo $upload_jks_file_b64 > upload-keystore.jks.b64
- base64 -i --decode upload-keystore.jks.b64 > android/app/upload-keystore.jks
- sed -i "s/%jks-password%/$upload_jks_pass/g" android/key.properties
- flutter build appbundle --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
- flutter build appbundle --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
# cant do debug for final release, this is just a stop gap
- flutter build apk --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
- flutter build apk --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
# or build apk --split-per-abi ?
- cp build/app/outputs/bundle/release/app-release.aab deploy/
- cp build/app/outputs/apk/release/app-release.apk deploy/
- cp build/app/outputs/bundle/release/app-release.aab deploy/cwtch-`cat VERSION`.aab
- cp build/app/outputs/apk/release/app-release.apk deploy/cwtch-`cat VERSION`.apk
#- cp build/app/outputs/flutter-apk/app-debug.apk deploy/android
- name: widget-tests
image: cirrusci/flutter:2.8.0
image: openpriv/flutter-desktop:linux-fstable-3.19.3
volumes:
- name: deps
path: /root/.pub-cache
@ -104,6 +129,21 @@ steps:
- flutter test --coverage
- genhtml coverage/lcov.info -o coverage/html
- name: upload-nightlies
image: openpriv/flutter-desktop:linux-fstable-3.19.3
environment:
GOGS_ACCOUNT_TOKEN:
from_secret: gogs_account_token
secrets: [gogs_account_token]
volumes:
- name: deps
path: /root/.pub-cache
when:
event: push
status: [ success ]
commands:
- ./upload-releases.sh deploy/cwtch-`cat VERSION`.apk application/vnd.android.package-archive cwtch-`cat VERSION`.apk
- name: deploy-buildfiles
image: kroniak/ssh-client
pull: if-not-exists
@ -118,26 +158,17 @@ steps:
- echo $BUILDFILES_KEY > ~/id_rsab64
- base64 -d ~/id_rsab64 > ~/id_rsa
- chmod 400 ~/id_rsa
- export DIR=flwtch-`cat BUILDDATE`-`cat VERSION`
- export DIR=flwtch-`cat COMMIT_DATE`-`cat VERSION`
- mv deploy $DIR
- cp -r coverage/html $DIR/coverage-tests
- cp -r test/failures $DIR/test-failures || true
- cd $DIR
- find . -type f -exec sha256sum {} \; > ./../sha256s.txt
- mv ./../sha256s.txt .
- find . -type f -exec sha512sum {} \; > ./../sha512s.txt
- mv ./../sha512s.txt .
- cd ..
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
- name: notify-email
image: drillster/drone-email
pull: if-not-exists
settings:
host: build.openprivacy.ca
port: 25
skip_verify: true
from: drone@openprivacy.ca
when:
status: [ failure ]
- ./gen-nightly-index.sh $DIR
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa cwtch-nightly.html buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
- name: notify-gogs
image: openpriv/drone-gogs
@ -177,7 +208,7 @@ clone:
steps:
- name: clone
image: openpriv/flutter-desktop:windows-sdk30-fstable-2.8.1
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
environment:
buildbot_key_b64:
from_secret: buildbot_key_b64
@ -195,29 +226,28 @@ steps:
- git checkout $Env:DRONE_COMMIT
- name: fetch
image: openpriv/flutter-desktop:windows-sdk30-fstable-2.8.1
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
commands:
- powershell -command "Invoke-WebRequest -Uri https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-win64-0.4.6.5.zip -OutFile tor.zip"
- powershell -command "if ((Get-FileHash tor.zip -Algorithm sha512).Hash -ne '7917561a7a063440a1ddfa9cb544ab9ffd09de84cea3dd66e3cc9cd349dd9f85b74a522ec390d7a974bc19b424c4d53af60e57bbc47e763d13cab6a203c4592f' ) { Write-Error 'tor.zip sha512sum mismatch' }"
- git describe --tags --abbrev=1 > VERSION
- powershell -command "Get-Date -Format 'yyyy-MM-dd-HH-mm'" > BUILDDATE
- git log -1 --format=%cd --date=format:'%Y-%m-%d-%H-%M' > COMMIT_DATE
- .\fetch-tor-win.ps1
- .\fetch-libcwtch-go.ps1
- name: build-windows
image: openpriv/flutter-desktop:windows-sdk30-fstable-2.8.1
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
commands:
- flutter pub get
- $Env:version += type .\VERSION
- $Env:builddate += type .\BUILDDATE
- $Env:releasedir = "build\\windows\\runner\\Release\\"
- flutter build windows --dart-define BUILD_VER=$Env:version --dart-define BUILD_DATE=$Env:builddate
- $Env:commitdate += type .\COMMIT_DATE
- $Env:releasedir = "build\\windows\\x64\\runner\\Release\\"
- flutter build windows --dart-define BUILD_VER=$Env:version --dart-define BUILD_DATE=$Env:commitdate
- copy windows\libCwtch.dll $Env:releasedir
# flutter hasn't worked out it's packaging of required dll's so we have to resort to this manual nonsense
# https://github.com/google/flutter-desktop-embedding/issues/587
# https://github.com/flutter/flutter/issues/53167
- copy C:\BuildTools\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\vcruntime140.dll $Env:releasedir
- copy C:\BuildTools\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\vcruntime140_1.dll $Env:releasedir
- copy C:\BuildTools\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\msvcp140.dll $Env:releasedir
- copy 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140.dll' $Env:releasedir
- copy 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140_1.dll' $Env:releasedir
- copy 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\msvcp140.dll' $Env:releasedir
- copy README.md $Env:releasedir\
- copy windows\*.bat $Env:releasedir\
- powershell -command "Expand-Archive -Path tor.zip -DestinationPath $Env:releasedir\Tor"
@ -230,38 +260,38 @@ steps:
status: [ success ]
environment:
pfx:
from_secret: pfx
from_secret: pfx2022_b64
pfx_pass:
from_secret: pfx_pass
commands:
- $Env:version += type .\VERSION
- $Env:builddate += type .\BUILDDATE
- $Env:releasedir = "build\\windows\\runner\\Release\\"
- $Env:commitdate += type .\COMMIT_DATE
- $Env:releasedir = "build\\windows\\x64\\runner\\Release\\"
- $Env:zip = 'cwtch-' + $Env:version + '.zip'
- $Env:zipsha = $Env:zip + '.sha512'
- $Env:msix = 'cwtch-install-' + $Env:version + '.msix'
- $Env:msixsha = $Env:msix + '.sha512'
- $Env:buildname = 'flwtch-win-' + $Env:builddate + '-' + $Env:version
- $Env:zipsha = $Env:zip + '.sha512.txt'
- $Env:buildname = 'flwtch-' + $Env:commitdate + '-' + $Env:version
- $Env:builddir = $Env:buildname
- echo $Env:pfx > codesign.pfx.b64
- certutil -decode codesign.pfx.b64 codesign.pfx
- signtool sign /v /fd sha256 /a /f codesign.pfx /p $Env:pfx_pass /tr http://timestamp.digicert.com $Env:releasedir\cwtch.exe
- signtool sign /v /fd sha256 /a /f codesign.pfx /p $Env:pfx_pass /tr http://timestamp.digicert.com $Env:releasedir\libCwtch.dll
- signtool sign /v /fd sha256 /a /f codesign.pfx /p $Env:pfx_pass /tr http://timestamp.digicert.com $Env:releasedir\flutter_windows.dll
- copy windows\runner\resources\knot_128.ico $Env:releasedir\cwtch.ico
- makensis windows\nsis\cwtch-installer.nsi
- move windows\nsis\cwtch-installer.exe cwtch-installer.exe
- signtool sign /v /fd sha256 /a /f codesign.pfx /p $Env:pfx_pass /tr http://timestamp.digicert.com cwtch-installer.exe
- powershell -command "(Get-FileHash cwtch-installer.exe -Algorithm sha512).Hash" > cwtch-installer.sha512
- powershell -command "(Get-FileHash cwtch-installer.exe -Algorithm sha512).Hash" > cwtch-installer.sha512.txt
- mkdir deploy
- mkdir deploy\$Env:builddir
- move $Env:releasedir $Env:builddir
- powershell -command "Compress-Archive -Path $Env:builddir -DestinationPath cwtch.zip"
- powershell -command "(Get-FileHash cwtch.zip -Algorithm sha512).Hash" > $Env:zipsha
- move cwtch-installer.exe deploy\$Env:builddir\cwtch-installer.exe
- move cwtch-installer.exe deploy\$Env:builddir\cwtch-installer-$Env:version.exe
- move cwtch.zip deploy\$Env:builddir\$Env:zip
- move *.sha512 deploy\$Env:builddir
- move *.sha512.txt deploy\$Env:builddir
- name: deploy-windows
image: openpriv/flutter-desktop:windows-sdk30-fstable-2.8.1
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
when:
event: push
status: [ success ]
@ -300,7 +330,8 @@ steps:
commands:
- mkdir ~/.ssh
- echo $buildbot_key_b64 > ~/.ssh/id_rsa.b64
- base64 -d ~/.ssh/id_rsa.b64 > ~/.ssh/id_rsa
- ls -lh ~/.ssh/id_rsa.b64
- base64 -d -i ~/.ssh/id_rsa.b64 -o ~/.ssh/id_rsa
- chmod 400 ~/.ssh/id_rsa
# force by pass of ssh host key check, less secure
- ssh-keyscan -H git.openprivacy.ca >> ~/.ssh/known_hosts
@ -318,24 +349,26 @@ steps:
commands:
- ./fetch-tor-macos.sh
- echo `git describe --tags --abbrev=1` > VERSION
- echo `date +%G-%m-%d-%H-%M` > BUILDDATE
- export PATH=$PATH:/Users/Dan/development/flutter/bin
- echo `git log -1 --format=%cd --date=format:%G-%m-%d-%H-%M` > COMMIT_DATE
- export PATH=$PATH:/Users/drone/development/flutter/bin
- flutter pub get
- mkdir deploy
- ./fetch-libcwtch-go-macos.sh
- gem install --user-install cocoapods
# Drone builds in container directories and gem seems to have some weird side effects so have to manually re install these locally
- gem install --user-install ffi -v 1.15.5 -- --enable-libffi-alloc
# currently unneeded to reinstall but was, and may be again? so saving
#- gem install --user-install cocoapods -v 1.11.3
- name: build-macos
commands:
- export PATH=$PATH:/Users/Dan/development/flutter/bin
- export GEM_HOME=$HOME/.gem
- export PATH=$PATH:/Users/drone/bin/flutter/bin
- export PATH=$GEM_HOME/ruby/2.6.0/bin:$PATH
- flutter config --enable-macos-desktop
- flutter build macos --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
- export PATH=$PATH:/usr/local/bin #create-dmg
- flutter doctor
- flutter build macos --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
- export PATH=$PATH:/opt/homebrew/bin/ #create-dmg
- macos/package-release.sh
- mkdir -p deploy
- mv Cwtch.dmg deploy
- mv Cwtch.dmg deploy/Cwtch-`cat VERSION`.dmg
- name: deploy-buildfiles
environment:
@ -346,13 +379,13 @@ steps:
status: [ success ]
commands:
- echo $BUILDFILES_KEY > ~/id_rsab64
- base64 -d ~/id_rsab64 > ~/id_rsa
- base64 -d -i ~/id_rsab64 -o ~/id_rsa
- chmod 400 ~/id_rsa
- export DIR=flwtch-macos-`cat BUILDDATE`-`cat VERSION`
- export DIR=flwtch-`cat COMMIT_DATE`-`cat VERSION`
- mv deploy $DIR
- cd $DIR
- find . -type f -exec shasum -a 512 {} \; > ./../sha512s.txt
- mv ./../sha512s.txt .
- find . -type f -exec shasum -a 512 {} \; > ./../Cwtch.dmg.sha512.txt
- mv ./../Cwtch.dmg.sha512.txt .
- cd ..
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
@ -361,4 +394,4 @@ trigger:
branch: trunk
event:
- push
- pull_request
- pull_request

32
.gitignore vendored
View File

@ -3,11 +3,16 @@
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
package.json
package-lock.json
libCwtch*
cwtch.aar
node_modules
test_home
# IntelliJ related
*.iml
@ -30,6 +35,7 @@
.pub-cache/
.pub/
/build/
./lib/gen/
# Web related
lib/generated_plugin_registrant.dart
@ -40,10 +46,32 @@ app.*.symbols
# Obfuscation related
app.*.map.json
# Tor
*data-dir*
# Test Artificats
*.log
flutter_gherkin
run-tests.env
report.json
package.
# Compiled Libs
linux/tor
linux/libCwtch.so
android/cwtch/cwtch.aar
android/app/cwtch/cwtch.aar
android/app/src/main/jniLibs/*/libtor.so
*.dylib
integration_test/gherkin_suite_test.g.dart
integration_test/gherkin_suite_test.dart
integration_test/gherkin/
integration_test/CustomSteps.md
analysis_options.yaml
integration_test/env/default/tor
integration_test/env/temp*
linux/Tor
linux/tor.tar.gz
coverage
test/failures
.gradle

View File

@ -1,10 +1,30 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
# This file should be version controlled.
version:
revision: 78910062997c3a836feee883712c241a5fd22983
revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
- platform: macos
create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

View File

@ -1 +0,0 @@
2022-01-12-17-26-v1.5.4-3-gaf47036

View File

@ -1 +1 @@
2022-01-12-22-26-v1.5.4-3-gaf47036
2024-02-26-18-01-v0.0.14

View File

@ -1,5 +1,5 @@
MIT License
Copyright (c) 2021 Open Privacy Research Society
Copyright (c) 2021-2024 Open Privacy Research Society
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

8
NSIS-Notes.md Normal file
View File

@ -0,0 +1,8 @@
# NSIS Notes
## Images
Requires Windows 3 Compatible Bitmaps.
Can convert to the correct format with e.g. `mogrify -compress none -format bmp3 windows/nsis/cwtch_title.bmp
`

View File

@ -21,6 +21,13 @@ Cwtch processes the following environment variables:
- `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
## Running Tests
You can run specific tests with `./run-tests-headless.sh`. See also the `.drone.yml` file for information on the specific tests that run.1
The gherkin test framework will occasionally fail silently with incomplete test. This is usually because a previous run resulted in an exception and the underlying Tor
process was not cleaned up (See #711).
## Building
### Getting Started
@ -64,10 +71,14 @@ To build a release version and load normal profiles, use `build-release.sh X` in
### Building on MacOS
- Cocaopods is required, you may need to `gem install cocaopods -v 1.9.3`
- copy `libCwtch.dylib` into the root folder, or run `fetch-libcwtch-go-macos.sh` to download it
- Cocoapods is required. Mac and Ruby don't seem to care about version stability and compatibility so good luck. The version of Ruby Mac seems to ship is very incompatible with software in the gem repo. You will probablly need to manually specify a specific older version of cocoapods that is compatible with your system. First you will also probably need to make sure you are on the latest MacOS version and then try `gem install cocoapods -v 1.x.x`
- For MacOS 13.4 `gem install cocoapods -v 1.11.3` worked on 2023.05.28
- copy `libCwtch.x64.dylib` and `libCwtch.arm.dylib` into the root folder, or run `fetch-libcwtch-go-macos.sh` to download it
- The error 'Podfile not found' has still been seen on fresh repos, depending on varios versions. To fix run `flutter create --platforms=macos . --org im.cwtch`
- You may have to temporarily rename the project folder a "dart project suitable name" like "cwtch"
- 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`
- If you are building on Mac Arm Silicon you may need to append `--no-tree-shake-icons` as the build seems to invoke a mac x64 binary that Arm Mac "cannot verify" and therefor will not run on some versions of Flutter
- 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

View File

@ -1,3 +1,9 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
@ -21,10 +22,6 @@ if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
// key.properties MUST have password placeholders filled in (via drone with secrets) and cwtch-upload.jks file must be added (from drone secret)
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
@ -33,7 +30,7 @@ if (keystorePropertiesFile.exists()) {
}
android {
compileSdkVersion 30
compileSdkVersion 34
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@ -42,15 +39,23 @@ android {
lintOptions {
disable 'InvalidPackage'
// For some reason we get Error: LottieAnimationView must extend android.view.View
// Given the newer gradle build...I'm not sure why, but it does impact functionality at all
// there is no information about this error and the command output suggests including the
// following:
abortOnError false
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "im.cwtch.flwtch"
minSdkVersion 16
targetSdkVersion 30
minSdkVersion 19
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
signingConfigs {
@ -85,20 +90,31 @@ flutter {
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation project(':cwtch')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21" // same as kotlin version in settings.gradle
implementation fileTree( dir: 'cwtch')
implementation files ('cwtch/cwtch.aar')
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"
implementation "com.airbnb.android:lottie:3.5.0"
implementation "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0"
implementation "com.android.support.constraint:constraint-layout:2.0.4"
// Test Dependencies
testImplementation 'junit:junit:4.12'
// https://developer.android.com/jetpack/androidx/releases/test/#1.2.0
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
// WorkManager
// (Java only)
//implementation("androidx.work:work-runtime:$work_version")
// Kotlin + coroutines
implementation("androidx.work:work-runtime-ktx:2.5.0")
// 2022.06: upgraded from 2.5 to 2.7 for android 12
// err: "requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent"
// as per https://github.com/flutter/flutter/issues/93609
implementation 'androidx.work:work-runtime-ktx:2.7.0'
// optional - RxJava2 support
//implementation("androidx.work:work-rxjava2:$work_version")
@ -116,5 +132,5 @@ dependencies {
// needed to prevent a ListenableFuture dependency conflict/bug
// see https://github.com/google/ExoPlayer/issues/7905#issuecomment-692637059
implementation 'com.google.guava:guava:any'
implementation "com.google.guava:guava:31.0.1-android"
}

View File

@ -0,0 +1,12 @@
package im.cwtch.flwtch;
import androidx.test.rule.ActivityTestRule;
import dev.flutter.plugins.integration_test.FlutterTestRunner;
import org.junit.Rule;
import org.junit.runner.RunWith;
@RunWith(FlutterTestRunner.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class, true, false);
}

View File

@ -1,4 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
package="im.cwtch.flwtch">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
@ -6,17 +6,18 @@
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:name="${applicationName}"
android:label="Cwtch"
android:extractNativeLibs="true"
android:icon="@mipmap/knott">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/NormalTheme"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
android:windowSoftInputMode="adjustResize"
android:exported="true">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
@ -37,16 +38,32 @@
android:name="flutterEmbedding"
android:value="2" />
<!--Needed to run in background (lol)-->
<service
android:name="androidx.work.impl.foreground.SystemForegroundService"
android:foregroundServiceType="dataSync"
tools:node="merge" />
</application>
<!--Needed to access Tor socket-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!--Needed to run in background (lol)-->
<!-- Needed for running in the background -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- As of Android 13 this permission is required -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<!--Meeded to check if activity is foregrounded or if messages from the service should be queued-->
<!-- Ability to ask user to exempt app from power management (which can kill it more frequently especially on some devices.
Allows app to use ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS -->
<uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission-sdk-23 android:name="android.permission.HIDE_OVERLAY_WINDOWS" />
<!--Needed to check if activity is foregrounded or if messages from the service should be queued-->
<uses-permission android:name="android.permission.GET_TASKS" />
<queries>

View File

@ -0,0 +1,25 @@
// Generated file.
//
// If you wish to remove Flutter's multidex support, delete this entire file.
//
// Modifications to this file should be done in a copy under a different name
// as this file may be regenerated.
package io.flutter.app;
import android.app.Application;
import android.content.Context;
import androidx.annotation.CallSuper;
import androidx.multidex.MultiDex;
/**
* Extension of {@link android.app.Application}, adding multidex support.
*/
public class FlutterMultiDexApplication extends Application {
@Override
@CallSuper
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}

View File

@ -1,24 +1,35 @@
package im.cwtch.flwtch
import android.app.*
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.util.Log
import android.content.pm.ServiceInfo
import androidx.annotation.RequiresApi
import androidx.core.app.NotificationCompat
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.work.*
import androidx.work.CoroutineWorker
import androidx.work.ForegroundInfo
import androidx.work.WorkerParameters
import cwtch.Cwtch
import io.flutter.FlutterInjector
import org.json.JSONObject
import java.nio.file.Files
import java.nio.file.Paths
import java.nio.file.StandardCopyOption
import android.net.Uri
import java.io.FileInputStream
import java.io.File
class FlwtchWorker(context: Context, parameters: WorkerParameters) :
CoroutineWorker(context, parameters) {
@ -29,13 +40,26 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
private var notificationID: MutableMap<String, Int> = mutableMapOf()
private var notificationIDnext: Int = 1
private var notificationSimple: String? = null
private var notificationConversationInfo: String? = null
private val TAG: String = "FlwtchWorker.kt"
override suspend fun doWork(): Result {
// Hack to uncomment and deploy if your device has zombie workers you need to kill
// We need a proper solution but this will clear those out for now
/*if (notificationSimple == null) {
Log.e("FlwtchWorker", "doWork found notificationSimple is null, app has not started, this is a stale thread, terminating")
return Result.failure()
}*/
val method = inputData.getString(KEY_METHOD)
?: return Result.failure()
val args = inputData.getString(KEY_ARGS)
?: return Result.failure()
// Mark the Worker as important
val progress = "Cwtch is keeping Tor running in the background"//todo:translate
val progress = "Cwtch is keeping Tor running in the background" // TODO: translate
setForeground(createForegroundInfo(progress))
return handleCwtch(method, args)
}
@ -49,334 +73,219 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
}
private fun handleCwtch(method: String, args: String): Result {
val a = JSONObject(args)
when (method) {
"Start" -> {
Log.i("FlwtchWorker.kt", "handleAppInfo Start")
val appDir = (a.get("appDir") as? String) ?: ""
val torPath = (a.get("torPath") as? String) ?: "tor"
Log.i("FlwtchWorker.kt", "appDir: '$appDir' torPath: '$torPath'")
if (method != "Start") {
if (Cwtch.started() != 1.toLong()) {
Log.e(TAG, "libCwtch-go reports it is not initialized yet")
return Result.failure()
}
}
if (Cwtch.startCwtch(appDir, torPath) != 0.toLong()) return Result.failure()
val a = JSONObject(args)
when (method) {
"Start" -> {
Log.i(TAG, "handleAppInfo Start")
val appDir = (a.get("appDir") as? String) ?: ""
val torPath = (a.get("torPath") as? String) ?: "tor"
Log.i(TAG, "appDir: '$appDir' torPath: '$torPath'")
Log.i("FlwtchWorker.kt", "startCwtch success, starting coroutine AppbusEvent loop...")
val downloadIDs = mutableMapOf<String, Int>()
while(true) {
val evt = MainActivity.AppbusEvent(Cwtch.getAppBusEvent())
if (evt.EventType == "NewMessageFromPeer" || evt.EventType == "NewMessageFromGroup") {
val data = JSONObject(evt.Data)
val handle = if (evt.EventType == "NewMessageFromPeer") data.getString("RemotePeer") else data.getString("GroupID");
if (data["RemotePeer"] != data["ProfileOnion"]) {
val channelId =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createMessageNotificationChannel(handle, handle)
} else {
// If earlier version channel ID is not used
// https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#NotificationCompat.Builder(android.content.Context)
""
if (Cwtch.startCwtch(appDir, torPath) != 0.toLong()) return Result.failure()
Log.i(TAG, "startCwtch success, starting coroutine AppbusEvent loop...")
val downloadIDs = mutableMapOf<String, Int>()
val downloadFinishedIDs = mutableMapOf<String, Int>()
var flags = PendingIntent.FLAG_UPDATE_CURRENT
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
flags = flags or PendingIntent.FLAG_IMMUTABLE
}
while (true) {
try {
val evt = MainActivity.AppbusEvent(Cwtch.getAppBusEvent())
// TODO replace this notification block with the NixNotification manager in dart as it has access to contact names and also needs less working around
if (evt.EventType == "NewMessageFromPeer" || evt.EventType == "NewMessageFromGroup") {
val data = JSONObject(evt.Data)
val handle = data.getString("RemotePeer");
val conversationId = data.getInt("ConversationID").toString();
val notificationChannel = if (evt.EventType == "NewMessageFromPeer") handle else conversationId
if (data["RemotePeer"] != data["ProfileOnion"]) {
val notification = data["notification"]
if (notification == "SimpleEvent") {
val channelId =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createMessageNotificationChannel("Cwtch", "Cwtch")
} else {
// If earlier version channel ID is not used
// https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#NotificationCompat.Builder(android.content.Context)
""
}
val clickIntent = Intent(applicationContext, MainActivity::class.java).also { intent ->
intent.action = Intent.ACTION_RUN
intent.putExtra("EventType", "NotificationClicked")
}
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
.setContentTitle("Cwtch")
.setContentText(notificationSimple ?: "New Message")
.setSmallIcon(R.mipmap.knott_transparent)
.setContentIntent(PendingIntent.getActivity(applicationContext, 1, clickIntent, flags))
.setAutoCancel(true)
.build()
notificationManager.notify(getNotificationID("Cwtch", "Cwtch"), newNotification)
} else if (notification == "ContactInfo") {
val channelId =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createMessageNotificationChannel(notificationChannel, notificationChannel)
} else {
// If earlier version channel ID is not used
// https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#NotificationCompat.Builder(android.content.Context)
""
}
val loader = FlutterInjector.instance().flutterLoader()
Log.i(TAG, "notification for " + evt.EventType + " " + handle + " " + conversationId + " " + channelId)
Log.i(TAG, data.toString());
val key = loader.getLookupKeyForAsset(data.getString("picture"))//"assets/profiles/001-centaur.png")
var fh : java.io.InputStream? = null;
try {
fh = applicationContext.assets.open(key)
} catch (e: Exception) {
Log.d("FlwtchWorker->ContactInfo", e.toString() + " :: " + e.getStackTrace());
}
try {
val file = File(data.getString("picture"))
fh = FileInputStream(file)
} catch (e: Exception) {
Log.d("FlwtchWorker->ContactInfo", e.toString() + " :: " + e.getStackTrace());
}
val clickIntent = Intent(applicationContext, MainActivity::class.java).also { intent ->
intent.action = Intent.ACTION_RUN
intent.putExtra("EventType", "NotificationClicked")
intent.putExtra("ProfileOnion", data.getString("ProfileOnion"))
intent.putExtra("Handle", handle)
}
val image : android.graphics.Bitmap? = if (fh != null) BitmapFactory.decodeStream(fh ) else null;
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
.setContentTitle(data.getString("Nick"))
.setContentText((notificationConversationInfo
?: "New Message From %1").replace("%1", data.getString("Nick")))
.setLargeIcon(image)
.setSmallIcon(R.mipmap.knott_transparent)
.setContentIntent(PendingIntent.getActivity(applicationContext, 1, clickIntent, flags))
.setAutoCancel(true)
.build()
notificationManager.notify(getNotificationID(data.getString("ProfileOnion"), channelId), newNotification)
if (fh != null) {
fh.close()
}
}
val loader = FlutterInjector.instance().flutterLoader()
val key = loader.getLookupKeyForAsset("assets/" + data.getString("Picture"))//"assets/profiles/001-centaur.png")
val fh = applicationContext.assets.open(key)
}
} else if (evt.EventType == "FileDownloadProgressUpdate") {
try {
val data = JSONObject(evt.Data);
val fileKey = data.getString("FileKey");
val title = data.getString("NameSuggestion");
val progress = data.getString("Progress").toInt();
val progressMax = data.getString("FileSizeInChunks").toInt();
val clickIntent = Intent(applicationContext, MainActivity::class.java).also { intent ->
intent.action = Intent.ACTION_RUN
intent.putExtra("EventType", "NotificationClicked")
intent.putExtra("ProfileOnion", data.getString("ProfileOnion"))
intent.putExtra("Handle", handle)
// if we have seen a download finished update for this key then ignore it
if (!downloadFinishedIDs.containsKey(fileKey)) {
if (!downloadIDs.containsKey(fileKey)) {
downloadIDs.put(fileKey, downloadIDs.count());
}
var dlID = downloadIDs.get(fileKey);
if (dlID == null) {
dlID = 0;
}
if (progress >= 0) {
val channelId =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createDownloadNotificationChannel(fileKey, fileKey)
} else {
// If earlier version channel ID is not used
// https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#NotificationCompat.Builder(android.content.Context)
""
};
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
.setOngoing(true)
.setContentTitle("Downloading")//todo: translate
.setContentText(title)
.setSmallIcon(android.R.drawable.stat_sys_download)
.setProgress(progressMax, progress, false)
.setSound(null)
//.setSilent(true)
.build();
notificationManager.notify(dlID, newNotification);
}
}
} catch (e: Exception) {
Log.d("FlwtchWorker->FileDownloadProgressUpdate", e.toString() + " :: " + e.getStackTrace());
}
} else if (evt.EventType == "FileDownloaded") {
Log.d(TAG, "file downloaded!");
val data = JSONObject(evt.Data);
val tempFile = data.getString("TempFile");
val fileKey = data.getString("FileKey");
if (tempFile != "" && tempFile != data.getString("FilePath")) {
val filePath = data.getString("FilePath");
Log.i(TAG, "moving " + tempFile + " to " + filePath);
val sourcePath = Paths.get(tempFile);
val targetUri = Uri.parse(filePath);
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri);
val bytesWritten = Files.copy(sourcePath, os);
Log.d("TAG", "copied " + bytesWritten.toString() + " bytes");
if (bytesWritten != 0L) {
os?.flush();
os?.close();
Files.delete(sourcePath);
}
}
// Suppress future notifications...
downloadFinishedIDs.put(fileKey, downloadIDs.count());
if (downloadIDs.containsKey(fileKey)) {
notificationManager.cancel(downloadIDs.get(fileKey) ?: 0);
}
}
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
.setContentTitle(data.getString("Nick"))
.setContentText("New message")//todo: translate
.setLargeIcon(BitmapFactory.decodeStream(fh))
.setSmallIcon(R.mipmap.knott_transparent)
.setContentIntent(PendingIntent.getActivity(applicationContext, 1, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT))
.setAutoCancel(true)
.build()
notificationManager.notify(getNotificationID(data.getString("ProfileOnion"), handle), newNotification)
}
} else if (evt.EventType == "FileDownloadProgressUpdate") {
try {
val data = JSONObject(evt.Data);
val fileKey = data.getString("FileKey");
val title = data.getString("NameSuggestion");
val progress = data.getString("Progress").toInt();
val progressMax = data.getString("FileSizeInChunks").toInt();
if (!downloadIDs.containsKey(fileKey)) {
downloadIDs.put(fileKey, downloadIDs.count());
Intent().also { intent ->
intent.action = "im.cwtch.flwtch.broadcast.SERVICE_EVENT_BUS"
intent.putExtra("EventType", evt.EventType)
intent.putExtra("Data", evt.Data)
intent.putExtra("EventID", evt.EventID)
LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(intent)
}
var dlID = downloadIDs.get(fileKey);
if (dlID == null) {
dlID = 0;
}
if (progress >= 0) {
val channelId =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createDownloadNotificationChannel(fileKey, fileKey)
} else {
// If earlier version channel ID is not used
// https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#NotificationCompat.Builder(android.content.Context)
""
};
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
.setOngoing(true)
.setContentTitle("Downloading")//todo: translate
.setContentText(title)
.setSmallIcon(android.R.drawable.stat_sys_download)
.setProgress(progressMax, progress, false)
.setSound(null)
//.setSilent(true)
.build();
notificationManager.notify(dlID, newNotification);
if (evt.EventType == "Shutdown") {
Log.i(TAG, "processing shutdown event, exiting FlwtchWorker/Start()...");
return Result.success()
}
} catch (e: Exception) {
Log.d("FlwtchWorker->FileDownloadProgressUpdate", e.toString() + " :: " + e.getStackTrace());
}
} else if (evt.EventType == "FileDownloaded") {
Log.d("FlwtchWorker", "file downloaded!");
val data = JSONObject(evt.Data);
val tempFile = data.getString("TempFile");
val fileKey = data.getString("FileKey");
if (tempFile != "" && tempFile != data.getString("FilePath")) {
val filePath = data.getString("FilePath");
Log.i("FlwtchWorker", "moving "+tempFile+" to "+filePath);
val sourcePath = Paths.get(tempFile);
val targetUri = Uri.parse(filePath);
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri);
val bytesWritten = Files.copy(sourcePath, os);
Log.d("FlwtchWorker", "copied " + bytesWritten.toString() + " bytes");
if (bytesWritten != 0L) {
os?.flush();
os?.close();
Files.delete(sourcePath);
}
}
if (downloadIDs.containsKey(fileKey)) {
notificationManager.cancel(downloadIDs.get(fileKey)?:0);
Log.e(TAG, "Error in handleCwtch: " + e.toString() + " :: " + e.getStackTrace());
}
}
Intent().also { intent ->
intent.action = "im.cwtch.flwtch.broadcast.SERVICE_EVENT_BUS"
intent.putExtra("EventType", evt.EventType)
intent.putExtra("Data", evt.Data)
intent.putExtra("EventID", evt.EventID)
LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(intent)
}
}
// Event passing translations from Flutter to Kotlin worker scope so the worker can use them
"L10nInit" -> {
notificationSimple = (a.get("notificationSimple") as? String) ?: "New Message"
notificationConversationInfo = (a.get("notificationConversationInfo") as? String)
?: "New Message From "
}
else -> {
Log.i(TAG, "unknown command: " + method);
return Result.failure()
}
}
"ReconnectCwtchForeground" -> {
Cwtch.reconnectCwtchForeground()
}
"CreateProfile" -> {
val nick = (a.get("nick") as? String) ?: ""
val pass = (a.get("pass") as? String) ?: ""
Cwtch.createProfile(nick, pass)
}
"LoadProfiles" -> {
val pass = (a.get("pass") as? String) ?: ""
Cwtch.loadProfiles(pass)
}
"ChangePassword" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val pass = (a.get("OldPass") as? String) ?: ""
val passNew = (a.get("NewPass") as? String) ?: ""
val passNew2 = (a.get("NewPassAgain") as? String) ?: ""
Cwtch.changePassword(profile, pass, passNew, passNew2)
}
"GetMessage" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val indexI = a.getInt("index").toLong()
Log.d("FlwtchWorker", "Cwtch GetMessage " + profile + " " + conversation.toString() + " " + indexI.toString())
return Result.success(Data.Builder().putString("result", Cwtch.getMessage(profile, conversation, indexI)).build())
}
"GetMessageByID" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val id = a.getInt("id").toLong()
return Result.success(Data.Builder().putString("result", Cwtch.getMessageByID(profile, conversation, id)).build())
}
"GetMessageByContentHash" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val contentHash = (a.get("contentHash") as? String) ?: ""
return Result.success(Data.Builder().putString("result", Cwtch.getMessagesByContentHash(profile, conversation, contentHash)).build())
}
"UpdateMessageAttribute" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val channel = a.getInt("chanenl").toLong()
val midx = a.getInt("midx").toLong()
val key = (a.get("key") as? String) ?: ""
val value = (a.get("value") as? String) ?: ""
Cwtch.setMessageAttribute(profile, conversation, channel, midx, key, value)
}
"AcceptConversation" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
Cwtch.acceptConversation(profile, conversation)
}
"BlockContact" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
Cwtch.blockContact(profile, conversation)
}
"UnblockContact" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
Cwtch.unblockContact(profile, conversation)
}
"SendMessage" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val message = (a.get("message") as? String) ?: ""
Cwtch.sendMessage(profile, conversation, message)
}
"SendInvitation" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val target = a.getInt("target").toLong()
Cwtch.sendInvitation(profile, conversation, target)
}
"ShareFile" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val filepath = (a.get("filepath") as? String) ?: ""
Cwtch.shareFile(profile, conversation, filepath)
}
"DownloadFile" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val filepath = (a.get("filepath") as? String) ?: ""
val manifestpath = (a.get("manifestpath") as? String) ?: ""
val filekey = (a.get("filekey") as? String) ?: ""
// FIXME: Prevent spurious calls by Intent
if (profile != "") {
Cwtch.downloadFile(profile, conversation, filepath, manifestpath, filekey)
}
}
"CheckDownloadStatus" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val fileKey = (a.get("fileKey") as? String) ?: ""
Cwtch.checkDownloadStatus(profile, fileKey)
}
"VerifyOrResumeDownload" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val fileKey = (a.get("fileKey") as? String) ?: ""
Cwtch.verifyOrResumeDownload(profile, conversation, fileKey)
}
"SendProfileEvent" -> {
val onion = (a.get("onion") as? String) ?: ""
val jsonEvent = (a.get("jsonEvent") as? String) ?: ""
Cwtch.sendProfileEvent(onion, jsonEvent)
}
"SendAppEvent" -> {
val jsonEvent = (a.get("jsonEvent") as? String) ?: ""
Cwtch.sendAppEvent(jsonEvent)
}
"ResetTor" -> {
Cwtch.resetTor()
}
"ImportBundle" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val bundle = (a.get("bundle") as? String) ?: ""
Cwtch.importBundle(profile, bundle)
}
"CreateGroup" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val server = (a.get("server") as? String) ?: ""
val groupName = (a.get("groupName") as? String) ?: ""
Cwtch.createGroup(profile, server, groupName)
}
"DeleteProfile" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val pass = (a.get("pass") as? String) ?: ""
Cwtch.deleteProfile(profile, pass)
}
"ArchiveConversation" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
Cwtch.archiveConversation(profile, conversation)
}
"DeleteConversation" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
Cwtch.deleteContact(profile, conversation)
}
"SetProfileAttribute" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val key = (a.get("Key") as? String) ?: ""
val v = (a.get("Val") as? String) ?: ""
Cwtch.setProfileAttribute(profile, key, v)
}
"SetConversationAttribute" -> {
val profile = (a.get("ProfileOnion") as? String) ?: ""
val conversation = a.getInt("conversation").toLong()
val key = (a.get("Key") as? String) ?: ""
val v = (a.get("Val") as? String) ?: ""
Cwtch.setConversationAttribute(profile, conversation, key, v)
}
"Shutdown" -> {
Cwtch.shutdownCwtch();
return Result.success()
}
"LoadServers" -> {
val password = (a.get("Password") as? String) ?: ""
Cwtch.loadServers(password)
}
"CreateServer" -> {
val password = (a.get("Password") as? String) ?: ""
val desc = (a.get("Description") as? String) ?: ""
val autostart = (a.get("Autostart") as? Boolean) ?: false
Cwtch.createServer(password, desc, autostart)
}
"DeleteServer" -> {
val serverOnion = (a.get("ServerOnion") as? String) ?: ""
val password = (a.get("Password") as? String) ?: ""
Cwtch.deleteServer(serverOnion, password)
}
"LaunchServers" -> {
Cwtch.launchServers()
}
"LaunchServer" -> {
val serverOnion = (a.get("ServerOnion") as? String) ?: ""
Cwtch.launchServer(serverOnion)
}
"StopServer" -> {
val serverOnion = (a.get("ServerOnion") as? String) ?: ""
Cwtch.stopServer(serverOnion)
}
"StopServers" -> {
Cwtch.stopServers()
}
"DestroyServers" -> {
Cwtch.destroyServers()
}
"SetServerAttribute" -> {
val serverOnion = (a.get("ServerOnion") as? String) ?: ""
val key = (a.get("Key") as? String) ?: ""
val v = (a.get("Val") as? String) ?: ""
Cwtch.setServerAttribute(serverOnion, key, v)
}
else -> {
Log.i("FlwtchWorker", "unknown command: " + method);
return Result.failure()
}
}
return Result.success()
return Result.success()
}
// Creates an instance of ForegroundInfo which can be used to update the
// ongoing notification.
private fun createForegroundInfo(progress: String): ForegroundInfo {
val id = "flwtch"
val title = "Flwtch"
val cancel = "Shut down"//todo: translate
val title = "Flwtch" // TODO: change
val cancel = "Shut down" // TODO: translate
val channelId =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createForegroundNotificationChannel(id, id)
@ -390,6 +299,10 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
intent.action = Intent.ACTION_RUN
intent.putExtra("EventType", "ShutdownClicked")
}
var flags = PendingIntent.FLAG_UPDATE_CURRENT
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
flags = flags or PendingIntent.FLAG_IMMUTABLE
}
val notification = NotificationCompat.Builder(applicationContext, channelId)
.setContentTitle(title)
@ -399,10 +312,10 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
.setOngoing(true)
// Add the cancel action to the notification which can
// be used to cancel the worker
.addAction(android.R.drawable.ic_delete, cancel, PendingIntent.getActivity(applicationContext, 2, cancelIntent, PendingIntent.FLAG_UPDATE_CURRENT))
.addAction(android.R.drawable.ic_delete, cancel, PendingIntent.getActivity(applicationContext, 2, cancelIntent, flags))
.build()
return ForegroundInfo(101, notification)
return ForegroundInfo(101, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC)
}
@RequiresApi(Build.VERSION_CODES.O)

View File

@ -1,46 +1,45 @@
package im.cwtch.flwtch
import SplashView
import android.annotation.TargetApi
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import androidx.annotation.NonNull
import android.content.pm.PackageManager
import android.net.Uri
import android.os.PowerManager
import android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
import android.util.Log
import android.view.Window
import android.view.WindowManager
import androidx.annotation.NonNull
import androidx.lifecycle.Observer
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.work.*
import io.flutter.embedding.android.SplashScreen
import cwtch.Cwtch
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.plugin.common.ErrorLogResult
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.Result
import org.json.JSONObject
import java.util.concurrent.TimeUnit
import java.io.File
import java.nio.file.Files
import java.nio.file.Paths
import java.nio.file.StandardCopyOption
import android.net.Uri
import android.provider.DocumentsContract
import android.content.ContentUris
import android.os.Build
import android.os.Environment
import android.database.Cursor
import android.provider.MediaStore
import java.util.concurrent.TimeUnit
import kotlinx.coroutines.*
class MainActivity: FlutterActivity() {
override fun provideSplashScreen(): SplashScreen? = SplashView()
// Channel to get app info
private val CHANNEL_APP_INFO = "test.flutter.dev/applicationInfo"
private val CALL_APP_INFO = "getNativeLibDir"
private val CALL_SERVICE_INFO = "getForegroundServiceInfo"
private val ANDROID_SETTINGS_CHANNEL_NAME = "androidSettings"
private val ANDROID_SETTINGS_CHANGE_NAME= "androidSettingsChanged"
private var andoidSettingsChangeChannel: MethodChannel? = null
private val CALL_ASK_BATTERY_EXEMPTION = "requestBatteryExemption"
private val CALL_IS_BATTERY_EXEMPT = "isBatteryExempt"
// Channel to get cwtch api calls on
private val CHANNEL_CWTCH = "cwtch"
@ -52,6 +51,7 @@ class MainActivity: FlutterActivity() {
private val CHANNEL_NOTIF_CLICK = "im.cwtch.flwtch/notificationClickHandler"
private val CHANNEL_SHUTDOWN_CLICK = "im.cwtch.flwtch/shutdownClickHandler"
private val TAG: String = "MainActivity.kt"
// WorkManager tag applied to all Start() infinite coroutines
val WORKER_TAG = "cwtchEventBusWorker"
@ -62,11 +62,28 @@ class MainActivity: FlutterActivity() {
// "Download to..." prompt extra arguments
private val FILEPICKER_REQUEST_CODE = 234
private val PREVIEW_EXPORT_REQUEST_CODE = 235
private val PROFILE_EXPORT_REQUEST_CODE = 236
private val REQUEST_DOZE_WHITELISTING_CODE:Int = 9
private var dlToProfile = ""
private var dlToHandle = ""
private var dlManifestPath = ""
private var dlToHandle = 0
private var dlToFileKey = ""
private var exportFromPath = ""
override fun onCreate(savedInstanceState: android.os.Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
// Todo: when we support SDK 31
// hideOverlay()
}
/*
@TargetApi(31)
fun hideOverlay() {
window.setHideOverlayWindows(true);
}
*/
// handles clicks received from outside the app (ie, notifications)
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
@ -93,34 +110,60 @@ class MainActivity: FlutterActivity() {
override fun onActivityResult(requestCode: Int, result: Int, intent: Intent?) {
super.onActivityResult(requestCode, result, intent);
// has null intent and data
if (requestCode == REQUEST_DOZE_WHITELISTING_CODE) {
// 0 == "battery optimized" (still)
// -1 == "no battery optimization" (exempt!)
andoidSettingsChangeChannel!!.invokeMethod("powerExemptionChange", result == -1)
return;
}
if (intent == null || intent!!.getData() == null) {
Log.i("MainActivity:onActivityResult", "user canceled activity");
Log.i(TAG, "user canceled activity");
return;
}
if (requestCode == FILEPICKER_REQUEST_CODE) {
val filePath = intent!!.getData().toString();
val manifestPath = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(this.dlToFileKey).toString();
Log.d("MainActivity:FILEPICKER_REQUEST_CODE", "DownloadableFileCreated");
handleCwtch(MethodCall("DownloadFile", mapOf(
"ProfileOnion" to this.dlToProfile,
"handle" to this.dlToHandle,
"conversation" to this.dlToHandle.toInt(),
"filepath" to filePath,
"manifestpath" to manifestPath,
"manifestpath" to this.dlManifestPath,
"filekey" to this.dlToFileKey
)), ErrorLogResult(""));//placeholder; this Result is never actually invoked
} else if (requestCode == PREVIEW_EXPORT_REQUEST_CODE) {
val targetPath = intent!!.getData().toString()
var srcFile = File(this.exportFromPath)
Log.i("MainActivity:PREVIEW_EXPORT", "exporting previewed file")
val sourcePath = Paths.get(this.exportFromPath);
val targetUri = Uri.parse(targetPath);
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri);
val bytesWritten = Files.copy(sourcePath, os);
Log.d("MainActivity:PREVIEW_EXPORT", "copied " + bytesWritten.toString() + " bytes");
if (bytesWritten != 0L) {
os?.flush();
os?.close();
//Files.delete(sourcePath);
try {
val sourcePath = Paths.get(this.exportFromPath);
val targetUri = intent!!.getData();
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri!!);
val bytesWritten = Files.copy(sourcePath, os);
Log.d("MainActivity:PREVIEW_EXPORT", "copied " + bytesWritten.toString() + " bytes");
if (bytesWritten != 0L) {
os?.flush();
os?.close();
//Files.delete(sourcePath);
}
} catch (e: Exception) {
Log.d("MainActivity:PREVIEW_EXPORT FAILED", e.toString());
}
} else if (requestCode == PROFILE_EXPORT_REQUEST_CODE ) {
val srcFile = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(this.exportFromPath).toString();
Log.i("MainActivity:EXPORT_PROFILE", "exporting profile: " + srcFile);
try {
val sourcePath = Paths.get(srcFile);
val targetUri = intent!!.getData();
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri!!);
val bytesWritten = Files.copy(sourcePath, os);
Log.d("MainActivity:EXPORT_PROFILE", "copied " + bytesWritten.toString() + " bytes");
if (bytesWritten != 0L) {
os?.flush();
os?.close();
//Files.delete(sourcePath);
}
} catch (e: Exception) {
Log.d("MainActivity:EXPORT_PROFILE FAILED", e.toString());
}
}
}
@ -132,18 +175,47 @@ class MainActivity: FlutterActivity() {
requestWindowFeature(Window.FEATURE_NO_TITLE)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL_APP_INFO).setMethodCallHandler { call, result -> handleAppInfo(call, result) }
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL_CWTCH).setMethodCallHandler { call, result -> handleCwtch(call, result) }
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, ANDROID_SETTINGS_CHANNEL_NAME).setMethodCallHandler { call, result -> handleAndroidSettings(call, result) }
notificationClickChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL_NOTIF_CLICK)
shutdownClickChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL_SHUTDOWN_CLICK)
andoidSettingsChangeChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, ANDROID_SETTINGS_CHANGE_NAME)
}
// MethodChannel CHANNEL_APP_INFO handler (Flutter Channel for requests for Android environment info)
private fun handleAppInfo(@NonNull call: MethodCall, @NonNull result: Result) {
when (call.method) {
CALL_APP_INFO -> result.success(getNativeLibDir())
?: result.error("Unavailable", "nativeLibDir not available", null);
CALL_SERVICE_INFO -> result.success(getForegroundServiceInfo())
?: result.error("Unavailable", "getForegroundServiceInfo not available", null);
else -> result.notImplemented()
}
}
// MethodChannel ANDROID_SETTINGS_CHANNEL_NAME handler (Flutter Channel for requests for Android settings)
// Called from lib/view/globalsettingsview.dart
private fun handleAndroidSettings(@NonNull call: MethodCall, @NonNull result: Result) {
when (call.method) {
CALL_IS_BATTERY_EXEMPT -> result.success(checkIgnoreBatteryOpt() ?: false);
CALL_ASK_BATTERY_EXEMPTION -> { requestBatteryExemption(); result.success(null); }
else -> result.notImplemented()
}
}
@TargetApi(23)
private fun checkIgnoreBatteryOpt(): Boolean {
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
return powerManager.isIgnoringBatteryOptimizations(this.packageName) ?: false;
}
@TargetApi(23)
private fun requestBatteryExemption() {
val i = Intent()
i.action = ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
i.data = Uri.parse("package:" + this.packageName)
startActivityForResult(i, REQUEST_DOZE_WHITELISTING_CODE);
}
private fun getNativeLibDir(): String {
val ainfo = this.applicationContext.packageManager.getApplicationInfo(
"im.cwtch.flwtch", // Must be app name
@ -151,79 +223,376 @@ class MainActivity: FlutterActivity() {
return ainfo.nativeLibraryDir
}
fun getForegroundServiceInfo(): HashMap<String,String> {
var hashMap : HashMap<String, String>
= HashMap<String, String> ();
val workmanager = WorkManager.getInstance(this);
if (workmanager != null) {
runBlocking {
var lastCancelAllTime = workmanager.getLastCancelAllTimeMillis().await();
hashMap.put("workmanager.lastCancelAllTime", lastCancelAllTime.toString());
}
val works = workmanager.getWorkInfosByTag(WORKER_TAG).get()
for (workInfo in works) {
hashMap.put("workmanager.${workInfo.id}.state", workInfo.state.toString());
}
}
return hashMap
}
// receives messages from the ForegroundService (which provides, ironically enough, the backend)
private fun handleCwtch(@NonNull call: MethodCall, @NonNull result: Result) {
var method = call.method
val argmap: Map<String, String> = call.arguments as Map<String, String>
// todo change usage patern to match that in FlwtchWorker
// Unsafe for anything using int args, causes access time attempt to cast to string which will fail
val argmap: Map<String, String> = call.arguments as Map<String,String>
// the frontend calls Start every time it fires up, but we don't want to *actually* call Cwtch.Start()
// in case the ForegroundService is still running. in both cases, however, we *do* want to re-register
// the eventbus listener.
if (call.method == "Start") {
val uniqueTag = argmap["torPath"] ?: "nullEventBus"
// note: because the ForegroundService is specified as UniquePeriodicWork, it can't actually get
// accidentally duplicated. however, we still need to manually check if it's running or not, so
// that we can divert this method call to ReconnectCwtchForeground instead if so.
val works = WorkManager.getInstance(this).getWorkInfosByTag(WORKER_TAG).get()
for (workInfo in works) {
WorkManager.getInstance(this).cancelWorkById(workInfo.id)
}
WorkManager.getInstance(this).pruneWork()
when (call.method) {
"Start" -> {
val uniqueTag = argmap["torPath"] ?: "nullEventBus"
Log.i("MainActivity.kt", "Start() launching foregroundservice")
// this is where the eventbus ForegroundService gets launched. WorkManager should keep it alive after this
val data: Data = Data.Builder().putString(FlwtchWorker.KEY_METHOD, call.method).putString(FlwtchWorker.KEY_ARGS, JSONObject(argmap).toString()).build()
// 15 minutes is the shortest interval you can request
val workRequest = PeriodicWorkRequestBuilder<FlwtchWorker>(15, TimeUnit.MINUTES).setInputData(data).addTag(WORKER_TAG).addTag(uniqueTag).build()
WorkManager.getInstance(this).enqueueUniquePeriodicWork("req_$uniqueTag", ExistingPeriodicWorkPolicy.REPLACE, workRequest)
return
} else if (call.method == "CreateDownloadableFile") {
this.dlToProfile = argmap["ProfileOnion"] ?: ""
this.dlToHandle = argmap["handle"] ?: ""
val suggestedName = argmap["filename"] ?: "filename.ext"
this.dlToFileKey = argmap["filekey"] ?: ""
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/octet-stream"
putExtra(Intent.EXTRA_TITLE, suggestedName)
}
startActivityForResult(intent, FILEPICKER_REQUEST_CODE)
return
} else if (call.method == "ExportPreviewedFile") {
this.exportFromPath = argmap["Path"] ?: ""
val suggestion = argmap["FileName"] ?: "filename.ext"
var imgType = "jpeg"
if (suggestion.endsWith("png")) {
imgType = "png"
} else if (suggestion.endsWith("webp")) {
imgType = "webp"
} else if (suggestion.endsWith("bmp")) {
imgType = "bmp"
} else if (suggestion.endsWith("gif")) {
imgType = "gif"
}
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "image/" + imgType
putExtra(Intent.EXTRA_TITLE, suggestion)
}
startActivityForResult(intent, PREVIEW_EXPORT_REQUEST_CODE)
return
}
// note: because the ForegroundService is specified as UniquePeriodicWork, it can't actually get
// accidentally duplicated. however, we still need to manually check if it's running or not, so
// that we can divert this method call to ReconnectCwtchForeground instead if so.
val works = WorkManager.getInstance(this).getWorkInfosByTag(WORKER_TAG).get()
for (workInfo in works) {
WorkManager.getInstance(this).cancelWorkById(workInfo.id)
}
WorkManager.getInstance(this).pruneWork()
// ...otherwise fallthru to a normal ffi method call (and return the result using the result callback)
val data: Data = Data.Builder().putString(FlwtchWorker.KEY_METHOD, method).putString(FlwtchWorker.KEY_ARGS, JSONObject(argmap).toString()).build()
val workRequest = OneTimeWorkRequestBuilder<FlwtchWorker>().setInputData(data).build()
WorkManager.getInstance(this).enqueue(workRequest)
WorkManager.getInstance(applicationContext).getWorkInfoByIdLiveData(workRequest.id).observe(
this, Observer { workInfo ->
if (workInfo.state == WorkInfo.State.SUCCEEDED) {
val res = workInfo.outputData.keyValueMap.toString()
result.success(workInfo.outputData.getString("result"))
Log.i("MainActivity.kt", "Start() launching foregroundservice")
// this is where the eventbus ForegroundService gets launched. WorkManager should keep it alive after this
val data: Data = Data.Builder().putString(FlwtchWorker.KEY_METHOD, call.method).putString(FlwtchWorker.KEY_ARGS, JSONObject(argmap).toString()).build()
// 15 minutes is the shortest interval you can request
val workRequest = PeriodicWorkRequestBuilder<FlwtchWorker>(15, TimeUnit.MINUTES).setInputData(data).addTag(WORKER_TAG).addTag(uniqueTag).build()
WorkManager.getInstance(this).enqueueUniquePeriodicWork("req_$uniqueTag", ExistingPeriodicWorkPolicy.REPLACE, workRequest)
}
"CreateDownloadableFile" -> {
this.dlToProfile = argmap["ProfileOnion"] ?: ""
this.dlToHandle = call.argument("conversation")!!
this.dlManifestPath = argmap["manifestpath"] ?: ""
val suggestedName = argmap["filename"] ?: "filename.ext"
this.dlToFileKey = argmap["filekey"] ?: ""
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/octet-stream"
putExtra(Intent.EXTRA_TITLE, suggestedName)
}
startActivityForResult(intent, FILEPICKER_REQUEST_CODE)
}
"ExportPreviewedFile" -> {
this.exportFromPath = argmap["Path"] ?: ""
val suggestion = argmap["FileName"] ?: "filename.ext"
var imgType = "jpeg"
if (suggestion.endsWith("png")) {
imgType = "png"
} else if (suggestion.endsWith("webp")) {
imgType = "webp"
} else if (suggestion.endsWith("bmp")) {
imgType = "bmp"
} else if (suggestion.endsWith("gif")) {
imgType = "gif"
}
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "image/" + imgType
putExtra(Intent.EXTRA_TITLE, suggestion)
}
startActivityForResult(intent, PREVIEW_EXPORT_REQUEST_CODE)
}
"ExportProfile" -> {
val profileOnion: String = call.argument("ProfileOnion") ?: ""
val file: String = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(call.argument("file") ?: "").toString()
Log.i("FlwtchWorker", "constructing exported file " + file);
Cwtch.exportProfile(profileOnion,file)
this.exportFromPath = argmap["file"] ?: ""
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/gzip"
putExtra(Intent.EXTRA_TITLE, argmap["file"])
}
startActivityForResult(intent, PROFILE_EXPORT_REQUEST_CODE)
}
"GetMessages" -> {
Log.d("MainActivity.kt", "Cwtch GetMessages")
val profile = argmap["ProfileOnion"] ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val indexI: Int = call.argument("index") ?: 0
val count: Int = call.argument("count") ?: 1
val ucount : Int = maxOf(1, count) // don't allow negative counts
result.success(Cwtch.getMessages(profile, conversation.toLong(), indexI.toLong(), ucount.toLong()))
return
}
"SendMessage" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val message: String = call.argument("message") ?: ""
result.success(Cwtch.sendMessage(profile, conversation.toLong(), message))
return
}
"SendInvitation" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val target: Int = call.argument("target") ?: 0
result.success(Cwtch.sendInviteMessage(profile, conversation.toLong(), target.toLong()))
return
}
"ShareFile" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val filepath: String = call.argument("filepath") ?: ""
result.success(Cwtch.shareFile(profile, conversation.toLong(), filepath))
return
}
"GetSharedFiles" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
result.success(Cwtch.getSharedFiles(profile, conversation.toLong()))
return
}
"RestartFileShare" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val filepath: String = call.argument("filekey") ?: ""
result.success(Cwtch.restartFileShare(profile, filepath))
return
}
"StopSharing" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val filepath: String = call.argument("filekey") ?: ""
result.success(Cwtch.stopFileShare(profile, filepath))
return
}
"DeleteServerInfo" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val handle: String = call.argument("handle") ?: ""
result.success(Cwtch.deleteServerInfo(profile, handle))
return
}
"PublishServerUpdate" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
result.success(Cwtch.publishServerUpdate(profile))
return
}
"PeerWithOnion" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val onion: String = call.argument("onion") ?: ""
Cwtch.peerWithOnion(profile, onion)
}
"QueueJoinServer" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val onion: String = call.argument("onion") ?: ""
Cwtch.peerWithOnion(profile, onion)
}
"DisconnectFromPeer" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val onion: String = call.argument("onion") ?: ""
Cwtch.peerWithOnion(profile, onion)
}
"DisconnectFromServer" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val onion: String = call.argument("onion") ?: ""
Cwtch.peerWithOnion(profile, onion)
}
"CreateProfile" -> {
val nick: String = call.argument("nick") ?: ""
val pass: String = call.argument("pass") ?: ""
val autostart: Boolean = call.argument("autostart") ?: true
Cwtch.createProfile(nick, pass, autostart)
}
"LoadProfiles" -> {
val pass: String = call.argument("pass") ?: ""
Cwtch.loadProfiles(pass)
}
"ActivatePeerEngine" -> {
val profile: String = call.argument("profile") ?: ""
Cwtch.activatePeerEngine(profile)
}
"ConfigureConnections" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val listen: Boolean = call.argument("listen") ?: false
val peers: Boolean = call.argument("peers") ?: false
val servers: Boolean = call.argument("servers") ?: false
Cwtch.configureConnections(profile, listen, peers, servers)
}
"DeactivatePeerEngine" -> {
val profile: String = call.argument("profile") ?: ""
Cwtch.deactivatePeerEngine(profile)
}
"ChangePassword" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val pass: String = call.argument("OldPass") ?: ""
val passNew: String = call.argument("NewPass") ?: ""
val passNew2: String = call.argument("NewPassAgain") ?: ""
Cwtch.changePassword(profile, pass, passNew, passNew2)
}
"GetMessageByID" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val id: Int = call.argument("id") ?: 0
result.success(Cwtch.getMessageById(profile, conversation.toLong(), id.toLong()))
return
}
"GetMessageByContentHash" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val contentHash: String = call.argument("contentHash") ?: ""
result.success(Cwtch.getMessageByContentHash(profile, conversation.toLong(), contentHash))
return
}
"SetMessageAttribute" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val channel: Int = call.argument("Chanenl") ?: 0
val midx: Int = call.argument("Message") ?: 0
val key: String = call.argument("key") ?: ""
val value: String = call.argument("value") ?: ""
Cwtch.updateMessageAttribute(profile, conversation.toLong(), channel.toLong(), midx.toLong(), key, value)
}
"AcceptConversation" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
Cwtch.acceptConversation(profile, conversation.toLong())
}
"BlockContact" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
Cwtch.blockConversation(profile, conversation.toLong())
}
"UnblockContact" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
Cwtch.unblockConversation(profile, conversation.toLong())
}
"DownloadFile" -> {
Log.d("MainActivity.kt", "Cwtch Download File Called...")
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val filepath: String = call.argument("filepath") ?: ""
val manifestpath: String = call.argument("manifestpath") ?: ""
val filekey: String = call.argument("filekey") ?: ""
// FIXME: Prevent spurious calls by Intent
if (profile != "") {
Cwtch.downloadFileDefaultLimit(profile, conversation.toLong(), filepath, manifestpath, filekey)
}
}
)
"CheckDownloadStatus" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val fileKey: String = call.argument("fileKey") ?: ""
Cwtch.checkDownloadStatus(profile, fileKey)
}
"VerifyOrResumeDownload" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val fileKey: String = call.argument("fileKey") ?: ""
Cwtch.verifyOrResumeDownloadDefaultLimit(profile, conversation.toLong(), fileKey)
}
"UpdateSettings" -> {
val json: String = call.argument("json") ?: ""
Cwtch.updateSettings(json)
}
"ResetTor" -> {
Cwtch.resetTor()
}
"ImportBundle" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val bundle: String = call.argument("bundle") ?: ""
result.success(Cwtch.importBundle(profile, bundle))
}
"CreateGroup" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val server: String = call.argument("server") ?: ""
val groupName: String = call.argument("groupName") ?: ""
Cwtch.startGroup(profile, groupName, server)
}
"DeleteProfile" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val pass: String = call.argument("pass") ?: ""
Cwtch.deleteProfile(profile, pass)
}
"ArchiveConversation" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
Cwtch.archiveConversation(profile, conversation.toLong())
}
"DeleteConversation" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
Cwtch.deleteConversation(profile, conversation.toLong())
}
"SetProfileAttribute" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val key: String = call.argument("Key") ?: ""
val v: String = call.argument("Val") ?: ""
Cwtch.setProfileAttribute(profile, key, v)
}
"GetProfileAttribute" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val key: String = call.argument("key") ?: ""
var resultjson = Cwtch.getProfileAttribute(profile, key);
return result.success(resultjson)
}
"GetConversationAttribute" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val key: String = call.argument("key") ?: ""
var resultjson = Cwtch.getConversationAttribute(profile, conversation.toLong(), key);
result.success(resultjson)
return
}
"SetConversationAttribute" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val conversation: Int = call.argument("conversation") ?: 0
val key: String = call.argument("Key") ?: ""
val v: String = call.argument("Val") ?: ""
Cwtch.setConversationAttribute(profile, conversation.toLong(), key, v)
}
"ImportProfile" -> {
val file: String = call.argument("file") ?: ""
val pass: String = call.argument("pass") ?: ""
result.success(Cwtch.importProfile(file, pass))
return
}
"SearchConversations" -> {
val profile: String = call.argument("ProfileOnion") ?: ""
val pattern: String = call.argument("pattern") ?: ""
result.success(Cwtch.searchConversations(profile, pattern))
return
}
"Shutdown" -> {
Cwtch.shutdownCwtch();
}
else -> {
// ...otherwise fallthru to a normal ffi method call (and return the result using the result callback)
val data: Data = Data.Builder().putString(FlwtchWorker.KEY_METHOD, method).putString(FlwtchWorker.KEY_ARGS, JSONObject(argmap).toString()).build()
val workRequest = OneTimeWorkRequestBuilder<FlwtchWorker>().setInputData(data).build()
WorkManager.getInstance(this).enqueue(workRequest)
WorkManager.getInstance(applicationContext).getWorkInfoByIdLiveData(workRequest.id).observe(
this, Observer { workInfo ->
if (workInfo != null && workInfo.state == WorkInfo.State.SUCCEEDED) {
val res = workInfo.outputData.keyValueMap.toString()
result.success(workInfo.outputData.getString("result"))
}
}
)
return
}
}
result.success(null)
}
// using onresume/onstop for broadcastreceiver because of extended discussion on https://stackoverflow.com/questions/7439041/how-to-unregister-broadcastreceiver
@ -232,19 +601,22 @@ class MainActivity: FlutterActivity() {
Log.i("MainActivity.kt", "onResume")
if (myReceiver == null) {
Log.i("MainActivity.kt", "onResume registering local broadcast receiver / event bus forwarder")
val mc = MethodChannel(flutterEngine?.dartExecutor?.binaryMessenger, CWTCH_EVENTBUS)
val filter = IntentFilter("im.cwtch.flwtch.broadcast.SERVICE_EVENT_BUS")
myReceiver = MyBroadcastReceiver(mc)
LocalBroadcastManager.getInstance(applicationContext).registerReceiver(myReceiver!!, filter)
val bm = flutterEngine?.dartExecutor?.binaryMessenger;
if (bm != null) {
val mc = MethodChannel(bm, CWTCH_EVENTBUS)
val filter = IntentFilter("im.cwtch.flwtch.broadcast.SERVICE_EVENT_BUS")
myReceiver = MyBroadcastReceiver(mc)
LocalBroadcastManager.getInstance(applicationContext)
.registerReceiver(myReceiver!!, filter)
}
}
// ReconnectCwtchForeground which will resync counters and settings...
// We need to do this here because after a "pause" flutter is still running
// but we might have lost sync with the background process...
Log.i("MainActivity.kt", "Call ReconnectCwtchForeground")
val data: Data = Data.Builder().putString(FlwtchWorker.KEY_METHOD, "ReconnectCwtchForeground").putString(FlwtchWorker.KEY_ARGS, "{}").build()
val workRequest = OneTimeWorkRequestBuilder<FlwtchWorker>().setInputData(data).build()
WorkManager.getInstance(applicationContext).enqueue(workRequest)
Cwtch.reconnectCwtchForeground()
}
override fun onStop() {
@ -256,6 +628,7 @@ class MainActivity: FlutterActivity() {
}
}
override fun onDestroy() {
super.onDestroy()
Log.i("MainActivity.kt", "onDestroy - cancelling all WORKER_TAG and pruning old work")

View File

@ -1,15 +0,0 @@
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import im.cwtch.flwtch.R
import io.flutter.embedding.android.SplashScreen
class SplashView : SplashScreen {
override fun createSplashView(context: Context, savedInstanceState: Bundle?): View? =
LayoutInflater.from(context).inflate(R.layout.splash_view, null, false)
override fun transitionToFlutter(onTransitionComplete: Runnable) {
onTransitionComplete.run()
}
}

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<item android:drawable="@color/darkGreyPurple" />
<!-- You can insert your own image assets here -->
<!-- <item>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
android:src="@mipmap/knott" />
</item>
</layer-list>

View File

@ -0,0 +1,81 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="500dp"
android:height="500dp"
android:viewportWidth="500"
android:viewportHeight="500">
<path
android:pathData="M436.2,215c-0.6,3 -2,6.4 -4.3,10.4l18.2,18.2c2.4,-4.8 6.2,-13.1 8.2,-22.9c4.1,-20.2 -0.5,-37.1 -13.7,-50.3c-24.2,-24.2 -49.4,-26.4 -81.8,-7.3c-7.8,4.6 -16.1,10.6 -24.6,17.7c-19.5,16.3 -41.3,39.5 -64.9,69.2c15.4,19.4 30.2,36.2 43.8,49.8c6.3,6.3 12.4,12 18.3,17.1l16.2,-16.2c-5.9,-5 -12.1,-10.7 -18.4,-17c-9,-9 -18.5,-19.5 -28.4,-31.2l-2.1,-2.5l2.1,-2.5c18.1,-21.5 35,-38.6 50.1,-50.9c9.6,-7.8 18.6,-13.8 26.7,-17.7c7,-3.4 13.4,-5.3 19,-5.6c2.7,-0.2 6.9,-0.1 12.1,2c5,2.1 10.2,5.8 15.7,11.3c2.1,2.1 5,5.4 6.8,10.4C437.1,202.1 437.5,208 436.2,215L436.2,215z"
android:fillColor="#242425"/>
<path
android:pathData="M340.9,354.7l81.5,-81.5c-4.8,-7.1 -11.1,-14 -14.6,-17.7L327.3,336C332.5,342.4 337.1,348.6 340.9,354.7z"
android:fillColor="#242425"/>
<path
android:pathData="M444.6,329.6c13.2,-13.2 17.8,-30.1 13.7,-50.3c-2.8,-14 -9.1,-24.9 -10.3,-26.9L382.6,187c-6,3.1 -12.5,7.4 -19.4,12.8l50.1,50.1l0,0c4.1,4.3 12.1,13 17.4,21.6c3.2,5.2 5.1,9.7 5.6,13.5c1.2,6.9 0.9,12.7 -0.9,17.9c-1.8,5 -4.8,8.3 -6.8,10.4c-5.9,5.9 -11.3,9.7 -16.7,11.7c-5.5,2 -10,1.8 -13.3,1.4c-4.4,-0.5 -9.2,-2 -14.3,-4.2l-17,17C397.5,355.7 421.5,352.7 444.6,329.6z"
android:fillColor="#242425"/>
<path
android:pathData="M303.1,64.7c5,1.8 8.3,4.8 10.4,6.8c5.9,5.9 9.7,11.3 11.7,16.7c2,5.5 1.8,10 1.4,13.3c-0.5,4.4 -2,9.2 -4.2,14.3l17,17c16.4,-30.3 13.3,-54.4 -9.7,-77.4c-13.2,-13.2 -30.1,-17.8 -50.3,-13.7c-14,2.8 -24.9,9.1 -26.9,10.3L187,117.4c3.1,6 7.4,12.5 12.8,19.4L250,86.7l0,0c4.3,-4.1 13,-12.1 21.6,-17.4c5.2,-3.2 9.7,-5.1 13.5,-5.6C292,62.6 297.9,62.9 303.1,64.7z"
android:fillColor="#242425"/>
<path
android:pathData="M170.4,55.4c-24.2,24.2 -26.4,49.4 -7.3,81.8c4.6,7.8 10.6,16.1 17.7,24.6c16.3,19.5 39.5,41.3 69.2,64.9c19.4,-15.4 36.2,-30.2 49.8,-43.8c6.3,-6.3 12,-12.4 17.1,-18.3l-16.2,-16.2c-5,5.9 -10.7,12.1 -17,18.4c-9,9 -19.5,18.5 -31.2,28.4l-2.5,2.1l-2.5,-2.1c-21.5,-18.1 -38.6,-35 -50.9,-50.1c-7.8,-9.6 -13.8,-18.6 -17.7,-26.7c-3.4,-7 -5.3,-13.4 -5.6,-19c-0.2,-2.7 -0.1,-6.9 2,-12.1c2.1,-5 5.8,-10.2 11.3,-15.7c2.1,-2.1 5.4,-5 10.4,-6.8c5.2,-1.9 11.1,-2.2 18,-0.9l0.1,0c3,0.6 6.4,2 10.4,4.3l18.2,-18.2c-4.8,-2.4 -13.1,-6.2 -23,-8.2C200.5,37.6 183.6,42.2 170.4,55.4z"
android:fillColor="#242425"/>
<path
android:pathData="M273.2,77.6c-7.1,4.8 -14,11.1 -17.7,14.6l80.5,80.5c6.4,-5.2 12.7,-9.7 18.7,-13.6L273.2,77.6z"
android:fillColor="#242425"/>
<path
android:pathData="M55.4,329.6c24.2,24.2 49.4,26.4 81.8,7.3c7.8,-4.6 16.1,-10.6 24.6,-17.7c19.5,-16.3 41.3,-39.5 64.9,-69.2c-15.4,-19.4 -30.2,-36.2 -43.8,-49.8c-6.3,-6.3 -12.4,-12 -18.3,-17.1l-16.2,16.2c5.9,5 12.1,10.7 18.4,17c9,9 18.5,19.5 28.4,31.2l2.1,2.5l-2.1,2.5c-18.1,21.5 -35,38.6 -50.1,50.9c-9.6,7.8 -18.6,13.8 -26.7,17.7c-7,3.4 -13.4,5.3 -19,5.6c-2.7,0.2 -6.9,0.1 -12.1,-2c-5,-2.1 -10.2,-5.8 -15.7,-11.3c-2.1,-2.1 -5,-5.4 -6.8,-10.4c-1.9,-5.2 -2.2,-11.1 -0.9,-18l0,-0.1c0.6,-3 2,-6.4 4.3,-10.4l-18.2,-18.2c-2.4,4.8 -6.2,13.1 -8.2,23C37.6,299.5 42.2,316.4 55.4,329.6z"
android:fillColor="#242425"/>
<path
android:pathData="M86.7,250L86.7,250c-4.1,-4.4 -12,-13.1 -17.3,-21.6c-3.2,-5.2 -5.1,-9.7 -5.6,-13.5c-1.2,-6.9 -0.9,-12.7 0.9,-17.9c1.8,-5 4.8,-8.3 6.8,-10.4c5.9,-5.9 11.3,-9.7 16.7,-11.7c5.5,-2 10,-1.8 13.3,-1.4c4.4,0.5 9.2,2 14.3,4.2l17,-17c-30.3,-16.4 -54.4,-13.3 -77.4,9.7c-13.2,13.2 -17.8,30.1 -13.7,50.3c2.8,14 9.1,24.9 10.3,26.9l65.4,65.4c6,-3.1 12.5,-7.4 19.4,-12.8L86.7,250z"
android:fillColor="#242425"/>
<path
android:pathData="M92.2,244.5l80.5,-80.5c-5.2,-6.4 -9.7,-12.7 -13.6,-18.7l-81.5,81.5C82.4,233.9 88.6,240.8 92.2,244.5z"
android:fillColor="#242425"/>
<path
android:pathData="M329.6,444.6c24.2,-24.2 26.4,-49.4 7.3,-81.8c-4.6,-7.8 -10.6,-16.1 -17.7,-24.6c-16.3,-19.5 -39.5,-41.3 -69.2,-64.9c-19.4,15.4 -36.2,30.2 -49.8,43.8c-6.3,6.3 -12,12.4 -17.1,18.3l16.2,16.2c5,-5.9 10.7,-12.1 17,-18.4c9,-9 19.5,-18.5 31.2,-28.4l2.5,-2.1l2.5,2.1c21.5,18.1 38.6,35 50.9,50.1c7.8,9.6 13.8,18.6 17.7,26.7c3.4,7 5.3,13.4 5.6,19c0.2,2.7 0.1,6.9 -2,12.1c-2.1,5 -5.8,10.2 -11.3,15.7c-2.1,2.1 -5.4,5 -10.4,6.8c-5.2,1.9 -11.1,2.2 -18,0.9l-0.1,0c-3,-0.6 -6.4,-2 -10.4,-4.3l-18.2,18.2c4.7,2.4 13.1,6.1 22.9,8.2C299.4,462.4 316.4,457.8 329.6,444.6z"
android:fillColor="#242425"/>
<path
android:pathData="M244.5,407.8L164,327.3c-6.4,5.2 -12.7,9.7 -18.7,13.6l81.5,81.5C233.9,417.6 240.8,411.4 244.5,407.8z"
android:fillColor="#242425"/>
<path
android:pathData="M483.4,250c2.6,-6.3 5.3,-14 7.1,-22.7c6.3,-30.8 -1.8,-59.2 -22.7,-80.1c-19.7,-19.7 -41.7,-29.7 -65.5,-29.7c-7.5,0 -15.1,1 -22.8,3c2.9,-11.3 3.7,-22.3 2.3,-33.2c-2.5,-19.8 -12.3,-38.3 -29,-55.1C336.6,15.9 315.9,7.4 293,7.4c-6.6,0 -13.4,0.7 -20.2,2.1c-8.7,1.8 -16.5,4.5 -22.7,7.1c-6.3,-2.6 -14.1,-5.3 -22.8,-7.1c-6.9,-1.4 -13.7,-2.1 -20.2,-2.1c-22.9,0 -43.6,8.6 -59.9,24.8c-17.6,17.6 -27.5,37.2 -29.4,58.1c-0.9,9.9 0,19.9 2.7,30.2c-7.7,-2 -15.3,-3 -22.8,-3c-23.8,0 -45.8,10 -65.5,29.7c-20.9,20.9 -28.9,49.3 -22.7,80.1c1.8,8.7 4.5,16.5 7.1,22.7c-2.6,6.3 -5.3,14.1 -7.1,22.8c-6.2,30.8 1.8,59.2 22.7,80.1c19.7,19.7 41.7,29.7 65.5,29.7c0,0 0,0 0,0c7.5,0 15.1,-1 22.8,-3c-2.9,11.3 -3.7,22.3 -2.3,33.2c2.5,19.8 12.3,38.3 29,55.1c16.2,16.2 36.9,24.8 59.8,24.8c0,0 0,0 0,0c6.6,0 13.4,-0.7 20.2,-2.1c8.7,-1.8 16.5,-4.4 22.7,-7.1c6.3,2.6 14,5.3 22.7,7.1c6.9,1.4 13.7,2.1 20.3,2.1c0,0 0,0 0,0c22.9,0 43.6,-8.6 59.9,-24.8c17.6,-17.6 27.5,-37.2 29.4,-58.1c0.9,-9.9 0,-19.9 -2.7,-30.2c7.7,2 15.3,3 22.8,3c0,0 0,0 0,0c23.8,0 45.8,-10 65.5,-29.7c20.9,-20.9 29,-49.3 22.7,-80.1C488.8,264 486.1,256.3 483.4,250z"
android:fillColor="#242425"/>
<path
android:pathData="M170.4,444.6c13.2,13.2 30.1,17.8 50.3,13.7c14,-2.8 24.9,-9.1 26.9,-10.3l65.4,-65.4c-3.1,-6 -7.4,-12.5 -12.8,-19.4L250,413.3l0,0c-4.3,4.1 -13,12.1 -21.6,17.4c-5.2,3.2 -9.7,5.1 -13.5,5.6c-6.9,1.2 -12.7,0.9 -17.9,-0.9c-5,-1.8 -8.3,-4.8 -10.4,-6.8c-5.9,-5.9 -9.7,-11.3 -11.7,-16.7c-2,-5.5 -1.8,-10 -1.4,-13.3c0.5,-4.4 2,-9.2 4.2,-14.3l-17,-17C144.3,397.5 147.3,421.5 170.4,444.6z"
android:fillColor="#242425"/>
<path
android:pathData="M436.2,215c-0.6,3 -2,6.4 -4.3,10.4l18.2,18.2c2.4,-4.8 6.2,-13.1 8.2,-22.9c4.1,-20.2 -0.5,-37.1 -13.7,-50.3c-24.2,-24.2 -49.4,-26.4 -81.8,-7.3c-7.8,4.6 -16.1,10.6 -24.6,17.7c-19.5,16.3 -41.3,39.5 -64.9,69.2c15.4,19.4 30.2,36.2 43.8,49.8c6.3,6.3 12.4,12 18.3,17.1l16.2,-16.2c-5.9,-5 -12.1,-10.7 -18.4,-17c-9,-9 -18.5,-19.5 -28.4,-31.2l-2.1,-2.5l2.1,-2.5c18.1,-21.5 35,-38.6 50.1,-50.9c9.6,-7.8 18.6,-13.8 26.7,-17.7c7,-3.4 13.4,-5.3 19,-5.6c2.7,-0.2 6.9,-0.1 12.1,2c5,2.1 10.2,5.8 15.7,11.3c2.1,2.1 5,5.4 6.8,10.4C437.1,202.1 437.5,208 436.2,215L436.2,215z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M340.9,354.7l81.5,-81.5c-4.8,-7.1 -11.1,-14 -14.6,-17.7L327.3,336C332.5,342.4 337.1,348.6 340.9,354.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M444.6,329.6c13.2,-13.2 17.8,-30.1 13.7,-50.3c-2.8,-14 -9.1,-24.9 -10.3,-26.9L382.6,187c-6,3.1 -12.5,7.4 -19.4,12.8l50.1,50.1l0,0c4.1,4.3 12.1,13 17.4,21.6c3.2,5.2 5.1,9.7 5.6,13.5c1.2,6.9 0.9,12.7 -0.9,17.9c-1.8,5 -4.8,8.3 -6.8,10.4c-5.9,5.9 -11.3,9.7 -16.7,11.7c-5.5,2 -10,1.8 -13.3,1.4c-4.4,-0.5 -9.2,-2 -14.3,-4.2l-17,17C397.5,355.7 421.5,352.7 444.6,329.6z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M303.1,64.7c5,1.8 8.3,4.8 10.4,6.8c5.9,5.9 9.7,11.3 11.7,16.7c2,5.5 1.8,10 1.4,13.3c-0.5,4.4 -2,9.2 -4.2,14.3l17,17c16.4,-30.3 13.3,-54.4 -9.7,-77.4c-13.2,-13.2 -30.1,-17.8 -50.3,-13.7c-14,2.8 -24.9,9.1 -26.9,10.3L187,117.4c3.1,6 7.4,12.5 12.8,19.4L250,86.7l0,0c4.3,-4.1 13,-12.1 21.6,-17.4c5.2,-3.2 9.7,-5.1 13.5,-5.6C292,62.6 297.9,62.9 303.1,64.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M170.4,55.4c-24.2,24.2 -26.4,49.4 -7.3,81.8c4.6,7.8 10.6,16.1 17.7,24.6c16.3,19.5 39.5,41.3 69.2,64.9c19.4,-15.4 36.2,-30.2 49.8,-43.8c6.3,-6.3 12,-12.4 17.1,-18.3l-16.2,-16.2c-5,5.9 -10.7,12.1 -17,18.4c-9,9 -19.5,18.5 -31.2,28.4l-2.5,2.1l-2.5,-2.1c-21.5,-18.1 -38.6,-35 -50.9,-50.1c-7.8,-9.6 -13.8,-18.6 -17.7,-26.7c-3.4,-7 -5.3,-13.4 -5.6,-19c-0.2,-2.7 -0.1,-6.9 2,-12.1c2.1,-5 5.8,-10.2 11.3,-15.7c2.1,-2.1 5.4,-5 10.4,-6.8c5.2,-1.9 11.1,-2.2 18,-0.9l0.1,0c3,0.6 6.4,2 10.4,4.3l18.2,-18.2c-4.8,-2.4 -13.1,-6.2 -23,-8.2C200.5,37.6 183.6,42.2 170.4,55.4z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M273.2,77.6c-7.1,4.8 -14,11.1 -17.7,14.6l80.5,80.5c6.4,-5.2 12.7,-9.7 18.7,-13.6L273.2,77.6z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M55.4,329.6c24.2,24.2 49.4,26.4 81.8,7.3c7.8,-4.6 16.1,-10.6 24.6,-17.7c19.5,-16.3 41.3,-39.5 64.9,-69.2c-15.4,-19.4 -30.2,-36.2 -43.8,-49.8c-6.3,-6.3 -12.4,-12 -18.3,-17.1l-16.2,16.2c5.9,5 12.1,10.7 18.4,17c9,9 18.5,19.5 28.4,31.2l2.1,2.5l-2.1,2.5c-18.1,21.5 -35,38.6 -50.1,50.9c-9.6,7.8 -18.6,13.8 -26.7,17.7c-7,3.4 -13.4,5.3 -19,5.6c-2.7,0.2 -6.9,0.1 -12.1,-2c-5,-2.1 -10.2,-5.8 -15.7,-11.3c-2.1,-2.1 -5,-5.4 -6.8,-10.4c-1.9,-5.2 -2.2,-11.1 -0.9,-18l0,-0.1c0.6,-3 2,-6.4 4.3,-10.4l-18.2,-18.2c-2.4,4.8 -6.2,13.1 -8.2,23C37.6,299.5 42.2,316.4 55.4,329.6z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M86.7,250L86.7,250c-4.1,-4.4 -12,-13.1 -17.3,-21.6c-3.2,-5.2 -5.1,-9.7 -5.6,-13.5c-1.2,-6.9 -0.9,-12.7 0.9,-17.9c1.8,-5 4.8,-8.3 6.8,-10.4c5.9,-5.9 11.3,-9.7 16.7,-11.7c5.5,-2 10,-1.8 13.3,-1.4c4.4,0.5 9.2,2 14.3,4.2l17,-17c-30.3,-16.4 -54.4,-13.3 -77.4,9.7c-13.2,13.2 -17.8,30.1 -13.7,50.3c2.8,14 9.1,24.9 10.3,26.9l65.4,65.4c6,-3.1 12.5,-7.4 19.4,-12.8L86.7,250z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M92.2,244.5l80.5,-80.5c-5.2,-6.4 -9.7,-12.7 -13.6,-18.7l-81.5,81.5C82.4,233.9 88.6,240.8 92.2,244.5z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M329.6,444.6c24.2,-24.2 26.4,-49.4 7.3,-81.8c-4.6,-7.8 -10.6,-16.1 -17.7,-24.6c-16.3,-19.5 -39.5,-41.3 -69.2,-64.9c-19.4,15.4 -36.2,30.2 -49.8,43.8c-6.3,6.3 -12,12.4 -17.1,18.3l16.2,16.2c5,-5.9 10.7,-12.1 17,-18.4c9,-9 19.5,-18.5 31.2,-28.4l2.5,-2.1l2.5,2.1c21.5,18.1 38.6,35 50.9,50.1c7.8,9.6 13.8,18.6 17.7,26.7c3.4,7 5.3,13.4 5.6,19c0.2,2.7 0.1,6.9 -2,12.1c-2.1,5 -5.8,10.2 -11.3,15.7c-2.1,2.1 -5.4,5 -10.4,6.8c-5.2,1.9 -11.1,2.2 -18,0.9l-0.1,0c-3,-0.6 -6.4,-2 -10.4,-4.3l-18.2,18.2c4.7,2.4 13.1,6.1 22.9,8.2C299.4,462.4 316.4,457.8 329.6,444.6z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M244.5,407.8L164,327.3c-6.4,5.2 -12.7,9.7 -18.7,13.6l81.5,81.5C233.9,417.6 240.8,411.4 244.5,407.8z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M170.4,444.6c13.2,13.2 30.1,17.8 50.3,13.7c14,-2.8 24.9,-9.1 26.9,-10.3l65.4,-65.4c-3.1,-6 -7.4,-12.5 -12.8,-19.4L250,413.3l0,0c-4.3,4.1 -13,12.1 -21.6,17.4c-5.2,3.2 -9.7,5.1 -13.5,5.6c-6.9,1.2 -12.7,0.9 -17.9,-0.9c-5,-1.8 -8.3,-4.8 -10.4,-6.8c-5.9,-5.9 -9.7,-11.3 -11.7,-16.7c-2,-5.5 -1.8,-10 -1.4,-13.3c0.5,-4.4 2,-9.2 4.2,-14.3l-17,-17C144.3,397.5 147.3,421.5 170.4,444.6z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -1,12 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<item android:drawable="@color/darkGreyPurple" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
<item android:drawable="@drawable/knott"
android:gravity="center"
/>
</layer-list>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:lottie_autoPlay="true"
app:lottie_rawRes="@raw/cwtch_animated_logo_op"
app:lottie_loop="true"
app:lottie_speed="1.00" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/knott"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowSplashScreenBackground">@color/darkGreyPurple</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/knott</item>
<item name="android:windowSplashScreenIconBackgroundColor">@color/darkGreyPurple</item>
</style>
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -0,0 +1,5 @@
<resources>
<color name="darkGreyPurple">#281831</color>
<color name="testGreen">#00ff00</color>
<color name="ic_launcher_background">@color/darkGreyPurple</color>
</resources>

View File

@ -1,18 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
</resources>

View File

@ -1,21 +1,7 @@
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}
@ -27,7 +13,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
//removed due to gradle namespace conflicts that are beyond erinn's mere mortal understanding
//task clean(type: Delete) {
// delete rootProject.buildDir
//}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@ -1,6 +1,8 @@
#Fri Jun 23 08:50:38 CEST 2017
#Mon Jun 20 10:33:21 PDT 2022
distributionBase=GRADLE_USER_HOME
# third party plugin connectivity_plus should match, so when updating, also update
# lib/third_party/connectivity_plus/connectivity_plus/android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
zipStoreBase=GRADLE_USER_HOME

View File

@ -1,11 +1,25 @@
include ':app', ':cwtch'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.4.2" apply false
id "org.jetbrains.kotlin.android" version "1.8.21" apply false
}
include ":app"

BIN
assets/blodeuwedd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

BIN
assets/fonts/Inter-Bold.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/fonts/Inter-Thin.ttf Normal file

Binary file not shown.

View File

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Binary file not shown.

View File

@ -0,0 +1,93 @@
Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

93
assets/fonts/OFL-noto.txt Normal file
View File

@ -0,0 +1,93 @@
Copyright 2021 Google Inc. All Rights Reserved.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,107 @@
---
colors:
darkGreyPurple: 0x281831
deepPurple: 0x422850
mauvePurple: 0x8E64A5
whiteishPurple: 0xE3DFE4
lightGrey: 0x9E9E9E
softGreen: 0xA0FFB0
softRed: 0xFFA0B0
whitePurple: 0xFFFDFF
softPurple: 0xFDF3FC
purple: 0xDFB9DE
brightPurple: 0xD1B0E0 # not in new: portrait badge color
darkPurple: 0x350052
greyPurple: 0x775F84 # not in new: portrait borders
pink: 0xE85DA1 # not in new: active button color
hotPink: 0xD20070 # #D01972)
softGrey: 0xB3B6B3 # not in new theme: blocked
themes:
name: cwtch
dark:
colors:
background: darkGreyPurple
header: darkGreyPurple
userBubble: mauvePurple
peerBubble: deepPurple
font: whiteishPurple
settings: whiteishPurple
accent: hotPink
theme:
backgroundHilightElementColor: deepPurple
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
defaultButtonDisabledColor: lightGrey
defaultButtonDisabledTextColor: darkGreyPurple
defaultButtonTextColor: whiteishPurple
dropShadowColor: mauvePurple
hilightElementColor: purple
mainTextColor: font # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
portraitBackgroundColor: deepPurple
portraitBlockedBorderColor: lightGrey
portraitBlockedTextColor: lightGrey
portraitContactBadgeColor: hotPink
portraitContactBadgeTextColor: whiteishPurple
portraitOfflineBorderColor: purple
portraitOnlineBorderColor: whiteishPurple
portraitProfileBadgeColor: hotPink
portraitProfileBadgeTextColor: whiteishPurple
scrollbarDefaultColor: purple
sendHintTextColor: mauvePurple
chatReactionIconColor: mauvePurple
textfieldBackgroundColor: deepPurple
textfieldBorderColor: deepPurple
textfieldErrorColor: hotPink
textfieldHintColor: mainTextColor
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
chatImage: Cwtch.png
chatImageColor: peerBubble
light:
colors:
background: whitePurple
header: softPurple
userBubble: purple
peerBubble: softPurple
font: 0x281831
settings: 0x281831
accent: hotPink
theme:
backgroundHilightElementColor: softPurple
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
defaultButtonDisabledColor: softGrey
defaultButtonTextColor: whitePurple # ?
dropShadowColor: purple
hilightElementColor: purple
mainTextColor: settings
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitBackgroundColor: softPurple
portraitBlockedBorderColor: softGrey
portraitBlockedTextColor: softGrey
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: whitePurple
portraitOfflineBorderColor: greyPurple
portraitOnlineBorderColor: font
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: whitePurple
scrollbarDefaultColor: accent
sendHintTextColor: purple
chatReactionIconColor: purple
textfieldBackgroundColor: purple
textfieldBorderColor: purple
textfieldErrorColor: hotPink
textfieldHintColor: font
toolbarIconColor: background # darkPurple
topbarColor: header # softPurple
chatImage: Cwtch.png
chatImageColor: 0xf1dff0

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,86 @@
---
colors:
darkDarkBlue: 0x0E1628
darkLightBlue: 0x19243E
white: 0xE6E9F4
darkBlue: 0x131B2E
lighterDarkBlue: 0x19243E
lightBlue: 0xC0C8E5
themes:
name: ghost
dark:
colors:
background: 0x131B2E
header: 0x0E1628
userBubble: 0x25355A
peerBubble: 0x19243E
font: 0xE6E9F4
settings: 0xE6E9F4
accent: 0xD20070
reaction: 0x96A5D4
theme:
backgroundHilightElementColor: darkDarkBlue
backgroundMainColor: background
backgroundPaneColor: header
defaultButtonColor: accent
dropShadowColor: darkBlue
mainTextColor: font
messageFromMeBackgroundColor: userBubble
messageFromMeTextColor: font
messageFromOtherBackgroundColor: peerBubble
messageFromOtherTextColor: font
portraitOfflineBorderColor: 0x96A5D4
portraitOnlineBorderColor: font
portraitBackgroundColor: background
scrollbarDefaultColor: darkLightBlue
sendHintTextColor: userBubble
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: font
toolbarIconColor: settings
topbarColor: header
chatReactionIconColor: reaction
chatImage: Ghost.png
chatImageColor: userBubble
snackbarBackgroundColor: accent
snackbarTextColor: 0xE6E9F4
light:
colors:
background: 0xE6E9F4
header: 0x96A5D4
userBubble: 0x96A5D4
peerBubble: 0xC0C8E5
font: 0x131B2E
settings: 0x131B2E
accent: 0xD20070
reaction: 0x96A5D4
theme:
backgroundHilightElementColor: peerBubble
backgroundMainColor: background
backgroundPaneColor: background
defaultButtonColor: accent
defaultButtonActiveColor: lighterDarkBlue
defaultButtonDisabledColor: userBubble
dropShadowColor: darkBlue
mainTextColor: settings
messageFromMeBackgroundColor: userBubble
messageFromMeTextColor: font
messageFromOtherBackgroundColor: peerBubble
messageFromOtherTextColor: font
portraitContactBadgeColor: accent
portraitOfflineBorderColor: header
portraitOnlineBorderColor: font
portraitBackgroundColor: background
scrollbarDefaultColor: accent
sendHintTextColor: peerBubble
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: font
toolbarIconColor: 0xffffff
topbarColor: header
chatReactionIconColor: reaction
chatImage: Ghost.png
chatImageColor: peerBubble
snackbarBackgroundColor: accent
snackbarTextColor: background

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,53 @@
---
themes:
name: juniper
dark:
colors:
background: 0x1B1B1B
backgroundAlt: 0x494949
header: 0x1B1B1B
userBubble: 0x373737
peerBubble: 0x494949
font: 0xFFFFFF
settings: 0xFFFDFF
accent: 0x9E6A56
accentAlt: 0x9E6A56
theme:
backgroundMainColor: background
backgroundPaneColor: header
topbarColor: header
mainTextColor: font
defaultButtonColor: accent
textfieldHintColor: mainTextColor
toolbarIconColor: settings
messageFromMeBackgroundColor: userBubble
messageFromMeTextColor: font
messageFromOtherBackgroundColor: peerBubble
messageFromOtherTextColor: font
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
backgroundHilightElementColor: accent
sendHintTextColor: accentAlt
hilightElementColor: accentAlt
defaultButtonTextColor: mainTextColor
defaultButtonDisabledColor: peerBubble
defaultButtonDisabledTextColor: peerBubble
textfieldErrorColor: accent
scrollbarDefaultColor: accent
portraitBackgroundColor: header
portraitOnlineBorderColor: font
portraitOfflineBorderColor: peerBubble
portraitBlockedBorderColor: peerBubble
portraitBlockedTextColor: peerBubble
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: mainTextColor
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: mainTextColor
dropShadowColor: accentAlt
chatReactionIconColor: accentAlt
chatImage: JuniperDark.png
chatImageColor: userBubble
messageSelectionColor: accent
textfieldSelectionColor: accent
menuBackgroundColor: accent

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,91 @@
---
colors:
lavender: 0xB194C1
themes:
name: mermaid
dark:
colors:
background: 0x15282A
header: 0x15282A
userBubble: 0x1d5754
peerBubble: 0x253D3F
font: 0xEDFAFC
settings: 0xEDFAFC
accent: 0x8E64A5
reaction: 0x8E64A5
theme:
backgroundHilightElementColor: peerBubble
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
dropShadowColor: lavender
mainTextColor: font # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
portraitOfflineBorderColor: userBubble
portraitOnlineBorderColor: font
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0xffffff
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0xffffff
portraitBackgroundColor: background
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: mainTextColor
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
sendHintTextColor: userBubble
chatReactionIconColor: reaction
chatImage: Mermaid.png
chatImageColor: peerBubble
snackbarBackgroundColor: accent
snackbarTextColor: 0xEDFAFC
messageSelectionColor: accent
textfieldSelectionColor: accent
menuBackgroundColor: accent
light:
colors:
background: 0xEDFAFC
header: 0x71C1BF
userBubble: 0x71C1BF
peerBubble: 0xD2EFF3
font: 0x15282A
settings: 0x15282A
accent: 0x8E64A5
reaction: 0x71C1BF
theme:
backgroundHilightElementColor: peerBubble
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
dropShadowColor: peerBubble
mainTextColor: settings
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0xffffff
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0xffffff
portraitOfflineBorderColor: userBubble
portraitOnlineBorderColor: font
portraitBackgroundColor: background
scrollbarDefaultColor: accent
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: font
toolbarIconColor: 0xffffff
topbarColor: header # softPurple
sendHintTextColor: userBubble
chatReactionIconColor: reaction
chatImage: Mermaid.png
chatImageColor: peerBubble
snackbarBackgroundColor: accent
snackbarTextColor: background
messageSelectionColor: 0xb1e3ea
textfieldSelectionColor: 0xb1e3ea
menuBackgroundColor: 0xb1e3ea

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,77 @@
---
themes:
name: midnight
dark:
colors:
accentGray: 0xE0E0E0
background: 0x111111
backgroundAlt: 0x494949
header: 0x111111
userBubble: 0x2D2D2D
peerBubble: 0x1B1B1B
font: 0xF0F1F1
settings: 0xF0F1F1
accent: 0xD20070
reaction: 0xD20070
theme:
backgroundHilightElementColor: backgroundAlt
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
dropShadowColor: accentGray
mainTextColor: font # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
scrollbarDefaultColor: accentGray
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: mainTextColor
portraitOfflineBorderColor: 0x676767
portraitOnlineBorderColor: font
portraitBackgroundColor: background
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
sendHintTextColor: userBubble
chatReactionIconColor: reaction
chatImage: Midnight.png
chatImageColor: userBubble
snackbarBackgroundColor: accent
snackbarTextColor: 0xF0F1F1
light:
colors:
background: 0xF0F1F1 # Color( 0xFFFDFF)
header: 0xE0E0E0
userBubble: 0xBABDBE
peerBubble: 0xE0E0E0
font: 0x111111
settings: 0x111111
accent: 0xD20070
reaction: 0xD20070
theme:
backgroundHilightElementColor: peerBubble
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
mainTextColor: settings
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitContactBadgeColor: accent
portraitOfflineBorderColor: userBubble
portraitOnlineBorderColor: font
portraitBackgroundColor: background
scrollbarDefaultColor: accent
textfieldBackgroundColor: userBubble
textfieldHintColor: font
toolbarIconColor: 0xffffff
topbarColor: header # softPurple
sendHintTextColor: userBubble
chatReactionIconColor: reaction
chatImage: Midnight.png
chatImageColor: peerBubble
snackbarBackgroundColor: accent
snackbarTextColor: background

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,86 @@
---
themes:
name: neon1
dark:
colors:
background: 0x281831
header: 0x281831
userBubble: 0x7F00C5
peerBubble: 0x422850
font: 0xFBF3FF
settings: 0x281831
accent: 0x56DCD8
reaction: 0xD891FF
theme:
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
mainTextColor: 0xFBF3FF # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: background
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: background
portraitBackgroundColor: background
portraitOfflineBorderColor: 0x775F84
portraitOnlineBorderColor: font
scrollbarDefaultColor: accent
textfieldHintColor: mainTextColor
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
sendHintTextColor: userBubble
chatReactionIconColor: reaction
defaultButtonTextColor: 0x281831
chatImage: Neon1.png
chatImageColor: 0x4f3060
snackbarBackgroundColor: accent
snackbarTextColor: background
messageSelectionColor: 0x775F84
textfieldSelectionColor: 0x775F84
menuBackgroundColor: 0x775F84
light:
colors:
background: 0xFBF3FF
header: 0x56DCD8
userBubble: 0x56DCD8
peerBubble: 0xF5E1FF
font: 0x281831
settings: 0x281831
accent: 0xD891FF
reaction: 0xD891FF
theme:
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
dropShadowColor: userBubble
mainTextColor: settings
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitOfflineBorderColor: 0xeac1ff
portraitOnlineBorderColor: font
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: font
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: font
scrollbarDefaultColor: accent
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: font
toolbarIconColor: settings # darkPurple
topbarColor: header # softPurple
sendHintTextColor: 0xeac1ff
chatReactionIconColor: reaction
chatImage: Neon1.png
chatImageColor: 0xeac1ff
defaultButtonTextColor: font
snackbarBackgroundColor: accent
snackbarTextColor: font
messageSelectionColor: accent
textfieldSelectionColor: accent
menuBackgroundColor: accent

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,83 @@
---
themes:
name: neon2
dark:
colors:
background: 0x281831
header: 0x281831
userBubble: 0x7F00C5
peerBubble: 0x422850
font: 0xFBF3FF
settings: 0x281831
accent: 0x90EE02
reaction: 0xD891FF
theme:
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
mainTextColor: font # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0x281831
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0x281831
scrollbarDefaultColor: accent
textfieldHintColor: mainTextColor
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
sendHintTextColor: userBubble
chatReactionIconColor: reaction
defaultButtonTextColor: background
chatImage: Neon2.png
chatImageColor: 0x573569
snackbarBackgroundColor: accent
snackbarTextColor: background
messageSelectionColor: 0x775F84
textfieldSelectionColor: 0x775F84
menuBackgroundColor: 0x775F84
light:
colors:
paleGreen: 0xE7F6F6
background: 0xFBFFF6
header: 0x90EE02
userBubble: 0x90EE02
peerBubble: 0xF3FFE4
font: 0x281831
settings: 0x281831
accent: 0x7F00C5
reaction: 0x7F00C5
theme:
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
dropShadowColor: userBubble
mainTextColor: settings
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitOfflineBorderColor: 0x775F84
portraitOnlineBorderColor: font
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: background
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: background
portraitBackgroundColor: background
scrollbarDefaultColor: accent
textfieldBackgroundColor: paleGreen
textfieldBorderColor: peerBubble
textfieldHintColor: font
toolbarIconColor: background # darkPurple
topbarColor: header # softPurple
chatReactionIconColor: accent
chatImage: Neon2.png
chatImageColor: 0xd9ffa8
snackbarBackgroundColor: accent
snackbarTextColor: background
messageSelectionColor: 0xd9ffa8
textfieldSelectionColor: 0xd9ffa8
menuBackgroundColor: 0xd9ffa8

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,84 @@
---
themes:
name: pumpkin
dark:
colors:
background: 0x281831
header: 0x281831
userBubble: 0x873C14
peerBubble: 0x422850
font: 0xFFFAF2
settings: 0xFFFAF2
accent: 0x873C14
reaction: 0x873C14
theme:
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
mainTextColor: font # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
scrollbarDefaultColor: accent
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0xFFFAF2
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0xFFFAF2
portraitOfflineBorderColor: 0x775F84
portraitOnlineBorderColor: font
textfieldHintColor: mainTextColor
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
sendHintTextColor: peerBubble
chatReactionIconColor: reaction
chatImage: Pumpkin.png
chatImageColor: 0x573569
snackbarBackgroundColor: accent
snackbarTextColor: 0xFFFAF2
messageSelectionColor: 0x775F84
textfieldSelectionColor: 0x775F84
menuBackgroundColor: 0x775F84
light:
colors:
background: 0xFFFAF2
header: 0xFF9800
userBubble: 0xFF9800
peerBubble: 0xFFF3E0
font: 0x281831
settings: 0x281831
accent: 0x422850
reaction: 0xFF9800
theme:
backgroundHilightElementColor: peerBubble
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
dropShadowColor: peerBubble
mainTextColor: settings
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0xFFFAF2
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0xFFFAF2
portraitOfflineBorderColor: 0x775F84
portraitOnlineBorderColor: font
scrollbarDefaultColor: accent
textfieldBackgroundColor: background
textfieldBorderColor: userBubble
textfieldHintColor: mainTextColor
toolbarIconColor: background # darkPurple
topbarColor: header # softPurple
sendHintTextColor: 0xffd494
chatReactionIconColor: reaction
chatImage: Pumpkin.png
chatImageColor: 0xFFDCA8
snackbarBackgroundColor: accent
snackbarTextColor: background
messageSelectionColor: 0xFFDCA8
textfieldSelectionColor: 0xFFDCA8
menuBackgroundColor: 0xFFDCA8

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,85 @@
---
themes:
name: vampire
dark:
colors:
background: 0x27141B
header: 0x27141B
userBubble: 0x422850
peerBubble: 0x502033
font: 0xFBF4F7
settings: 0xFBF4F7
accent: 0x502033
reaction: 0xC86B89
theme:
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
mainTextColor: font # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
portraitContactBadgeColor: 0x863655
portraitContactBadgeTextColor: 0xFBF4F7
portraitProfileBadgeColor: 0x863655
portraitProfileBadgeTextColor: 0xFBF4F7
portraitBackgroundColor: peerBubble
portraitOfflineBorderColor: 0x863655
portraitOnlineBorderColor: font
scrollbarDefaultColor: accent
textfieldHintColor: mainTextColor
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
sendHintTextColor: peerBubble
chatReactionIconColor: reaction
chatImage: Vampire.png
chatImageColor: peerBubble
snackbarBackgroundColor: accent
snackbarTextColor: 0xFBF4F7
messageSelectionColor: 0x863655
textfieldSelectionColor: 0x863655
menuBackgroundColor: 0x863655
light:
colors:
background: 0xFBF4F7
header: 0xC86B89
userBubble: 0xDA94A9
peerBubble: 0xF7EAF0
font: 0x27141B
settings: 0xFBF4F7
accent: 0x502033
reaction: 0xDA94A9
theme:
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
dropShadowColor: userBubble
mainTextColor: font
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0xFBF4F7
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0xFBF4F7
portraitOfflineBorderColor: 0x775F84
portraitOnlineBorderColor: font
portraitBackgroundColor: background
scrollbarDefaultColor: accent
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: font
toolbarIconColor: settings # darkPurple
topbarColor: header # softPurple
sendHintTextColor: userBubble
chatReactionIconColor: reaction
chatImage: Vampire.png
chatImageColor: 0xE9BFCD
snackbarBackgroundColor: accent
snackbarTextColor: background
messageSelectionColor: header
textfieldSelectionColor: header
menuBackgroundColor: header

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,86 @@
---
themes:
name: witch
dark:
colors:
background: 0x111b11
header: 0x0E1E0E
userBubble: 0x3B5132
peerBubble: 0x152716
font: 0xF1F3EC
settings: 0xE3ECD3
accent: 0x8E64A5
reaction: 0x97AF6E
theme:
backgroundHilightElementColor: peerBubble
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
defaultButtonColor: accent # hotPink
mainTextColor: font # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0xF1F3EC
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0xF1F3EC
portraitOfflineBorderColor: 0x355934
portraitOnlineBorderColor: font
portraitBackgroundColor: peerBubble
scrollbarDefaultColor: accent
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
textfieldHintColor: mainTextColor
toolbarIconColor: settings # whiteishPurple
topbarColor: header # darkGreyPurple
chatReactionIconColor: reaction
chatImage: Witch.png
chatImageColor: 0x1E321D
snackbarBackgroundColor: accent
snackbarTextColor: 0xF1F3EC
messageSelectionColor: accent
textfieldSelectionColor: accent
menuBackgroundColor: accent
light:
colors:
background: 0xF1F3EC
header: 0x97af6e
userBubble: 0x97AF6E
peerBubble: 0xE3ECD3
font: 0x111b11
settings: 0x0E1E0E
accent: 0x8E64A5
reaction: 0x97AF6E
theme:
backgroundHilightElementColor: peerBubble
backgroundMainColor: background # whitePurple
backgroundPaneColor: background # whitePurple
defaultButtonColor: accent # hotPink
mainTextColor: settings
messageFromMeBackgroundColor: userBubble # brightPurple
messageFromMeTextColor: font # mainTextColor
messageFromOtherBackgroundColor: peerBubble # purple
messageFromOtherTextColor: font # darkPurple
portraitContactBadgeColor: accent
portraitContactBadgeTextColor: 0xF1F3EC
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: 0xF1F3EC
portraitOfflineBorderColor: userBubble
portraitOnlineBorderColor: font
portraitBackgroundColor: background
scrollbarDefaultColor: accent
textfieldBackgroundColor: background
textfieldBorderColor: userBubble
textfieldHintColor: font
toolbarIconColor: settings # darkPurple
topbarColor: header # softPurple
chatReactionIconColor: reaction
chatImage: Witch.png
chatImageColor: 0xD0DDBA
snackbarBackgroundColor: accent
snackbarTextColor: background
messageSelectionColor: accent
textfieldSelectionColor: accent
menuBackgroundColor: accent

8
build.yaml Normal file
View File

@ -0,0 +1,8 @@
targets:
$default:
sources:
- lib/**
- pubspec.*
- $package$
# Allows the code generator to target files outside of the lib folder
- integration_test/**.dart

241
elf_x86_64.x Normal file
View File

@ -0,0 +1,241 @@
/* Slightly Modified Default linker script, for normal executables */
/* The only difference is that this version suppresses the .comment section. See DISCARD section`
/* Copyright (C) 2014-2022 Free Software Foundation, Inc.
Copying and distribution of this script, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. */
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
"elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib");
SECTIONS
{
/* Read-only sections, merged into text segment: */
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
.interp : { *(.interp) }
.note.gnu.build-id : { *(.note.gnu.build-id) }
.hash : { *(.hash) }
.gnu.hash : { *(.gnu.hash) }
.dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) }
.gnu.version : { *(.gnu.version) }
.gnu.version_d : { *(.gnu.version_d) }
.gnu.version_r : { *(.gnu.version_r) }
.rela.init : { *(.rela.init) }
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
.rela.fini : { *(.rela.fini) }
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
.rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
.rela.ctors : { *(.rela.ctors) }
.rela.dtors : { *(.rela.dtors) }
.rela.got : { *(.rela.got) }
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
.rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) }
.rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) }
.rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) }
.rela.ifunc : { *(.rela.ifunc) }
.rela.plt :
{
*(.rela.plt)
PROVIDE_HIDDEN (__rela_iplt_start = .);
*(.rela.iplt)
PROVIDE_HIDDEN (__rela_iplt_end = .);
}
.relr.dyn : { *(.relr.dyn) }
.init :
{
KEEP (*(SORT_NONE(.init)))
}
.plt : { *(.plt) *(.iplt) }
.plt.got : { *(.plt.got) }
.plt.sec : { *(.plt.sec) }
.text :
{
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
*(.text.exit .text.exit.*)
*(.text.startup .text.startup.*)
*(.text.hot .text.hot.*)
*(SORT(.text.sorted.*))
*(.text .stub .text.* .gnu.linkonce.t.*)
/* .gnu.warning sections are handled specially by elf.em. */
*(.gnu.warning)
}
.fini :
{
KEEP (*(SORT_NONE(.fini)))
}
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) }
.eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) }
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) }
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
.gnu_extab : ONLY_IF_RO { *(.gnu_extab*) }
/* These sections are generated by the Sun/Oracle C++ compiler. */
.exception_ranges : ONLY_IF_RO { *(.exception_ranges*) }
/* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */
. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
/* Exception handling */
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) }
.gnu_extab : ONLY_IF_RW { *(.gnu_extab) }
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
.exception_ranges : ONLY_IF_RW { *(.exception_ranges*) }
/* Thread Local Storage sections */
.tdata :
{
PROVIDE_HIDDEN (__tdata_start = .);
*(.tdata .tdata.* .gnu.linkonce.td.*)
}
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
}
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
PROVIDE_HIDDEN (__init_array_end = .);
}
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
PROVIDE_HIDDEN (__fini_array_end = .);
}
.ctors :
{
/* gcc uses crtbegin.o to find the start of
the constructors, so we make sure it is
first. Because this is a wildcard, it
doesn't matter if the user does not
actually link against crtbegin.o; the
linker won't look for a file to match a
wildcard. The wildcard also means that it
doesn't matter which directory crtbegin.o
is in. */
KEEP (*crtbegin.o(.ctors))
KEEP (*crtbegin?.o(.ctors))
/* We don't want to include the .ctor section from
the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the
end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
}
.dtors :
{
KEEP (*crtbegin.o(.dtors))
KEEP (*crtbegin?.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
}
.jcr : { KEEP (*(.jcr)) }
.data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
.dynamic : { *(.dynamic) }
.got : { *(.got) *(.igot) }
. = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .);
.got.plt : { *(.got.plt) *(.igot.plt) }
.data :
{
*(.data .data.* .gnu.linkonce.d.*)
SORT(CONSTRUCTORS)
}
.data1 : { *(.data1) }
_edata = .; PROVIDE (edata = .);
. = .;
__bss_start = .;
.bss :
{
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
/* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections.
FIXME: Why do we need it? When there is no .bss section, we do not
pad the .data section. */
. = ALIGN(. != 0 ? 64 / 8 : 1);
}
.lbss :
{
*(.dynlbss)
*(.lbss .lbss.* .gnu.linkonce.lb.*)
*(LARGE_COMMON)
}
. = ALIGN(64 / 8);
. = SEGMENT_START("ldata-segment", .);
.lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
{
*(.lrodata .lrodata.* .gnu.linkonce.lr.*)
}
.ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
{
*(.ldata .ldata.* .gnu.linkonce.l.*)
. = ALIGN(. != 0 ? 64 / 8 : 1);
}
. = ALIGN(64 / 8);
_end = .; PROVIDE (end = .);
. = DATA_SEGMENT_END (.);
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1. */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions. */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2. */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2. */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions. */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
/* DWARF 3. */
.debug_pubtypes 0 : { *(.debug_pubtypes) }
.debug_ranges 0 : { *(.debug_ranges) }
/* DWARF 5. */
.debug_addr 0 : { *(.debug_addr) }
.debug_line_str 0 : { *(.debug_line_str) }
.debug_loclists 0 : { *(.debug_loclists) }
.debug_macro 0 : { *(.debug_macro) }
.debug_names 0 : { *(.debug_names) }
.debug_rnglists 0 : { *(.debug_rnglists) }
.debug_str_offsets 0 : { *(.debug_str_offsets) }
.debug_sup 0 : { *(.debug_sup) }
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.comment) }
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

View File

@ -0,0 +1,16 @@
Cwtch (/kʊtʃ/ - a Welsh word roughly translating to “a hug that creates a safe place”) is a decentralized,
privacy-preserving, multi-party messaging protocol that can be used to build metadata resistant applications.
- Decentralized and Open: There is no “Cwtch service” or “Cwtch network”. Participants in Cwtch
can host their own safe spaces, or lend their infrastructure to others seeking a safe space.
The Cwtch protocol is open, and anyone is free to build bots, services and user interfaces and
integrate and interact with Cwtch.
- Privacy Preserving: All communication in Cwtch is end-to-end encrypted and takes place over Tor v3
onion services.
- Metadata Resistant: Cwtch has been designed such that no information is exchanged or available to
anyone without their explicit consent, including on-the-wire messages and protocol metadata.
For more information on how Cwtch works and a guide to metadata resistant communication please
checkout the Cwtch Handbook: https://docs.cwtch.im/

View File

@ -0,0 +1 @@
Metadata resistant privacy platform designed to help you resist surveillance

View File

@ -0,0 +1 @@
Cwtch

View File

@ -0,0 +1 @@
https://cwtch.im/cwtch-explainer.mp4

View File

@ -1,6 +1,8 @@
#!/bin/sh
VERSION=`cat LIBCWTCH-GO-MACOS.version`
VERSION=`cat LIBCWTCH-GO.version`
echo $VERSION
curl https://build.openprivacy.ca/files/libCwtch-go-macos-$VERSION/libCwtch.dylib --output libCwtch.dylib
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/macos/libCwtch.x64.dylib --output libCwtch.x64.dylib
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/macos/libCwtch.arm64.dylib --output libCwtch.arm64.dylib

View File

@ -1,7 +1,8 @@
$Env:VERSION = type LIBCWTCH-GO.version
echo $Env:VERSION
Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/libCwtch.dll -OutFile windows/libCwtch.dll
# This should automatically fail on error...
Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-autobindings-$Env:VERSION/windows/libCwtch.dll -OutFile windows/libCwtch.dll
#Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/cwtch.aar -OutFile android/cwtch/cwtch.aar
#Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/libCwtch.so -Outfile linux/libCwtch.so

View File

@ -3,5 +3,6 @@
VERSION=`cat LIBCWTCH-GO.version`
echo $VERSION
wget https://build.openprivacy.ca/files/libCwtch-go-$VERSION/cwtch.aar -O android/cwtch/cwtch.aar
wget https://build.openprivacy.ca/files/libCwtch-go-$VERSION/libCwtch.so -O linux/libCwtch.so
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/android/cwtch.aar --output android/app/cwtch/cwtch.aar
# FIXME...at some point we need to support different linux architectures...for now rely on existing expectations and rename x64 lib
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/linux/libCwtch.x64.so --output linux/libCwtch.so

View File

@ -1,7 +1,7 @@
#!/bin/sh
cd macos
curl https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-macos-0.4.6.7.tar.gz --output tor.tar.gz
curl https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-macos.tar.gz --output tor.tar.gz
tar -xzf tor.tar.gz
chmod a+x Tor/tor.real
cd ..

View File

@ -1,6 +1,6 @@
Invoke-WebRequest -Uri https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-win64-0.4.6.5.zip -OutFile tor.zip
Invoke-WebRequest -Uri https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-win64.zip -OutFile tor.zip
if ((Get-FileHash tor.zip -Algorithm sha512).Hash -ne '7917561a7a063440a1ddfa9cb544ab9ffd09de84cea3dd66e3cc9cd349dd9f85b74a522ec390d7a974bc19b424c4d53af60e57bbc47e763d13cab6a203c4592f' ) { Write-Error 'tor.zip sha512sum mismatch' }
if ((Get-FileHash tor.zip -Algorithm sha512).Hash -ne 'a1c90d9a2f82df5f3d973e260bbfec76e413417cfa276fb70d1668214e2e607cf65be86a25e30c6f7814261dc154a02568459945f31389ae6a22e03d6d0d3c4c' ) { Write-Error 'tor.zip sha512sum mismatch' }
Expand-Archive -Path tor.zip -DestinationPath Tor

View File

@ -1,12 +1,14 @@
#!/bin/sh
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.5.9-linux-x86_64 -O linux/tor
chmod a+x linux/tor
cd linux
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-linux-x86_64.tar.gz -O tor.tar.gz
tar -xzf tor.tar.gz
cd ..
mkdir -p android/app/src/main/jniLibs/arm64-v8a
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.4.9-arm64_pie -O android/app/src/main/jniLibs/arm64-v8a/libtor.so
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-android-arm64 -O android/app/src/main/jniLibs/arm64-v8a/libtor.so
chmod a+x android/app/src/main/jniLibs/arm64-v8a/libtor.so
mkdir -p android/app/src/main/jniLibs/armeabi-v7a
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.4.9-arm_pie -O android/app/src/main/jniLibs/armeabi-v7a/libtor.so
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-android-arm7 -O android/app/src/main/jniLibs/armeabi-v7a/libtor.so
chmod a+x android/app/src/main/jniLibs/armeabi-v7a/libtor.so

5
gen-nightly-index.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
# A basic script to redirect https://build.openprivacy.ca/cwtch-nightly.html to the latest nightly.
# In the future we may want to make this page nicer...
echo "<html><head><title>Cwtch Nightly</title><meta http-equiv=\"refresh\" content=\"0;URL='https://build.openprivacy.ca/files/$1'\" /> s</head></html>" > cwtch-nightly.html

20
index2.js Normal file
View File

@ -0,0 +1,20 @@
var fs = require("fs");
var reporter = require('cucumber-html-reporter');
const reportRootDir = 'integration_test/gherkin/reports/'
const jsonReportPath = `${reportRootDir}json_report.json`;
const htmlReportPath = `${reportRootDir}cucumber_report.html`;
const reportFile = fs.readFileSync(`${reportRootDir}integration_response_data.json`);
//const jsonReport = JSON.parse(JSON.parse(reportFile).gherkin_reports)[0];
const jsonReport = JSON.parse(reportFile);
fs.writeFileSync(jsonReportPath, JSON.stringify(jsonReport));
var options = {
theme: 'bootstrap',
jsonFile: jsonReportPath,
output: htmlReportPath,
reportSuiteAsScenarios: true,
launchReport: false,
};
reporter.generate(options);

View File

@ -0,0 +1,60 @@
## Environments
Located in the `integration_test/env` folder and managed by the hooks in `integration_test/hooks/env.dart`. Specify the environment you want a feature to run in by tagging it.
* `[no tag] (env/default)`: default environment to load if none is specified
* `@env:aliceandbob1 (env/aliceandbob1)`: no-password Alice, Bob, and Carol profiles. Alice and Bob have already added each other, Carol has no contacts
* `@env:persist (env/persist)`: changes made to this profile persist between features and scenarios (but NOT between runs)
* `@env:clean`: runs the feature with no profile existing yet on disk
## Tests
[ ] 1. general
[X] splash screen + clean load
[X] setting save+load (TODO: dropdowns)
[~] tor status+reset
[~] shutdown cwtch
[ ] 2. global settings (verify functionality)
[_] language # blocked by dropdown
[_] theme+color theme # blocked by dropdown
[ ] column mode -> background? so all tests check both modes?
[X] block unknown
[X] streamer mode
[ ] 3. experiments (
[ ] group chat -> needs many
[ ] server hosting -> also many
[ ] file sharing -> a couple
[ ] image previews
[ ] clickable links (how much to test?)
[ ] 4. profile mgmt
[X] create+delete
[X] default+password load
[X] name change
[ ] password change
[ ] known server mgmt
[ ] 5. p2p chat
[ ] add, remove, block, archive
[ ] invite accept+reject
[X] send+receive
[ ] acks
[ ] try to send a long message
[ ] malformed messages, replies
[ ] overlays (invite, file/image)
[ ] send
[ ] receive
[ ] functionality
[ ] 6. p2p settings
[ ] name saving + transmission
[ ] block (ui indicators, functionality) inc in groups
[ ] history save+load
[ ] 7. groupchat
[ ] add, leave, archive
[ ] send+receive inc acks
[ ] try to send a long message
[ ] malformed messages, replies
[ ] overlays (invite, file/image) inc from non-contacts
[ ] send
[ ] receive
[ ] functionality
[ ] 8. group settings
[ ] display name

View File

@ -1,53 +0,0 @@
// This is a basic Flutter integration test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:cwtch/main_test.dart' as app;
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
_testMain();
}
void _testMain() {
testWidgets('Blocked message rejection test', (WidgetTester tester) async {
final String testerProfile = "mr roboto";
final String blockedProfile = "rudey";
// start the app and render a few frames
app.main();
await tester.pump(); await tester.pump(); await tester.pump();
//await tester.pumpAndSettle();
for (var i = 0; i < 30; i++) {
print("$i pump");
await tester.pump();
}
// log in to a profile with a blocked contact
await tester.tap(find.text(testerProfile));
await tester.pump(); await tester.pump(); await tester.pump();
expect(find.byIcon(Icons.block), findsOneWidget);
// use the debug control to inject a message from the contact
await tester.tap(find.byIcon(Icons.bug_report));
await tester.pump(); await tester.pump(); await tester.pump();
// screenshot test
print(Directory.current);
//Directory.current = "/home/erinn/AndroidStudioProjects/flwtch/integration_test";
await expectLater(find.byKey(Key('app')), matchesGoldenFile('blockedcontact.png'));
// any active message badges?
expect(find.text('1'), findsNothing);
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1 @@
_âeK%?Š!ţ~Lö9<C3B6>u×ÍlýQQż¦U•rMQCN5<4E>T-Ó/[<ń<ěn@KgŚă-ŕóŕČŃÓWÇ^l$řIC]»ÎI× ů@z¤m•Şb ŠNgířż?ő:†IşäD!ă±6ć°%čě…b

View File

@ -0,0 +1 @@
¢‰qö3‰ ÉÌ¥êÒŽB7 Å¢(ÊvQBöÞɱ<C389>øŒœ¾F±zŠ\\UƒÈG[Ü/ £Ñ?uš¼\;]y”HþG|þÛ,Þ3xÛÞeE0 !¬ÄSÍž<nÐÃòÐÉ®M~ üw “ÀëQ@6ǸËÖo£ÉüØ…ÕöÀiò

View File

@ -0,0 +1 @@
;KĄĂ”ČÓŠť\|ç<ÂŐÉ^1iRüÁw°ôFŔQĄ'¢©©z{P4ĂP(ä"5͸Qpr7˝`ŇK^uý¸ČÖ;©1&Ĺ,vŞ K/YößžŹmĄâ}±3]/§v"&ĽiѸ!3Wîyëjuvą¶D+w_'

Some files were not shown because too many files have changed in this diff Show More