Giter VIP home page Giter VIP logo

synctrayzor's Introduction

SyncTrayzor Build status

Quick Links

Introduction

SyncTrayzor is a little tray utility for Syncthing on Windows. It hosts and wraps Syncthing, making it behave more like a native Windows application and less like a command-line utility with a web browser interface.

Features include:

  • Has a built-in web browser, so you don't need to fire up an external browser.
  • Optionally starts on login, so you don't need to set up Syncthing as a service.
  • Has drop-box style file download / progress window
  • Tray icon indicates when synchronization is occurring.
  • Alerts you when:
    • You have file conflicts
    • One of your folders is out of sync
    • Folders finish syncing
    • Devices connect / disconnect
  • Has a tool to help you resolve file conflicts
  • Can pause devices on metered networks, to stop Syncthing transferring data on e.g. a mobile connection or wifi hotspot.
  • Contains translations for many languages

Screenshot

Installation

SyncTrayzor is packaged as both an installer, standalone zip, and chocolatey package. It will run on Windows Vista or newer.

Installer

Download SyncTrayzorSetup-x64.exe or SyncTrayzorSetup-x86.exe and run it. If you already have SyncTrayzor installed, this will update it.

Standalone

First, you'll need .net 4.7.2. Download the offline or web installer if you don't have it installed already.

Download SyncTrayzorPortable-x64.zip or SyncTrayzorPortable-x86.zip. Unzip, and run SyncTrayzor.exe. If you're updating, you'll need to copy the data folder across from your previous standalone installation.

Chocolatey

The installed version of SyncTrayzor is also available on Chocolatey.

C:\> choco install synctrayzor

Something went wrong!

First, what went wrong? Remember that SyncTrayzor is a wrapper around Syncthing. Syncthing is the file synchronization program, which has a web interface. SyncTrayzor is the tray utility, looks like a normal Windows program, and has menus and suchlike, and a big area where Syncthing's web interface is displayed.

Contributing

Multi-lingual? SyncTrayzor needs you! Please read Localization.

Want to make a contribution? Fantastic, and thank you! Please read Contributing first.

Find Syncthing/SyncTrayzor useful? Please donate!

Please see DONATING.

Will SyncTrayzor phone home / give away my secrets / etc?

SyncTrayzor's auto-update mechanism will periodically call a script (found in server/version_check.php, hosted on a server of mine) to find out if there's an upgrade available. It will disclose your current SyncTrayzor version, and the package you downloaded (installer/portable and x64/x86). It will also reveal your IP address, which is unavoidable.

You can turn off auto-updates in the Settings, but in that case you are responsible for manually checking for updates.

Usage information, details of your computer / network / syncthing setup / etc are not reported.

How can I be sure that I'm not downloading a virus?

You can be paranoid and build everything from source (after auditing the source), or you can trust that I'm a good person who's trusted by the Syncthing developers.

You can verify that this GitHub account hasn't been compromised and is releasing malicious downloads by following the steps in the Security README. This process also lets you verify that Syncthing's developers trust me to release non-malicious software.

What will SyncTrayzor do to Syncthing?

It's worth noting that SyncTrayzor will override the 'GUI Listen Address' and 'API Key' in Syncthing's configuration. This is because it needs to fully control these values, in order to ensure that it can communicate with Syncthing.

However, you can set these values in File -> Settings, if you want to customise them.

What will SyncTrayzor do to my system?

Good question. The answer depends on whether you installed SyncTrayzor using the installer, or are running it standalone.

Installed

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\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.

You can set a custom home path for Syncthing in the settings if you wish (Settings -> Syncthing -> Advanced -> Syncthing Custom Home Path). This is useful if you want to keep the copy of Syncthing managed by SyncTrayzor separate from another copy running on your machine.

The auto-update mechanism may download updates to %TEMP%\SyncTrayzor. This location is periodically cleared out.

Portable

SyncTrayzor Portable will put its own configuration in SyncTrayzorPortable\data, and tell Syncthing to use SyncTrayzorPortable\data\syncthing for its database. This means that, when manually upgrading, you can simply move the 'data' folder over to move all your settings and database.

The portable version won't start on login by default. If you check "Automatically start on login" in the settings, then a registry key will be created at HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\SyncTrayzor.

The auto-update mechanism may download updates to %TEMP%\SyncTrayzor. This location is periodically cleared out.

Migrating between "raw" Syncthing, Portable, and Installed SyncTrayzor

Here's a handy table of what you need to copy where if you're migrating between different combinations of "raw" Syncthing, SyncTrayzor Installed, and SyncTrayzor Portable.

From To Actions
"raw" Syncthing SyncTrayzor Installed None
"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
  1. Copy the contents of C:\Users\<You>\AppData\Local\Syncthing into the data\syncthing folder inside the portable directory
  2. Copy C:\Users\<You>\AppData\Roaming\SyncTrayzor\config.xml to data\config.xml
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
  1. Copy the contents of the data\syncthing folder inside the portable directory into C:\Users\<You>\AppData\Local\Syncthing
  2. Copy data\config.xml to C:\Users\<You>\AppData\Roaming\SyncTrayzor\config.xml

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

Installed

SyncTrayzor keeps two copies of syncthing.exe.

The copy that is executed is at C:\Users\<You>\AppData\Roaming\SyncTrayzor\syncthing.exe. This one is writable by the user, allowing Syncthing to auto-upgrade.

There's also a backup copy in C:\Program Files\SyncTrayzor\syncthing.exe. This one is copied to C:\Users\<You>\AppData\Roaming\SyncTrayzor\syncthing.exe if that one does not exist (SyncTrayzor has never been run before for that user, for example).

If you want to manually upgrade (e.g. to a beta version) you should download Syncthing from the releases page, and replace the syncthing.exe in C:\Users\<You>\AppData\Roaming\SyncTrayzor.

Portable

SyncTrayzor keeps two copies of syncthing.exe.

There's a copy in data\syncthing.exe, which is the one which is run. There's also a copy next to SyncTrayzor.exe, which is used if the one in data\ is missing.

If you want to manually upgrade (e.g. to a beta version) you should download Syncthing from the releases page, and replace the one at data\syncthing.exe.

Building from Source

You'll need Visual Studio 2019. Clone/download the repository, open src\SyncTrayzor.sln, and compile. You'll also need to download syncthing.exe and place it in the bin\x86\Debug, bin\x64\Debug, bin\x86\Release, or bin\x64\Release folder as appropriate.

Notes for System Administrators

The installer is built using Inno Setup, and has various command-line options, documented here. If you pass the /silent command-line flag when SyncTrayzor won't be launched when the installer completes: add /StartSyncTrayzor to override this (which also causes SyncTrayzor to be launched minimized).

