* Util#runShellCommand: Add BufferedReader
* Util: Correct class TAG
* SyncthingRunnable: Use Util.runShellCommand for "chmod 500"
* Util: Add notes
* LogActivity: Replace ProcessBuilder with Util.runShellCommandGetOutput
* SyncthingRunnable: Improve "error" message
* LogActivity: Show Android log by default
* SyncthingRunnable: Don't log if the chmod fail is expected on Android 5+
* LogActivity: Remove SyncthingNativeCode per line repetition if we are showing its own log
* WIP
* Revert "WIP"
This reverts commit 98b34c47c6b844bd7c5a332360cd5965708e69d7.
* WIP
* Revert "WIP"
This reverts commit 3b9fc96d90708e4d4c0eef08f8372c5c4a2f2314.
* Add de/serializer for MinDiskFree
* Move MinDiskFree out of Folder
* Move MinDiskFree out of Folder (2)
* Revert "Move MinDiskFree out of Folder (2)"
This reverts commit 65f87db9a59c67d5a59eb713904976c78a5dcb9a.
* Revert "Move MinDiskFree out of Folder"
This reverts commit b71350bd105731d2763d95db7f3f1d1524328cfa.
* Revert "Add de/serializer for MinDiskFree"
This reverts commit 582742662942ece78658ebc3f7fa5c3ec91a5262.
* RestApi: Add MinDiskFreeSerializer, MinDiskFreeDeserializer
* Revert "RestApi: Add MinDiskFreeSerializer, MinDiskFreeDeserializer"
This reverts commit 3922f2451c48850c92e9403607bfb4edab8c591d.
* Test
* Revert "Test"
This reverts commit 355009565aaaf50efcf06c72bdff5b3466547a63.
* FolderActivity/DeviceActivity: Fix restApi unavailable in onCreate()
* Model/Folder#MinDiskFree: Initialize members (fixes#277)
* ConfigXml#getFolders: Add MinDiskFree (fixes#277)
* ConfigXml: Write back minDiskFree (fixes#277)
* Ignore notices about updating gradle dependencies
* ConfigXml: Make number parsing more safe
* FolderActivity#initFolder: Add new Folder.MinDiskFree
* Handle minDiskFree.value as String instead of float
* Revert "Handle minDiskFree.value as String instead of float"
This reverts commit 0552cfcbe139e99e575237a9b47ee4e888721c6f.
* WIP
* Revert "WIP"
This reverts commit 0a3df9144a86a396318c57a089d41da449d284dc.
* RestApi: Avoid creating duplicate Gson() instances
* Model/Folder: Use Integer instead of Float
See gson glitch:
https://github.com/google/gson/pull/1290https://github.com/google/gson/issues/968
* Try MinDiskFree.value as Long instead of Integer
* Revert "Try MinDiskFree.value as Long instead of Integer"
This reverts commit d3588629818b3f75d30a2486a7c4583b0d4c99c7.
* Revert "Model/Folder: Use Integer instead of Float"
This reverts commit ca3931bd0d06cf500cff2443e4205f7c3211e777.
* Update model/Options: MinHomeDiskFree (fixes#277)
* Save welcome wizard button state (fixes#281)
* FirstStartActivity xml: Disallow focus for non-button elements
* Fix ViewPager taking focus on mouse click glitch on TV
* Provide key navigation if ViewPager accidentially took focus (fixes#281)
* Device overview: Show status "Syncing" in case of data throughput (fixes#240)
If (incoming_bits_per_second + outgoing_bits_per_second) top the threshold, we'll assume syncing state for the device reporting that data throughput.
* Imported de translation
* SettingsActivity: Fix var name
* Add verbose logging
* SettingsActivity: Use a handler to call sub pref screen (fixes#247)
* Add verbose log
* Fix toolbar ignoring input after going back from subpref screen
when directly opened in subpref screen before (fixes#247)
* Revert "Add verbose log"
This reverts commit 33207d0721dd38ce5efa04dddb891557ade6f5c3.
* SettingsActivity: Re-register actionbar after a subpref screen dismissal (fixes#247)
* WIP
* AndroidManifest: Add WebViewActivity
* Open WebViewActivity from prefs, move to "Debug" menu
* Add WebViewActivity below SettingsActivity
* Add strings for ssl security notice
* Handle web page links and ssl warnings correctly
* Mention issue tracker URL in pref summary
* Don't use ACTION_VIEW for deeplinks on syncthing's WebUI
* Rename string: report_issue_summary to open_issue_tracker_summary
* Imported translations
* Add "open in browser" drawable
* Add webview_options menu
* Add strings: web page loading, open in browser
* Add option to open webpage in browser on non-TV devices (fixes#227)
* Imported de translation
* Remove welcome slide dots from screen reading
according to advice from the prelaunch report.
* Try setImportantForAccessibility on TextViews
* Update APK version to 1.0.0.7
* Try setContentDescription
* Update APK version to 1.0.0.8
* Update APK version to 1.0.0.9
* Add meaningful content description
in case a screen reader unintentionally reads out loud
* Update APK version to 1.0.0.10
* Fix type conversion
* Update APK version to 1.0.0.11
* Add views/CustomViewPager
* Use CustomViewPager in FirstStartActivity
* FirstStartActivity: Use CustomViewPager
* Add main menu string for screen readers
* Reformat code
* Try toolbar.setNavigationContentDescription
* Update APK version to 1.0.0.12
* Import de translation
* Add Util#isTcpPortListening (fixes#193)
* Move model/Config.Gui to model/Gui
* Constants: Add default tcp ports
* Add string: webui_tcp_port_unavailable
* Add ConfigXml#getWebGuiBindPort
* Check if webUI tcp port is available before launching native (fixes#193)
Output failure notification if the port is allocated by someone else.
* Settings UI - Valid tcp ports are from 1024 to 65535 (fixes#211)
* Add tcp6 listen port detection, check on connState == LISTEN
* Update translations de
#200 - Cannot change folder type or pull order in wrapper UI
#202 - User selections are lost if screen rotation changes during folder edit
#203 - Edit folder dialog - AlertDialogs leak on screen rotation
* SyncthingActivity: Reformat code
* Add status light to toolbar
* MainActivity: Add status light indicating if syncthing is running (fixes#187)
* New colors for status light
* Tri-state status light
* Add RestApi#isUsageReportingAccepted (fixes#184)
* Add verbose log when usage report question dialog triggers (fixes#184)
* Remove asynchronous requests to determine if user opted-in to usage reporting (fixes#184)
* Check if the config is loaded before evaluating current ur user wish
* Properly dismiss mUsageReportingDialog on orientation change (fixes#184)
- Consolidate createRestartDialog into showRestartDialog
- Remove unused var mBatteryOptimizationsDialog
* Add new label syncthing_database_size on Settings/About
* Add Util#runShellCommandGetOutput
* Make INDEX_DB_FOLDER constant public
* Add Database Size status label to Settings/About (fixes#155)
* Imported translation de-DE
* Fix lint: Application Context within SettingsFragment
* Update tasker actions and broadcast intent extras (fixes#161)
according to https://github.com/Catfriend1/syncthing-android/wiki/Remote-Control-by-Broadcast-Intents
* Update AndroidManifest.xml intent filters
-
com.github.catfriend1.syncthingandroid.action.START
-
com.github.catfriend1.syncthingandroid.action.STOP
* Fix missing "public" declaration
* Add PREF_BROADCAST_SERVICE_CONTROL
* Add null check for mRunConditionMonitor
in SyncthingService#ACTION_REFRESH_NETWORK_INFO
* Disable RunConditionMonitor completely
when PREF_BROADCAST_SERVICE_CONTROL is enabled.
* Status tab: Display hint if service control by broadcast is enabled in prefs
* Update strings
* Imported translations
- de
- sv
Fix Syncthing version not showing in Drawer or incorrectly shown after app first start or update.
Show syncthing native version regardless if syncthing is running or not.
Related issues:
#158 - FolderActivity not correctly disposed after dialog close
#161 - mRunconditionmonitor not running after config import/export
#163 - "Share to syncthing-folder" doesn't work when syncthing is not running
* import/export Config: Only shutdown native if it is running (fixes#161)
* Remove FolderPickerActivity#kitkat_external_storage_warning
* Remove SyncthingActivity#registerOnServiceConnectedListener
* Make "share to folder" available when syncthing is online or offline (fixes#163)
Improve service connection
* Add script to forward web UI port of an AVD
Update README.md
* SettingsActivity: Improve service connection
* Correct self-class reference in FolderActivity (fixes#158)
* Correct self-class reference in DeviceActivity (fixes#158)
* Correct self-class reference in ShareActivity (fixes#158)
* Remove unused string 1/2
* Remove unused string 2/2
* Add Utils/Luhn.java for check rune calculation
* Update model/Device.java defaults
according to Device defaults in ConfigXml#getDevices
* Remove errorListener from ConfigRouter#addDevice
* Remove errorListener from RestApi#addDevice
Remove no longer used RestApi#normalizeDeviceId
* Add checkDeviceID to model/Device.java
and verify device ID's entered by the user before writing them to the config.
* Fix lint by using Locale.ROOT for internal strings
* model/Completion: Switch off verbose log
* Preserve syncthing running/not running after a database or delta index reset (fixes#154)
Remove callback listener triggered by SyncthingService#shutdown.onKilledListener()
* service/EventProcessor: Switch off verbose log
Changelog:
- "Use default folder path given in config.xml" (#101)
- "IllegalStateException: Fragment already added" (#108)
- "Enhancement request for per-folder(device) sync conditions" (#110)
- "NPE crash after key and config regeneration" (#141)
- "Adjust the folder icon to show if it's send/receive or both" (#143)
- "CPU percentage is not shown on the status tab" (#144)
- "Always make individual sync conditions UI available" (#145)
- "IntroducedBy deviceID lost on config change through wrapper UI" (#146)
- "Wrapper doesn't use the same syntax as syncthing core's web UI for device addresses" (#147)
- "Syncthing wrapper "emergency" shutdown on native binary crash doesn't work" (#148)
Commits:
* WIP
* WIP
* Get folder list and paused setting when syncthing is not running
Preparation to solve #110
* Fix NPE in DeviceListFragment#DEVICES_COMPARATOR
* Remove blank line
* Add ConfigXml#getDevices and comparator
Make ConfigXml#saveChanges public
* SyncthingService evaluates per folder/device
sync conditions when syncthing is not running via ConfigXml
* Fix typos and add stubs
* Fix build errors
* DEBUG - Always run syncthing binary
* Fix NPE at RunConditionMonitor pointer
* Add setFolderPause, setDevicePause
to ConfigXml
* Improve logging
* Remove test mode
* Better log levels
* Make ConfigXml#updateIfNeeded private
* Remove SyncthingService#mStartupTask
AsyncTask no longer needed
* Update model/Options (fixes#101)
* Fix NPE after config regeneration (fixes#140)
* Refactor key and config generation
Refactor ConfigXml public functions to allow checking if a valid config exists and trigger key and config (re)genration if something is corrupted.
* Fix crash on export/import (fixes#142)
* ApiRequest - Disable verbose log in release builds
* ConfigXml#updateIfNeeded - Disable "startBrowser"
because it applies to desktop environments and cannot start a mobile browser app
* MainActivity - Always show all tabs
* Show folder/device tab contents from config.xml
if syncthing is not running
* Update ConfigXml#getDevices return model
- compression
- introducer
* Device tab - Hide in/out rate if syncthing is not running
or if the device is paused
* Update device item layout
* MainActivity/Devices - Prevent showing outdated status
after syncthing core transitioned from "active" to "disabled"
* MainActivity/Folders - Prevent showing outdated status
after syncthing core transitioned from "active" to "disabled"
* Add ConfigRouter class
Provides a transparent access to the config if ...
a) Syncthing is running and REST API is available.
b) Syncthing is NOT running and config.xml is accessed.
* Add pref - Cache local device ID
* Allow excluding self in ConfigRouter#getDevices
* Allow excluding self in ConfigRouter#getDevices (2)
* Update Folder model default values
* Update Folder model defaults (2)
- copiers
- hashers
* WIP - ConfigXml - FolderActivity
Remove unused pref inject code
Cache local device ID in pref
Reduce verbose logging in release builds
Extend ConfigXml#getFolders
Extend ConfigXml#getDevices
Fix ConfigXml#setDevicePause
ToDo ConfigXml#getFolderIgnoreList needs to be implemented
* Implemented ConfigXml#getFolderIgnoreList
* Extend ConfigXml#getDevices
- device.addresses
* WIP - DeviceActivity
Make it available when syncthing is not running
* Fix unsuccessful API bumps while syncthing is starting
* Fix space
* Adjust the folder icon to show if it's send/receive or both (fixes#143)
* Fix lint - item_device_list
* Preserve active tab when syncthing core transitions between running and not running
* Add xmlns:android to item_folder_list
* Remove unused reference from item_folder_list
* Add device icon to device tab
* Fix CPU percentage not showing (fixes#144)
* SyncthingService - Polish iterator code
* Fix MainActivity#updateViewPager (fixes#108)
* Add ConfigXml#updateFolder, updateDevice (1)
* Add ConfigRouter#updateFolder, updateDevice
* Add missing "final" to ConfigXml#updateDevice
* WIP - FolderActivity - Update updateFolder via ConfigRouter
ToDo: Implement ConfigRouter here.
* ConfigRouter - Fix missing return
* DeviceActivity - Update device via ConfigRouter
* Always make individual sync conditions UI available (fixes#145)
regardless if syncthing core is running or not.
Remove SyncthingService dependency from SyncConditionsActivity
* Fix incorrect folder type icon shown
when syncthing core is not running
* Add "introducedBy" to folder and device model (fixes#146)
* Add Folder#getDevices to model
* ConfigXml#updateFolder - Writeback devices sharing the folder
Support preserving the "introducedBy" model field of Folder.java (fixes#146)
* Add ConfigXml#updateFolder - Versioning
* Remove SyncthingService dependency from FolderPickerActivity
because it is no longer required.
* Update ToDo remarks
* Add ConfigXml#updateDevice - Addresses
* Fix DeviceActivity#persistableAddresses to be more graceful (fixes#147)
and accept the same address syntax as syncthing core web UI does.
* Add ConfigXml#removeFolder, removeDevice
* Add ConfigXml#addDevice, addFolder
- Add ConfigXml#isDeviceIdValid
- Do not allow adding empty folder labels or empty device names.
- Update model Folder.java so ConfigXml can handle the ignorePerms XML attribute
* Fix Syncthing wrapper "emergency" shutdown on native binary crash (fixes#148)
* Update translation de
* Add ConfigXml#postFolderIgnoreList
* Update APK version to 0.14.54.3 / 4182
* Revert DEBUG - Always run syncthing binary
* Update whatsnew
* Add script to update submodule
* Update publish-release.sh
* Add helper script to build syncthing submodule only
* Enable HTTPS for REST/WebUI only if OS supports it (fixes#137)
* Update ApiRequest to handle both http or https
* Add Constants#osSupportsTLS12
* Update APK version to 0.14.54.2 / 4181
* Update README.md
* Update whatsnew
* Update app desc en-GB
* Add git_fetch_branch.sh
* Abort on lint error
* Run lint when building the app
* Update app full description
* Imported translation values-sv
* Initialize DiskEventData for tests
* Add FileUtils#getMimeTypeFromFileExtension
* Open file when user clicks on it in RecentChangesActivity
* Add RestApi#getFolderByID
* Add Constants#ENABLE_TEST_DATA
* Add strings
* Move open folder to FileUtils#openFolder
* Add FileUtils#openFolder, FileUtils#openFile
* Fix UI glitch
Make clear to the user that the folder label is not part of the physical full file path and name.
* Open file/folder on item click
Add test data
* Imported translations
* Fix lint
* Update APK version to 0.14.51.13 / 4176
* Update README.md, whatsnew
* Turn off test data mode
* Remove unused import
* Fix issue 110 (3) - remove checkmark
in per object sync conditions dialog
* Fix UI glitches, feedback issue #110 (1)
* Stop onscreen keyboard popping up
when FolderActivity starts
* RunConditionMonitor - Add more logging
* Always save UI state back to prefs
in SyncConditionsActivity until we abandon global run conditions.
* SyncConditionsActivity - Rename "folder" to "object" as it can mean a folder or device.
* Implement per-device sync conditions
* Default custom wifi whitelist to "all enabled"
* Update APK version to 0.14.51.7 / 4170
* Add checkbox "use Wi-Fi whitelist" in global run conditions
* Rename variable
* Tell user if location is disabled but "run on selected" WiFi is enabled.
* Update status tab while user looks at the UI and syncthing is disabled
* UI: Offer a solution
* Add export of index database
* Add import of index database
* Shutdown service before export and restart it afterwards.
* Do not import database if it doesn't exist on sdcard
* Do not attempt to delete the database export directory on export if it does not exist.
* Return to MainActivity after successful export
* Import/Export using an AsyncTask
* Fix compatibility with Android 5.x
* Add push APK to device after build script
* Fix typo in SyncthingService comment
* Refactor SettingsActivity - updatePersistentNotification
Call updatePersistentNotification after the settings screen was left and not when the user toggles the alwaysRunInBackgroundAsAService checkbox.
* Automatically start app if push-to-device is enabled
* Remove PREF_NOTIFICATION_TYPE
* Only push APK to device if build succeeded
* Fix notifications and foreground service start/stop
* Use startForegroundService on Android 8+
* Fix startActivity called from non-Activity context (fixes#80)
* Fix comment
* Do not ask for root if root is disabled in settings
* Show error in UI when libSyncthing.so is missing
* build-syncthing - Install Go on demand on windows
* build-syncthing - Install Android NDK on demand on windows
* Update README.md
* Update APK version to 0.14.51.rc3.6 / 4162
* Add export of SharedPreferences app settings
Add import/export to drawer
* Add import for app settings (SharedPreferences)
Move last_sync_id pref to Constants.java
* Add drawer icon for import / export feature
* Start or stay stopped according to run conditions after import
* Close SettingsActivity after sharedPref import
* Catch failures on gson-parsing SystemInfo
* Fix parsing connectionServiceStatus on recent syncthing version
* Add SystemStatusConnectionServiceStatusElement to model
* Update play - app title and contact email
* Update apk version to 4157 - 0.14.51.rc3.1
Update EN, DE play descriptions to indicate the fork
* Add fork notice to all languages
* Update syncthing to v0.14.51-rc.1
* Update syncthing to v0.14.51-rc.2
* Update fdroid metadata
* Update python build script
Use prebuilt go binaries from google and check SHA-256
after downloading requires files from google.
* Read ignore list from REST
* Add write back of ignore list via REST endpoint call
* Disable the edit ignore EditText when a new folder is created to preserve existing ".stignore" contents
If you start syncthing and run conditions do not apply, the drawer is locked. You can then only change settings, press the back or home button to leave the app running but exiting the app is not possible.
* WIP - Allow expanding the drawer if syncting is not running
- Hide syncthing process stats in Drawer if syncthing is not running
- Hide menu action button if syncthing is not running (except settings and exit)
* WIP - Add RunConditionsMonitor#getRunDecisionExplanation
* WIP - Show run status explanation in StatusFragment
* Fix duplicate declaration in RunConditionMonitor
* Explain all syncthing service statuses instead of only
differentiating between ACTIVE and NON-ACTIVE
* Remove parts marked "// to-remove"
* Remove unused resources
* Move syncthing live status from drawer into status tab
* Fix handler start and stop in StatusFragments
Note: onResume is intentionally not overidden as the fragment
is not active after the user left and reentered the app
* Fix crash on orientation change
* Only update MainActivity.ViewPager when a service state occured
This fixes a UI glitch occuring because onResume also results in
onServiceStateChanged as the serviceStateChangeListeners are
re-registered.
* Remove unused strings
* Add welcome slide "key generation"
* Improve slide icon
* Add key generation via ConfigXml to welcome wizard slide
If key and config files are already present in syncthing's data folder
they won't be overwritten (as ConfigXml checks for that). It's also
no problem to go through the slides again, e.g. if the storage permission
got revoked after the first app launch granting it.
* Remove test mode
* Remove "Enjoy Syncthing."
* Improve string "Consider backing up your sync data"
* Show welcome slides only if mandatory prerequisites are
missing. Show only slides that are necessary because of
missing prerequisites. Mandatory prerequisites are
a) storage permission b) existance of keys and config
Remove key generation UI from StateDialogActivity as this
is no longer required in the main UI as we ensure generating
keys and config before launching to MainActivity.
* Minor review adjustments
* Review - Improve explanation string on config corruption
* WIP - Extend run condition monitor functions
* WIP - Better run conditions UI
* WIP - Allow applying run conditions to foreground and background
execution of the syncthing app
* WIP - Add mobile data run condition
* WIP - Fix RunConditionMonitor#onSharedPreferenceChanged
* WIP - Directly go to SettingsActivity#Run_Conditions screen
after the "change run condition" button has been clicked in
StateDialogActivity during STATE_DISABLED
* Disable Syncthing in flight mode (fixes#1173)
... and allow to enable it on phone that have problems
detecting wifi connection if the user manually enables
one during flight mode.
* Add run condition "Run on metered wifi" (fixes#937)
* Improve string
* Add run condition "Respect Android Auto-sync data quick toggle" (fixes#588)
* Remove SharedPreferences.OnSharedPreferenceChangeListener
* Added SyncthingService#reEvaluateRunConditions
* Implement mPendingRunConditions in SettingsActivity
to queue run condition changes until the user leaves
the preferences screen after making changes. (fixes#1196)
* Rename reEvaluateRunConditions to evaluateRunConditions
according to review
* Fix implementation of ContentResolver.removeStatusChangeListener
* Reordered run conditions
wifi, metered wifi, wifi whitelist, mobile data
* Review 1/2
* Fix logic for metered/non-metered wifi run condition
* Remove PreferenceScreen dividers on API level > 21
* Revert "Remove PreferenceScreen dividers on API level > 21"
This reverts commit ec037b02e4.
* Detect changes made to wifi connections in android's data usage dialog
related to the metered wifi flag.
* Review - Minor string improvements
Removed unused variable from RunConditionMonitor
Move always_run_in_background pref to pref category
"Behaviour".
* Review - "Start service automatically on boot" string
* Remove unused strings
* Prepare welcome wizard related to issues
https://github.com/syncthing/syncthing-android/issues/1129https://github.com/syncthing/syncthing-android/issues/622
* Add drawables and texts
* Disable scrolling the ViewPager, we have buttons for that
* Add welcome wizard code
Ask for storage and location permission
Location permission is required to run the app
Recheck storage permission on each app start, if revoked the
welcome slides show again.
* Review
* Review - Do not quit the app when storage permission is not granted
* Review - Minor string improvements
* Fix race during config reload and missing null check
in FolderListFragment and DeviceListFragment (fixes#1194)
* Review - synchronize(mConfigLock) when mConfig is accessed
* Review - add two breaks in RestApi
in removeFolderInternal, removeDeviceInternal