Up to i.Scribe...
Focus for the v2.4 branch:
- Native HTML reply support.
- Faster folder loads in mail3 folders.
- Better IMAP handling. There are long term bugs that need fixing.
- Cocoa/64bit port stability.
- Added an "Always Show" button to the remote content bar. Which does the same thing as "Show" but also saves the sender's address in the remote content white list.
- Html viewer: changed the block-inline handling to better display some test cases from Google notifications. Could potentially causes issues elsewhere, but in my limited test suite it seems to be ok.
- Fixed a crash loading email attachment images with long extensions.
- Fixed SMTP PLAIN login method.
- Added wildcard support to the load remote content white/black lists. Seems more flexible at the cost of slower performance.
- Fixed, or at least improved, the HTML line height calculation.
- Adding support for the HTML "em" element, such that it renders as inline instead of block.
- Fixed the checkbox painting when windows fonts are at 150% or more. It's not sized to match the font of the control as well.
- Fixed an issue preventing callback usage in recursive scripts.
- Fixed a bug in the handling of IMAP idle state. It wasn't looking for the response after ending the idle state.
- Html viewer: Experimenting with scaling sizes specified in pixels via "current DPI / 96.0" to make them legible on high DPI displays. I think this is what Firefox/Chrome does.
- An IMAP account's status is better reflected in the main window UI.
- [Linux] Added 'run-scribe' script to the install due to Ubuntu not being able to open the main executable via double click. I have no words.
- Converted all the image resources to PNG and fixed the various places they are referenced in the code. The language selection dialog flags was one place this was causing issues.
- The show remote content button resets between next/prev in the email window.
- The IMAP processing of incoming mail now ignores the "Recent" flag from the server when evaluating if the mail is "new". This allows the filters to run on unread mail that isn't in the local database. If you have multiple email clients reading the same inbox only one of them gets the "Recent" flag.
- [Windows] Fixed the naming of the jpeg DLL so it loads without having to install from the web.
- Added some better CSS support for background images in the main UI elements.
- [Linux] Fixed scope of Thunderbird address book import searching.
- Added support for Thunderbird's newer sqlite format contact database.
- Fixed changing a contact's image.
- [Mac] Dramatically reduced the number of timer threads needed for edit boxes. Which should solve locking issues when large numbers of windows are open.
- [Windows] Fixed enter in the notes field closing the Contact window.
- The scripting function GMenuAddItem now throws a bunch of useful exceptions if there is problems with the arguments.
- Scripting exceptions in the C++ code now display the correct location in the scripting source in the debug window.
- Scripting functions that don't return boolean true from their main function are unloaded immediately, including any callbacks they installed. Scribe now prints a useful error message to the console when this happens.
- Fixed the documented argument order for the scripting callbacks OnThingContextMenu and OnFolderContextMenu.
- [Windows?] Fixed the delete key deleting 2 items in the item list.
- Mail object has a new scripting function for getting and setting the read flag. You could do that with the flags field and know the right bit mask to set or clear... but a function is like so much easier!
- Improved the display of unread mail counts, particularly in IMAP folders.
- New menu item: Tools -> Debug -> Break on Script Warning. Brings up the debugger if a script issues a warning. Typically this is accessing a NULL variable or a missing DOM variable. Defaults to off, which just prints the error to the console.
- Fixed the Mail context menu to know about mailing list email that use a 'List-Owner' header.
- Added a new scripting function: bool Assert(value[, msg]). Checks if value is non-zero and if not throws an exception.
- Another new scripting function: void Throw([msg]). This throws a scripting exception with an optional message for the debugger.
- Fixed a folder's unread count being wrong after a filter moves an email from an IMAP folder. (Delayed delete).
- Fixed the scripting compiler to not evaluate the right hand side of the && operator when the left hand side evaluates to false. This brings it inline with other languages. I'll also fix the || operator at some point, but I need to create a new instruction for that "IJumpNotZero", I only have an "IJumpZero" at the moment.
- Added a bayesian filtering option to set the mail to read if it's classified as spam.
- Fixed an intermittent hang in the HTML editor when moving through the undo queue.
- [Linux] Fixed the crash on the second [mail] drag operation.
- Dragging objects to a new folder now uses a more recent multi-object API. This results in much faster moves for IMAP mail particularly as all the objects are batched in groups. Less client server round trips.
- The find window now searches Filter objects.
- Fixed a bug where IMAP mail would get stuck in "Loading..." forever.
- [Mac] Bundled a build of OpenSSL so you don't have to install it later.
- Fixed the status pane being weird colours.
- Fixed (potential?) crash in the HTML viewer when processing remote content.
- Fixed the item filter not using the limit to combo box. Also it now adjusts to the fields available in the current folder.
- Fixed the Contact window layout. Ugh... sorry.
- Fixed some (all?) IMAP new mail issues.
- [Mac] Fixed images being clipped incorrectly in the HTML viewer.
- [Mac] Fixed files dropped on a window being processed twice.
- Fixed table layout in dialogs flickering. Particularly on windows.
- Fixed the bayesian filter settings dialog Help button covering the whole bottom of the window.
- Made some speculative crash fixes in the folder properties dialog.
- [Mac] Fixed the spell check not working in the editors.
- [Mac] Fixed potential crash when closing a window when the onclose handler is called multiple times by the MacOS. Silly MacOS.
- Removed a redundant FETCH command for an IMAP email body when deleting.
- Added some basic support for importing calendar event cancellations from email attachments. Via the add attached event button(s) in the Mail UI.
- [Mac] Fixed dragging attachments to Finder from the mail window's attachment list.
- Added ability to call mail.AddCalendarEvent([AddPopupReminder]) from script. This does allow the user to automatically add calendar event attachments to their calendar, including of course event cancellations. Which is also handled in AddCalendarEvent.
- There is now an inspector for the calendar event object (right click -> Inspect).
- HTML rendering fix for the scripting page of the help file (and potentially many others).
- Fixed initial window size on first run.
- Fixed some bugs in the newish container class (memory corruption).
- [Mac] Fixed tool tips.
- [Mac] Improved mouse wheel / scroll support.
- [Mac] Fixed the scrollbar in the HTML editor not rendering.
- [Mac] Fixed missing icon in the mail preview when there is no contact image.
- [Mac] Fixed image library loading issues. Which would cause missing toolbar icons.
- Fixed the spam folder being created with the wrong item type. Which resulted in not being able to mark as spam.
- [Mac] Implemented being able to copy and paste emails, contacts etc between folders (binary clipboard support).
- [Mac] Fixed scroll bars not being visible in some cases.
- [Mac] Fixed the mouse scroll being way too sensitive on some machines.
- [Mac] Added more drag and drop implementation. Now accepts files and you can move mail between folders.
- Added exception handling around OpenSSL's "SSL_connect" function which seems to crash a non-trivial amount of the time. At least it won't pull down my whole process with it.
- [Windows] Moved to Visual Studio 2015: which means in practice you may need to install a new CRT redistributable library for 32bit or 64bit.
- Bulk delete of imap mail now much faster.
- Fixed the colour selector in the mail window.
- Fixed the broken create mailing list filter mail item context menu.
- Fixed mail becoming unread when you move it between IMAP folders (or delete).
- Deleting calendar sources now sticks. It will also pre-populate from any calendar folders you have in your local mail store.
- Implemented vCal reminder import and export support.
- Added a new webdav storage backend. This is configured via the File -> Manage Mail Stores window, by clicking Create Mail Store -> Webdav Remote Folders and then configuring a URL for contacts and calendar events, and the username / password for the account. This then displays as a new tree item in the main window that has a sub-folder for 'Contacts' and 'Calendar'. The webdav files appears as the appropriate object and can be edited as per normal as if they were local files. I've been testing with NextCloud but it should work with other webdav implementations. Groupware functionality is back!
- [Mac] Fixed the font size in the help browser being tiny.
- [Mac] Fixed closing window occasionally crashing the app.
- [Mac] Cmd+F now opens the HTML find window instead of the item find when the mail preview in the main window has focus. Also that find window's background colour is fixed.
- [Mac] Fixed handling of mailto apple events, so that Scribe can be the default email client.
- [Mac] Added the missing scripts folder.
- [Mac] Fixed the console being empty.
- [Mac] Fixed being able to tab around between controls. And see when buttons have the focus.
- Fixed calendar event reminders triggering over and over, when you you click the dialog.
- [Mac] Fixed getting location of Desktop folder (used in file select dialog and probably other places).
- [Mac] Fixed not being able to use the delete key to delete messages in the mail list.
- [Mac] Implemented cocoa cursor support, like the little horizontal resize cursor when over the break between the tree and list view in the main window.
- [Mac] Implemented a more native look for scroll bars.
- Fixes for folders with a lot of items: (e.g. > 30,000)
- Pasting items into a folder doesn't appear to hang the application any more. Rather a progress window appears and tracks the operation and even gives you a way to cancel the operation.
- Marking email as read now also displays a progress dialog if it's taking a long time.
- Sorting uses a different algorithm that a) doesn't crash with a stack overflow and b) is about 10x faster.
- Mac: Now using Cocoa directly rather than GTK3. Linux port will still use GTK3, but it runs ok there.
- Imap folder loading now spends less time blocking the UI thread. And a small cheer went up from the gallery.
- Scripting: DeleteThing function now accepts a list object as well as a single object.
- Scripting: DateTime object now has a Second64Bit member to describe how many ticks in a second. And a TimeStamp member to describe ticks from the Epoch. You can calculate the seconds between 2 DateTime's with "(b.TimeStamp - a.TimeStamp) / a.Second64Bit".
- Large IMAP moves/deletes are broken down into blocks. Some servers spit the dummy at large lists of UID's. Some status on progress is printed to the account log.
- Scripting: Added ScribeWnd.GrowlInfo(Title, Text) method.
- Changing the size of an image in the RTE now marks the document as changed and will clear out the old JPEG data before saving the new resized image properly.
- Images dropped in to the RTE now no longer leak the full path into the attachment file name.
- Optimized HTML painting for lots of objects without borders or backgrounds. It now does less unnecessary calculation.
- Implemented a maximum paint time in the HTML view control. Large documents just hang the app. Obviously it'd be better to have a paint algorithm that worked faster but as a stop gap this makes the software more user friendly. Maybe one day I'll implement threaded rendering in this case. Maybe.
- IMAP mail date fixes.
- Faster sorting large mail folders by date. Much faster.
- The IMAP implementation now reselects the inbox after a delete so as to get notifications about new email correctly.
- HTML viewer: unknown tags now default to display:block instead of inline.
- HTML viewer: added basic support for SUB and SUP elements.
- Windows: Fixed the selected email opening after viewing the properties and using Return to close the dialog.
- Fixed the next email opening after the delete confirmation dialog was closed with the Return key.
- Gtk: Fixed default position of some dialogs to be over their parent window.
- Gtk: Added some basic drag and drop support.
- Fixed a bunch of memory leaks.
- Gtk: Fixed missing icons in scrolled views.
- Gtk: Fixed the app not responding after worker threads send events back to the GUI. One symptom is new IMAP mail showing up but being completely blank.
- Gtk: Fixed some thread sync issues. Things should be more reliable at least.
- Gtk: Fixed the missing labels in the calendar event window.
- Gtk: Clicking the tray icon now raises the main window to the top so you can see it.
- Gtk: Fixed the results list in the find window not being laid out correctly.
- Windows: Various Outlook import fixes. Doesn't bail on lack of write access to the registry. And doesn't crash on exit either. Noice.
- Mac: Pop3 preview window fixed.
- Gtk: Fixed the rich text editor scrollbar not painting.
- Gtk/Mac: Fixed ⌘+click on a list doing multi-select.
- Gtk: Fixed Unicode handling in the RTE.
- Gtk: Fixed double clicking attachments to open them in the default app.
- Gtk: Fixed all the missing icons on menus.
- Gtk: Improved positioning of text on controls.
- Mac: Fixed ⌘+C and similar keyboard shortcuts in the HTML editor.
- Mac: The system tray icon doesn't support different mouse buttons so I made the default action show the sub-menu of contacts and actions.
- Gtk/Mac: Changed the Edit → Delete shortcut to Backspace instead of delete because that's what GTK translates the key next to the right of '=' to.
- Gtk: Stopped subject lines in the list of mail in a folder wrapping and putting stray pixels below the subject.
- Mac: Fixed all the menu shortcuts to use ⌘ as the main modifier.
- Mac: Fixed Aspell installing itself and dictionaries. The code that copies over the data folder is a bit more robust.
- Gtk: Fixed a lot of popups disappearing after opening, eg the colour selectors on the RTE and the calendar window time and date selectors. They were disappearing because the parent window would jump on top of them. Seems like a GTK bug, but if you set the popup as a transient for the parent window it works ok.
- Gtk: Added some more shortcuts into the file open dialog.
- Gtk: Added support for ⌘+Q shortcut to quit.
- Fixed the ⌘+W shortcut on the mail window not prompting you to save changes.
- Gtk: Fixed the Cancel button on the standard question dialog not working correctly.
- Gtk: Fixed repainting areas of the window where views have been removed. Eg when clicking on a new folder without content the previous mail being previewed would still be visible.
- Gtk: Fixed unresponsive contact search result popup in the mail window.
- Gtk: Fixed resdefs.h missing from the Resources sub-folder.
- Gtk: Tool tips and the mail window address browse popup are now correctly located on screen.
- Gtk: Also fixed the keyboard access to the address browse popup.
- Gtk: Fixed the font selector.
- Gtk/Mac: Fixed ⌘ key not being detected.
- Gtk: Added support for text clipping, this fixes overflowing text a bunch of places: calendar view, HTML images, font name in the RTE.
- Gtk: Fixed (some) images not loading (eg. about dialog).
- Gtk: Fixed not being able to get a file's MIME type.
- Gtk: Fixed about dialog saying it's a debug build even in a release build.
- Gtk: Added bundling of the OpenSSL libraries.
- Mac: Fixed lots of windows to close with ⌘+W rather than Ctrl+W. Same with save and a few others.
- The Linux and Mac builds have been migrated to GTK3. This is a major rewrite and lots of things broke and got mended. Likely there are still lots of issues. The Mac build will be 64bit instead of 32, as Apple will no longer support 32bit. Also Apple will require apps to be notarized. Which I will probably not bother doing. So this means from about 10.15 onwards you won't be able to use Scribe. However I doubt anyone is using it on a Mac anyway, so who cares?
- Merged in the thread safe iterator changes.
- Better Outbox detection on sending.
- Gtk: Added 'lgi-conf.json' support for reading a font DPI setting. Will add support for setting the value from the UI later.