Commit graph

170 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