Compare commits

..

17 Commits

Author SHA1 Message Date
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
10 changed files with 57 additions and 36 deletions

View File

@ -1 +1 @@
2024-02-09-13-23-v0.0.11
2024-02-12-11-04-v0.0.12

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

@ -404,9 +404,12 @@ class Settings extends ChangeNotifier {
// checks experiment settings and file extension for image previews
// (ignores file size; if the user manually accepts the file, assume it's okay to preview)
bool shouldPreview(String path) {
return isExperimentEnabled(ImagePreviewsExperiment) && isImage(path);
}
bool isImage(String path) {
var lpath = path.toLowerCase();
return isExperimentEnabled(ImagePreviewsExperiment) &&
(lpath.endsWith(".jpg") || lpath.endsWith(".jpeg") || lpath.endsWith(".png") || lpath.endsWith(".gif") || lpath.endsWith(".webp") || lpath.endsWith(".bmp"));
return (lpath.endsWith(".jpg") || lpath.endsWith(".jpeg") || lpath.endsWith(".png") || lpath.endsWith(".gif") || lpath.endsWith(".webp") || lpath.endsWith(".bmp"));
}
String get downloadPath => _downloadPath;

View File

@ -162,27 +162,29 @@ class _GlobalSettingsExperimentsViewState extends State<GlobalSettingsExperiment
),
]),
),
SwitchListTile(
title: Text(AppLocalizations.of(context)!.blodeuweddExperimentEnable),
subtitle: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
? Text(AppLocalizations.of(context)!.blodeuweddDescription)
: Text(AppLocalizations.of(context)!.blodeuweddNotSupported),
value: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported() && settings.isExperimentEnabled(BlodeuweddExperiment),
onChanged: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
? (bool value) {
if (value) {
settings.enableExperiment(BlodeuweddExperiment);
} else {
settings.disableExperiment(BlodeuweddExperiment);
}
saveSettings(context);
}
: null,
activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
inactiveThumbColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(Icons.assistant, color: settings.current().mainTextColor),
),
Visibility(
visible: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported(),
child: SwitchListTile(
title: Text(AppLocalizations.of(context)!.blodeuweddExperimentEnable),
subtitle: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
? Text(AppLocalizations.of(context)!.blodeuweddDescription)
: Text(AppLocalizations.of(context)!.blodeuweddNotSupported),
value: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported() && settings.isExperimentEnabled(BlodeuweddExperiment),
onChanged: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
? (bool value) {
if (value) {
settings.enableExperiment(BlodeuweddExperiment);
} else {
settings.disableExperiment(BlodeuweddExperiment);
}
saveSettings(context);
}
: null,
activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
inactiveThumbColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(Icons.assistant, color: settings.current().mainTextColor),
)),
Visibility(
visible: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported() && settings.isExperimentEnabled(BlodeuweddExperiment),
child: CwtchFolderPicker(

View File

@ -120,7 +120,7 @@ class _ContactRowState extends State<ContactRow> {
)),
Container(
padding: EdgeInsets.all(0),
height: Provider.of<Settings>(context).fontScaling * 14.0 + 5.0,
height: contact.isInvitation ? Provider.of<Settings>(context).fontScaling * 14.0 + 35.0 : Provider.of<Settings>(context).fontScaling * 14.0 + 5.0,
child: contact.isInvitation == true
? Wrap(alignment: WrapAlignment.start, direction: Axis.vertical, children: <Widget>[
Padding(

View File

@ -75,6 +75,7 @@ class FileBubbleState extends State<FileBubble> {
var flagStarted = Provider.of<MessageMetadata>(context).attributes["file-downloaded"] == "true";
var borderRadius = 15.0;
var showFileSharing = Provider.of<Settings>(context).isExperimentEnabled(FileSharingExperiment);
var showImages = Provider.of<Settings>(context).isExperimentEnabled(ImagePreviewsExperiment);
DateTime messageDate = Provider.of<MessageMetadata>(context).timestamp;
var metadata = Provider.of<MessageMetadata>(context);
@ -91,13 +92,16 @@ class FileBubbleState extends State<FileBubble> {
var downloadComplete = (fromMe && path != null) || Provider.of<ProfileInfoState>(context).downloadComplete(widget.fileKey());
var downloadInterrupted = Provider.of<ProfileInfoState>(context).downloadInterrupted(widget.fileKey());
var isImagePreview = false;
if (path != null) {
isImagePreview = Provider.of<Settings>(context).isImage(path);
}
if (downloadComplete && path != null) {
var lpath = path.toLowerCase();
if (lpath.endsWith(".jpg") || lpath.endsWith(".jpeg") || lpath.endsWith(".png") || lpath.endsWith(".gif") || lpath.endsWith(".webp") || lpath.endsWith(".bmp")) {
if (isImagePreview) {
if (myFile == null || myFile?.path != path) {
setState(() {
myFile = new File(path!);
// reset
if (myFile?.existsSync() == false) {
myFile = null;
@ -135,10 +139,13 @@ class FileBubbleState extends State<FileBubble> {
}
}
// we don't preview a non downloaded file...
if (widget.isPreview && myFile != null) {
// if we should show a preview i.e. we are in a quote bubble
// then do that here...
if (showImages && isImagePreview && widget.isPreview && myFile != null) {
// if the image exists then just show the image as a preview
return getPreview(context);
} else if (widget.isPreview && myFile == null) {
} else if (showFileSharing && widget.isPreview) {
// otherwise just show a summary...
return Row(
children: [
Icon(CwtchIcons.attached_file_3, size: 32, color: Provider.of<Settings>(context).theme.messageFromMeTextColor),
@ -162,9 +169,7 @@ class FileBubbleState extends State<FileBubble> {
if (!showFileSharing) {
wdgDecorations = Text('\u202F');
} else if (fromMe) {
wdgDecorations = Text('\u202F');
} else if (downloadComplete && path != null) {
} else if ((fromMe || downloadComplete) && path != null) {
// in this case, whatever marked download.complete would have also set the path
if (myFile != null && Provider.of<Settings>(context).shouldPreview(path)) {
isPreview = true;
@ -178,6 +183,8 @@ class FileBubbleState extends State<FileBubble> {
pop(context, myFile!, widget.nameSuggestion);
},
)));
} else if (fromMe) {
wdgDecorations = Text('\u202F');
} else {
wdgDecorations = Visibility(
visible: widget.interactive, child: SelectableText(AppLocalizations.of(context)!.fileSavedTo + ': ' + path + '\u202F', style: Provider.of<Settings>(context).scaleFonts(defaultTextStyle)));

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 151 KiB

View File

@ -50,7 +50,8 @@ ShowInstDetails show
!define MUI_WELCOMEPAGE_TITLE "Welcome to the Cwtch installer"
!define MUI_WELCOMEPAGE_TEXT "Cwtch (pronounced: kutch) is a Welsh word roughly meaning 'a hug that creates a safe space'$\n$\n\
Cwtch is a platform for building consentful, decentralized, untrusted infrastructure using metadata resistant group communication applications. Currently there is a selfnamed instant messaging prototype app that is driving development and testing. Many Further apps are planned as the platform matures.$\n$\n\
Participants in Cwtch can host their own safe spaces, or lend their infrastructure to others seeking a safe space. There is no 'Cwtch service' or 'Cwtch network'.$\n$\n\
All communication in Cwtch is end-to-end encrypted and takes place over Tor v3 onion services, and 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.$\n$\n\
Please close any running copies of Cwtch before installing a new version."
; Detecting if Cwtch is running and reminding the user or closing it appears to require 3rd party plugins that take the form of decade+ old .dlls in zips from a wiki...

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 25 KiB