Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | readme: add short description | 2020-01-30 | 1 | -0/+2 | ||
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/59 | |||||
* | plugins/base: add settings page | 2020-01-28 | 5 | -7/+100 | ||
| | | | | | Add a settings page where the user can change the number of messages displayed per page. | |||||
* | koushin: add Store interface | 2020-01-28 | 5 | -3/+161 | ||
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/5 | |||||
* | koushin: rename Session.locker to imapLocker | 2020-01-28 | 1 | -10/+10 | ||
| | ||||||
* | plugins/base: support attachments in drafts | 2020-01-28 | 4 | -6/+143 | ||
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/16 | |||||
* | plugins/base: use BodyStructure.Walk instead of custom logic | 2020-01-28 | 1 | -46/+20 | ||
| | ||||||
* | Add .editorconfig | 2020-01-24 | 6 | -152/+161 | ||
| | ||||||
* | plugins/base: delete previous draft | 2020-01-24 | 2 | -5/+34 | ||
| | ||||||
* | plugins/base: edit drafts | 2020-01-24 | 3 | -63/+145 | ||
| | | | | Note that attachments will be lost. This is a TODO. | |||||
* | plugins/base: add fallback if SPECIAL-USE is unsupported | 2020-01-24 | 1 | -20/+36 | ||
| | ||||||
* | plugins/base: save message as draft | 2020-01-24 | 4 | -45/+98 | ||
| | ||||||
* | Update docs with new RegisterPluginLoader function | 2020-01-21 | 1 | -2/+2 | ||
| | ||||||
* | readme: fix example usage | 2020-01-21 | 1 | -1/+1 | ||
| | ||||||
* | Use %q to quote values in format strings | 2020-01-20 | 1 | -6/+6 | ||
| | ||||||
* | Rename template.go to renderer.go | 2020-01-20 | 1 | -0/+0 | ||
| | ||||||
* | Extract Lua infrastructure into a plugin | 2020-01-20 | 7 | -24/+32 | ||
| | ||||||
* | Add Server.Logger | 2020-01-20 | 1 | -0/+5 | ||
| | ||||||
* | Introduce PluginLoaderFunc | 2020-01-20 | 4 | -8/+26 | ||
| | | | | | | | This allows registered plugins to execute code when loaded. This will also allow the Lua support code to be a plugin. Closes: https://todo.sr.ht/~sircmpwn/koushin/54 | |||||
* | go fmt | 2020-01-20 | 1 | -39/+39 | ||
| | ||||||
* | plugins/base: append outgoing messages to Sent mailbox | 2020-01-20 | 4 | -4/+85 | ||
| | | | | | | And mark original message as answered. Closes: https://todo.sr.ht/~sircmpwn/koushin/15 | |||||
* | Check IMAP/SMTP servers on startup | 2020-01-20 | 1 | -0/+12 | ||
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/46 | |||||
* | plugins/base: remove external resources URLs, sanitize CSS | 2020-01-20 | 4 | -9/+198 | ||
| | ||||||
* | Disable DNS prefetching | 2020-01-20 | 1 | -0/+2 | ||
| | ||||||
* | Make the text/* part content a []byte | 2020-01-20 | 2 | -6/+5 | ||
| | ||||||
* | Extract HTML sanitizer to its own file | 2020-01-20 | 2 | -7/+19 | ||
| | ||||||
* | Add polyfill for browsers not supporting srcdoc | 2020-01-20 | 2 | -1/+10 | ||
| | ||||||
* | Open e-mail links in new tab | 2020-01-20 | 2 | -1/+3 | ||
| | ||||||
* | Resize e-mail iframe with content | 2020-01-20 | 4 | -1/+14 | ||
| | ||||||
* | Add support for HTML parts | 2020-01-20 | 5 | -3/+27 | ||
| | ||||||
* | Update dependencies | 2020-01-20 | 2 | -26/+25 | ||
| | ||||||
* | Fix dangling goroutine on session expiration | 2020-01-20 | 1 | -3/+1 | ||
| | | | | | | | | The timer channel may already have been drained by `case <-timer.C`. In this case, we need not to drain it again or we'll block forever. To fix this, stop draining the timer channel. Since we're not going to use the timer again anyway, it should be fine. | |||||
* | go fmt | 2020-01-20 | 3 | -3/+3 | ||
| | ||||||
* | Auto-discover upstream SMTP and IMAP servers | 2020-01-20 | 3 | -4/+90 | ||
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/49 | |||||
* | Generalize upstream server URLs | 2020-01-20 | 2 | -36/+89 | ||
| | | | | | | | | | koushin now takes a list of upstream URLs instead of an IMAP and SMTP URL. This allows to specify upstream server URLs for plugins. In the future, this will allow for auto-discovering upstream servers based on a single domain name. References: https://todo.sr.ht/~sircmpwn/koushin/49 | |||||
* | Hide echo banner | 2020-01-17 | 1 | -0/+1 | ||
| | ||||||
* | Add current path to the global context | 2020-01-16 | 1 | -0/+4 | ||
| | ||||||
* | Include flags when fetching items over IMAP | 2020-01-16 | 1 | -1/+1 | ||
| | ||||||
* | Add Session.SetHTTPBasicAuth | 2020-01-10 | 1 | -0/+8 | ||
| | | | | | This is not 100% idiot-proof, but still makes it mroe difficult for plugins to steal credentials. | |||||
* | Fix panic when injecting a template with nil data | 2020-01-10 | 1 | -1/+12 | ||
| | ||||||
* | Redirect to original URL after login | 2020-01-10 | 2 | -7/+23 | ||
| | ||||||
* | Close Lua plugins on reload | 2020-01-10 | 1 | -2/+11 | ||
| | ||||||
* | cmd/koushin: add -addr flag | 2020-01-08 | 1 | -1/+3 | ||
| | ||||||
* | readme: document hot reload | 2020-01-08 | 1 | -0/+6 | ||
| | ||||||
* | Implement plugin/template reload on SIGUSR1 | 2020-01-08 | 3 | -39/+60 | ||
| | | | | | | | | There's no way around having a global mutex, because we need to update the HTTP routes when reloading plugins. During reload we need to lock the whole server. Closes: https://todo.sr.ht/~sircmpwn/koushin/43 | |||||
* | cmd/koushin: reload on SIGUSR1 | 2020-01-08 | 1 | -1/+16 | ||
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/43 | |||||
* | Add Server.Reload | 2020-01-08 | 3 | -16/+36 | ||
| | | | | | This only reloads templates for now. In the future it'll also reload Lua plugins. | |||||
* | Make New return the Server | 2020-01-08 | 2 | -6/+7 | ||
| | | | | This will be useful to implement hot reload. | |||||
* | themes/sourcehut: add search input to mailbox view | 2019-12-25 | 3 | -0/+14 | ||
| | ||||||
* | Fix extra comma in address list | 2019-12-18 | 1 | -1/+1 | ||
| | ||||||
* | Fix header missing from raw e-mail download | 2019-12-18 | 1 | -1/+11 | ||
| |