There are various parameters inside the file SyncTrayzor.exe.config which can be customised by system administrators, including the default SyncTrayzor configuration (used to create the user's SyncTrayzor config file when SyncTrayzor is first launched). 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.

synctrayzor's People

Contributors

adrianrudnik avatar berrnd avatar canton7 avatar danielchalmers avatar dartraiden avatar marclaporte avatar proactiveservices avatar scienmind avatar seikho avatar thecakeisnaoh avatar zapados avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

synctrayzor's Issues

Be smarter about http/https

  • https is always available
  • If the GUI is configured to use https, then http requests will be redirected to https
  • Therefore making http requests while https is enabled forces an extra redirect on each request
  • Making https requests while https is not enabled encounters a small overhead (TLS handshake)
  • The Settings window gives the option of specifying http/https. This is used in the browser and REST API.

We need to get smarter here. Remove http/https option from Settings - it doesn't add anything. Options are:

  • Always use https
  • Start with http, and see if we're redirected
  • Start with https, and read whether https is enabled from syncthing config. Move to http if not

Allow opening folder location

  1. Ideally modify the HTML we display to show a little 'open folder' button next to 'rescan'. We may have to fight Angular in order to get the folder ID here.
  2. Extra option on tray icon right-click, which lists folders to open.

crash on startup

Hi, so Synctrayzor crashed on startup. Then remained in the tray but didn't want to do anything...
It opened a one-tab browser window, end then a second because I had clicked on the link twice :)
Here are the info:

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Impossible de se connecter au serveur distant ---> System.Net.Sockets.SocketException: Aucune connexion nโ€™a pu รชtre รฉtablie car lโ€™ordinateur cible lโ€™a expressรฉment refusรฉe 127.0.0.1:8384
   ร  System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   ร  System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- Fin de la trace de la pile d'exception interne ---
   ร  System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   ร  System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
   --- Fin de la trace de la pile d'exception interne ---
   ร  System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   ร  Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() dans y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:ligne 221
--- Fin de la trace de la pile ร  partir de l'emplacement prรฉcรฉdent au niveau duquel l'exception a รฉtรฉ levรฉe ---
   ร  System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ร  SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientV0p10.<FetchVersionAsync>d__10.MoveNext() dans c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientV0p10.cs:ligne 85
--- Fin de la trace de la pile ร  partir de l'emplacement prรฉcรฉdent au niveau duquel l'exception a รฉtรฉ levรฉe ---
   ร  System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   ร  SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory.<CreateCorrectApiClientAsync>d__0.MoveNext() dans c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientFactory.cs:ligne 44
--- Fin de la trace de la pile ร  partir de l'emplacement prรฉcรฉdent au niveau duquel l'exception a รฉtรฉ levรฉe ---
   ร  System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   ร  SyncTrayzor.SyncThing.SyncThingManager.<StartApiClientsAsync>d__2c.MoveNext() dans c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:ligne 296
--- Fin de la trace de la pile ร  partir de l'emplacement prรฉcรฉdent au niveau duquel l'exception a รฉtรฉ levรฉe ---
   ร  System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ร  SyncTrayzor.SyncThing.SyncThingManager.<StartAsync>d__12.MoveNext() dans c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:ligne 194
--- Fin de la trace de la pile ร  partir de l'emplacement prรฉcรฉdent au niveau duquel l'exception a รฉtรฉ levรฉe ---
   ร  System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ร  SyncTrayzor.Utils.SafeSyncthingExtensions.<StartWithErrorDialogAsync>d__0.MoveNext() dans c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Utils\SafeSyncthingExtensions.cs:ligne 20
--- Fin de la trace de la pile ร  partir de l'emplacement prรฉcรฉdent au niveau duquel l'exception a รฉtรฉ levรฉe ---
   ร  System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ร  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ร  SyncTrayzor.Pages.ShellViewModel.<Start>d__6.MoveNext() dans c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Pages\ShellViewModel.cs:ligne 69
--- Fin de la trace de la pile ร  partir de l'emplacement prรฉcรฉdent au niveau duquel l'exception a รฉtรฉ levรฉe ---
   ร  System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__4(Object state)
   ร  System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   ร  MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

Regards

Unhandled error: JSON integer x is too large

While syncing my photo albums (120GB) to another computer I get this and SyncTrayzor crashes. When starting it again this is the first thing that comes up, and SyncTrayzor crashes

The sync progress made it roughly to 12% before this happend

image

Syncthing crashes when I close the lid

Ok, a bit unsure if SyncTrayzor should handle this so I'll let you decide

Whenever I close the lid on my laptop Syncthing seemingly crashes, and SyncTrayzor dosn't fire it up again when I open the lid

I'll report this over at Syncthing repo aswell

Edit: after some further investigations I noticed syncthing is still running in the background, SyncTrayzor just dosn't recognize it

Prompt for update to new version on restore from sleep

Currently we only check for new versions on startup. If people are like me, and almost never actually shut down their computers, they'll never know!

So prompt on resume, as well (SystemEvents.PowerModeChanged). Dismissing notifications for that version is just as little effort as saying "remind me later", so I'm not too worried about pissing people off with regular unstoppable alerts for a version they don't want.

SyncTrayzor hanging since last version

I've been using SyncTrayzor for a few weeks. Since last release (or the previous one, I really don't remember) I'm experiencing it hanging a few minutes after the GUI is opened. It will be using 11~13% CPU time in a quad core processor, which means its thread is completely taking its available cpu time. It can't be maximized/restored when this happens. It will only work again if I kill it and start it again. Syncthing keeps working just fine while this happens. The problem won't happen if the GUI is closed. It happens only after the GUI is opened for a few minutes.

Crash after update to 1.0.13

I just updated from 1.0.11 to 1.0.13 and I got this error message:

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Impossรญvel conectar-se ao servidor remoto ---> System.Net.Sockets.SocketException: Nenhuma conexรฃo pรดde ser feita porque a mรกquina de destino as recusou ativamente 127.0.0.1:8384
   em System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   em System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- Fim do rastreamento de pilha de exceรงรตes internas ---
   em System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   em System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
   --- Fim do rastreamento de pilha de exceรงรตes internas ---
   em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   em Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() na y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:linha 221
--- Fim do rastreamento de pilha do local anterior onde a exceรงรฃo foi gerada ---
   em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   em SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientV0p10.<FetchVersionAsync>d__10.MoveNext() na c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientV0p10.cs:linha 85
--- Fim do rastreamento de pilha do local anterior onde a exceรงรฃo foi gerada ---
   em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   em SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory.<CreateCorrectApiClientAsync>d__0.MoveNext() na c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientFactory.cs:linha 44
--- Fim do rastreamento de pilha do local anterior onde a exceรงรฃo foi gerada ---
   em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   em SyncTrayzor.SyncThing.SyncThingManager.<StartApiClientsAsync>d__2c.MoveNext() na c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:linha 296
--- Fim do rastreamento de pilha do local anterior onde a exceรงรฃo foi gerada ---
   em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   em SyncTrayzor.SyncThing.SyncThingManager.<StartAsync>d__12.MoveNext() na c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:linha 194
--- Fim do rastreamento de pilha do local anterior onde a exceรงรฃo foi gerada ---
   em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   em SyncTrayzor.Utils.SafeSyncthingExtensions.<StartWithErrorDialogAsync>d__0.MoveNext() na c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Utils\SafeSyncthingExtensions.cs:linha 20
--- Fim do rastreamento de pilha do local anterior onde a exceรงรฃo foi gerada ---
   em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   em SyncTrayzor.Pages.ShellViewModel.<Start>d__6.MoveNext() na c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Pages\ShellViewModel.cs:linha 69
--- Fim do rastreamento de pilha do local anterior onde a exceรงรฃo foi gerada ---
   em System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__4(Object state)
   em System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   em MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

