lune
created pr with
124.1
changed status to
closed
Closing as superceded by 126
cmds
checkout latest patchset:
ssh pr.pico.sh print 124 | git am -3checkout any patchset in a patch request:
ssh pr.pico.sh print 124.[rev] | git am -3add changes to patch request:
git format-patch main --stdout | ssh pr.pico.sh pr add 124set PR to open (enables RSS notifications):
ssh pr.pico.sh pr open 124set PR to draft (stops RSS notifications):
ssh pr.pico.sh pr draft 124
Patchset
124.1
listing real name of tasks
juan
construction of db for management of decrypted names of tasks
2026-04-21T03:21:16Zjuan
→ fix UTF8 chracteres
2026-04-21T05:43:09Zjuan
filter by status and coloring types of status
2026-04-21T21:13:24Zjuan
update help
2026-04-21T21:18:53Zjuan
list areas names
2026-04-21T21:21:36Zjuan
adjust table tasks to truncate name and list area
2026-04-21T21:44:53Zjuan
partial implementation of listing tasks by areas
2026-04-21T21:56:40Zjuan
final implementation of listing tasks by areas with UTF-8 chracteres
2026-04-21T22:05:20Zjuan
sort on task list to show first do now
2026-04-21T22:10:20Zjuan
update with 8 char of id and db.go
2026-04-21T22:33:29Zjuan
partial implementation of TUI menu on task update
2026-04-21T23:27:54Zjuan
task name correcion on TUI menu of Update task
2026-04-21T23:35:35Zjuan
TUI menu for update task with others flags
2026-04-21T23:38:19Zjuan
helper for TUI update task
2026-04-21T23:43:02Zjuan
search by first 8 char of note id for editing it
2026-04-21T23:49:56Zjuan
partial implementation on note TUI menu for update
2026-04-22T00:00:17Zjuan
TUI menu notebook just with tags
2026-04-22T00:05:46Zjuan
Note update now let you insert only the first 8 char of notebook id in update
2026-04-22T00:20:55Zjuan
implementation of (lune note notebook-list) for listing all notebooks and its ID
2026-04-22T00:25:53Zjuan
partial implementation of lune note show-content ID
2026-04-22T01:10:51Zjuan
convert \n in new line and \ in space for lune note show-content ID
2026-04-22T02:01:11Zjuan
2026-04-22T02:18:42Z
fix UTF8 chracteres
juan
2026-04-21T21:13:24ZSemantic diff summary
0 added,
3 modified,
0 signature changed,
0 removed
across 1 analyzed file
+26
-9
internal/db/reader.go
#
| ... | ... | @@ -89,11 +90,18 @@ func EnrichTask(taskID string) (string, error) { | |
| 89 | 90 | } | |
| 90 | 91 | ||
| 91 | 92 | func cleanName(s string) string { | |
| 92 | - | b := []byte(s) | |
| 93 | - | if len(b) == 0 { | |
| 93 | + | if s == "" { | |
| 94 | 94 | return "" | |
| 95 | 95 | } | |
| 96 | 96 | ||
| 97 | + | // If it's valid UTF-8 and contains no null bytes, it's probably fine | |
| 98 | + | if utf8.ValidString(s) && !strings.Contains(s, "\x00") { | |
| 99 | + | return s | |
| 100 | + | } | |
| 101 | + | ||
| 102 | + | b := []byte(s) | |
| 103 | + | ||
| 104 | + | // Check for UTF-16LE pattern (interleaved nulls) | |
| 97 | 105 | isUtf16 := false | |
| 98 | 106 | if len(b) >= 2 { | |
| 99 | 107 | nullCount := 0 |
| ... | ... | @@ -107,16 +115,25 @@ func cleanName(s string) string { | |
| 107 | 115 | } | |
| 108 | 116 | } | |
| 109 | 117 | ||
| 110 | - | if !isUtf16 { | |
| 111 | - | return s | |
| 118 | + | if isUtf16 && len(b)%2 == 0 { | |
| 119 | + | utf16s := make([]uint16, len(b)/2) | |
| 120 | + | for i := 0; i < len(utf16s); i++ { | |
| 121 | + | utf16s[i] = binary.LittleEndian.Uint16(b[i*2:]) | |
| 122 | + | } | |
| 123 | + | return string(utf16.Decode(utf16s)) | |
| 112 | 124 | } | |
| 113 | 125 | ||
| 114 | - | utf16s := make([]uint16, len(b)/2) | |
| 115 | - | for i := 0; i < len(utf16s); i++ { | |
| 116 | - | utf16s[i] = binary.LittleEndian.Uint16(b[i*2:]) | |
| 126 | + | // If it's not UTF-16 but has invalid UTF-8, it's likely Latin-1 (ISO-8859-1) | |
| 127 | + | if !utf8.ValidString(s) { | |
| 128 | + | runes := make([]rune, len(b)) | |
| 129 | + | for i, v := range b { | |
| 130 | + | runes[i] = rune(v) | |
| 131 | + | } | |
| 132 | + | return string(runes) | |
| 117 | 133 | } | |
| 118 | - | ||
| 119 | - | return string(utf16.Decode(utf16s)) | |
| 134 | + | ||
| 135 | + | // Fallback: just remove null bytes if it's otherwise valid UTF-8 | |
| 136 | + | return strings.ReplaceAll(s, "\x00", "") | |
| 120 | 137 | } | |
| 121 | 138 | ||
| 122 | 139 | func isEncrypted(s string) bool { |