Commit Graph

370 Commits

Author SHA1 Message Date
Simon Ser e59ad57e32
docs: add an example Go plugin 2020-02-11 18:23:48 +01:00
Simon Ser e09a837569
docs: add a basic example Lua plugin 2020-02-11 17:56:15 +01:00
Simon Ser 0a56365672
docs/themes-and-plugins: extract from README 2020-02-11 17:42:10 +01:00
Simon Ser 02b59bc365
docs/cli: new page 2020-02-11 17:40:18 +01:00
Simon Ser 3c391fa81d
contrib: add hotreload script 2020-02-11 17:37:58 +01:00
Simon Ser 82304a78d6
plugins/caldav: add missing event.html template 2020-02-11 17:14:43 +01:00
Simon Ser 19548694e0
themes/sourcehut: sync with latest base plugin 2020-02-11 17:14:01 +01:00
Simon Ser 97eef13db4
Rename Session.connect to Session.connectIMAP 2020-02-10 17:21:34 +01:00
Simon Ser 9fe20a604c
plugins/caldav: add pagination to calendar view 2020-02-05 18:57:16 +01:00
Simon Ser a1b43cc5a8
plugins/caldav: add basic event view 2020-02-05 18:39:53 +01:00
Simon Ser 5b78cdc104
plugins/caldav: new plugin
For now it can only list events for the current month.

References: https://todo.sr.ht/~sircmpwn/koushin/60
2020-02-05 18:14:26 +01:00
Simon Ser 1bd930f043
plugins/carddav: add basic contacts view 2020-02-05 14:58:56 +01:00
Simon Ser 3263a89185
plugins/carddav: accept "carddavs" and "carddav+insecure" URL schemes 2020-02-05 13:56:18 +01:00
Simon Ser ad256906e0
plugins/carddav: sanity check URL on startup 2020-02-05 13:52:52 +01:00
Simon Ser 6a6ece03e4
plugins/carddav: new plugin
A new minimal CardDAV plugin is introduced. It injects a list of e-mail
addresses in the e-mail compose view.

References: https://todo.sr.ht/~sircmpwn/koushin/7
2020-02-05 12:21:54 +01:00
Simon Ser 6ea7cd9134
plugins/base: add icons for attachments/re/fwd/starred 2020-02-05 11:58:53 +01:00
Simon Ser 651872ef7d
plugins/base/imap: disable full-text search for now
It's too slow on servers where indexes aren't enabled.

References: https://todo.sr.ht/~sircmpwn/koushin/23
2020-02-05 11:37:01 +01:00
Simon Ser f08ecb9cef
Update echo to 504f39abaf320
This fixes an OpenBSD issue.

Closes: https://todo.sr.ht/~sircmpwn/koushin/50
2020-02-03 19:35:14 +01:00
Simon Ser 6940a826b5
readme: add short description
Closes: https://todo.sr.ht/~sircmpwn/koushin/59
2020-01-30 11:20:56 +01:00
Simon Ser 4d68400036
plugins/base: add settings page
Add a settings page where the user can change the number of messages
displayed per page.
2020-01-28 20:04:33 +01:00
Simon Ser bdf1a8b02b
koushin: add Store interface
References: https://todo.sr.ht/~sircmpwn/koushin/5
2020-01-28 20:04:18 +01:00
Simon Ser c0b4998b38
koushin: rename Session.locker to imapLocker 2020-01-28 15:41:18 +01:00
Simon Ser 85c01b87a9
plugins/base: support attachments in drafts
References: https://todo.sr.ht/~sircmpwn/koushin/16
2020-01-28 12:30:07 +01:00
Simon Ser 50046b62ac
plugins/base: use BodyStructure.Walk instead of custom logic 2020-01-28 11:15:10 +01:00
Simon Ser b325933a8b
Add .editorconfig 2020-01-24 20:59:35 +01:00
Simon Ser 3384c39a17
plugins/base: delete previous draft 2020-01-24 20:27:05 +01:00
Simon Ser d31c56ec98
plugins/base: edit drafts
Note that attachments will be lost. This is a TODO.
2020-01-24 20:07:29 +01:00
Simon Ser 2e367efe58
plugins/base: add fallback if SPECIAL-USE is unsupported 2020-01-24 18:01:01 +01:00
Simon Ser bfc617b702
plugins/base: save message as draft 2020-01-24 17:49:50 +01:00
Simon Ser 267999b6e5
Update docs with new RegisterPluginLoader function 2020-01-21 13:40:55 +01:00
Simon Ser baae776247
readme: fix example usage 2020-01-21 13:38:47 +01:00
Simon Ser 3347e69480
Use %q to quote values in format strings 2020-01-20 22:06:47 +01:00
Simon Ser 9fdccc3a4b
Rename template.go to renderer.go 2020-01-20 22:05:42 +01:00
Simon Ser b58c15d121
Extract Lua infrastructure into a plugin 2020-01-20 22:04:50 +01:00
Simon Ser efa0816333
Add Server.Logger 2020-01-20 22:03:05 +01:00
Simon Ser 01983eb7b5
Introduce PluginLoaderFunc
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
2020-01-20 21:37:28 +01:00
Simon Ser d19c17c6d5
go fmt 2020-01-20 20:27:49 +01:00
Simon Ser 589b303f9f
plugins/base: append outgoing messages to Sent mailbox
And mark original message as answered.

Closes: https://todo.sr.ht/~sircmpwn/koushin/15
2020-01-20 20:25:41 +01:00
Simon Ser 3340fcd63d
Check IMAP/SMTP servers on startup
Closes: https://todo.sr.ht/~sircmpwn/koushin/46
2020-01-20 18:46:50 +01:00
Simon Ser 3bf17752ab
plugins/base: remove external resources URLs, sanitize CSS 2020-01-20 18:28:49 +01:00
Simon Ser b9a180b154
Disable DNS prefetching 2020-01-20 18:26:22 +01:00
Simon Ser a66ef1059b
Make the text/* part content a []byte 2020-01-20 16:20:16 +01:00
Simon Ser 8d248bc32f
Extract HTML sanitizer to its own file 2020-01-20 16:20:16 +01:00
Simon Ser d745f98bb7
Add polyfill for browsers not supporting srcdoc 2020-01-20 16:20:15 +01:00
Simon Ser efaf6fd444
Open e-mail links in new tab 2020-01-20 16:20:15 +01:00
Simon Ser 721c3ce3eb
Resize e-mail iframe with content 2020-01-20 16:20:15 +01:00
Simon Ser af5ffd12f9
Add support for HTML parts 2020-01-20 16:20:15 +01:00
Simon Ser 577685ca14
Update dependencies 2020-01-20 15:41:37 +01:00
Simon Ser e6e457e4a7
Fix dangling goroutine on session expiration
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.
2020-01-20 15:25:46 +01:00
Simon Ser 8b10324ab6
go fmt 2020-01-20 13:22:18 +01:00