# Development notes These are the development notes for the Go version. The idea is to use the help files to implement BULLETIN. Look up how godoc does references to other things. Figure out readline completion. Case sensitive - issue? Building from repl.commands? Switch between MAIL and BULLETIN modes? MAIL commands are documented [here](https://marc.vos.net/books/vms/help/mail/). ## sqlite * sqlite trigger tracing: `.trace stdout --row --profile --stmt --expanded --plain --close` * https://sqlite.org/cli.html * https://www.sqlitetutorial.net/ ## Things to do * Run [godoc](http://localhost:6060/) and then review where the help text is lacking. * Missing [RESPOND] [MAIL] [SET PROMPT_EXPIRE] [SET NOREADNEW] [SET NOSHOWNEW] [SET NOPROMPT_EXPIRE] [SET READNEW] [SET SHOWNEW] [SHOW NEW] * Run this.Skew.Safe() before... each command? each write? * Handle broadcast messages - create a broadcast table and add an expiration column. * Database * trigger to limit values for 'visibility'? * Add commands: * Commands for a local mail system? * Commands to connect to Mattermost or mastodon? * Make a spreadsheet for signups. * Pager: * Make "/" work for search. * Run [VACUUM](https://www.sqlite.org/lang_vacuum.html) on the expire run. * Notifications: * Figure out how SHOWNEW, NOTIFY, READNEW and BRIEF work. * Permissions: * Review permission requirements for each command. * Expire. This was created due to file storage limits. * Code cleanup: * Review sql queries and clean out the ones not used. * Review sql queries and find duplicates. * Use [dupl](https://github.com/mibk/dupl) to find things to generalise. Polishing. Review each command and put a + next to each as it is fully done. ``` Top level: ADD +BACK BULLETIN CHANGE COPY CREATE +Ctrl-C +CURRENT DELETE DIRECTORY +EXIT +FIRST +Folders FORWARD +HELP INDEX +Keypad +LAST MAIL +MARK MODIFY MOVE +NEXT +PRINT +QUIT +READ REMOVE +REPLY RESPOND +SEARCH SEEN SELECT +SET +SHOW +SSH +UNMARK UNSEEN +USER SET: ACCESS +ALWAYS BRIEF DEFAULT_EXPIRE EXPIRE_LIMIT FOLDER +NOALWAYS NOBRIEF NONOTIFY NOPROMPT_EXPIRE NOREADNEW NOSHOWNEW NOSYSTEM NOTIFY PROMPT_EXPIRE READNEW SHOWNEW SYSTEM SHOW: +FLAGS FOLDER -NEW +PRIVILEGES USER +VERSION SSH: +ADD +DELETE +FETCH +LIST USER: +ADD +ADMIN +DELETE +DISABLE +ENABLE LIST +MOD +NAME +NOADMIN +NOMOD ``` ## Module links * cli - [docs](https://cli.urfave.org/v3/getting-started/) * readline - [docs](https://pkg.go.dev/github.com/chzyer/readline) * xdg - [docs](https://pkg.go.dev/github.com/adrg/xdg) * sqlite - [docs](https://modernc.org/sqlite)