-
Notifications
You must be signed in to change notification settings - Fork 5
/
Todo.txt
225 lines (201 loc) · 8.53 KB
/
Todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
Things to fix, polish, optimize, or clean up. See also "todo" comments in code.
all:
use string(bytes.ToValidUTF8(buf, nil)) for unknown buf contents
replace json lib with faster third-party one
slib/Readme and code comments re commit safety
checksum thread index and service config
Add storeFile checksum
synchronize access to thread/* form/* adrsbk etc (verify)
Handle*Service limit aResult to op codes with changes
op _m,a,- to delete message if client mo has it
mswin can't fsync directory, so verify that dirctory updates are durable after syscall returns
if not, can recover lost files via FILE_OPEN_BY_FILE_ID?
state:
threadtabs includes tags by default
keeps msg panel scroll position?
drop old states
revise disconnected ClientState files on service rename/discard
thread:
storeFwdReceivedThread disable forward & msg-send until storeFwdNotify completed
storeReceivedThread fConsume() msg with excessive subhead length
storeFwdNotify reject request if sender not in Cc list
thread_savetext message for subject & body?
on forward, do notified nodes confirm to sender?
verify forwarding when thread missing recently-sent messages from other senders
node:
encode NUL in svcid and attach/ & form/ files
slib:
some unicode space characters aren't classified as "space"
https://github.com/golang/go/issues/42274
makeLocalId() could yield identical string on different nodes
form:
send form may be missing data
Add() allow any character except '.' in name; reject filename ".*"
blankform update msg to all clients, include ID
flag update in msg editor if form is attached
verify that form-save creates new file
attach:
storeReceivedAttach prevent dup & invalid filename
size set on save
streaming de/compression on get/post attachment, except for compressed formats
binary diff for previously-sent attachment?
store 1 of any attachment received/sent multiple times
adrsbk:
omit .MsgId in _listLogs()
search:
append "+n" in OrigAuthor for outbound msgs?
mouseover LastAuthor to see all authors
check bleve index size over time https://github.com/blevesearch/bleve/issues/1274
config file:
path for store/, http host & port, ...
test-in:
add op open to Gold
replace Op:test with Poll on prior Order
poll on send ops
test:
crash-test replication
setupTestDir() use http conn
try repeated complete functions via defer sCrashFn()
create test blob in test-run, checksum, symlink in upload, attach, verify checksum on receipt
Orders[n].Note == "print this // hide this"
watch for unexpected changes: get all "xy" ops after each Order, compare with expected state
main:
TLS1.3, call api correctly https://github.com/golang/go/issues/31224
stream audio/video to client
secure link to clients
tTmtpInput log error; retry .Temporary(); drop logging in HandleTmtpService & its calls
_readLink check tTmtpInput for error
make browser not cache files?
ohi:
on receipt, add to adrsbk if missing
what is impact of nodes on server ohi list
service:
don't dropQueue on certain ack errors
_node message return cf result on error after eNodeReady
tag_add extraneous err check
allow *.tmp service names
allow svcid change
"registered" needs transaction with adrsbk & config
add-account: check whether net address works
add getUidService()
clean
package name convention in main & codestyle: pThirdParty lDomestic?
common function and syncDir for placeholder symlinks
os.RemoveAll doesn't return os.IsNotExist(err)
slib: add fileThread, fileForm->fileFft?, fileBlank ...
loop seeking array item may not need a < len(array)
clone slice: append([]T{}, src...)[:len(src):len(src)]
use file.readat where offset known
service: "ack" default aResult = []string{"",...}
tError to fmt.Errorf; separate line
fprintf or writestring vs write([]byte(s))
form: kSuffix* -> kFfnSuffix*
thread: mv t*El to read/write section, mv completeThread to top
tComplete methods to encapsulate msgid logic
test: _prepUpdt closures
main: logError() prints err msg
gui
UI controls that change data state get hand cursor, others get arrow
button to dequeue message, ping, etc
configure minimum dequeue period
certain buttons show confirmation pop-up next to click point
discard new msg, close search tab
pink background for text fields with invalid input
sleeping Catalina MacOS drops browser websocket
template: test <%.isLocal%> with template, so browser doesn't need to
date: delimiter character per locale, am/pm option
ao: rename ano
mo: drop draft object after send/discard
formview:
default field values in form-def "defaults" object
create component with parent param?
attach-fill to paperclip button that changes to checkmark
markdown:
attachment hyperlinks display mnm-viewer or download icon
disable h2/h1 heading style by -/= on next line
prevent excess rendering
draft:
attached & displayed image disappears on send, reappears on reload
text box is one line short
scroll text to include cursor insertion position on undo/redo
Win10 + chrome bug on F11 key window max/normalize?
preview panel link to locate associated draft, scrolling msg-list to right place
recipients hyperlink next to [self] when no recipients
to-summary abbrev names
bug causes occasional reopen after update & close
attachmt menu links to clip markdown
progress bar on long outgoing msgs
indicate when msg sent
button to insert quoted markdown
_m updates ml & tl fields; omit ml & tl in results
blankform:
exception thrown for incorrect formdef; should produce same result as json parse error
larger window for editing
listsort only when edit pane closed
validate on send
cc:
bold last alias added
no recipients indicates [self]?
note-field tooltip; swap position with to-field?
tab-key from to-field sets focus in draft textarea
FFT: indicate empty records when $empty:true
svcadd: indicate success/failure
notice:
count in window title
show errors on local site
error log: section for unseen errors
adrsbk:
dates show prior year
change ohi-to selection via enter-key?
msg-list:
year in header when all msgs in prior year, or some msgs in prior year are >N months
set tag search when thread selected in thread panel tab for tag
outside OPEN tab, open msg shouldn't mark it seen?
or open unread msg in any tab sets it open in OPEN tab
keep scroll offsets for certain tabs
goLink scrolls to referenced msg; result include "_l",msgid
thread-list:
orig-date hide prev year for 4 months
keep scroll offsets for certain tabs?
on large screen, extra column for search results
docs:
draft composition: suggest editing by starting each sentence and significant phrase on a new line
tour: describe thread-list columns
clean:
use position:fixed for 3 main panels
css use # for single-element rules
use grid instead of <ul> for menus, etc
css use .outer .inner {...} when .inner not standalone
after text use <!----> to eliminate whitespace before </tag>
use v-show instead of v-if/else where both elements appear frequently
use ref/$refs instead of id/getElementById
hrefs meaningful, or change element to button/span
server try-back-later msg
gives: reconnect time in tenths of second, reason eg max-idle/shutdown/etc
reconnect to send
disconnect when send queue empty
minimize browser update traffic
websocket.js keep list of request types, with isVisible & isCurrent state
on user action, gui.vue update visible types, via mnm.Xyz()
call xhr when type becomes visible, if !isCurrent, set isCurrent=true
on updt msg, websocket skip xhr, if !isVisible, set isCurrent=false
prevent client from overwriting pending draft of another client?
on draft edit, browser pings app, app tracks and forwards pending status to clients with that thread
client bars edit for pending draft
on draft update, app clears pending status
windows copy util
app or script to find hard-linked files, run robocopy, replace found files with hard-links
storage
service directory, subdirectory per service
styling directory: css & image files
icalendar directory: year & json index per file
attachment directory: link file if checksum matches
thread directory
push old threads into zip
upload directory
flag unsent items with name_
drop items sent and untouched for >N days
can pin items in place?
index directory
attachment index: checksum, filename
rebuild index from files to recover from db corruption