-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathTODO
428 lines (270 loc) · 15.2 KB
/
TODO
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
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
------- TODO --------------
* General save settings per site?
* Do loose matching on the url components. if they give ?/host= but no port
or ssl, try and find an approved partial match. Same with ?host=&port= but
no ssl. (which is the situation that brought this up.)
* game_db_update needs to remove mssp table entries too (on a delete.)
* have color of the gear icon reflect the connection status?
* [requested] pref for scrollback length.
* GMCP - enable/disable per protocol module, and a pref selector?
* nerfbar should probably react to actual function hotkey presses too.
* ICK. - the nerfbar password hider probably needs to be an <input
type="password"> field instead of a blurred <textarea>. On Android with a
styled textarea, the IME will still show the password you type in as an
autocompletion. *doh!* :) But its good enough for now.
* Server to server data sharing protocol?
* Online Adminsitration Interface.
* Password protection for "private" online LociTerm server instances.
* More comments around some of the nastier code bits, particularly the crummy
js that you didn't know how to write well.
* Would be cool if the function keys "animated" on screen when they changed via
loci.hotkey, so that the player is more aware of it.
* It might be cool to have the screen stay at a fixed width (from font size),
but also be able to do a pinch zoom and only have the term panel effected,
not the ui buttons. so not pinch zoom of whole app, but just the xterm
pane.
* Add a "you have login creds here" icon to the games list.
* Think about a GMCP Loci.Font protocol for d/l'in and using a private EUA font set?
* check security_enforcement(), should it be using shutdown_game() instead?
* Should have the systemctl file built at make time, to use the right install
path instead of user having to edit it..
* config option for verbose suggestion failure message to client.
* DB - save first few K of data, for admin review later?
* Use xterm serialize to save buffer as html or raw terminal codes.
* Config option for how frequently to re-check MSSP.
* Filter out unsupported GMCP messages at the locid level. No reason to send
those to the client, and some games are very bad about it.
* idea- could do a pure cli lociterm too, for kicks. :)
* There is a bug in libwebsockets, if ip6 hostname resolves but port only open
on ipv4, lws will kill the connection 15 seconds after connecting to ipv4.
* Server Get the terminal types and mtts values to be selectable from the
config file?
* android ime-
Remains an open issue. :(
See: https://github.com/xtermjs/xterm.js/pull/4265
see ./browser/input/CompositionHelper.ts
* Server lws_daemonize check that.
* Server drop perms after launch?
------------- DONE! -----------------
+ Add an About->Conennection window, to show connection time, i/o stats, and
maybe operating parameters like telnet and gmcp negotiations.
+ BUG? check that telnet env vars are only sent if new-env is negotiated
(CLIENT_STATE specifically) (fixed.)
+ add telnet CHARSET negotiation. The Encoding is only set on the client atm.
Probably should be client/server message to update the telnet side with the
client setting.
+ pref for BS/DEL for bbs support
+ encoding selector to override utf-8 with big5 or cp437.
+ Add erase sends backspace option
+ controlable contrast ratio in theme? (can xtermjs do it after setup?)
See xtermoptions.minimumContrastRatio. (The problem is games with direct 256
or TRUECOLOR that just choose horrible colors from a usability standpoint.
#008000 blue on #000000 black, for example.) (It can, but until I have a
different place for extra options like that, "themes" is too crowded for it.
You can always set it in a theme.)
+ BUG fix the MTTS variable in env.
+ [requested] pref for putting scrollbar back.
+ fix the theme selector updating itself after theme loads
+ FIX nerfbar enable pref isn't overriding anymore?
* Get rid of pre-lociprefs cruft in lociterm.js
+ FIX the delayed font load thing.
+ FIX the theme selector
+ FIX the menu selector
+ FIX the not saving part
+ ADD a seperate default values so that themes.json doesn't override everything
+ separate terminal font size from ui font size.
+ fix the pref window that don't always show the current values.
+ add enable/disable for command chaining in the nerfbar
+ add "command chaning" to nerfbar via the ; character.
+ The lociterm link in the about-game section isn't correct if the game was
connected to with a set of &host= type parameters. Fix it!
- set a user agent for the scanner.
well, I changed the terminal type to locibot when its scanning.
+ put scanner parameters into the config file.
+ convert mssp from most recent to a log
+ Add mssp parameters to the config file.
- change the "Diagonal" menu back to LPMud. Make the "canned" menus
auto-select based on the MSSP family name? (I added "cardinal" as the
default, copied after lomenu, and didn't change the names to the mud
family. Could always do it later.
+ Figure out how to alter the DB tables without whacking them. (decided against
doing it. implmented db update sql scripts instead, stored in a directory for
use at any time with any db file.)
+ Add a db state DBSTATUS_TEST_SERVER that allows connections, but does not get
shown in the list. and a way to set it from the CLI. (Done. "redacted".)
+ Move the development from cvs to git.
+ screenshots for PWA installer
+ wordstack lociterm keyboard entry disable- set class="xterm-helper-textarea"
to disabled might work for keeping IME from poping up in line mode! (Yep, added
that.)
+ local mode function key editor. - in progress hotkey.js
+ (make mud accept loci.hotkey.edit definitions. for testing)
+ make hotkey ui send updates back via loci.hotkey.edit
+ make terminal send local hotkey definitions on keystroke (done)
+ add hotkey save function. (done)
+ (make mud translate between | and \n when sending/recv macros) (done)
+ hotkey subsystem revamped, hotkey.js
+ document loci.hotkey name: label: and macro: sends: options.
+ try to fix TAB and SHIFT TAB in the ui.
+ FIX why isn't ssl working?? - omg its because its broken in libwebsockets
v4.3-stable. And permessage deflate is broken in v4.4/main . Add a compile
time option to disable PMD temporarily?
+ implement the GMCP Loci.Menu protocol for game sending menu definitions to
client, and document it.
+ EOR hook.
+ add COLORTERM = truecolor to environment.
+ propigate the client interface state into new-env.
Done as CLIENT_STATE. Values are UP or DOWN, and are sent on change and on
reconnect.
- lociterm... talking to Play.Legendsofterris.Com 31000, got a lot of what
looked like oob gmcp? figure that out. ( I looked at a packet trace... its not Lociterm. That mud is just sending garbage. )
+ there are times when you might want to allow a numeric ip. make it
selectable. (gamedb, allow_numeric_ip = yes) default is no
+ make it so that ?host=X&port=Y ONLY works if the game has already been
suggested and allowed, to make it LESS easy to automate suggestions.
+ Have UI disable "game server" when no db engine is installed.
No, I had it only print the default game.
+ Have UI disable "suggest new" button when suggestions are disabled.
the suggest new button in the game server list. If a menu opens
sys_connect directly, that'll still work.
+ change prompt menu action to print into the nerfbar if active. send
should send the nerfbar of the nerfbar (if any) without a newline then the
send string.
+ the password entry field probably doesn't blank the nerfbar while in line
mode, but it should. It does now, but only for true line-mode hidden
password mode clients. char-at-a-time with local line mode enabled won't
normally be able to enable password hiding.
+ have the menside buttons position north of the nerfbar if nb is open
+ Document the menu name in sys_menu that are always available, and maybe rename them from menu_ to sysmenu_ or something like that.
+ implement a 'word click' stack function to integrate into menus, to speed up
select/paste from words on the screen.
+ work on when nerfbar input gets autofocused. (maybe less of that.) I feel
like it is working pretty well now.
* FIX hotkey routing though nerfbar. (it shouldn't!)
+ document the locid command line functions for DB managment including redatction
- create a "player.locid.conf" file suggestion for ~/.locid.conf
- BUG - is there some race condtition, or message fragmentation problem wrt
gmcp/env data making its way into the in-band datastream? Is client GMCP
buffered correctly? (No, I don't think so. I believe I was seeing was LO
improperly inserting system notifications into the GMCP data stream)
+ work on cleaning up for home-dir install, so that locid -b works as a
one-shot local launch without having to specify a -c config file. (.lociterm
dotfiles?)
- make a "this is a dev server" flag in the suggest window, that keeps the
server from SHOWING in the global list. (I didn't make it "user selectable",
but I did add an adminstrative flag for it, DBSTATUS_REDACTED, to keep
certain hosts from showing up in the public offerings.)
+ clean up the menu format keywords and document them.
+ add img format to menus.
+ Make the menu selection save. Per site?
Saved, but not per site. Decided to do it the easy way for now, and
re-archetect the whole theme saving thing later.
+ Work on selectable / alternate menubox layouts for 10-way direction muds.
(in-game menu themes first. Then maybe game provided ones.)
+ When you do menus, do a &menu=lp or whatever. That'd be nice.
+ One time 'suggestion disclaimer' window.
+ have login window save creds based on host/port.
+ theme setting for adding some spacing around the terminal div, so letters
aren't right up against the edge. (no. I did a justify-content on one of
the divs to center the terminal element)
+ change the URL connect format so that it overrides the users saved game
choice... or at least pops up a window about it.
+ Do a "lociterm supports" features writeup, maybe in .md format?
UTF-8, Unicode, Emoji support
XTerm compatible, True Color, 256 Color
Telnet Char-at-a-time, linemode. EOR TTYPE MCCP MTTS MSSP NAWS GMCP
GMCP Char.login Loci.hotkey
Themes - font size, button size, CRT emulation filters, menu locations
Accesibility - screen reader hinting
Touch screen support
Installable as Progressive Web App
Mobile support, speech to text on mobile
+ put SSL port into the game about.
- idea- support for CHARSET telnet option, to send UTF-8. (Eh, maybe only do it
later if we bother to support other codepages.)
+ CLI db administration mode.
+ There needs to be an idle timer on proxy connection, to stop game side being
alive for ever waiting for a reconnect that wont come.
+ could also add a throughput/interface bytes tracker too I suppose. iostat from LO
+ clean up the lociclient protocol numbers.
Also added a client/server HELLO exchange to detect when client version may
not match server version.
+ check upgrade path for clients lociterm1.0->lociterm2.0.
Well... the new server will detect lociterm.1.x and at least send a "You
must refresh the page" down to the user. Hopefully they will be able to.
+ terminal reset- put cursor on last line of screen? (read rows from xtermjs, move cursor there.)
+ see about ?host=x;port=x;ssl=x in URL. Done, used as initial game connection, ignored otherwise.
+ have login window send via in-band again, if GMCP.Char is unavailable.
+ Suggested games and result should always be logged by server (not a debug)
+ put some color in the terminal icon
+ negotiate EOR. Its just a good thing to do.
+ BUG - game about sometimes doesnt show the right game right after a suggestion
+ BUG - game server seclect sometimes dosent show the right green-checked game after a suggestsion or a reload.
? BUG - client send terminal name sometimes???
+ use open method to set the fields in the suggest host window
+ make the GMCP login icon show the game icon if it exists.
+ BUG - changing theme to one without line mode turns it off on line mode clients.
- button paste command should also past into command history? Meh..
* Change the version numbers, make them consisted between client and server.
* nerfbar needs (local?) up and down arrrow history.
* Choose-a-server needs client interface. Client needs to save the chosen server.
*** reconnect bug, telnet is getting reset
* local echo mode might want to preferentially focus() (and enable?) the nerfbar.
* Server should tell client about need for local echo? Server should provide 'local' echo?
* Suggestions into DB.
* Connect check against db.
* MSSP data into DB on connect.
* security checks into config file for suggest-a-game. none,telnet,mud,mssp
* security checks working
* get sqlite linked in
* figure out libtelnet mssp handling.
* Server fix the locid_log function to work better at showing the connection the messages are for.
* Makefile - have make move the existing locid to locid.prev on install to avoid the text file busy problem.
- Client option for keep keyboard open?
I just can't find any such option in Android. :(
* Enabled and tested MCCP2 game side compression.
* Enabled and tested client side permessage deflate compression.
* Server Optional- game security ssl isn't working, fix it.
* Makefile add a "tar up the distro" method to top level make?
* client - work on the nerfbar some more. A local line mode editor would be a
nice thing to have for some games other than LO.
* Makefile add a better "install me" option to make
* client get the manifest working
* Get the client version strings to work. You can set 'em in version.h and package.json for server and client.
* Enable Unicode 11 support via xterm-addon-unicode11
* client theme selector moved to prefs window.
- client - keep the gear from fading out.
Meh, could maybe do that later.
* Client make the "about" menu item show credits.
* client - touch fade option into settings.
* Server systemd/sysv launcher script?
* server - parse the x-forwared-for header so that transparent proxy through
apache will work.
* Server get it working through apache ws proxy.
* favicon seems to be working.
* FIX the baudbug with split utf8 sequences.
* Server Get the connection endpoint to be selectable from the config file.
* S Get https: and wss: working!
* Fix the 'missing return key' bug.
* C adjust the lociterm applytheme to be able to re-style the normal css stuff.
* C configurable client element and text sizes.
* Client locally saved (on browser) prefs
* Client Get the old login window working.
* configurable client themes/colors into menuside code too.
+ configurable client themes/colors
+ Figure out the "rendering before fonts loaded" thing.
+ Get the intial styling of the client worked out better.
+ Create a top level makefile to build a packageable dist of client and server.
+ add in 'the usual' license credits and readme's
+ Get it into cvs.
+ clean up file headers for initial checkin.
+ Get NEW-ENVIRON working to support MNES standard variables
report IPADDRESS
CHARSET
CLIENT_NAME
CLIENT_VERSION
MTTS
TERMINAL_TYPE
- Check on charset support.? Naw... LO handles the env var correctly.
- Check on eor support. meh not really needed for LO.
- Plumb the login window to use env vars instead? (Added GMCP!)