Crash on exit

SyncTrayzor crashes very rarely when exiting the program ("The program encountered a problem and needs to close"). This is the error message that is written to debug.log (I already have several of them there, whereby the first two numbers are changing):

[0308/221734:ERROR:renderer_main.cc(227)] Running without renderer sandbox

It seems that this error message is related to the WebKit component that is used to display the Syncthing GUI. This also seems to affect "popular" software like Steam, but it seems that there isn't any "solution" at the moment (the problem seems to occur when the WebKit component is used in a certain way). Unfortunately, this crash seems to occur randomly, so I haven't found any steps yet to reproduce it (Synthing is however stopped properly before the crash occurs).

Native UI?

Toying with the idea of writing a native UI for Syncthing, based on the UI proposition that's floating around the forums.

Pros:

  • Slightly slicker
  • Greatly reduced memory footprint

Cons:

  • Cognitive dissonance for people coming from the web UI
  • Always playing catch-up with Syncthing
  • A significant undertaking, at the expensive of other work/features

Does anyone have any thoughts on this?

Custom /data location config

It would be extremely useful if SyncTrayzor exposed the location of the \data folder, instead of the hard coded \appdata or \currentfolder,

Specifying a location outside of \appdata or \currentfolder is useful for enterprise environments which use mandatory profiles, but also wish to keep applications separate from user data.

it would be useful to be able to specify this as either a registry setting, or ideally on the launching command for SyncTrayzor, so different \data directories could be specified for different users.

How should discovery take?

Hi, i installed Synctrayzor yesterday and added a device. But neither SyncTrayzor or the new devive shows that a a device is trying to sync a new folder. I tried Host > Android device and Host > Raspberry Pi.

Both RPi en Android don't notice a difference.

I also tried the other way around adding a the "host" on Android and RPi.

I installed synctrayzor using the windows x64 installer to default location.
I am running Windows 8.1 x64.

Restarting Syncthing won't reload its config (address, custom home dir, api key, etc)

Currently, you need to stop/start Syncthing from the menus for this to be loaded. This is because SyncThingManager is responsible for writing these settings to SyncThingProcessRunner.

It probably makes the most sense if SyncThingProcessRunner fires an event when it's about to start / restart. That way SyncThingManager can upate the config both of it and of the API client at this point.

crash after update

Not sure if this is the same issue as someone else posted, but just thought I'd report it anyway.
Upon seeing that an update was available, I closed SyncTrayzor without shutting down Syncthing. Then I installed the update via EXE installer, on Windows 7 64-bit. Then I rebooted.
Upon logging in and starting up SyncTrayzor, i got the crash dump.

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:8384
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
   --- End of inner exception stack trace ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() in y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:line 221
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientV0p10.<FetchVersionAsync>d__10.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientV0p10.cs:line 85
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory.<CreateCorrectApiClientAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientFactory.cs:line 44
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.SyncThingManager.<StartApiClientsAsync>d__2c.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 296
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.SyncThingManager.<StartAsync>d__12.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 194
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.Utils.SafeSyncthingExtensions.<StartWithErrorDialogAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Utils\SafeSyncthingExtensions.cs:line 20
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.Pages.ShellViewModel.<Start>d__6.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Pages\ShellViewModel.cs:line 69
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

syncthing log:

[7FIVA] 13:23:09 INFO: Shutting down
[7FIVA] 13:23:09 OK: Exiting
Syncthing process stopped with exit status Success
Starting syncthing: 
[7FIVA] 16:01:39 INFO: syncthing v0.10.30 (go1.4.2 windows-amd64 default) unknown-user@syncthing-builder 2015-03-29 07:46:44 UTC
[7FIVA] 16:01:39 INFO: My ID: 7FIVARK
[7FIVA] 16:03:59 INFO: Starting web GUI on https://127.0.0.1:8384/
[7FIVA] 16:04:26 INFO: Starting UPnP discovery...
[7FIVA] 16:04:32 INFO: UPnP discovery complete (found 1 device).
[7FIVA] 16:04:33 INFO: Created UPnP port mapping for external port 34010 on UPnP device 'WNDR3700v4 (Gateway)' (192.168.1.1).
[7FIVA] 16:04:33 INFO: Starting local discovery announcements
[7FIVA] 16:04:33 INFO: Local discovery over IPv6 unavailable
[7FIVA] 16:04:33 INFO: Starting global discovery announcements
[7FIVA] 16:04:33 OK: Ready to synchronize All-Devices (read-write)
[7FIVA] 16:04:33 OK: Ready to synchronize Desktop (read-write)
[7FIVA] 16:04:33 OK: Ready to synchronize Documents (read-write)
[7FIVA] 16:04:33 OK: Ready to synchronize jw-share-xxx (read-write)
[7FIVA] 16:04:33 OK: Ready to synchronize max-xfer-to (read-write)
[7FIVA] 16:04:33 INFO: Device 7FIVARK is "KEEPER7" at [dynamic]
[7FIVA] 16:04:33 INFO: Device D3BM32T is "bibliophile" at [dynamic]
[7FIVA] 16:04:33 INFO: Device Q44JCNO is "Nexus" at [dynamic]
[7FIVA] 16:04:33 INFO: Device 7CRTEOO is "maxpayne918" at [dynamic]
[7FIVA] 16:04:33 INFO: Starting usage reporting
[7FIVA] 16:04:34 INFO: Completed initial scan (rw) of folder max-xfer-to
[7FIVA] 16:04:34 INFO: Completed initial scan (rw) of folder jw-share-xxx
[7FIVA] 16:04:47 INFO: Completed initial scan (rw) of folder Desktop
[7FIVA] 16:04:47 INFO: Completed initial scan (rw) of folder All-Devices
[7FIVA] 16:05:56 INFO: Established secure connection to Q44JCNO at 192.168.1.8:51050-192.168.1.2:22000
[7FIVA] 16:05:56 INFO: Device Q44JCNO client is "syncthing v0.10.30"
[7FIVA] 16:05:56 INFO: Device Q44JCNO name is "nexus"
[7FIVA] 16:07:18 INFO: Connection to Q44JCNO closed: WSARecv tcp 192.168.1.8:51050: An existing connection was forcibly closed by the remote host.
[7FIVA] 16:07:57 INFO: Completed initial scan (rw) of folder Documents
[7FIVA] 16:09:12 INFO: Established secure connection to Q44JCNO at 192.168.1.8:51426-192.168.1.2:22000
[7FIVA] 16:09:12 INFO: Device Q44JCNO client is "syncthing v0.10.30"
[7FIVA] 16:09:12 INFO: Device Q44JCNO name is "nexus"
[7FIVA] 16:20:12 INFO: Connection to Q44JCNO closed: ping timeout
[7FIVA] 16:20:48 INFO: TLS handshake: WSARecv tcp 192.168.1.8:51897: An existing connection was forcibly closed by the remote host.
[7FIVA] 16:24:53 INFO: Established secure connection to Q44JCNO at 192.168.1.8:52034-192.168.1.2:22000
[7FIVA] 16:24:53 INFO: Device Q44JCNO client is "syncthing v0.10.30"
[7FIVA] 16:24:53 INFO: Device Q44JCNO name is "nexus"
[7FIVA] 16:30:46 INFO: Connection to Q44JCNO closed: WSARecv tcp 192.168.1.8:52034: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
Starting syncthing: 
[7FIVA] 16:32:30 INFO: syncthing v0.10.30 (go1.4.2 windows-amd64 default) unknown-user@syncthing-builder 2015-03-29 07:46:44 UTC
[7FIVA] 16:32:30 INFO: My ID: 7FIVARK
[7FIVA] 16:32:30 FATAL: Cannot open database: The process cannot access the file because it is being used by another process. - Is another copy of Syncthing already running?
Syncthing process stopped with exit status Error


