From bf125456eade13ef2ed68fb101ad2b710bec17ad Mon Sep 17 00:00:00 2001 From: Maurizio Basaglia <62178459+maurizuki@users.noreply.github.com> Date: Thu, 23 Jan 2025 16:49:43 +0100 Subject: [PATCH] v3.1 (#35) * Add IDateProvider * Fix event filters * Remove all direct usages of 'Date' function * Update Testing.FileManager.pas * Move business logic from TO2Rules to TFileManager * Move TO2Rule.GetHighlightColors to TFileManager.GetHighlight * Move business logic from TO2Rule to TFileManager * Remove IDateProvider/TDateProvider from uO2Rules * Remove uO2Utils * Remove TO2Rule.DisplayPasswordStrength property * uO2Xml -> uXmlFiler * Build 551 * Update Testing.FileManager.pas * uXmlFiler -> uXmlSerialization * Build 552 * Update Testing.FileManager.pas * Update Testing.FileManager.pas * Add GetHighlightForField * Update Testing.FileManager.pas * Update Testing.FileManager.pas * Rename GetNextEvent to TryGetNextEvent * GetHighlight -> TryGetHighlightColors * Add TryGetNextEvent * Build 553 * Add Testing.MarkdownLogger * Update Testing.EncryptionPropsModel.pas * Update Testing.MarkdownLogger.pas * Generate test-results.md * Update Testing.MarkdownLogger.pas * Update test-results.md * Update uO2File.pas * Update uO2Defs.pas * Update uO2File.pas * IV * Update uO2File.pas * Update uO2File.pas * Build 554 * HTML Export: add dark style * HTML Export: external styles * Add Mono.css * Build 555 * Update uHTMLExport.pas * Add files via upload * Update O2.iss * Extend copyright * Build 556 * Add TryGetStyleFileName * Add files via upload * Update README.md * Version 3.1 --- .gitignore | 3 +- README.md | 41 +- docs/index.html | 2 +- docs/xml/O2File/30.xsd | 141 + release.ps1 | 9 + setup/AddressBook.o2 | Bin 3056 -> 3072 bytes setup/O2.iss | 6 +- setup/PasswordWallet.o2 | Bin 971 -> 986 bytes setup/ReadMe.rtf | Bin 8549 -> 5793 bytes sf_net/upd8r.xml | 4 +- src/Launcher/O2Portable.dpr | 2 +- src/Launcher/O2Portable.dproj | 3 +- src/Launcher/O2Portable.res | Bin 23596 -> 23596 bytes src/O2/DataModel/uO2Classes.pas | 2 +- src/O2/DataModel/uO2Defs.pas | 26 +- src/O2/DataModel/uO2File.pas | 309 +- src/O2/DataModel/uO2Objects.pas | 2 +- src/O2/DataModel/uO2Relations.pas | 2 +- src/O2/DataModel/uO2Rules.pas | 349 +- src/O2/DataModel/uO2Utils.pas | 143 - src/O2/ENU/o2_DRC.rc | 2850 ++++++------ src/O2/ENU/o2_DRC.rcn | 52 +- src/O2/ENU/o2_DRC.res | Bin 76064 -> 76468 bytes src/O2/ENU/o2_ENU.bdsproj | 18 +- src/O2/ENU/uAbout.dfm | 2 +- src/O2/ENU/uAbout.dfn | 8 +- src/O2/ENU/uFilePropsDlg.dfn | 6 +- src/O2/ENU/uGetPassword.dfn | 6 +- src/O2/ENU/uHTMLExport.dfm | 25 +- src/O2/ENU/uHTMLExport.dfn | 2635 +++-------- src/O2/ENU/uMain.dfn | 6 +- src/O2/ENU/uObjPropsDlg.dfn | 6 +- src/O2/ENU/uPasswordStrengthIndicator.dfn | 6 +- src/O2/ENU/uPrintPreview.dfn | 6 +- src/O2/ENU/uRTFViewer.dfn | 6 +- src/O2/ENU/uRelationPropsDlg.dfn | 6 +- src/O2/ENU/uReplaceDlg.dfn | 6 +- src/O2/ENU/uRulePropsDlg.dfn | 6 +- src/O2/ENU/uSetPassword.dfn | 6 +- src/O2/FileOps/uFileOperation.pas | 2 +- src/O2/FileOps/uO2ImportExport.pas | 2 +- src/O2/FileOps/uXmlImportExport.pas | 12 +- src/O2/FileOps/uiCalendarExport.pas | 7 +- src/O2/ITA/o2_DRC.rc | 2850 ++++++------ src/O2/ITA/o2_DRC.rcn | 52 +- src/O2/ITA/o2_DRC.res | Bin 77436 -> 77832 bytes src/O2/ITA/o2_ITA.bdsproj | 18 +- src/O2/ITA/uAbout.dfm | 2 +- src/O2/ITA/uAbout.dfn | 8 +- src/O2/ITA/uFilePropsDlg.dfn | 993 ++++- src/O2/ITA/uGetPassword.dfn | 416 +- src/O2/ITA/uHTMLExport.dfm | 25 +- src/O2/ITA/uHTMLExport.dfn | 2635 +++-------- src/O2/ITA/uMain.dfn | 6 +- src/O2/ITA/uObjPropsDlg.dfn | 8 +- src/O2/ITA/uPasswordStrengthIndicator.dfn | 111 +- src/O2/ITA/uPrintPreview.dfn | 1972 +++++++-- src/O2/ITA/uRTFViewer.dfn | 223 +- src/O2/ITA/uRelationPropsDlg.dfn | 1109 ++++- src/O2/ITA/uReplaceDlg.dfn | 665 ++- src/O2/ITA/uRulePropsDlg.dfn | 3884 +++++++++++++---- src/O2/ITA/uSetPassword.dfn | 1412 ++++-- src/O2/Styles/Blocks.css | 118 + src/O2/Styles/Mono.css | 117 + src/O2/Utils/uAppFiles.pas | 2 +- src/O2/Utils/uCtrlHelpers.pas | 2 +- src/O2/Utils/uHTMLHelper.pas | 2 +- src/O2/Utils/uMRUList.pas | 2 +- src/O2/Utils/uO2ObjectsUtils.pas | 2 +- src/O2/Utils/uO2RulesUtils.pas | 83 + src/O2/Utils/uPasswordScoreCache.pas | 5 +- src/O2/Utils/uShellUtils.pas | 4 +- src/O2/Utils/uStorageUtils.pas | 2 +- src/O2/Utils/uUtils.pas | 121 +- .../uXmlSerialization.pas} | 103 +- src/O2/Utils/uXmlStorage.pas | 2 +- src/O2/ViewModels/uEncryptionPropsModel.pas | 2 +- src/O2/ViewModels/uEventFilters.pas | 95 +- src/O2/ViewModels/uFileManager.pas | 303 +- src/O2/ViewModels/uFilePropsModel.pas | 2 +- src/O2/ViewModels/uHTMLExportModel.pas | 26 +- src/O2/ViewModels/uObjectModels.pas | 5 +- src/O2/ViewModels/uPasswordStrengthInfo.pas | 2 +- src/O2/ViewModels/uPrintModel.pas | 2 +- src/O2/ViewModels/uRelationModels.pas | 2 +- src/O2/ViewModels/uReplaceOperations.pas | 2 +- src/O2/ViewModels/uRuleModels.pas | 2 +- src/O2/o2.dpr | 7 +- src/O2/o2.dproj | 24 +- src/O2/o2.res | Bin 23744 -> 23744 bytes src/O2/uAbout.dfm | 2 +- src/O2/uAbout.pas | 2 +- src/O2/uFilePropsDlg.pas | 2 +- src/O2/uGetPassword.pas | 2 +- src/O2/uGlobal.pas | 5 +- src/O2/uHTMLExport.dfm | 25 +- src/O2/uHTMLExport.pas | 43 +- src/O2/uMain.pas | 66 +- src/O2/uObjPropsDlg.pas | 2 +- src/O2/uPasswordStrengthIndicator.pas | 2 +- src/O2/uPrintPreview.pas | 2 +- src/O2/uRTFViewer.pas | 2 +- src/O2/uRelationPropsDlg.pas | 2 +- src/O2/uReplaceDlg.pas | 2 +- src/O2/uRulePropsDlg.pas | 2 +- src/O2/uServices.pas | 23 +- src/O2/uSetPassword.pas | 2 +- src/O2/uStartup.pas | 26 +- src/Tests/Loggers/Testing.MarkdownLogger.pas | 151 + src/Tests/O2TestProject.dpr | 26 +- src/Tests/O2TestProject.dproj | 44 +- src/Tests/Testing.EncryptionPropsModel.pas | 2 +- src/Tests/Testing.FileManager.pas | 423 +- src/Tests/Testing.HTMLExportModel.pas | 22 +- test-results.md | 948 ++++ 115 files changed, 15708 insertions(+), 10271 deletions(-) create mode 100644 docs/xml/O2File/30.xsd delete mode 100644 src/O2/DataModel/uO2Utils.pas create mode 100644 src/O2/Styles/Blocks.css create mode 100644 src/O2/Styles/Mono.css create mode 100644 src/O2/Utils/uO2RulesUtils.pas rename src/O2/{DataModel/uO2Xml.pas => Utils/uXmlSerialization.pas} (79%) create mode 100644 src/Tests/Loggers/Testing.MarkdownLogger.pas create mode 100644 test-results.md diff --git a/.gitignore b/.gitignore index 1fc85db..0ec5643 100644 --- a/.gitignore +++ b/.gitignore @@ -77,4 +77,5 @@ src/O2/Dictionaries.res src/O2/Icons.res # DUnitX output -dunitx-results.xml +src/Tests/Win32/**/dunitx-results.xml +src/Tests/Win32/**/test-results.md diff --git a/README.md b/README.md index 1fc50f8..5fafe40 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,11 @@ winget install --id=maurizuki.O2 -e ## Change log +### Version 3.1 +- Cryptography enhancement: the cipher algorithm initialization vector is now randomly generated. +- New feature: custom style sheets for *Export to HTML*. Each *.css* file found in the *Styles* folder can be selected in the *Style* menu of the preview window. +- *Export to HTML*: new dark theme added. + ### Version 3.0 - Extensive source code rewrite in order to upgrade it to much modern coding techniques. This may or may not cause some bugs ๐Ÿ™‚ - *Object notes* view: note text is now displayed using an Edge-based control instead of an Internet Explorer-based one. @@ -47,42 +52,6 @@ winget install --id=maurizuki.O2 -e - Main window, objects view and fields view: objects and fields highlight indicates the strength of the passwords if the fields match rules of type *Password* with the new option *Display password strength*. - Developed with Embarcaderoยฎ Delphi 11. -### Version 2.2.7 -- New feature: export events (fields that match rules of type *Expiration date* and *Recurrence*) in *iCalendar* format, compatible with Microsoft Outlook, Google Calendar, Apple Calendar, etc. -- In the *Rule properties* dialog, *Date format* tab, the text field *Date format* has been replaced with a more friendly drop-down list. -- *Help* menu rationalization. - -### Version 2.2.6 -- Fixed: multiple consecutive white spaces in notes are not preserved during export to HTML. -- Minor improvements. - -### Version 2.2.5 -- Export to HTML: new page style in three flavors. -- Check for updates: integration with the GitHub REST API. -- Minor improvements. -- Developed with Embarcaderoยฎ Delphi 10.4. - -### Version 2.2.4 -- Fixed: the selections of the search options *Find by tag* and *Find by rule* aren't initialized opening another file. - -### Version 2.2.3 -- Deprecated cipher and hash algorithms: the cipher algorithms Blowfish, DES, Ice, Thin Ice, Misty1, RC2, RC4, TEA and the hash algorithms MD5 and SHA-1 have been deprecated due to evidences of their lack of security. It's still possible to open files encrypted using the deprecated algorithms, but it's no longer possible to save files encrypted with them. - -### Version 2.2.2 -- Main window, fields view: added the menu item *Show passwords* to the context menu. -- Developed with Embarcaderoยฎ Delphi 10.3. -- Compiled with Jedi VCL 3.50. - -### Version 2.2.1 -- Some aesthetic retouches to the main window, print preview window and HTML export preview window. -- New style sheet for the HTML export. -- Added the menu item *Documentation* to the *Help* menu: links to the wiki page of the project. - -### Version 2.2 -- New portable release that installs directly on removable media. -- Added the new feature *Replace role* to the objects menu: replaces the role of the selected objects in their relations. -- Minor bug fixes and improvements. - ## Acknowledgements The development and deployment of O2 were made possible thanks to the following tools: diff --git a/docs/index.html b/docs/index.html index d2021a9..f2fd006 100644 --- a/docs/index.html +++ b/docs/index.html @@ -235,7 +235,7 @@
It's Open Source Software, baby.