Skip to content

Commit

Permalink
Merge branch 'release/1.1.19'
Browse files Browse the repository at this point in the history
* release/1.1.19:
  Update version_check.php
  Update changelog
  Add a note on backups to the README
  Strip out support for debug facilities
  Properly handle OperationCanceledException when creating client
  Add SyncthingCustomPath to user-editable settings
  Add note to context resolver saying to use shift/control
  Don't crash if we are unable to set auto-start
  Retry launching Syncthing up to 4 times a minute
  Be more resilient to errors when pausing/unpausing devices
  Attempt to fix Rakefile after GitHub disabled some ciphers...
  Fix minor typos
  Support Syncthing's filesystem watchers
  Don't crash twice if the configuration file is corrupt
  • Loading branch information
canton7 committed Feb 28, 2018
2 parents 7c94434 + f16f100 commit 4e0e9eb
Show file tree
Hide file tree
Showing 26 changed files with 342 additions and 348 deletions.
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
Changelog
=========

v1.1.19
-------

- Disable the built-in filesystem watcher if Syncthing's watcher is enabled
- Retry starting Syncthing if it crashed (#421)
- Make it clearer that multiple items in the Conflict Resolver window can be selected at once (#359)
- Expose the setting to change the location of syncthing.exe (#386)
- Fix issue where "Syncthing is starting" would appear forever (#420)
- Fix crash when pausing/unpausing devices (#435)
- Fix a rare condition when trying to enable auto-start would crash (#407)
- Remove support for debug facilities, since Syncthing has this built in

v1.1.18
-------

Expand Down
14 changes: 11 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ Good question. The answer depends on whether you installed SyncTrayzor using the

The Installed version of SyncTrayzor will install itself into `C:\Program Files\SyncTrayzor` or `C:\Program Files (x86)\SyncTrayzor` for the 64-bit and 32-bit version respectively.

By default, SyncTrayzor will put its own configuration in `C:\Users\<You>\AppData\Roaming\SyncTrayor`, and let Syncthing use its default folder for its database, which is `C:\Users\<You>\AppData\Local\Syncthing`.
By default, SyncTrayzor will put its own configuration in `C:\Users\<You>\AppData\Roaming\SyncTrayzor`, and let Syncthing use its default folder for its database, which is `C:\Users\<You>\AppData\Local\Syncthing`.
It will also create a registry key at `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\SyncTrayzor` the first time that it is run, which will let it start when you log in.

You can delete this registry key by unchecking "Automatically start on login" in the settings.
Expand Down Expand Up @@ -168,10 +168,18 @@ Here's a handy table of what you need to copy where if you're migrating between
| "raw" Syncthing | SyncTrayzor Portable | Copy the contents of `C:\Users\<You>\AppData\Local\Syncthing` into the `data\syncthing` folder inside the portable directory |
| SyncTrayzor Installed | "raw" Syncthing | None |
| SyncTrayzor Installed | SyncTrayzor Portable | <ol><li>Copy the contents of `C:\Users\<You>\AppData\Local\Syncthing` into the `data\syncthing` folder inside the portable directory</li><li>Copy `C:\Users\<You>\AppData\Roaming\SyncTrayzor\config.xml` to `data\config.xml`</li></ol> |
| SyncTrayzor Portable | "raw" Syncthing | Copy the contents of the `data\syncthing\ folder inside the portable directly into `C:\Users\<You>\AppData\Local\Syncthing` |
| SyncTrayzor Portable | "raw" Syncthing | Copy the contents of the `data\syncthing\` folder inside the portable directly into `C:\Users\<You>\AppData\Local\Syncthing` |
| SyncTrayzor Portable | SyncTrayzor Installed | <ol><li>Copy the contents of the `data\syncthing` folder inside the portable directory into `C:\Users\<You>\AppData\Local\Syncthing`</li><li>Copy `data\config.xml` to `C:\Users\<You>\AppData\Roaming\SyncTrayzor\config.xml`</li></ol> |


Backups
-------

For the installed version of SyncTrayzor, in order to save your configuration (both Syncthing's and SyncTrayzor's), you will need to backup the following paths:

- `C:\Users\<You>\AppData\Roaming\SyncTrayzor`
- `C:\Users\<You>\AppData\Local\Syncthing`


Using Syncthing beta releases
-----------------------------
Expand Down Expand Up @@ -217,4 +225,4 @@ There are various parameters inside the file `SyncTrayzor.exe.config` which can
To override these, pass the flag `/SyncTrayzorExeConfig="Path\To\Customized\SyncTrayzor.exe.config"` to the installer -- the specified `SyncTrayzor.exe.config` will overwrite the default.

Note that the contents / structure of `SyncTrayzor.exe.config` may change between releases.
Using the wrong version may cause a crash, or incorrect behaviour.
Using the wrong version may cause a crash, or incorrect behaviour.
8 changes: 3 additions & 5 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
require 'tmpdir'
require 'open-uri'
require 'openssl'

require_relative 'build/TxClient'
require_relative 'build/CsprojResxWriter'
Expand Down Expand Up @@ -285,24 +284,23 @@ end
desc 'Create both 64-bit and 32-bit portable packages'
task :portable => ARCH_CONFIG.map{ |x| :"portable:#{x.arch}" }


namespace :syncthing do
namespace :download do
ARCH_CONFIG.each do |arch_config|
desc "Download syncthing (#{arch_config.arch})"
task arch_config.arch, [:version] => [:"build-checksum-util"] do |t, args|
task arch_config.arch, [:version] => [:"build-checksum-util"] do |t, args|
ensure_7zip

Dir.mktmpdir do |tmp|
download_file = File.join(tmp, File.basename(arch_config.download_uri(args[:version])))
File.open(download_file, 'wb') do |outfile|
open(arch_config.download_uri(args[:version]), { ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE }) do |infile|
open(arch_config.download_uri(args[:version])) do |infile|
outfile.write(infile.read)
end
end

File.open(File.join(tmp, 'sha1sum.txt.asc.'), 'w') do |outfile|
open(arch_config.sha1sum_download_uri(args[:version]), { ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE }) do |infile|
open(arch_config.sha1sum_download_uri(args[:version])) do |infile|
outfile.write(infile.read)
end
end
Expand Down
7 changes: 4 additions & 3 deletions server/version_check.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ function get_with_wildcard($src, $value, $default = null)
}

$versions = [
'1.1.18' => [
'1.1.19' => [
'installed' => [
'direct_download_url' => [
'x64' => 'https://github.com/canton7/SyncTrayzor/releases/download/v{version}/SyncTrayzorSetup-x64.exe',
Expand All @@ -81,12 +81,13 @@ function get_with_wildcard($src, $value, $default = null)
'sha1sum_download_url' => 'https://github.com/canton7/SyncTrayzor/releases/download/v{version}/sha1sum.txt.asc',
'sha512sum_download_url' => 'https://github.com/canton7/SyncTrayzor/releases/download/v{version}/sha512sum.txt.asc',
'release_page_url' => 'https://github.com/canton7/SyncTrayzor/releases/tag/v{version}',
'release_notes' => "- Don't store Syncthing's API key in config, and don't log it\n- Fix filesystem notifications when the file contained non-ASCII characters\n- Don't show device connected/disconnected notifications if a device is reconnecting a lot\n- Don't watch / raise notifications about new folders if no existing folders are watched / have notifications\n- Don't write to the disk as much by default\n- Fix crash on the settings screen\n- Be more reslient to weird registry permissions, fixing crash\n- Fix crash when calculating data transfer stats\n- Be more reslient when trying to find a free port for Syncthing to use",
'release_notes' => "- Disable the built-in filesystem watcher if Syncthing's watcher is enabled\n- Retry starting Syncthing if it crashed (#421)\n- Make it clearer that multiple items in the Conflict Resolver window can be selected at once (#359)\n- Expose the setting to change the location of syncthing.exe (#386)\n- Fix issue where "Syncthing is starting" would appear forever (#420)\n- Fix crash when pausing/unpausing devices (#435)\n- Fix a rare condition when trying to enable auto-start would crash (#407)\n- Remove support for debug facilities, since Syncthing has this built in",
]
];

$upgrades = [
'1.1.17' => ['to' => 'latest', 'formatter' => '5', 'overrides' => ['release_notes' => "- Fix uninstaller crash if the survey is submitted while not connected to the internet"]],
'1.1.18' => ['to' => 'latest', 'formatter' => '5'],
'1.1.17' => ['to' => 'latest', 'formatter' => '5'],
'1.1.16' => ['to' => 'latest', 'formatter' => '5'],
'1.1.15' => ['to' => 'latest', 'formatter' => '5'],
'1.1.14' => ['to' => 'latest', 'formatter' => '5'],
Expand Down
151 changes: 77 additions & 74 deletions src/SyncTrayzor/Pages/ConflictResolution/ConflictResolutionView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,80 +72,83 @@
Visibility="{Binding IsSyncthingStopped, Converter={x:Static s:BoolToVisibilityConverter.Instance}}"
Text="{l:Loc ConflictResolutionView_Status_SyncthingNotRunning}"/>

<ListView Visibility="{Binding Conflicts, Converter={x:Static s:BoolToVisibilityConverter.Instance}}"
ItemsSource="{Binding Source={StaticResource ConflictsItemsSource}}"
SelectionMode="Extended"
SelectionChanged="{s:Action SelectionChanged}"
MouseDoubleClick="{s:Action ListViewDoubleClick}"
BorderThickness="0"
MinHeight="10">
<i:Interaction.Behaviors>
<xaml:GridViewSortByBehaviour/>
</i:Interaction.Behaviors>
<ListView.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn xaml:GridViewSortBy.SortByKey="FileName"
xaml:GridViewSortBy.IsInitiallySorted="True">
<!-- Need a proper header for this, for the initial sort -->
<GridViewColumnHeader>
<TextBlock Text="{l:Loc ConflictResolutionView_Header_File}"/>
</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Width="15" Height="15" Margin="5,0,5,0"
Source="{Binding Icon}"/>
<TextBlock Text="{Binding FileName}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="{l:Loc ConflictResolutionView_Header_LastModified}"
DisplayMemberBinding="{Binding LastModified}"
xaml:GridViewSortBy.SortByKey="LastModified"/>
<GridViewColumn Header="{l:Loc ConflictResolutionView_Header_Folder}"
xaml:GridViewSortBy.SortByKey="InnerFolder">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock Text="{Binding InnerFolder}"/>
(<TextBlock Text="{Binding Folder}"/>)
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True">
<Expander.Header>
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
<DockPanel Visibility="{Binding Conflicts, Converter={x:Static s:BoolToVisibilityConverter.Instance}}">
<TextBlock DockPanel.Dock="Bottom" Margin="5,3" Text="{l:Loc ConflictResolutionView_SelectMultiple}"/>

<ListView ItemsSource="{Binding Source={StaticResource ConflictsItemsSource}}"
SelectionMode="Extended"
SelectionChanged="{s:Action SelectionChanged}"
MouseDoubleClick="{s:Action ListViewDoubleClick}"
BorderThickness="0"
MinHeight="10">
<i:Interaction.Behaviors>
<xaml:GridViewSortByBehaviour/>
</i:Interaction.Behaviors>
<ListView.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn xaml:GridViewSortBy.SortByKey="FileName"
xaml:GridViewSortBy.IsInitiallySorted="True">
<!-- Need a proper header for this, for the initial sort -->
<GridViewColumnHeader>
<TextBlock Text="{l:Loc ConflictResolutionView_Header_File}"/>
</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Width="15" Height="15" Margin="5,0,5,0"
Source="{Binding Icon}"/>
<TextBlock Text="{Binding FileName}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="{l:Loc ConflictResolutionView_Header_LastModified}"
DisplayMemberBinding="{Binding LastModified}"
xaml:GridViewSortBy.SortByKey="LastModified"/>
<GridViewColumn Header="{l:Loc ConflictResolutionView_Header_Folder}"
xaml:GridViewSortBy.SortByKey="InnerFolder">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock Text="{Binding InnerFolder}"/>
(<TextBlock Text="{Binding Folder}"/>)
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True">
<Expander.Header>
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
</DockPanel>
</Grid>
</Border>
</DockPanel>
Expand Down
Loading

0 comments on commit 4e0e9eb

Please sign in to comment.