SyncTrayzor.log:

2015-04-14 13:23:09.5160 [Info] SyncTrayzor.SyncThing.SyncThingApiClient: Requesting API shutdown 
2015-04-14 13:23:09.5810 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 13:23:09 INFO: Shutting down 
2015-04-14 13:23:09.6110 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 13:23:09 OK: Exiting 
2015-04-14 13:23:09.9750 [Info] SyncTrayzor.SyncThing.SyncThingProcessRunner: Syncthing process stopped with exit status Success 
2015-04-14 16:00:03.2576 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: ExePath: C:\Program Files\SyncTrayzor 
2015-04-14 16:00:04.1000 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: LogFilePath: C:\Users\israel\AppData\Roaming\SyncTrayzor\logs 
2015-04-14 16:00:04.2424 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: SyncthingCustomHomePath: C:\Users\israel\AppData\Local\SyncTrayzor\syncthing 
2015-04-14 16:00:04.4930 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: SyncThingPath: C:\Users\israel\AppData\Roaming\SyncTrayzor\syncthing.exe 
2015-04-14 16:00:04.8362 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: SyncThingBackupPath: C:\Program Files\SyncTrayzor\syncthing.exe 
2015-04-14 16:00:04.9766 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: ConfigurationFilePath: C:\Users\israel\AppData\Roaming\SyncTrayzor\config.xml 
2015-04-14 16:00:06.1952 [Info] SyncTrayzor.Services.Config.ConfigurationProvider: Syncthing at C:\Users\israel\AppData\Roaming\SyncTrayzor\syncthing.exe is older (4/4/2015 9:32:45 PM) than at C:\Program Files\SyncTrayzor\syncthing.exe (4/14/2015 12:06:02 AM, so overwriting from backup 
2015-04-14 16:00:07.3170 [Debug] SyncTrayzor.Services.Config.ConfigurationProvider: Loaded default configuration: <Configuration ShowTrayIconOnlyOnClose=False MinimizeToTray=False CloseToTray=True ShowSynchronizedBalloon=True ShowDeviceConnectivityBalloons=True SyncthingAddress=localhost:8384 StartSyncthingAutomatically=True SyncthingApiKey= SyncthingTraceFacilities= SyncthingUseCustomHome=False SyncthingDenyUpgrade=False SyncthingRunLowPriority=False Folders=[] NotifyOfNewVersions=True LastNotifiedVersion= ObfuscateDeviceIDs=True UseComputerCulture=True ShowSyncthingConsole=True> 
2015-04-14 16:00:07.4106 [Debug] SyncTrayzor.Services.Config.ConfigurationProvider: Found existing configuration at C:\Users\israel\AppData\Roaming\SyncTrayzor\config.xml 
2015-04-14 16:00:07.5354 [Info] SyncTrayzor.Services.Config.ConfigurationProvider: Loaded configuration: <Configuration ShowTrayIconOnlyOnClose=False MinimizeToTray=False CloseToTray=True ShowSynchronizedBalloon=True ShowDeviceConnectivityBalloons=True SyncthingAddress=localhost:8384 StartSyncthingAutomatically=True SyncthingApiKey= SyncthingTraceFacilities= SyncthingUseCustomHome=False SyncthingDenyUpgrade=False SyncthingRunLowPriority=True Folders=[<Folder ID=jw-share-xxx IsWatched=True>, <Folder ID=All-Devices IsWatched=True>, <Folder ID=max-xfer-to IsWatched=True>, <Folder ID=Documents IsWatched=True>, <Folder ID=Desktop IsWatched=True>] NotifyOfNewVersions=True LastNotifiedVersion= ObfuscateDeviceIDs=True UseComputerCulture=True ShowSyncthingConsole=True> 
2015-04-14 16:00:07.5510 [Info] SyncTrayzor.Services.AutostartProvider: Have read/write access to the registry 
2015-04-14 16:00:07.5510 [Info] SyncTrayzor.Services.AutostartProvider: GetCurrentSetup determined that the current configuration is: <AutostartConfiguration AutoStart=True StartMinimized=True> 
2015-04-14 16:00:07.6914 [Info] SyncTrayzor.Services.AutostartProvider: Setting AutoStart to <AutostartConfiguration AutoStart=True StartMinimized=True> 
2015-04-14 16:00:07.8942 [Debug] SyncTrayzor.Services.AutostartProvider: Autostart path: "C:\Program Files\SyncTrayzor\SyncTrayzor.exe" -minimized 
2015-04-14 16:00:22.4764 [Info] SyncTrayzor.SyncThing.SyncThingProcessRunner: Starting syncthing:  
2015-04-14 16:00:25.2767 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:28.2878 [Debug] SyncTrayzor.Services.UpdateManagement.UpdateNotificationClient: Fetched updates response: <UpdateNotificationResponse data= error=> 
2015-04-14 16:00:28.4928 [Info] SyncTrayzor.Services.UpdateManagement.UpdateChecker: No updates available 
2015-04-14 16:00:30.7370 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 0 of 20 
2015-04-14 16:00:31.3250 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:33.5821 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 1 of 20 
2015-04-14 16:00:34.9702 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:37.0123 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 2 of 20 
2015-04-14 16:00:37.8024 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:40.0185 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 3 of 20 
2015-04-14 16:00:40.6935 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:42.8377 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 4 of 20 
2015-04-14 16:00:43.4107 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:45.6098 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 5 of 20 
2015-04-14 16:00:46.1798 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:48.6560 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 6 of 20 
2015-04-14 16:00:49.2120 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:51.3381 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 7 of 20 
2015-04-14 16:00:52.0492 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:54.1433 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 8 of 20 
2015-04-14 16:00:54.9433 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:57.0375 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 9 of 20 
2015-04-14 16:00:57.6155 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:00:59.7376 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 10 of 20 
2015-04-14 16:01:00.3097 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:03.1098 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 11 of 20 
2015-04-14 16:01:03.7689 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:05.8380 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 12 of 20 
2015-04-14 16:01:06.7170 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:09.1102 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 13 of 20 
2015-04-14 16:01:09.6492 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:11.8383 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 14 of 20 
2015-04-14 16:01:13.4694 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:16.0096 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 15 of 20 
2015-04-14 16:01:17.2676 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:19.7098 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 16 of 20 
2015-04-14 16:01:20.8118 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:23.3380 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 17 of 20 
2015-04-14 16:01:24.1770 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:26.2381 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 18 of 20 
2015-04-14 16:01:28.8593 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:31.6094 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 19 of 20 
2015-04-14 16:01:32.9855 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:01:35.9127 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: HttpRequestException 20 of 20 
2015-04-14 16:01:36.3297 [Error] SyncTrayzor.SyncThing.SyncThingManager: Error starting SyncThing System.Net.Http.HttpRequestException An error occurred while sending the request. Void ThrowForNonSuccess(System.Threading.Tasks.Task)    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() in y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:line 221
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientV0p10.<FetchVersionAsync>d__10.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientV0p10.cs:line 85
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory.<CreateCorrectApiClientAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientFactory.cs:line 44
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.SyncThingManager.<StartApiClientsAsync>d__2c.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 296
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.SyncThingManager.<StartAsync>d__12.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 187 System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:8384
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
   --- End of inner exception stack trace ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() in y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:line 221
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientV0p10.<FetchVersionAsync>d__10.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientV0p10.cs:line 85
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory.<CreateCorrectApiClientAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientFactory.cs:line 44
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.SyncThingManager.<StartApiClientsAsync>d__2c.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 296
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.SyncThingManager.<StartAsync>d__12.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 187
WebException Unable to connect to the remote server System.Net.WebResponse EndGetResponse(System.IAsyncResult)
SocketException No connection could be made because the target machine actively refused it 127.0.0.1:8384 Void EndConnect(System.IAsyncResult)
2015-04-14 16:01:37.0948 [Error] SyncTrayzor.Bootstrapper: An unhandled exception occurred System.Net.Http.HttpRequestException An error occurred while sending the request. Void ThrowForNonSuccess(System.Threading.Tasks.Task)    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() in y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:line 221
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientV0p10.<FetchVersionAsync>d__10.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientV0p10.cs:line 85
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory.<CreateCorrectApiClientAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientFactory.cs:line 44
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.SyncThingManager.<StartApiClientsAsync>d__2c.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 296
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.SyncThingManager.<StartAsync>d__12.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 194
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.Utils.SafeSyncthingExtensions.<StartWithErrorDialogAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Utils\SafeSyncthingExtensions.cs:line 20
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.Pages.ShellViewModel.<Start>d__6.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Pages\ShellViewModel.cs:line 69
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:8384
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
   --- End of inner exception stack trace ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() in y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:line 221
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientV0p10.<FetchVersionAsync>d__10.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientV0p10.cs:line 85
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory.<CreateCorrectApiClientAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\SyncThingApiClientFactory.cs:line 44
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at SyncTrayzor.SyncThing.SyncThingManager.<StartApiClientsAsync>d__2c.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 296
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.SyncThingManager.<StartAsync>d__12.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 194
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.Utils.SafeSyncthingExtensions.<StartWithErrorDialogAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Utils\SafeSyncthingExtensions.cs:line 20
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.Pages.ShellViewModel.<Start>d__6.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\Pages\ShellViewModel.cs:line 69
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
WebException Unable to connect to the remote server System.Net.WebResponse EndGetResponse(System.IAsyncResult)
SocketException No connection could be made because the target machine actively refused it 127.0.0.1:8384 Void EndConnect(System.IAsyncResult)
2015-04-14 16:01:39.2429 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:01:39 INFO: syncthing v0.10.30 (go1.4.2 windows-amd64 default) unknown-user@syncthing-builder 2015-03-29 07:46:44 UTC 
2015-04-14 16:01:40.8550 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:01:39 INFO: My ID: 7FIVARK 
2015-04-14 16:03:59.7149 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:03:59 INFO: Starting web GUI on https://127.0.0.1:8384/ 
2015-04-14 16:04:26.6245 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:26 INFO: Starting UPnP discovery... 
2015-04-14 16:04:32.8308 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:32 INFO: UPnP discovery complete (found 1 device). 
2015-04-14 16:04:33.2378 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Created UPnP port mapping for external port 34010 on UPnP device 'WNDR3700v4 (Gateway)' (192.168.1.1). 
2015-04-14 16:04:33.3198 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Starting local discovery announcements 
2015-04-14 16:04:33.4838 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Local discovery over IPv6 unavailable 
2015-04-14 16:04:33.4989 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Starting global discovery announcements 
2015-04-14 16:04:33.5209 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 OK: Ready to synchronize All-Devices (read-write) 
2015-04-14 16:04:33.6899 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 OK: Ready to synchronize Desktop (read-write) 
2015-04-14 16:04:33.9429 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 OK: Ready to synchronize Documents (read-write) 
2015-04-14 16:04:34.0899 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 OK: Ready to synchronize jw-share-xxx (read-write) 
2015-04-14 16:04:34.2119 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 OK: Ready to synchronize max-xfer-to (read-write) 
2015-04-14 16:04:34.2449 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Device 7FIVARK is "KEEPER7" at [dynamic] 
2015-04-14 16:04:34.2449 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Device D3BM32T is "bibliophile" at [dynamic] 
2015-04-14 16:04:34.2449 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Device Q44JCNO is "Nexus" at [dynamic] 
2015-04-14 16:04:34.2449 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Device 7CRTEOO is "maxpayne918" at [dynamic] 
2015-04-14 16:04:34.2449 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:33 INFO: Starting usage reporting 
2015-04-14 16:04:34.5589 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:34 INFO: Completed initial scan (rw) of folder max-xfer-to 
2015-04-14 16:04:34.5589 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:34 INFO: Completed initial scan (rw) of folder jw-share-xxx 
2015-04-14 16:04:47.6387 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:47 INFO: Completed initial scan (rw) of folder Desktop 
2015-04-14 16:04:49.8458 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:04:47 INFO: Completed initial scan (rw) of folder All-Devices 
2015-04-14 16:05:20.4765 [Debug] SyncTrayzor.Services.MemoryUsageLogger: Working Set: 52MB. Private Memory Size: 75MB. GC Total Memory: 4MB 
2015-04-14 16:05:56.4606 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:05:56 INFO: Established secure connection to Q44JCNO at 192.168.1.8:51050-192.168.1.2:22000 
2015-04-14 16:05:57.0656 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:05:56 INFO: Device Q44JCNO client is "syncthing v0.10.30" 
2015-04-14 16:05:57.3326 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:05:56 INFO: Device Q44JCNO name is "nexus" 
2015-04-14 16:07:18.4733 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:07:18 INFO: Connection to Q44JCNO closed: WSARecv tcp 192.168.1.8:51050: An existing connection was forcibly closed by the remote host. 
2015-04-14 16:07:57.4895 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:07:57 INFO: Completed initial scan (rw) of folder Documents 
2015-04-14 16:09:12.1698 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:09:12 INFO: Established secure connection to Q44JCNO at 192.168.1.8:51426-192.168.1.2:22000 
2015-04-14 16:09:12.2618 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:09:12 INFO: Device Q44JCNO client is "syncthing v0.10.30" 
2015-04-14 16:09:12.2788 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:09:12 INFO: Device Q44JCNO name is "nexus" 
2015-04-14 16:10:21.4898 [Debug] SyncTrayzor.Services.MemoryUsageLogger: Working Set: 52MB. Private Memory Size: 75MB. GC Total Memory: 4MB 
2015-04-14 16:15:22.5240 [Debug] SyncTrayzor.Services.MemoryUsageLogger: Working Set: 52MB. Private Memory Size: 75MB. GC Total Memory: 4MB 
2015-04-14 16:20:12.3656 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:20:12 INFO: Connection to Q44JCNO closed: ping timeout 
2015-04-14 16:20:22.5301 [Debug] SyncTrayzor.Services.MemoryUsageLogger: Working Set: 52MB. Private Memory Size: 75MB. GC Total Memory: 4MB 
2015-04-14 16:20:48.8786 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:20:48 INFO: TLS handshake: WSARecv tcp 192.168.1.8:51897: An existing connection was forcibly closed by the remote host. 
2015-04-14 16:24:53.7436 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:24:53 INFO: Established secure connection to Q44JCNO at 192.168.1.8:52034-192.168.1.2:22000 
2015-04-14 16:24:53.7676 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:24:53 INFO: Device Q44JCNO client is "syncthing v0.10.30" 
2015-04-14 16:24:53.7806 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:24:53 INFO: Device Q44JCNO name is "nexus" 
2015-04-14 16:25:23.6264 [Debug] SyncTrayzor.Services.MemoryUsageLogger: Working Set: 52MB. Private Memory Size: 75MB. GC Total Memory: 5MB 
2015-04-14 16:30:24.6686 [Debug] SyncTrayzor.Services.MemoryUsageLogger: Working Set: 52MB. Private Memory Size: 75MB. GC Total Memory: 4MB 
2015-04-14 16:30:46.7248 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:30:46 INFO: Connection to Q44JCNO closed: WSARecv tcp 192.168.1.8:52034: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 
2015-04-14 16:32:26.8186 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: ExePath: C:\Program Files\SyncTrayzor 
2015-04-14 16:32:26.8856 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: LogFilePath: C:\Users\israel\AppData\Roaming\SyncTrayzor\logs 
2015-04-14 16:32:26.8856 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: SyncthingCustomHomePath: C:\Users\israel\AppData\Local\SyncTrayzor\syncthing 
2015-04-14 16:32:26.8856 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: SyncThingPath: C:\Users\israel\AppData\Roaming\SyncTrayzor\syncthing.exe 
2015-04-14 16:32:26.8856 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: SyncThingBackupPath: C:\Program Files\SyncTrayzor\syncthing.exe 
2015-04-14 16:32:26.8856 [Debug] SyncTrayzor.Services.Config.ApplicationPathsProvider: ConfigurationFilePath: C:\Users\israel\AppData\Roaming\SyncTrayzor\config.xml 
2015-04-14 16:32:26.9736 [Debug] SyncTrayzor.Services.Config.ConfigurationProvider: Loaded default configuration: <Configuration ShowTrayIconOnlyOnClose=False MinimizeToTray=False CloseToTray=True ShowSynchronizedBalloon=True ShowDeviceConnectivityBalloons=True SyncthingAddress=localhost:8384 StartSyncthingAutomatically=True SyncthingApiKey= SyncthingTraceFacilities= SyncthingUseCustomHome=False SyncthingDenyUpgrade=False SyncthingRunLowPriority=False Folders=[] NotifyOfNewVersions=True LastNotifiedVersion= ObfuscateDeviceIDs=True UseComputerCulture=True ShowSyncthingConsole=True> 
2015-04-14 16:32:26.9786 [Debug] SyncTrayzor.Services.Config.ConfigurationProvider: Found existing configuration at C:\Users\israel\AppData\Roaming\SyncTrayzor\config.xml 
2015-04-14 16:32:26.9956 [Info] SyncTrayzor.Services.Config.ConfigurationProvider: Loaded configuration: <Configuration ShowTrayIconOnlyOnClose=False MinimizeToTray=False CloseToTray=True ShowSynchronizedBalloon=True ShowDeviceConnectivityBalloons=True SyncthingAddress=localhost:8384 StartSyncthingAutomatically=True SyncthingApiKey= SyncthingTraceFacilities= SyncthingUseCustomHome=False SyncthingDenyUpgrade=False SyncthingRunLowPriority=True Folders=[<Folder ID=jw-share-xxx IsWatched=True>, <Folder ID=All-Devices IsWatched=True>, <Folder ID=max-xfer-to IsWatched=True>, <Folder ID=Documents IsWatched=True>, <Folder ID=Desktop IsWatched=True>] NotifyOfNewVersions=True LastNotifiedVersion= ObfuscateDeviceIDs=True UseComputerCulture=True ShowSyncthingConsole=True> 
2015-04-14 16:32:26.9956 [Info] SyncTrayzor.Services.AutostartProvider: Have read/write access to the registry 
2015-04-14 16:32:26.9956 [Info] SyncTrayzor.Services.AutostartProvider: GetCurrentSetup determined that the current configuration is: <AutostartConfiguration AutoStart=True StartMinimized=True> 
2015-04-14 16:32:27.0096 [Info] SyncTrayzor.Services.AutostartProvider: Setting AutoStart to <AutostartConfiguration AutoStart=True StartMinimized=True> 
2015-04-14 16:32:27.0096 [Debug] SyncTrayzor.Services.AutostartProvider: Autostart path: "C:\Program Files\SyncTrayzor\SyncTrayzor.exe" -minimized 
2015-04-14 16:32:28.6647 [Info] SyncTrayzor.SyncThing.SyncThingProcessRunner: Starting syncthing:  
2015-04-14 16:32:29.0297 [Debug] SyncTrayzor.SyncThing.ApiClient.SyncThingApiClientFactory: Attempting to request API using version 0.10.x API client 
2015-04-14 16:32:30.9348 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:32:30 INFO: syncthing v0.10.30 (go1.4.2 windows-amd64 default) unknown-user@syncthing-builder 2015-03-29 07:46:44 UTC 
2015-04-14 16:32:30.9428 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:32:30 INFO: My ID: 7FIVARK 
2015-04-14 16:32:30.9428 [Debug] SyncTrayzor.SyncThing.SyncThingProcessRunner: [7FIVA] 16:32:30 FATAL: Cannot open database: The process cannot access the file because it is being used by another process. - Is another copy of Syncthing already running? 
2015-04-14 16:32:30.9918 [Info] SyncTrayzor.SyncThing.SyncThingProcessRunner: Syncthing process stopped with exit status Error 

Window size/position is not remembered when opening from tray

Hi, and first thanks for this great wrapper for Syncthing! :)

