Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Redirect to original URL after login | Simon Ser | 2020-01-10 | 2 | -7/+23 |
| | |||||
* | Close Lua plugins on reload | Simon Ser | 2020-01-10 | 1 | -2/+11 |
| | |||||
* | cmd/koushin: add -addr flag | Simon Ser | 2020-01-08 | 1 | -1/+3 |
| | |||||
* | readme: document hot reload | Simon Ser | 2020-01-08 | 1 | -0/+6 |
| | |||||
* | Implement plugin/template reload on SIGUSR1 | Simon Ser | 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 | Simon Ser | 2020-01-08 | 1 | -1/+16 |
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/43 | ||||
* | Add Server.Reload | Simon Ser | 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 | Simon Ser | 2020-01-08 | 2 | -6/+7 |
| | | | | This will be useful to implement hot reload. | ||||
* | themes/sourcehut: add search input to mailbox view | Simon Ser | 2019-12-25 | 3 | -0/+14 |
| | |||||
* | Fix extra comma in address list | Simon Ser | 2019-12-18 | 1 | -1/+1 |
| | |||||
* | Fix header missing from raw e-mail download | Simon Ser | 2019-12-18 | 1 | -1/+11 |
| | |||||
* | Add a default CSP | Simon Ser | 2019-12-18 | 1 | -0/+7 |
| | | | | | Disallows loading external ressources. Providers can override it with their reverse proxy settings. | ||||
* | Implement paging for search | Simon Ser | 2019-12-17 | 3 | -16/+30 |
| | |||||
* | Document that plugins don't have access to passwords | Simon Ser | 2019-12-17 | 1 | -0/+3 |
| | |||||
* | Make Go plugin handlers take a *Context | Simon Ser | 2019-12-17 | 2 | -38/+25 |
| | | | | | Take a *Context instead of a echo.Context. This saves a type assertion in each handler. | ||||
* | Add Context to Plugin.Inject | Simon Ser | 2019-12-17 | 4 | -7/+7 |
| | | | | This allows to access the request metadata and the session from injectors. | ||||
* | Add RenderData interface | Simon Ser | 2019-12-17 | 5 | -27/+57 |
| | | | | This allows Go plugins to easily inject global data. | ||||
* | Rename RenderData to BaseRenderData | Simon Ser | 2019-12-17 | 2 | -12/+12 |
| | | | | RenderData will be used for an interface. | ||||
* | Allow Go Plugins to inject template data | Simon Ser | 2019-12-17 | 1 | -0/+21 |
| | |||||
* | Allow Lua plugins to inject all templates | Simon Ser | 2019-12-17 | 2 | -2/+9 |
| | |||||
* | Use Context.FormParams | Simon Ser | 2019-12-17 | 1 | -2/+4 |
| | |||||
* | Linkify address lists | Simon Ser | 2019-12-17 | 3 | -12/+17 |
| | |||||
* | Redirect / to INBOX | Simon Ser | 2019-12-17 | 1 | -0/+4 |
| | |||||
* | Add a form to set message flags | Simon Ser | 2019-12-17 | 6 | -24/+133 |
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/36 | ||||
* | plugins/base: extract route registration into function | Simon Ser | 2019-12-17 | 2 | -28/+30 |
| | |||||
* | themes/sourcehut: use formatdate template func | Simon Ser | 2019-12-17 | 1 | -2/+2 |
| | |||||
* | Add envelope metadata to message view | Simon Ser | 2019-12-17 | 3 | -11/+52 |
| | |||||
* | Improve docs | Simon Ser | 2019-12-17 | 3 | -8/+33 |
| | |||||
* | Add button to delete message | Simon Ser | 2019-12-16 | 3 | -0/+47 |
| | | | | | | Maybe we should add a confirmation step in the future. References: https://todo.sr.ht/~sircmpwn/koushin/36 | ||||
* | Add form to move messages | Simon Ser | 2019-12-16 | 5 | -2/+59 |
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/36 | ||||
* | Update deps | Simon Ser | 2019-12-16 | 2 | -33/+25 |
| | |||||
* | Export IMAPMessage | Simon Ser | 2019-12-16 | 2 | -16/+16 |
| | | | | This is a public type other plugins and templates may want to access. | ||||
* | Add attachments support to composer | Simon Ser | 2019-12-16 | 3 | -9/+57 |
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/13 | ||||
* | go fmt | Simon Ser | 2019-12-16 | 3 | -4/+4 |
| | |||||
* | Use <label> in compose form | Simon Ser | 2019-12-16 | 2 | -9/+12 |
| | |||||
* | Add basic search | Simon Ser | 2019-12-16 | 5 | -9/+74 |
| | | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/23 | ||||
* | Add line break to login form | Simon Ser | 2019-12-16 | 1 | -0/+1 |
| | |||||
* | Replace Session.ConnectSMTP with Session.DoSMTP | Simon Ser | 2019-12-16 | 2 | -16/+19 |
| | | | | | This gives more flexibility in Session for optimizations, e.g. keep the SMTP connection around for some time if possible. | ||||
* | Rename Session.Do to Session.DoIMAP | Simon Ser | 2019-12-16 | 2 | -6/+6 |
| | |||||
* | Remove the public/ directory | Simon Ser | 2019-12-16 | 15 | -7/+18 |
| | | | | | Now that all templates are provided by plugins, there's no need to have a public/ directory. Themes can be in /themes instead of /public/themes. | ||||
* | Introduce base plugin | Simon Ser | 2019-12-16 | 22 | -450/+521 |
| | | | | | | This plugin offers base IMAP/SMTP functionality. References: https://todo.sr.ht/~sircmpwn/koushin/39 | ||||
* | Add an API for Go plugins | Simon Ser | 2019-12-16 | 3 | -1/+111 |
| | | | | References: https://todo.sr.ht/~sircmpwn/koushin/39 | ||||
* | gitignore: don't ignore sourcehut theme | Simon Ser | 2019-12-12 | 1 | -2/+3 |
| | |||||
* | Add simple Sourcehut-based theme | Drew DeVault | 2019-12-12 | 11 | -4/+5967 |
| | |||||
* | Fix undefined ErrSessionExpired | Simon Ser | 2019-12-12 | 2 | -2/+2 |
| | | | | Fixes: f07ab5263246 ("Add docs") | ||||
* | Add docs | Simon Ser | 2019-12-11 | 4 | -4/+26 |
| | |||||
* | Allow plugins to provide their own templates | Simon Ser | 2019-12-11 | 4 | -8/+27 |
| | |||||
* | readme: add godoc badge | Simon Ser | 2019-12-11 | 1 | -0/+2 |
| | |||||
* | Export Server.{Sessions,Plugins} | Simon Ser | 2019-12-11 | 4 | -13/+12 |
| | | | | And unexport a few internal functions. | ||||
* | Unexport NewSessionManager | Simon Ser | 2019-12-11 | 2 | -2/+2 |
| | | | | This isn't intended to be used by plugins. |