Prepare for release v0.3.1

This commit is contained in:
2025-04-21 12:17:38 -04:00
parent 1dff1f463a
commit 8f23589459
4 changed files with 37 additions and 11 deletions
+4 -5
View File
@@ -12,14 +12,13 @@ libmutton is a library for building simple, SSH-synchronized password managers i
See the [developer guide](https://github.com/rwinkhart/libmutton/blob/main/wiki/developers.md). See the [developer guide](https://github.com/rwinkhart/libmutton/blob/main/wiki/developers.md).
# Roadmap # Roadmap
#### Release v0.3.0
- [ ] Add refresh/re-encrypt functionality
#### Release v0.4.0 #### Release v0.4.0
- [ ] Swap to native (cascade) encryption (custom)
- [ ] Add refresh/re-encrypt functionality
#### Release v0.5.0
- [ ] Implement "netpin" (quick-unlock) with new encryption
- [ ] Password aging support - [ ] Password aging support
- [ ] Append UNIX timestamp to entry names - [ ] Append UNIX timestamp to entry names
#### Release v0.5.0
- [ ] Swap to native (cascade) encryption (custom)
- [ ] Implement "netpin" (quick-unlock) with new encryption
#### Release v1.0.0 #### Release v1.0.0
- [ ] Create packaging scripts (libmuttonserver) - [ ] Create packaging scripts (libmuttonserver)
- [ ] Stable source PKGBUILD - [ ] Stable source PKGBUILD
+1 -1
View File
@@ -12,7 +12,7 @@ var (
) )
const ( const (
LibmuttonVersion = "0.3.B" // Untagged releases feature a letter suffix corresponding to the eventual release version, e.g "0.2.A" -> "0.2.0", "0.2.B" -> "0.2.1" LibmuttonVersion = "0.3.1" // Untagged releases feature a letter suffix corresponding to the eventual release version, e.g "0.2.A" -> "0.2.0", "0.2.B" -> "0.2.1"
FSSpace = "\u259d" // ▝ Space/list separator FSSpace = "\u259d" // ▝ Space/list separator
FSPath = "\u259e" // ▞ Path separator FSPath = "\u259e" // ▞ Path separator
+4 -4
View File
@@ -131,7 +131,7 @@ func EntryAddPrecheck(targetLocation string) uint8 {
// StringGen generates a random string of a specified length and complexity. // StringGen generates a random string of a specified length and complexity.
// Requires: complexity (minimum percentage of special characters to be returned in the generated string; set to 0 to generate a simple string), // Requires: complexity (minimum percentage of special characters to be returned in the generated string; set to 0 to generate a simple string),
// complexCharsetLevel (0 = safe for filenames, 1 = safe for most password entries, 2 = safe only for well-made password entries) // complexCharsetLevel (1 = safe for filenames, 2 = safe for most password entries, 3 = safe only for well-made password entries)
func StringGen(length int, complexity float64, complexCharsetLevel uint8) string { func StringGen(length int, complexity float64, complexCharsetLevel uint8) string {
var actualSpecialChars int // track the number of special characters in the generated string var actualSpecialChars int // track the number of special characters in the generated string
var minSpecialChars int // track the minimum number of special characters to accept var minSpecialChars int // track the minimum number of special characters to accept
@@ -145,11 +145,11 @@ func StringGen(length int, complexity float64, complexCharsetLevel uint8) string
if complexity > 0 { if complexity > 0 {
minSpecialChars = int(math.Round(float64(length) * complexity)) // determine minimum number of special characters to accept minSpecialChars = int(math.Round(float64(length) * complexity)) // determine minimum number of special characters to accept
switch complexCharsetLevel { switch complexCharsetLevel {
case 0:
extendedCharset = extendedCharsetFiles
case 1: case 1:
extendedCharset = extendedCharsetMostPassword + extendedCharsetFiles[:len(extendedCharsetFiles)-9] extendedCharset = extendedCharsetFiles
case 2: case 2:
extendedCharset = extendedCharsetMostPassword + extendedCharsetFiles[:len(extendedCharsetFiles)-9]
case 3:
extendedCharset = extendedCharsetFiles + extendedCharsetMostPassword + extendedCharsetSpecialPassword extendedCharset = extendedCharsetFiles + extendedCharsetMostPassword + extendedCharsetSpecialPassword
} }
charset += extendedCharset charset += extendedCharset
+28 -1
View File
@@ -1,3 +1,31 @@
**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** **libmutton v0.3.0**
February 22, 2025 February 22, 2025
@@ -12,7 +40,6 @@ February 22, 2025
- (2feeeb74d7813dbbb75795d5ccdd817bbcea3602) `core.ParseConfig` now returns errors for proper handling in interactive clients - (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 - (68e3108741fae0aaf316dcf33a5074b0e19a7b4f) `sync.RunJob` can now return lists of synchronized entries for display in interactive clients
## Fixes ## Fixes
- (eb2b349697ede136ea031cf7d82bfb72a5a0dcf9) Deletions are now synchronized before folders to avoid sync failures under unlikely conditions - (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 - (fc1cd349b8c5468afa3feaf7b5b9042eb4c467e7) Double-space line breaks with Markdown formatting are now preserved when saving an entry