The position and size of the main window is always reset to default when restoring from tray.
On smaller screens I use SyncTrayzor always maximized, so it would be great if the window state is saved, also when closing and restarting the application.

I have looked over the code, thought I fix it myself ... but I'm not that much into WPF ... just saw that it must have something to do with Stylets WindowManager.CreateWindow function... (?)

Run CEF in its own process

This will let us completely unload it when we hit the tray, which will cut down on memory usage significantly for the majority case.

Heads up: Windows Group policy when executing from to AppData

I got this exception when I first tried your application, and it asked me to post it here:

System.ComponentModel.Win32Exception (0x80004005): This program is blocked by group policy. For more information, contact your system administrator
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at SyncTrayzor.SyncThing.SyncThingProcessRunner.Start() in h:\Users\Antony\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingProcessRunner.cs:line 93
at SyncTrayzor.SyncThing.SyncThingManager.Start() in h:\Users\Antony\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingManager.cs:line 141
at SyncTrayzor.Bootstrapper.OnLaunch() in h:\Users\Antony\Documents\projects\SyncTrayzor\src\SyncTrayzor\Bootstrapper.cs:line 91
at System.Windows.Application.<.ctor>b__1(Object unused)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

Zoom in built-in browser

Hi,
Great peace of work, installer for v0.11 works like a charm...

