Implemented more robust and fine-grain checking for host OS Desktop interoperability to accommodate security manager changes. That way if user blocks Java applications from opening filesFileaxy, then we can remove those swing Open buttons and menu items from Fileaxy's UI.
Added tag Version-1.5.8 for changeset fee6f5c7ba01
Updated Fileaxy changelog with notable improvements and bug fixes.
UI tweaks for indicating child folder rename vs dir rename.
Code cleanup.
Forgot to include new file for revamped Folder creation UI that offers more readable text field, clipboard Paste command button, and dir vame collision detection. Previous commit message also needed a blurb about adding a menu item command to clear a cluttered menu of too many recent Dirs being presented to user.
Fixed a shipping bug where pathological illegal file name cases, ex. all periods, caused index exception in String sanitizer killing EDT. Rewrote to reverse scan String and truncate efficiently and correctly.
Code cleanup after big review of changes from revision 3110 to now.
Fix for for performance regressing seen with Java25's faster but more latent GC with weak refs. We use weak notification listeners in this code base for fire-and-forget coder convenience but lingering weak listeners still react outside of the expected scope. This was evident when user commands changing selection to None in a File Browser after doing a mass rename operation like search-replace op in file names with two spaces into file names with one space. A hidden ordered list blocked EDT...
UX enhancement, give user UI feedback if no context established for a hot-key command. For example, Slide show of selection in Presenter command keys pressed but NO selection.
Implemented nice AWT level decluttering of Host OS windows widget when many Browsers while the YFrame_BrowsersOverview singleton window is visible and awaiting user response.
Code cleanup.
Enhanced previous simple modal dialog to rename a directory with Undo / Copy / Past buttons. Disables dialog's Rename button to indicate when user's requested name exceeds 254 chars or is identical to another existing dir.
In Sync-Diff history dialog JTable, Use lazy instantiation to caches an expensive row Icon call to improve scrolling for pathological cases.
Fix for unshipped actual corner case with new Sync-Diff history dialog. Found that user Cancel of a newly selected src-dst will show as a previous past completed time of different src-dist within the same Browser. Now checking for either src-dst Sync path changed to zero completion time.
Minor bug fix for Extension Kind Tally tp CSV report, moved HTML stripping to target JTable dot extension values only because we were losing our 1st line "NO EXTENSION" newline for user's clipboard report when doing it as a final batched effort.
User story: Polish the precious. Found that running a Sync-Diff where there were no differences still needs to update the successful completion time. Otherwise a year of SAME files would pass without the user ever knowing src-dest hierarchy had been checked as the same and okay!
Fix for oops String.eq() to a File obj in recent code change to reject irrelevant Sync-Diff from Latest Overview UI.
Modified Sync-Diff biz logic to share a user commanded successful src-dest dir Sync time out to all other Browsers that maintain equivalent child src dirs with target child dest dirs or simply direct src/dst as Browser clone. This will help the Latest Diff History dialog be more helpful and reflective of ground truth. Further work with smartly indicating a partial Sync (cmd ended with even a single I/O error) still pending from my authority.
Code cleanup.
Refactor of Browser Latest Sync-Diff historical overview into a FB capable YModal_Dialog. Usability tweaks. Additional comments where I seem to have forgotten my own API architecture.
Implemented a singleton JFrame with historical view of latest Sync-Diff historical operations to aid user awareness of what was done when. In a row clickable table are all Browsers that have attempted a Sync-Diff ordered by Browser notes, with source dir above destination dirs, and date above time. The user's click goes to that Browser's src/dest directory. Similar to the Meta Browser Overview but without hiding all other windows.
Fix for an edit date being garbage if the modification time is before 1981, i.e. unknowable. Handling the one Stream API case where a Stream.peek() side-effect could have been lost dot to a .count() monad terminating the Stream. Probably wasn't an issue due to .filter() monad but didn't want to risk user file data loss as these were I/O task cancel requests. Now dumping to an Object[].length for count. Left a code reminder comment for the other cases where a .peek() side-effect is used. ...
UI tweak where search by date range dialog would have its range summary poisoned by a single unknown file date. Now filtering those unknown values out.
UI tweak to the Favorites Folder table so that the dir can not be BOTH avoiding and auto-importing simultaneously.
Usage of Interruptable Lock corrected by IntelliJ IDEA code analysis so that .unlock() only called inside proper scope. A few other recommendations.
Added code complication according to JBrains IDEA analysis, am going to stop while I'm ahead. Dead code clean-up.
Code D.R.Y. simplification according to JBrains IDEA analysis. Simplified API for probing drive Directory to accept Path instance instead of only File. Coding style conformance.
UX refinement to show the range of possible file modification dates or file content sizes to select via Dialog constrained by that single Browser's inventory context, and not the full range of all file dates and sizes currently imported across all browsers.
Make source code and jar usable to our loyal audience of Java8 loyalists.
All righty minions, this here XL commit is a week of JBrains IntelliJ static code analysis recommendations for QA supremacy, i.e. not my usual dribble. Ye will find herein primarily local variable immutability changes via keyword 'final'. Yaas, we all know that no javac-JVM at this juncture maintains awareness of non-field immutability without C2 JIT inference, but, it has been whispered around The Backrooms that such things are soon possible with Project Finale. Due before the end of the ...
To aide more "power user" inclined individuals : (1) Added [CTRL][ALT][\] hot-key for showing "Find - Replace file name" dialog with current selection. (2) Augmented [CMD][G] Gather with also a [CTRL][ALT][G] hot-key variant for streamlining Gathering matches into the CURRENT Browser based on a user's previous criteria as applied to the current selection. This differs from normal [CMD][G] or menu item initiated behavior because those give one a dialog UI to review before gather resulting ma...
Code tweak to not display the 2 pixel bar of a collapsed utility under search field when no auto-suggest words are expected. Needs testing to see if an actual robust fix.
Fixed a shipped bug by which user rename of file in Presenter trailing view causing it to become FNF. Turns out order of manipulations important there, so update any trailing name change before side-effects caused by changing primary view shifting Code cleanup to mitigate compiler warnings. But have applied -Xlint modifications in IDE "-Xlint:all -Xlint:-dangling-doc-comments -Xlint:-this-escape"
Code cleanup.
Conformed indexed for-loop code to follow Java source library practice of retaining a stack slot / register as array.length alias. This may improve performance on interpreted byte code and C1 level execution. One self-recursive method was opted out to avoid growing stack too much. Concerning this technical change, previously i had assumed a final array ref automatically received this via 'javac' compilation, but i was mistaken.
Via NB Proflier, improved our probe table Hash Set performance by 30-40% for most commonly invoked methods .add() and .has() by using a simple alias for mutable Object[] field. Even in Java 25, this hotspot optimization was not happening as previously assumed.
Code cleanup.
UI tweak to volume label Last Seen time in Browser Overview. A static constant rename.
Fixed poor UX issue where current Sync-Diff dialog is not Z-order re-fronted after Sync-DIff table right-click spawned sub-Files Browser is subsequently closed. Previous behavior was to pull forward the best matching FB for the sub-FB which is general the Sync-Diff destination path's FB not the source path FB. Updated app version number.
Added tag Version-1.5.7 for changeset 67d8b7a68a3c
Updated README.txt with notable features and bug fixes.
Route around new damage caused by junior code m0nkey's Javadoc changes to legally acceptable markup in JDK 25. Multi-line BOLD is out cuz too hard for its wittle parser. Hey friendo, you only succeeded in making modern Java source code harder to read and review. That was NOT a design goal of Javadoc.
Another fix for JRE25 behavior making a Fileaxy JTable not render. Found that auto-resize TableColumn requires a viewable JTableHeader to change flex-width indicator -1 into default width of 2^14. Had to hard-code a more normal width to make component visible in non-resizing, utility JFrame of 1280 pixels wide.
Java 25 LTS required important bug fix to our implementation of JTable column with flexible widths. Some version after JRE 21 LTS, was observed that flex-width column stuck at 75 pixel default, which broke all our file path views in a JTable. Now expands as expected. UX downside is cursor on column header divider changes shape unnecessarily.
Failed attempt with user mouse wheel input directed file advance when Presenter is in "fit image to window" view mode. Complication arose because ALL image view modes are embedded in a single Component wrapped by the JViewPort/JScrollPane scroll bars that require their own mouse wheel event listener (when zoomed in or large image with not-fit-to-view) ...which can not accommodate being connected then disconnected then reconnected to their constructot automated mouse wheel event listeners. W...
Introduced small optimization to avoid a sort when all file sizes are known for showing in RegFile selection and Series right-click menu. Code cleanup when calling our Worker.offerTask() API.
Added menu command items for unavailable Directory and unavailable File to clipboard their entity name. This need was occurring often in my workflow. Added comments.
UX change, minimize FCs to de-clutter file names when pressing [ESC] in Browser window.
Bug fix to CharSeq transformer utility where it was improperly accumulating Unicode chars. This bug caused Gather dialog to incorrectly hint at folder name and file name matches that were not actually possible. Code cleanup in Task parameter lambda expressions.
Fixed bug when auto inferring paths where a directory contains a sub-dir that has a same named file, typically a number. Ex infer directory a missing dir "/a" where "/a/0.png" and "/a/b/0.png" result in issue at CancelTask_InferPath line 900, poisons later prerequisite that RF be guaranteed unique in CancelTask_InferPath update of RF names and UI.
Code hardening when helper programs interrogate an image file and parse its dimensions.
Shuffling personal dev drives, so trivial check-in of code cleanup.
Improved UX by now bringing across previously used Sync-Diff dirs when cloning Browser window or when restoring it from Application menu after accidental closure [X] click.
When copying to HTML enabled tool tip, User Note in Browser window title may be unsanitary HTML fragment. Now sanitizing.
UX tweak so that Path view tab does not show redundant Path sorting option with new Numeric Prefix and Numeric Suffix ordering.
Implemented in the Reorder view tab's forced sorting command popup menu, our two new sorting modes of detecting punctuation word break bounded, leading or trailing numbers. Note: that new "Suffix Num." ordering differs from our previous Alphanum and Numeric regime because those numbers require no boundary character, just consistent alpha (and punctuation) prefix across its series.
Implemented 4 new sorting modes to support check summed files usually from internet. These conceptually work in a 2x2 matrix of either grouping by parent path name or not, and either scanning for a sequence forward or backward in the file name and ordering by that. These modes differ from Different from Alphanum ordering because that sort requires each grouping have a fully identical preceding character sequence. Presently the algorithm will not work as expected if the embedded number is g...
Refactor ActsOn command lambda expressions to receive a context ref and exist as simplified static methods.
Fixed bug with our sometimes broken dimension parsing via FFmpeg helper application. For now avoiding hassle with balancing parenthesis and brackets around ignored info in Steam Video metadata and using brute force indicator. Should be more robust because their spec may change again. Various other comments to help the maintainers.
Completed UX change to modify Presenter image scaling algorithm to be linear instead of power of 2 based. More natural to have enlargements of x1, x2, x3, x4 than x1, x2, x4, x8 and reductions of 1/1, 1/2, 1/3, 1/4 than 1/1, 1/2, 1/4, 1/8. Presenter could use a bunch of fixes, especially the NO REDRAW BUG when in mutable scaling mode. As this never happens with scaled to fit with dark gray background mode!
Improve UX of restoring an accidentally closed Browser window from the next active FB application menu. Now command item always visible and disabled when not applicable.
Incomplete UX change to modify Presenter scaling algorithm to be non-power of 2 based. More natural to have enlargements of x1, x2, x3, x4 than x1, x2, x4, x8 and reductions of 1/1, 1/2, 1/3, 1/4 than 1/1, 1/2, 1/4, 1/8. Presenter could use a bunch of fixes, especially the NO REDRAW BUG when in mutable scaling mode.
Failed to safely change a blocked Swing EDT window with the busy cursor shape from monitor thread outside of EDT. This was legal in JDK7 but that design is no longer workable. Thanks, Obama.
Update to version 1.9.8 of Doxygen configuration file.
Improved bulk rename UX in selection menu, now Asciify command item is disabled when no Unicode chars are present from the selected file names.
Important bug fix for non-displayed video files processed by FFmpeg helper. We were trying to avoid video duration meta-data extraction by applying heuristic about file content byte size that was often not correct with 4K video streams. Now seeking to first frame of video stream at ''00:00:00.00'' if a failure, instead of guessing at a 5-second fade in and then giving up if failed because video was shorter than 5 secs.
An unimplemented idea for further Favorite Folder actions that happen when the Path view tab is initially realized and populated.
Enhanced the clipboard overwrite warning UI when user accepts (or not) the just gathered from disk media MD5, SHA-1,256,512 from files to -ALSO- indicate how many file names with already embedded hexadecimal hashes matched the computed hashing algorithm. This feature is not smart enough to tell the user what hash algorithm to use based on its apparent length in the file name, or if the hash is salted or UU-encoded, -BUT- it can disregard non-relevant prefix-suffix and intervening hyphens, et...
Added 2 more keyboard short cuts for Gather and Quit to Slideshow/ Presenter.
Bringing in concept of RF or Folder is "offline", indicating its backing Volume or Partition is not mounted on host OS. It is hoped an event-notification model will arise (uh) to better coordinate the UI with real-time ground truth of the user's host OS file systems.
Added tag Version-1.5.6 for changeset 831ff9ac5b0b
README updated with only a single bug fix for this release.
Tweak UX, If the Trash dir is empty of subdirs and regular files, so as to avoid cluttering user's Host OS desktop UI with empty windows, only remove the empty Series Controller when command is invoked without unnecessary and useless reveal. -- Fix for no-compilation error on JDK8. Was referencing an unavailable static constant from a later JDK.
When sorting RFs, handle case where Folder was not centrally tracked and pooled due to put-of-band/ improper adding of a child dir. The root cause fix for these difficulties is a proper event model for directory C.R.U.D. taking into account that off-line or file-not-founds are permitted as part of our cataloging UX.
Best practice with file I/O is to to accept wide and emit narrow. Here we now avoid on MsWin writing out an "A:" any drive parent path because it functionally duplicates "A:\" [BACKSLASH] special case and blows up a later read of .ZIP Folder hierarchy accelerator thread. Note: suspecting centralized Folder refs are being undermined by child Folders being re-added incorrectly in bulk to an updated Folder name ref. Have made Folder.equals() checks more accommodating of that sordid reality. ...
Guard for 128 million maximum and positive expected file count which mitigates DoS via damaged or tampered pref.
Shipped v1.5.5 with an error where changing Folder locations breaks the Centralized guarantee and UI falls apart. No damage to user files in host OS though but very frustrating and credibility damaging when user is shown things "disappearing". This check-in is basically a failed code simplification effort with implementing the shipped missing method FolderBuilder2.createParentPathName_to_ChildFolderNamesMap(). I have rolled back to where FB1 is used (agaun, sigh), but that intermittently in...
For better UX when establishing context of user right-click menu concerning little folder buttons and Series Controllers, implemented momentarily displaying magenta highlight.
Implemented locale conditionally indicating English unrecognized tag words in folder name tip of little sub-directory buttons in Path View tab.
Implemented only indicating English recognized tag words in file filenames on systems where the default Locale is, drum roll, English language.
Fix for JDK 22 returning 'null' from ThreadTeam's work stealing BlockingDequeue. Possible that was pushing / offering a 'null' in my client code. Probably time to plumb depths with expected ExecutorService.
Added tag Version-1.5.5 for changeset e2da4697daec
Fixed "CompileSrc.class" build helper to use UTF-8 encoded source with platforms that default to "Cp1252" like MsWindows. Modified README
README edits before final test on Linux and JDK 8 build.
Javadoc cleanup but still incomplete by strict rules.
Code cleanup.
README updates gathered from Mercurial log.
Comments for Collector monads that use Set, aka .distinct()
Code cleanup.
Implemented in file right-click popup menu tooltip for the file name, now also shows Dicti service unrecognized tags in bold and red HTML. These words are typically proper nouns, with numeric, punctuation, and sub-three char runs being ignored. Unicode characters are still highlighted with cyan in that tip.
Revamp of code base case-insensitive order that now guarantees to breaks ties with by natural order of String. This gotcha had been addressed inconsistently.