JstSync 0.1.0
Receives files from your Android phones over the local Wi-Fi.
Get the phone app from Google Play ("JstSync").

Start
-----
Linux:    run ./jstsync. Supported: Debian 12 or newer and Ubuntu 24.04 or newer (glibc 2.36
          or newer). Ubuntu 22.04 works with this build. It needs an X11 or Wayland desktop
          session and the package libfontconfig1.
Windows:  double-click jstsync.exe.
Keep the unpacked folder outside the folders you choose for phones. The app refuses a download
folder that holds its own program or data, so the home folder cannot be a download folder
(on Windows Downloads cannot be one while JstSync is unpacked inside it).

The app is not signed
---------------------
The app is not signed with a certificate, so the system warns the first time.
Windows:  SmartScreen shows "Windows protected your PC". Click More info > Run anyway.

Network
-------
Allow JstSync in the firewall prompt. Windows asks for TCP port 48230 (or another port when
48230 is taken) and for UDP port 5353, which lets phones find the computer.
Phones on a guest network, or on a network with "AP isolation", cannot find the computer:
pair them with the QR code.
Phones connect only to computers on a local network: a code that names only an Internet
address is refused on the phone.

Pairing a phone
---------------
When a phone scans the code, the computer asks "Allow <name>?" and shows a six-digit code.
Click Allow only if the phone shows the same code; Deny, or no answer within 60 seconds,
refuses the phone and the code shown is replaced. A phone that pairs again is asked about too.
More than five pairing tries from one address in a minute are refused; wait a minute.
Two paired phones with the same name are told apart by four extra characters on their cards.

Paired phones
-------------
Unpairing in the phone app removes the phone from the computer too, when the computer can be
reached. A phone not heard from for 180 days reads "Expired - pair again" and can no longer
send files; its folder and the files it sent stay. Scan the code again to pair it again.

Where data lives
----------------
Linux:    $XDG_DATA_HOME/jstsync, or ~/.local/share/jstsync
Windows:  %LOCALAPPDATA%\JstSync\data
Portable mode (Linux and Windows only): an empty file named portable.flag beside jstsync or
jstsync.exe makes the app keep its data in a folder named data beside it.

Logs
----
The app writes its log to standard error. The variable JSTSYNC_LOG sets the filter (default
info,zbus=error), for example JSTSYNC_LOG=debug.
It also keeps the last three days of its log (info and above, without names or paths) in
the folder logs inside the data folder, one file per day, jstsync-YYYY-MM-DD.log, at most
30 MB each.
Windows:  the log is visible only when standard error is redirected, for example in PowerShell:
          Start-Process .\jstsync.exe -RedirectStandardError jstsync.log

Command line
------------
jstsync --version
jstsync --help
Windows (PowerShell): .\jstsync.exe --version | Out-String
The output of a Windows program without a console is otherwise invisible.
The language button at the top right of the window chooses the language; About JstSync is beside it.
JSTSYNC_LANG=<tag> sets the language of the window unless one was chosen with the language button
(en, ru, zh-Hans, sr-Latn, hi, fr, it, de, nl, es, pt-PT); without either the language of the system
is used.

Linux notes
-----------
The tray icon needs a StatusNotifier host (KDE, Xfce, Cinnamon, ...). Stock GNOME needs an
AppIndicator extension; without a tray icon, closing the window asks before quitting.
A minimized window is not restored on Wayland.
The window brings its own fonts for Chinese and Hindi; the tray menu and the folder dialog
use the system's fonts (fonts-noto-cjk and fonts-noto-core on Debian and Ubuntu).
If drawing is slow with your OpenGL driver, use the software renderer:
SLINT_BACKEND=winit-software ./jstsync

Third-party software
--------------------
Built with Slint (https://slint.dev) under the Slint Royalty-free Desktop, Mobile, and Web
Applications License 2.0. The attribution is in About JstSync, in the tray menu.
The Roboto font is under the Apache License 2.0, see Roboto-LICENSE.txt.
JstSync is proprietary software. All rights reserved.
The licences of the open-source software it includes are in THIRD-PARTY-NOTICES.txt.
