summaryrefslogtreecommitdiff
path: root/CHANGES.md
blob: 6dd087e98b09f94474c0f3476a5d3403f577e9d1 (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
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

Current v1.1.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 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
- [ ] improve html styling (especially for mobile)
  - [x] about
  - [x] displayheaders
  - [x] nocation
  - [x] readmail
  - [x] writemail
  - [x] mobile optimize
  - [ ] cleanup css
  - [ ] improve styling of read- and writemail
- [ ] fix tests
- [ ] moving mails to other folders
  - [ ] creating new folders
  - [ ] backend
- [ ] specify protocol for backend interaction
  - [ ] choose tool for validation
- [ ] cleanup README
- [ ] improve about page
- [ ] improve performance of backend, consider alternatives to Mail::Box::Manager
  - [ ] based on Maildir::Light
  - [x] reimplementation in Rust
- [ ] cache mail reads
  - is unlikely to work as mails can be moved freely 
- [ ] add exception types
  - [x] added exception for QMailAuthuser
- [ ] extract version for Makefile.PL from Application
- [ ] add basic telemetry (goatcounter?)
- [ ] make mime_render return a mojo bytes object

- [x] compute hmac on the client side
  - [x] better handling on form
  - [ ] better random numbers
- [ ] advance ini config plugin
  - [x] allow non-leaf nodes to be arrays
  - [ ] allow quotes
  - [ ] allow continuation over multiple lines
  - [ ] warn about overrides
  - [ ] add template support, maybe
  - [x] switch to TOML or a provided format, as INI is too basic
  - [ ] add config validation
- [ ] improve i18n
  - [ ] add localization of dates and time
  - [x] refactor I18N plugin to allow independent translate provider
  - [x] extend matcher dynamic with a role

Future
------
- [ ] INV: wrong subject being shown
- [ ] INV: new mails are not highlighted
- [ ] 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
- [ ] add more mime types to read
  - [ ] jpeg
  - [ ] png
  - [ ] gif
- [ ] better pagination
  - [ ] merge with partial templates, maybe
- [ ] click on sender to answer
- [ ] download mail and attachments
- [ ] allow multiple attachments
- [ ] add mails to Sent folder
- [ ] smtp send model, maybe
- [ ] pop read model, maybe
- [ ] add icons for navigation
- [ ] 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'))