Merge branch 'subtree'
[nikiroo-utils.git] / changelog.md
index 2e5cfd199cce0d0cecbe58e779aa429f922aec11..21f865f520ed1cab62754bc0bae3eaec0a135f3f 100644 (file)
-# Fanfix
-
-# Version WIP
-
-- e621: fix order again
+# nikiroo-utils
 
-# Version 3.1.1
-
-- e621: fix chapters in reverse order for pools
-- fix: sort the stories by title and not by date
-- fix: expose the story name on progress bars
-
-# Version 3.1.0
-
-- MangaHub: a manga website (English)
-- MangaFox: removed (too many unfriendly changes, bye)
-- e621: fix cover not saved 
-
-# Version 3.0.1
-
-- fix: update for e621 (and it is no more a BasicSupport_Deprecated)
-- fix: for unsupported URL, do not errors out with a "file://" related message
-
-# Version 3.0.0
-
-- new: now Android-compatible (see [companion project](https://gitlab.com/Rayman22/fanfix-android))
-- new: story search (not all sources yet)
-- new: proxy support
-- fix: support hybrid CBZ (with text)
-- fix: fix DEBUG=0
-- fix: fix imported stories that don't immediatly appear on screen
-- gui: focus fix
-- gui: bg colour fix
-- gui: fix keyboard navigation support (up and down)
-- gui: configuration is now much easier
-- gui: can now prefetch to cache all the sories of a group at once
-- MangaLEL: website has changed
-- search: Fanfiction.net support
-- search: MangaLEL support
-- FimFictionAPI: fix NPE
-- remote: encryption mode changed because Google
-- remote: not compatible with 2.x
-- remote: can now use password from config file
-- remote: worse perfs but much better memory usage
-- remote: log now includes the time of events
-
-# Version 2.0.3
-
-SoFurry: fix for stories only available to registrated users
-
-# Version 2.0.2
-
-- i18n: setting the language in the option panel now works even with $LANG set
-- gui: translated into French
-- gui: ReDownload does not delete the original book anymore
-- gui: internal viewer fixes 
-- gui: some translation fixes
-
-# Version 2.0.1
-
-- core: a change of title/source/author was not always visible at runtime
-- gui: only reload the stoies when needed
-
-# Version 2.0.0
-
-- new: sources can contain "/" (and will use subdirectories)
-- gui: new Properties page for stories
-- gui: rename stories, change author
-- gui: allow "all" and "listing" modes for sources and authors
-- gui: integrated viewer for stories (both text and images)
-- tui: now working well enough to be considered stable
-- cli: now allow changing the source, title and author
-- remote: fix setSourceCover (was not seen by client)
-- remote: can now import local files into a remote library
-- remote: better perfs
-- remote: not compatible with 1.x
-- fix: deadlock in some rare cases (nikiroo-utils)
-- fix: the resume was not visible in some cases
-- fix: update nikiroo-utils, better remote perfs
-- fix: eHentai content warning
-
-# Version 1.8.1
-
-- e621: the images were stored in reverse order for searches (/post/)
-- e621: fix for /post/search/
-- remote: fix some timeout issues
-- remote: improve perfs
-- fix: allow I/O errors on CBZ files (skip image)
-- fix: fix the default covers directory
-
-# Version 1.8.0
-
-- FimfictionAPI: chapter names are now correctly ordered
-- e621: now supports searches (/post/)
-- remote: cover is now sent over the network for imported stories
-- MangaLel: new support for MangaLel
-
-# Version 1.7.1
-
-- GUI: tmp files deleted too soon in GUI mode
-- fix: unavailable cover could cause a crash
-- ePub: local EPUB import error when no cover
-
-# Version 1.7.0
-
-- new: use jsoup for parsing HTML (not everywhere yet)
-- update nikiroo-utils
-- android: Android compatibility
-- MangaFox: fix after website update
-- MangaFox: tomes order was not always correct
-- ePub: fix for compatibility with some ePub viewers
-- remote: cache usage fix
-- fix: TYPE= not always correct in info-file
-- fix: quotes error
-- fix: improve external launcher (native viewer)
-- test: more unit tests
-- doc: changelog available in French
-- doc: man pages (en, fr)
-- doc: SysV init script
-
-# Version 1.6.3
-
-- fix: bug fixes
-- remote: progress report
-- remote: can send large files
-- remote: detect server state
-- remote: import and change source on server
-- CBZ: better support for some CBZ files (if SUMMARY or URL files are present in it)
-- Library: fix cover images not deleted on story delete
-- fix: some images not supported because not jpeg-able (now try again in png)
-- remote: fix some covers not found over the wire (nikiroo-utils)
-- remote: fix cover image files not sent over the wire
+## Version WIP
 
-## Version 1.6.2
+- new: IOUtils: openResource with anchor class
+- new: ConfigItem: easier to extend
+- fix: CacheMemory: fix stackoverflow bug
+- fix: Bundles/TransBundles: def values
 
-- GUI: better progress bars
-- GUI: can now open files much quicker if they are stored in both library and cache with the same output type 
+## Version 5.1.0
 
-## Version 1.6.1
+- Downloader: new Offline mode for cache accesses only
+- Cache: make sure an immedate SAVE/LOAD always work, even with 0 retention delays
 
-- GUI: new option (disabled by default) to show one item per source type instead of one item per story when showing ALL sources (which is also the start page)
-- fix: source/type reset when redownloading
-- GUI: show the number of images instead of the number of words for images documents 
+## Version 5.0.0
 
-## Version 1.6.0
+- new: server: count the bytes we rec/send
+- new: CryptUtils
+- new: stream classes
+- new: Bundles can now also set Boolean, Integer... and not just get them
+- new: Bundles get/setList()
+- new: Bundles can now use the default values provided by the Meta
+- new: GUI presentation for Bundles is much improved
+- fix: IOUtils.readSmallStream and \n at the end
+- fix: Base64 implementation changed, no strange errors anymore
+- android: binary code (.class) is now bundled in the jar, too
+- change: StringUtils.unzip64(String) now returns a byte[] (StringUtils.unzip64s(String) can be used instead)
+- change: be.nikiroo.utils.markableFileInputStream moved to be.nikiroo.utils.streams (old class still present in @Deprecated state for now)
+- change: TestLauncher is now "silent" by default (no exception details, see setDetails(true))
+- runtime: serial: SSL -> CryptUtils (both are **runtime** incompatible and CryptUtils is slower)
+- runtime: break **runtime** compat with package utils.serial (Objects) -- ServerString should still be compatible (if not SSL obviously)
+
+## Version 4.7.3
+
+- fix: Downloader: POST and 302 redirects
+
+## Version 4.7.2
+
+- fix: Downloader issue with caching (input was spent when returned the first time)
+- fix: IOUtil.forceResetableStream
+
+## Version 4.7.1
+
+- new: can now select the TempFiles root
+- new: can now select the Image temporary root
+- fix: Cache now offer some tracing when cleaning the cache
+- fix: TemporaryFiles.close() was not indempotent (and was called in finalize!)
+
+## Version 4.7.0
+
+- tracer: traces on stderr by default
+- new: downloader one more public method
+- fix: downloader use original URL for cache ID
+
+## Version 4.6.2
+
+- fix: formatNumber/toNumber and decimals
+
+## Version 4.6.0
+
+- new: proxy
+- new: StringUtils formatNumber and toNumber
+- fix: UI Desc (NPE)
+
+## Version 4.5.2
+
+- Serial: fix b64/not b64 error
+- Serial: perf improvement
+- Base64: perf improvement
+- new: Proxy selector
+
+## Version 4.5.1
+
+- Progress: fix deadlock in rare cases
+
+## Version 4.5.0
+
+- Base64: allow access to streams
+- Deprecated: do not use our on deprecated functions
+- Serial: fix ZIP/noZIP error
+
+## Version 4.4.5
+
+- Base64: allow access to not-zipped Base64 utilities
+- Justify text: better handling of full text lines
+- jDoc: improve
+- IOUtils: new convenience method for reading a File into bytes
+
+## Version 4.4.4
+
+- Java 1.6: fix bad dependency so it can compiles on 1.6 again
+- TempFilesTest: fix test
+- Serial: fix for some constructors
+- Serial: better default choice for ZIP/noZIP content
+
+## Version 4.4.3
+
+- Test assertions: fix files/dir content comparison code
+
+## Version 4.4.2
+
+- Test assertions: can now compare files/dir content
+
+## Version 4.4.1
+
+- Image: fix undocumented exception on save images
+- TempFiles: crash early on error
+
+## Version 4.4.0
+
+- Text justification: now supports bullet lists and HR lines
+- Text justification: fix a bug with dashes (-) and a crash
+- Image to text converion fixes
+- Serial: now supports anonymous inner classes
+- Test: now allow an Exception argument to the "fail(..)" command
+- Downloader: add an optional cache
+- Cache: auto-clean when saving
+- Bridge: fix a NPE when tracing
+- New: justify, img2aa and bridge tools (see package Main)
+
+
+## Version 4.3.0
+
+- New: IOUtils.Unzip()
+- TestCase: better message for lists comparisons
+
+## Version 4.2.1
+
+- Fix small bug in Downloader
+
+## Version 4.2.0
+
+- New getLanguage() in TransBundle
+
+## Version 4.1.0
+
+- New TempFiles (Image.java now uses it instead of memory)
+- Auto cache cleaning + better errors in ImageUtilsAndroid
+- New String justification options
+
+## Version 4.0.1
+
+- Android compatibility (see configure.sh --android=yes)
+
+## Version 4.0.0
+
+- Deplace all dependencies on java.awt into its own package (ui)
+
+## Version 3.1.6
+
+- Fix Serialiser issue with custom objects and String in a custom object
+- Fix Progress/ProgressBar synchronisation issues
+- Fix Bridge default maxPrintSize parameter
+
+## Version 3.1.5
 
-- TUI: new TUI (text with windows and menus) -- not compiled by default (configure.sh)
-- remote: a server option to offer stories on the network
-- remote: a remote library to get said stories from the network
-- update to latest version of nikiroo-utils
-- FimFiction: support for the new API
-- new: cache update (you may want to clear your current cache)
-- GUI: bug fixed (moving an unopened book does not fail any more)
+- Fix Cache with no-parent file
+- Fix Progress (Error <> RuntimeException)
 
-## Version 1.5.3
+## Version 3.1.4
 
-- FimFiction: Fix tags and chapter handling for some stories
+- Fix error handling for tracers in Server
 
-## Version 1.5.2
+## Version 3.1.3
 
-- FimFiction: Fix tags metadata on FimFiction 4
+- Fix ImageUtils.fromStream with non-resetable streams
+
+## Version 3.1.2
+
+- Fix Server regarding the client version passed to the handler
+- Improve ServerBridge options
+
+## Version 3.1.1
+
+- Some fixes and trace handling changes in ServerBridge
+- Some fixes in Import/Export (objects serialisation)
+
+## Version 3.1.0
+
+- New ServerBridge (including tests)
+
+## Version 3.0.0
+
+- jDoc
+- Fix bugs in Server (it was not possible to send objects back to client)
+- Improve code in Server (including tests), breaks API
+- Remove some deprecated things
+
+## Version 2.2.3
+
+- Fix in readSmallStream
+- Change traces handling
+
+## Version 2.2.2
+
+- New method in Cache: manually delete items
+
+## Version 2.2.1
+
+- Small fixes, especially in Progress
+
+## Version 2.2.0
+
+- New classes:
+  - Downloader: download URL from recalcitrant websites
+  - Cache: manage a local cache
+
+## Version 2.1.0
+
+- Better IOUtils
+
+## Version 2.0.0
+
+- API change
+  - IOUtils is now split between itself and ImageUtils -- some changes required in dependant projects
+  - Some slight renaming in StringUtils/IOUtils/ImageUtils
+
+- New class ImageText
+  - To create ASCII art
+
+## Version 1.6.3
+
+- Version.java
+  - Fix toString issues + test + update scripts
+
+## Version 1.6.2
+
+- Version.java
+  - Now supports "tag" on the versions (i.e., 0.0.4-niki1 -> tag is "niki", tagVersion is 1)
+
+## Version 1.6.1
+
+- Serialisation utilities
+  - Now supports enums and BufferedImages
+
+## Version 1.6.0
+
+- Serialisation utilities
+  - Server class to send/receive objects via network easily
+  - Serialiser now supports Arrays + fixes
 
 ## Version 1.5.1
 
-- FimFiction: Update to FimFiction 4
-- eHentai: Fix some meta data that were missing
+- Serialisation utilities
+  - SerialUtils is now public and can be used to dynamically create an Object
+  - The Importer is now easier to use
 
 ## Version 1.5.0
 
-- eHentai: new website supported on request (do not hesitate!): e-hentai.org
-- Library: perf improvement when retrieving the stories (cover not loaded when not needed)
-- Library: fix the covers that were not always removed when deleting a story
-- GUI: perf improvement when displaying books (cover resized then cached)
-- GUI: sources are now editable ("Move to...")
+- Bundles: change in Bundles and meta data
+  - The meta data is more complete now, but it breaks compatibility with both Bundles and @Meta
+  - A description can now be added to a bundle item in the graphical editor as a tooltip
+
+- Serialisation utilities
+  - A new set of utilities to quickly serialise objects
+
+## Version 1.4.3
+
+- Bugfix: unhtml
+  - Also replace non-breakable spaces by normal spaces
 
 ## Version 1.4.2
 
-- GUI: new Options menu to configure the program (minimalist for now)
-- new: improve progress reporting (smoother updates, more details)
-- fix: better cover support for local files
+- Bugfix: Deltree
+  - Deltree was not OK for files...
 
 ## Version 1.4.1
 
-- fix: UpdateChecker which showed the changes of ALL versions instead of the newer ones only
-- fix: some bad line breaks on HTML support (including FanFiction.net)
-- GUI: progress bar now working correctly
-- update: nikiroo-utils update to show all steps in the progress bars
-- ( --End of changes for version 1.4.1-- )
+- Progress
+  - Better handling of min==max case
+  - New methods .done() and .add(int step)
 
 ## Version 1.4.0
 
-- new: remember the word count and the date of creation of Fanfix stories
-- GUI: option to show the word count instead of the author below the book title
-- CBZ: do not include the first page twice anymore for no-cover websites
-- GUI: update version check (we now check for new versions)
+- R/W Bundles
+  - Bundle is now Read/Write
+
+- Bundle Configuration
+  - New UI controls to configure the Bundles graphically
 
-## Version 1.3.1
+## Version 1.3.6
 
-- GUI: can now display books by Author
+- Fix for Java 1.6 compat
+  - Java 1.6 cannot compile it due to variables with ambigous names (which
+  - Java 1.8 can identify)
 
-## Version 1.3.0
+## Version 1.3.5
 
-- YiffStar: YiffStar (SoFurry.com) is now supported
-- new: supports login/password websites
-- GUI: copied URLs (ctrl+C) are selected by default when importing a URL
-- GUI: version now visible (also with --version)
+- Improve ProgressBar UI
+  - It now shows all the progression bars of the different steps of progression at the same time
 
-## Version 1.2.4
+## Version 1.3.4
 
-- GUI: new option: Re-download
-- GUI: books are now sorted (will not jump around after refresh/redownload)
-- fix: quote character handling
-- fix: chapter detection
-- new: more tests included
+- Improve TestCase error reporting
+  - We know display the full stack trace even for AssertionErrors
+
+- Extends Version
+  - ...with new methods: isOlderThan(Version) and isNewerThan(Version)
+
+## Version 1.3.3
+
+- New Version class
+  - Which can parse versions from the running program
 
 ## Version 1.2.3
 
-- HTML: include the original (info_text) files when saving
-- HTML: new input type supported: HTML files made by Fanfix
+- Add openResource and getVersion in IOUtils
+  - The file VERSION is supposed to exist
+
+- Give more informartion on AssertErrors
+  - The TestCase were not always helpful in case of AssertExceptions; they now print the stacktrace (they only used to do it for non-assert exceptions)
+
+- Fix configure.sh
+  - The VERSION file was not added, the Main method was not the correct one (so it was not producing working runnable JAR, yet it stated so)
 
 ## Version 1.2.2
 
-- GUI: new "Save as..." option
-- GUI: fixes (icon refresh)
-- fix: handling of TABs in user messages
-- GUI: LocalReader can now be used with --read
-- ePub: CSS style fixes
+- Fix bug in Bundle regarding \t handling
+  - ...tests should be written (later)
 
 ## Version 1.2.1
 
-- GUI: some menu functions added
-- GUI: right-click popup menu added
-- GUI: fixes, especially for the LocalReader library
-- GUI: new green round icon to denote "cached" (into LocalReader library) files
+- New drawEllipse3D method
+  - ...in UIUtils
 
-## Version 1.2.0
+## Version 1.1.1
 
-- GUI: progress reporting system
-- ePub: CSS style changes
-- new: unit tests added
-- GUI: some menu functions added (delete, refresh, a place-holder for export)
+- Add UI component for Progress
+  - Still a WIP, it only show the current progress bar, still not the children bars (it's planned)
 
 ## Version 1.1.0
 
-- CLI: new Progress reporting system
-- e621: fix on "pending" pools, which were not downloaded before
-- new: unit tests system added (but no test yet, as all tests were moved into nikiroo-utils)
+- Add progress reporting, move to ui package
+  - A new progress reporting system (and tests) in the new ui package (some other classes have been moved into ui, too: WrapLayout and UIUtils)
 
 ## Version 1.0.0
 
-- GUI: it is now good enough to be released (export is still CLI-only though)
-- fix: bug fixes
-- GUI: improved (a lot)
-- new: should be good enough for 1.0.0
+- Add WrapLayout and UIUtils
+  - A FlowLayout that automatically wrap to the next line (from existing code found on internet) and a method to set a fake-native look & feel
+
+## Version 0.9.7
+
+- Improve toImage and allow non-resetable InputStreams
+  - ...though they are then automatically saved onto disk then re-opened, then the file is deleted at the end of the process -- bad perfs
+  - Worse, it does it even if no EXIF metadata are present (because it cannot know that before reading the Stream, and cannot save a partially, non-resetable Stream to disk)
+
+- Reoarganize some methods from String to IO
+
+## Version 0.9.6
+
+- New test system
+  - Now some unit tests have been added, as well as the support classes
 
 ## Version 0.9.5
 
-- fix: bug fixes
-- new: WIN32 compatibility (tested on Windows 10)
+- Resource bundle bug
+  - UTF-8 strings were sometimes wrangled
+  - It is fixed by using a Bundle#Control, whih sadly is only available in Java 1.6+
 
 ## Version 0.9.4
 
-- fix: bug fixes (lots of)
-- new: perf improved
-- new: use less cache files
-- GUI: improvement (still not really OK, but OK enough I guess)
+- Compatibility bug
+  - Again... because of some useless imports made there for a wrong jDoc comment
 
 ## Version 0.9.3
 
-- fix: bug fixes (lots of)
-- GUI: first implementation (which is ugly and buggy -- the buggly GUI)
+- Compatibility bug
+  - The library did not work with JDK versions prior to 1.8 because of a dependency on Base64
+  - A new (public domain) class was used instead, which is compatible with Java 1.5 this time
 
 ## Version 0.9.2
 
-- new: minimum JVM version: Java 1.6 (all binary JAR files will be released in 1.6)
-- fix: bug fixes
-
-## Version 0.9.1
-
-- initial version
+- Initial version
+  - ...on GIT