**libmutton v0.3.1** April 21, 2025 ## Features - (da95ede80704e667f75372e2142de4cef1dd42da) Added `EntryAddPrecheck()` utility function for ensuring the target locations for new entries are valid - (17223758b11eae301106f398fe2a8815a04f2d62) (44924737ab0830ad49e90c1d1930b05bba307284) (0f90e8251413af2be73f56d071c14af6c00cdb79) Added initial native Android support - (51bb67f3150e70c2c8e8dc3cc72de5666d7c058a) Split device ID retrieval into dedicated exported function, `GetCurrentDeviceID` - (4ed816cb112686d995b1cb7ae8f5df990117ae4d) Allow more control over string generation to improve generated password compatibility ## Fixes - (51bb67f3150e70c2c8e8dc3cc72de5666d7c058a) Fixed clients having multiple device IDs after failed registrations - (451d695649c659a510a117254a9311fe621082b1) Fixed inability to add a folder on the server if the folder was already created on a client that failed to sync ## Dependencies - Bumps (direct and indirect) - Go: v1.24.0 => v1.24.2 - github.com/pkg/sftp: v1.13.7 => v1.13.9 - golang.org/x/crypto: v0.34.0 => v0.37.0 - golang.org/x/sys: v0.30.0 => v0.32.0 - New - Android builds only - golang.design/x/clipboard v0.7.0 - golang.org/x/exp/shiny v0.0.0-20250408133849-7e4ce0ab07d0 - golang.org/x/image v0.26.0 - golang.org/x/mobile v0.0.0-20250408133729-978277e7eaf7 --- **libmutton v0.3.0** February 22, 2025 ## Features - (f9aa2fc374b77fc8325d0c7644ffc9c96169c3c6) (d2034b458b702b8f1664bc188c1840040ec0f704) (81b78068a75a23c73be607cbe6d4dc8b1539f831) (e9d0c3704362c8963e63a6c3b70d036f3e6c2493) `core.LaunchClipClearProcess`, `core.WriteToStdin`, `core.ExpandPathWithHome`, and `core.PrintError` are now exported utility functions for direct use by clients - (c28d45c9da94ec45d89dbda6d645042a7fdbcd29) One-off sync functions can now be forced to run in offline mode - (5028fb21b019e8a867d031463f5de1402fc053f4) SSH connection attempts now have a 3-second timeout - (89b74cec1e014dba31e2b728e3544941d6edd2c2) Individual keys can now be removed from the config file - Many features for building interactive (GUI/TUI) clients - (619e4220a60fc0cb284f5640eaf9af86c0651ac7) Clipboard clearing can now be handled much more sensibly by interactive clients - (3b57d59ddcf0694b2bbae8c86ec06faff299e950) (55be8a30759ee5d12628c631af94a57d582281a4) The clipboard can now be cleared instantly (no timer); useful for clearing on client exit - (2feeeb74d7813dbbb75795d5ccdd817bbcea3602) `core.ParseConfig` now returns errors for proper handling in interactive clients - (68e3108741fae0aaf316dcf33a5074b0e19a7b4f) `sync.RunJob` can now return lists of synchronized entries for display in interactive clients ## Fixes - (eb2b349697ede136ea031cf7d82bfb72a5a0dcf9) Deletions are now synchronized before folders to avoid sync failures under unlikely conditions - (fc1cd349b8c5468afa3feaf7b5b9042eb4c467e7) Double-space line breaks with Markdown formatting are now preserved when saving an entry - (4689cae3f4a1e19486935f2da5b06bf0a90c731c) Sheared folder names now always end in a trailing slash for clarity and reduced duplicate entries in the deletions directory - Many fixes for building interactive (GUI/TUI) clients - (1cebb395460fb6068ebf4253ec8bd93e9d2b2a96) The soft exit function now specifies a return value - (a4a39a3a995d1560514dc3b782abb26329214c3f) Passphrase-protected SSH identity files are no longer broken for interactive clients - (1c650d475145c3db4e370576d89eb77abe6e5e52) (0162b737c84d42e168803e0c074103b5c0676384) Interactive clients will no longer crash on SSH dialing failures - (173574eb85b3172414d104a2bf391a3bce4ddc95) Error messages not making sense for interactive clients have been addressed ## Optimizations - (f2f9c523f441b49d682795c01454167d68aae573) An unnecessary variable declaration was removed in `core.DecryptGPG` - (fb5449cf1f75aa0f93c0484d590abca04f977d7a) A redundant (and late) check for the pre-existence of a new entry has been removed - (e9d0c3704362c8963e63a6c3b70d036f3e6c2493) `core.PrintError` can be used to decrease the overall size of client binaries through code re-use ## Dependencies - Bumps (direct and indirect) - Go: v1.23.4 => v1.24.0 - golang.org/x/crypto: v0.31.0 => v0.34.0 - golang.org/x/sys: v0.28.0 => v0.30.0