My "issue":
I'm using web-gui in both external browser an in built-in one. In external (mostly chrome, sometimes firefox) I have set up zoom level (75%) because I have more shared folder then fits on screen and I don't want to scroll down. Font in web-gui is "ugly" big anyway so this suits me just fine. But I can't do it in built-in browser. I went through couple forum post on how to set zoom level in cefsharp but I didn't even find any config file in synctrayzor folder which I could modify. Can you add "zoom level" to settings? Or could you implement it to native UI you mentioned some time before (if it is still actual)?

Thanks

When installing new update: access denied writing to synctrayzor

Running 1.0.6, I followed the prompt to download 1.0.7. I ran the installer but got an "Access is denied" error: Abort Retry Ignore. As I guessed, I tried exiting Synctrayzor from the tray icon and hitting retry, and it worked. Novice users may be less likely to be flustered if they are presented with an option like "Synctrayzor must close to continue upgrading. Do you want to close it now?" -- preferably before the upgrade starts, so there isn't a half-upgraded installation if the user says no. Or it could automatically close.

Come up with strategy for upgrading Syncthing on release

Currently we will only copy Syncthing to AppData if it doesn't already exist there. Most of the time this is going to be fine.

However, we may need to cut a new release to fix a backward compatibility break in the Syncthing API, and so we'll bundle a new Syncthing version. In this case, we want to overwrite whatever's in AppData with our bundled version.

