blob: 928aad9c71640d9a42a24e31e5a08879fb04aeb2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
Past and Upcoming Changes
=========================
v1.0.0 release plan
-------------------
- [x] consider renaming, relicensing
- [x] License
- [x] GPLv3+ and enter copyright info
- [ ] Maybe the translation/documentation can be made available under a
different license
- [ ] may relicense this under the AGPL.
- [x] Rename
- [x] JWebmail
- [x] make github ready
- [x] remove sensitive files (gitignore)
- [x] add git vcs
- [x] remove part of the english translation
- [ ] check legal requirements
- [x] BUG: home not displaying
- [x] show new messages per folder
- [x] BUG: empty folder not displaying correctly
- [x] better documentation
- [x] document i18n snippets
- [x] cleanup comments
- [x] list functionality for ReadMails#communicate
- [x] OMail
- [x] OMail::Helper
- [x] OMail::Controller::All
- [x] OMail::Plugin::I18N
- [x] OMail::Plugin::INIConfig
- [x] OMail::Plugin::ServerSideSessionData
- [x] OMail::Model::WriteMails
- [x] OMail::Model::ReadMails
- [x] OMail::Model::Driver::QMailAuthuser
- [x] OMail::Model::Driver::QMailAuthuser::Extract
- [x] better pagination
- [x] BUG: pagination forward -> backward is shifting by 1
(page start needs to be decremented)
- [x] move out to helper
- [x] more generic names
- [x] advance ini config plugin
- [x] set global section to global scope
- [x] introduce arrays
- [x] make nesting sections more explicit
- [x] write more tests
- [x] test pagination
- [x] test mail_line
- [x] test for ini parser
- [x] basic test for application
- [x] improve i18n
- [x] german translation
- [x] look into i18n configuration
- [x] remove TXT alias
- [x] more configuration (for model)
- [x] disable cram
- [x] select mock read model
- [x] lazy init for mock model
- [x] add switch disabling message send
- [x] Extract: user to switch to
- [x] Extract: adjustable maildir directory
- [x] read secret from config file
- [x] Extract: configurable perl lib
- [x] Extract: encoding issues
- [x] improve session data security
- [x] use a server side cookie implementation
- [x] use a one time pad
- [x] resolve server/client session duration issues
- [x] use cryptographically secure random data
- [x] hide password length
- [x] handle empty folders
- [x] logging support for Extract.pm
- [x] true perl 5.16 support
- [x] cpan build and deploy script
- [x] remove prefs
- [x] file upload for attachment
- [x] file type detection
- [x] move WriteMails from Email::Simple to Email::MIME
- [x] configuration as plugin (Mojo::Plugin::Config)
- [x] model as helpers, initialized in startup
- [x] send
- [x] multiple mails for cc etc.
- [ ] content-transfer encoding, research (currently 8bit)
- [x] better design for send and read
- [x] send
- [x] read
- [x] sandbox html mails
- [x] i18n as ini files
- [x] rework mail folders
- [x] rewrite about
- [x] search in subject
Version 1.1.0
--------------
- [x] separate development and production configuration
- [x] better back buttons
- [x] writemail
- [x] read mail
- [x] improve server side session cleanup process coordination
- [x] consider using Crypt::URandom instead of Crypt::Random
- [x] factor out date format function
- [x] add a delete session function for s3d, maybe
- [x] simply remove key from cookie
- [x] add actions script
- [x] consider using more mojo functions
- [x] use Mojolicious::Types to replace File::Type
- [x] Helper
- [ ] QMailAuthuser
- [x] repurpose status column in displayheader
- [x] currently just renamed to 'Multipart'
- [x] refactor ReadMails into a role
- [x] made languages in about clickable
- [x] make loading auth data from session easier
- how do you hide stash values?
- [x] password is now hidden when stringified
- [x] merge read and raw (with content type)
- how does one extract the body functionality? (One does not.)
- [x] refactor templates to make use of link_to
- [x] improve html styling (especially for mobile)
- [x] about
- [x] displayheaders
- [x] nocation
- [x] readmail
- [x] writemail
- [x] mobile optimize
- [x] cleanup css
- [x] improve styling of read- and writemail
- [x] fix tests
- [x] specify protocol for backend interaction (RPC IDL)
- [ ] choose tool for validation
- [x] improve performance of backend, consider alternatives to Mail::Box::Manager
- [ ] based on Maildir::Light
- [x] reimplementation in Rust (maildir/mailparse)
- [x] reimplementation in Python (mailbox/email)
- [ ] cache mail reads
- is unlikely to work as mails can be moved freely
- [ ] add exception types
- [x] added exception for QMailAuthuser
- [x] extract version for Makefile.PL from Application
- [x] make mime_render return a mojo bytes object
- [ ] advance toml config plugin
- [ ] add template support, maybe
- [ ] add config validation
- [x] improve i18n
- [x] refactor I18N plugin to allow independent translate provider
- [x] extend matcher dynamic with a role
- [x] compute hmac on the client side
- [x] better handling on form
- [ ] better random numbers
Version 1.2.0
--------------
- [ ] From v1.0.0
- [ ] Maybe the translation/documentation can be made available under a
different license
- [ ] may relicense this under the AGPL.
- [ ] research content-transfer encoding for sending (currently 8bit)
- [ ] check legal requirements (cookies and DSGVO)
- [x] separate namespace for pagination in the stash
- [x] Read attachments
- [x] display recursive multipart
- [x] add more mime types to read
- [x] jpeg
- [x] png
- [x] gif
- [x] download mail and attachments
- [x] better pagination
- [ ] merge with partial templates, maybe
- [x] bundle css and js dependencies instead of CDN
- [ ] finish: moving mails to other folders
- [ ] creating new folders
- [ ] backend
- [ ] improve about page
- [ ] add basic telemetry (goatcounter?)
- [ ] improve i18n
- [ ] add localization of dates and time
- [ ] plural handling
- [x] Rust IO error: (rename (+S)) and try to open old file
- [x] random name for tmp directories in s3d
- [x] INV: new mails are not highlighted
- [x] handle killed by signal in QMailAuthuser.pm
- [ ] add delete mail
- [ ] qmauth.py mark as read + accept new
- [ ] brute force password mitigation
- [ ] iframe load confirmation
- [ ] better support for multipart/related
- [ ] chunked send of attachments
- [ ] avoid double compression
- [ ] Bulma CSS framework (dark and light mode)
Future
------
- [ ] INV: wrong subject being shown
- [ ] INV: displayheaders table does not fill outer container
- [ ] consider using more mojo functions
- [ ] base64
- [ ] encoding
- [ ] json
- [ ] filepaths
- [ ] dump
- [ ] mail?
- [ ] create base configuration
- [ ] improve performance
- [ ] async read for extract
- [x] async version of driver
- [x] async version of model
- [ ] async version of controller
- [ ] async wait for send
- [ ] add wait_for_child to event loop
- [ ] click on sender to answer
- [ ] allow multiple attachments
- [ ] add mails to Sent folder
- [ ] smtp send model, maybe
- [ ] pop read model, maybe
- [ ] allow changing password
- [ ] think about forgot password feature
- [ ] address book support
- [ ] add links on email addresses in header : click = add into address book
- [ ] read and write s3d only once per request ($c->on('finish'))
|