aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Unexport NewSessionManagerSimon Ser2019-12-112-2/+2
| | | | This isn't intended to be used by plugins.
* Export Context.SetSession, unexport Session.TokenSimon Ser2019-12-113-10/+10
| | | | | | | I'm uneasy exposing the token to plugins, I prefer to hide it if possible to prevent mis-use. This change allows plugins to logout users.
* Export ContextSimon Ser2019-12-113-29/+34
| | | | This allows plugins to access it.
* Add plugins/ to .gitignoreSimon Ser2019-12-101-0/+1
|
* go fmtSimon Ser2019-12-103-17/+17
|
* Introduce GlobalRenderData and RenderDataSimon Ser2019-12-102-7/+40
| | | | | | | | GlobalRenderData contains some global metadata that can be obtained from any template. RenderData is a base type for template data. It contains a Global field with global metadata and an Extra field for plugins.
* Load all themes on startupSimon Ser2019-12-101-13/+54
| | | | This is the first step to allow each user to have a different theme.
* readme: add link to mailing list & issue trackerSimon Ser2019-12-101-0/+5
|
* Rename Plugin.Render to Plugin.InjectSimon Ser2019-12-103-3/+3
| | | | | This function doesn't render anything, it just adds extra data to the template data.
* Extract Lua plugin logic into separate fileSimon Ser2019-12-102-151/+158
|
* Allow plugins to add new routesSimon Ser2019-12-103-0/+40
| | | | References: https://todo.sr.ht/~sircmpwn/koushin/6
* Reconnect to IMAP server when logged outSimon Ser2019-12-093-20/+90
| | | | | | | | | | | | | | | The session manager has been upgraded to deal with reconnections. Each session has its own expiration timer. Each time a request is received, the expiration timer is reset. A session can be closed (this is used when the user wants to logout). When the IMAP connection is closed by the server, it's set to nil in the session. The next time an IMAP command needs to be issued, the connection is re-established. Closes: https://todo.sr.ht/~sircmpwn/koushin/30
* Make SessionManager create the IMAP clientSimon Ser2019-12-094-23/+46
| | | | | This will allow SessionManager to re-connect when the IMAP server logs the user out.
* Rename ConnPool to SessionManagerSimon Ser2019-12-093-20/+20
|
* readme: sync with new Lua APISimon Ser2019-12-091-2/+5
|
* Add a Lua API to set template filtersSimon Ser2019-12-093-10/+49
|
* Change Lua API to koushin.on_renderSimon Ser2019-12-091-7/+27
|
* Make render data staticSimon Ser2019-12-091-14/+39
| | | | | | | | This makes sure fields filled by vanilla koushin keep the right type. A new Extra field allows plugins to attach their own data. This also makes it easier to write Go plugins, which would have trouble working with interface{}.
* Add basic support for pluginsSimon Ser2019-12-096-1/+115
|
* Drop define in templatesSimon Ser2019-12-096-12/+8
| | | | Just use the full filename instead, this is simpler and more explicit.
* Use imap.BodyStructure.Filename and imap.Address.AddressSimon Ser2019-12-094-6/+5
| | | | | The former fixes encoding issues in filenames. The latter is just for brevity.
* Extract HTTP handlers in separate fileSimon Ser2019-12-042-263/+277
|
* Add .gitignoreSimon Ser2019-12-041-0/+2
|
* Add basic theme supportSimon Ser2019-12-045-25/+75
| | | | References: https://todo.sr.ht/~sircmpwn/koushin/1
* Make message view's Back link set the mailbox pageSimon Ser2019-12-033-6/+9
| | | | | | | This allows to go back and forth between the mailbox view and the message view. References: https://todo.sr.ht/~sircmpwn/koushin/22
* Add separator between Prev and Next linksSimon Ser2019-12-031-0/+1
|
* Add basic pagination to message listSimon Ser2019-12-037-20/+60
| | | | References: https://todo.sr.ht/~sircmpwn/koushin/22
* Fix missing OutgoingMessage.InReplyTo assignmentSimon Ser2019-12-031-9/+5
|
* Add basic support for multiple recipientsSimon Ser2019-12-032-3/+10
|
* Add support for replying to a messageSimon Ser2019-12-035-12/+103
|
* Fix mailbox view when emptySimon Ser2019-12-032-9/+15
| | | | | | This fixes the second part of #14. References: https://todo.sr.ht/~sircmpwn/koushin/14
* Add empty CSS stylesheetSimon Ser2019-12-033-1/+3
| | | | References: https://todo.sr.ht/~sircmpwn/koushin/19
* Set imap.CharsetReaderSimon Ser2019-12-031-1/+5
| | | | | This adds support for additional charsets when parsing e.g. subject lines.
* Escape mailbox names in URLsSimon Ser2019-12-034-5/+17
| | | | Closes: https://todo.sr.ht/~sircmpwn/koushin/14
* Add session lockSimon Ser2019-12-033-16/+45
| | | | | | | HTTP requests can be processed in parallel, but we only have one IMAP connection per session. Closes: https://todo.sr.ht/~sircmpwn/koushin/12
* Import go-message charsets packageSimon Ser2019-12-031-0/+1
| | | | | | Enables support for non-UTF8 charsets. Closes: https://todo.sr.ht/~sircmpwn/koushin/18
* Pre-fill composer with sender addressSimon Ser2019-12-033-22/+30
|
* Add basic SMTP supportSimon Ser2019-12-035-7/+196
|
* Save username/password in sessionSimon Ser2019-12-032-13/+26
| | | | | This is required for authenticating with the SMTP server when composing a new message.
* Parse SMTP URL from CLISimon Ser2019-12-033-11/+57
|
* Fix EOF on message viewSimon Ser2019-12-031-2/+10
|
* Fix format stringSimon Ser2019-12-031-1/+1
|
* Add context to errorsSimon Ser2019-12-032-14/+14
|
* Add compose viewSimon Ser2019-12-034-2/+38
|
* Correct license ownershipDrew DeVault2019-12-031-1/+1
|
* Show last 50 messages in mailbox viewSimon Ser2019-12-031-1/+1
|
* Add logout routeSimon Ser2019-12-032-0/+11
|
* Set HTTP error handlerSimon Ser2019-12-031-0/+11
|
* Display & download any message partSimon Ser2019-12-035-55/+142
|
* Extract string conversion functionsSimon Ser2019-12-033-32/+37
|