It's starting to look like we'll need to call syncthing.exe -version on the AppData binary to determine its version, and overwrite it if we've got a newer version.

How to change display language of built-in web browser?

May be it is too easy, or may be it is not possible yet, but I cannot find how to change the language of the built-in web browser to just display in english. It uses my windows language, which I don't want to.

Thanks,
Diego.

Set polling via API to higher value by default

As you already assume the user wants to use SyncTrayzors built-in file watcher, how about setting the polling in Syncthing to every 30m or 60m instead (by default) when adding new directorys instead of every 60s like now?

Just because I'm lazy :^)

(dont know if the Syncthing API allows this)

request: folder paths

Looking for an alternative to syncthing gtk and I'm liking synctrayzor so far

a couple of requests that would make useability a bit better (I dont know how possible these are, as it seems syntrayzor simply displays the web gui)

  1. It would be awesome if there was a way (when adding folders) to be able to browse the filesystem to select a folder, instead of typing the full path
  2. If there was an option to automatically edit the syncthing config.xml when adding folders to enable long file paths in windows: https://github.com/syncthing/syncthing/wiki/Windows-Troubleshooting-Guide

Syncing folder/usb device

When you sync (in my case) a folder on a USB HDD and then unplug it SyncTrayzor will become very unfriendly and crash ;-)

SyncTrayzor eating up RAM

SyncTrayzor.exe is using almost half a GB of RAM... 438.196 K precisely.
I saw this #3 however I think this is not the same issue because it obviously is not solved and 90 MB are far far away.
This is on Windows 7 x64.
Just updated to the latest build, same issue.

More icon colours

From Martin, via email.

So the key question is: how do I know if everything is working. So I
would differentiate the following states:

  1. currently syncing: blue & spinning
  2. each folder has at least one node it is connected to (i.e. if
    required each folder is able to sync to at least one remote node) =>
    blue (normal)
  3. at least one folder has at least one node it is connected to (i.e.
    physical Internet connection seems to work, but it cannot be
    guaranteed, that all changes on the local node reach remote nodes)
    => some other color/icon (dark blue?), or an exclamation mark over
    the icon, or ...
  4. no single folder has at least one node it is connected to (i.e.
    there is no connection that is useful for syncing) => gray
    "disconnected" (logically, not necessarily physically)
  5. Of course it would be great to see the Out-Of-Sync state, but if
    there are problems, this could be postponed to a later release (or
    better: set as option if this should be displayed) => some other
    color/icon, or an exclamation mark over the icon, or ..

COMMENTS WANTED: Automatic Updates

Right, time for a braindump around auto-updates.

The current auto-update stretegy is effectively but fairly crude. On every startup / resume from sleep, we check the Github API to see if there's been a new release. If there has, we show the user the changelog and ask them if they want to upgrade now, later, or never. If they select 'now', we take them to the release page, where they can download the installer and run it. If they select 'later', we'll try again on the next startup / resume from sleep. If they select 'never', we'll skip this version.

Ideally we want something a bit slicker. There are some thoughts:

UAC Prompts

Do we want to bring up a UAC prompt? If not, we have two options: either install into AppData, or run an update service (modelled on Mozilla's Silent Update).

I'm not a fan of installing into AppData. It:

  • Sidesteps UAC completely, which is a Bad Thing from a security point of view. Something malicious can pretend to by SyncTrayzor.
  • Prevents you from backup up AppData. You have to blacklist all applications which have snuck in there.

However, an update service has some downsides as well:

  • Slightly fiddly to get working
  • I'd want to give people the option to not install this (think of portable users, too), but then we need two upgrade mechanisms....

For most people, a UAC prompt is a simple yes/no checkbox, and for the people for whom it isn't, they're probably either under the control of a sensible Sysadmin (who installed SyncTrayzor, and will be responsible for updating it) or they're paranoid and wouldn't like us "bypassing" it anyway.

Another consideration is that I already have an installer infrastructure in place - Inno Setup - and this gives me a lot of control to tweak/move/do custom stuff on installation. Users also already have stuff installed into Program Files, and I'm not keen to duplicate SyncTrayzor around their systems!

Prompt the user?

Do we prompt the user before installing an update, assuming we've automatically detected and downloaded it?

On the one hand, silent updates are nice. They force everyone into using the same version with zero effort. On the other hand, SyncTrayzor runs all the time. There's no chance for us to sneakily update when starting / stopping (as your browsers do). We could stop ourselves, update, start, and hope the user doesn't notice - but they might, and they'll be confused.

Not prompting the user will require a UAC bypass - users panic if they get a random UAC prompt, as well they should.

Another option is to show a little tray notification (we can show arbitary stuff as toast from the tray) saying "Hey, I've got a update, apply?" with "Yes", "Later", and "No" buttons. The "Yes" button could have that little UAC sheild on it, so the user isn't surprised when they get a UAC prompt.

This is slick and avoids the "What happened there" factor, but we run the risk of being too similar to Java. Users might be conditioned to ignore update requests from the Tray, because Java does it constantly and annoys everyone. However, we could style it to be sufficiently different and friendly-looking....

What to download?

Any of the approaches described above will require SyncTrayzor to download a new installer from Github. Hower, knowing which file to download is actually tricky, and the reason I link to the release announcement rather than the actual file. When moving from 64-bit-only to 64-bit/32-bit I needed to rename the files available for download. I may need to do the same again in the future for another reason. This means I can't simply rely on the download file's name being something pre-determined.

One solution might be to create a little service hosted elsewhere. SyncTrayzor goes "Hey, I'm verison XXX on platform YYY - give me a new download link", and it gets one. That would also allow us to control the upgrade path to a degree. However, it does rely on a bit of extra infrastructure to work, which is something I try and avoid if I can.

Security

In any approach where we automatically download something and effectively promise the user that it's legit, we run the risk of being hijacked, and having some mailicious party abuse the user's trust in SyncTrayzor to sneak something nasty onto their system. This is particularly true for the installation service scenario, but also true if we're prompting the user to accept a UAC prompt.

One solution would be to sign the installer, then SyncTrayzor would verify that the key used to sign it is one that I own. This wouldn't require buying a cert from a root authority (although I'm not sure how Windows behaves if you ask it to install an exe signed with an unverifyable cert, as opposed to not signed at all) - we're verifying that it was signed by me, not by anyone trusted by a root authority.

Another approach would be to provide the signature separately to the exe, and download both.

Update frequency

I think it makes sense to move from "check on startup" to "check regularly, starting a suitable period after logon". When users turn on the computer, they normally want to do something. Upgrading random tools isn't one of those things. Prompting them when things are a big quieter would make sense.

Of course, this only applies if we do prompt them. If we silently update, this isn't so much of an issue.

Upgrading Syncthing

Syncthing currently auto-updates, which is why it's stored in AppData. I want to keep it auto-updating (I don't want to have to release a new version every week to match Syncthing's update schedule).

However, I am uncomfortable with sticking it in AppData, for the same reasons that I don't want to put SyncTrayzor there. If we run an update service we can use it to silently let Syncthing auto-update as a privileged user, and keep it in Program Files. If we go with prompts, we can still prompt users to allow Syncthing to auto-update.

Portable

The portable users form about 1/4 of installed users, so we can't ignore them. How to handle updates for them? The current system works - we could just keep it.

Summary

Let me know your thoughts! You're the people using SyncTrayzor, and I'll ultimately do what you want. Ping @jaredthirsk.

Rename SyncThing to Syncthing

This is more of a pet hate of mine and is very trivial... Could we use the actual casing used by Syncthing rather than SyncThing?

Register access denied

Getting the following when running SyncTrayzor as normal user, need to run as Administrator for it to work properly

The message says "Register access denied"

image

Folder changes are not being detected

Running SyncTrayzor v1.0.8 (64bit) with Syncthing v0.10.27
OS: Windows 7 64bit

I do have the folder being monitored by SyncTrayzor and I have Syncthing's rescan interval on the folder set to 86400.

Unless I'm misunderstanding the feature set of SyncTrayzor, it should monitor synced folders for changes and notify Syncthing to do a sync when it (SyncTrayzor) detects them.

I have a plain text file in the synced folders and it was synced to my other server upon initial setup.

I've noticed that if I make a change to this text file, like adding "test123" to it and save it. Syncthing does not get notified of this change so it's not updated on the other server.

I've confirmed that my changes (test123) exist in the file on my computer and does not exist int he text file on the other side.

Windows show the file size is different and the modification time has changed using explorer properties on the text file.

Even copying a new file into the synced folder does not trigger a resync of the folder.

If I manually trigger a folder rescan in Syncthing, everything syncs up just fine.

Empty browser windows get opened during update

So here is what happened:

SyncTrayzor 1.0.12 asked for being updated when the computer was launched,
no other program was running then.
I accepted and it opened two Firefox windows with

  • the GitHub page and no other opened tab on one, and
  • no tab at all on the other.
    As I closed the browser the last time I had 2 windows with about 140 tabs per window.
    I have had access to the last session restore recent function in the tool menu so nothing was lost.

Maybe my session was still somewhere else, but the two windows led me to think that it was gone.
I used to have the same kind of problem with the flash player updates, each time having to restore sessionstore.js (until I removed it). But as I said maybe the issue is on my side. And I don't know how the session manager works now.

Regards...

Support for web GUI username/password

After migrating my NSSM syncthing configuration over to syncthing's user location (appdata/syncthing) for SyncTrayzor, the web GUI in SyncTrayzor shows a "Not Authorized" message because I set a username/password.

I manually deleted the username/password from synthing's config.xml, restarted, and got in. Then I added a username/password, and did a restart. The SyncTrazor's web view then stops updating. (I bet it is getting a 500 not authorized, but not replacing what's on the screen.)

I don't know if it is a huge deal, but I'm not sure I want my web gui running (even on a localhost interface) with no security.

An idea to potentially elevate to syncthing itself: allow wrapper apps to log into the web GUI with a username of "APIKEY" and a password of {apikey}, so that wrapper apps like SyncTrayzor don't need to separately store a username/password.

SyncTrayzor seems to monitor an other Syncthing

a few weeks ago I tried to look at syncthing and so the first thing I did is install synctrazor
But due a wrong setting in my modem it didn't work (I didn't knew the modemsetting was wrong at that time).
Then I install the original Syncthing and this is working now for me.
But I liked synctrazor so I started this again, but it seems to sync something else (another process? or something) then Syncthing itself.

How can I make Synctrazor to start with the same syncthing as when I just start syncthing from commandline

Show extra balloon notifications

Discussed in https://discourse.syncthing.net/t/synctrayzor-windows-host-for-syncthing-installer-auto-start-built-in-browser-tray-icon-folder-watcher-and-more/2011/48.

Asker wants to see:

  • Device Connected
  • Device Disconnected
  • Sync notifications

We can easily do connected / disconnected and file transferred from remote -> local (DeviceConnectedEvent, DeviceDisconnectedEvent, ItemFinishedEvent), but we can't easily to local -> remote (we get a LocalIndexUpdated, followed by a RemoteIndexUpdated. But RemoteIndexUpdated just says how many files have changed - not which ones. It's also fired when a file is spontaneously changed on the remote side).

We also don't want to risk trying to pop up balloon messages too frequently - it gets annoying. Probably a custom list of events which automatically appends / etc. Our tray icon library allows this, but it will take a little bit of trial and error to make it look right.

Portable x64 release problem 1.0.12

When the application start give a runtime error because the wrong configuration folder is already present.
Fix: remove syncthing folder on data folder.

Non-Portable x64 release problem 1.0.12

Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'System.Int64' because the type requires a JSON primitive value (e.g. string, number, boolean, null) to deserialize correctly.
To fix this error either change the JSON to a JSON primitive value (e.g. string, number, boolean, null) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
Path 'data.details.Version', line 1, position 159.
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureArrayContract(JsonReader reader, Type objectType, JsonContract contract)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverte285814r, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
   at SyncTrayzor.SyncThing.ApiClient.EventConverter.Create(Type objectType, JObject jObject) in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\EventConverter.cs:line 30
   at SyncTrayzor.SyncThing.ApiClient.JsonCreationConverter`1.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\ApiClient\JsonCreationConverter.cs:line 47
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Refit.RequestBuilderImplementation.<>c__DisplayClass28`1.<<buildCancellableTaskFuncForMethod>b__27>d__2a.MoveNext() in y:\code\paulcbetts\refit\Refit\RequestBuilderImplementation.cs:line 244
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.EventWatcher.SyncThingEventWatcher.<PollAsync>d__0.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\EventWatcher\SyncThingEventWatcher.cs:line 54
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SyncTrayzor.SyncThing.SyncThingPoller.<Start>d__2.MoveNext() in c:\Documents\projects\SyncTrayzor\src\SyncTrayzor\SyncThing\SyncThingPoller.cs:line 69
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__4(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.