Skip to content

Version 602

Compare
Choose a tag to compare
@hydrusnetwork hydrusnetwork released this 11 Dec 22:00
· 24 commits to master since this release
e6847f5

media viewer top hover file info line

  • added four checkboxes to options->media viewer to alter what shows in the media viewer top hover window's file info summary line. you can say whether archived status is mentioned; and if it is, if there should be a timestamp; and you can say whether individual file services should be enumerated; and if so, whether they should have timestamps
  • this same line is reflected in the main gui status bar when you have the new options->thumbnails checkbox set on--so if you missed seeing your current local file services on the status bar, it should be doable now, and in a more compact way

archived times

  • there has been a bug for some time where if you import files with 'automatically archive' set in the file import options, an 'archive time' was not being recorded! this is now fixed going forward
  • for the past instances of this happening, I have written a new database->file maintenance->fix missing file archived times job to fill these gaps with synthetic values. it can also fill in gaps from before archive times were recorded (v474, in 2022-02)
  • on the v602 update, your client will scan for this. if you have a large database, the update may take a couple minutes this week. if you have either problem, it will point you to the new job
  • the job itself looks for both problems and gives you the choice of what to fix. for files imported since 2022-02, it assumes these were 'archive on import' files and inserts an archive time the same as the import time. for files imported before 2022-02, the synthetic values will be 20% between the import time and (any known deletion time or 2022-02), which is imperfect but I think it'll do

system predicates

  • the system tags for duration, framerate, frames, width, height, notes, urls, and words are now written system: has/no xxxxx rather than system:xxxxx: has/no xxxxx
  • the system:file properties UI panel is now a two-column grid. 'has xxxxx' on the left, 'no xxxxx' on the right
  • system:has/no duration added to system:file properties (it is also still in system:duration, but let's see how it goes having it in both places. I am 50% sold on the idea)
  • the 'paste image!' button in the system:similar files edit panel now understands file paths when they are copied from something like Windows Explorer. previously it was only reading bitmaps or raw text, but when you hit ctrl+c on an actual file, it actually gets encoded as a URI, which is slightly different to raw text. should work now!
  • fixed the system:duration predicate's string presentation around 0ms, where it would sometimes unhelpfully insert '+/- no duration' and other such weirdness
  • fixed the system:duration edit predicate window initialising with sub-second values. previously, the ms amount on the main value or the +/- were being zeroed
  • the various NumberTest objects across the program that have a +/- in absolute or percentage terms now test that boundary in an inclusive manner. previously it was doing x < n < y; now it does x <= n <= y, which satisfies 5 = 5 +/- 0, 6 = 4 +/- 50%, and 0 = 600 +/- 100%
  • the 'has/no' system pred shortcuts now all parse in the system predicate parser. the old format will still parse too. I added unit tests to check this, and more to fill in gaps for 'framerate' and 'num frames'

rating predicates specifically

  • system:rating search predicates are now edited separately, which means that in the edit panel, each rating widget has its own 'ok' button. you edit one at a time with a clearer workflow
  • the radio buttons involved here are now less confusing. no 'do not search' nonsense or 'is = NULL' to search for 'no rating'--you now just say 'has rating', 'no rating', or set the specific rating
  • the inc/dec system pred box now has quick-select choices for 'has count' and 'no count'
  • rating predicates have slightly simpler and nicer natural language labels. 'is like' and 'more than 2/3' rather than '= like' and '> 2/3'. 'count' instead of 'rating' for the inc/dec ratings. inc/dec rating predicates will also now swap in the new 'has count' and 'no count' too, rather than saying "> 0" explicitly
  • the system predicate parser is updated to handle the new 'count' labels (but the old format will still work, so nothing should break™). new unit tests check this
  • these panels now recover better from a predicate that refers to a service that no longer exists. in general, if you try to edit a bad pred (e.g. from an old session) it'll try to just ignore it and give you a popup letting you know

deleted similar files search

  • the similar files system no longer de-lists files from the search tree when they are deleted. phashes being disassociated from deleted files was not intentionally enforced before, but it was legacy policy from an old optimisation when the search tech was far more limited than today; now the file filtering tech is better, and we can handle it CPU wise, and I now intentionally want to keep them. it should be possible to search similar deleted files in future. the similar files search code can get pretty wew mode though, so I wouldn't be surprised if there are some bugs in odd 'all known files' situations
  • I do not think this functionality is too useful, but we might want to build a 'oh we have seen this file before and we deleted it then, so stop this import' auto-tech one day, maybe, if we combine it with multiple/better similar files hashes, so keeping deleted file data in our search trees will be the policy going forward. although I regret these perceptual hash disassociations, the good news is that pixel hashes were never removed, and this will be more useful for this objective

misc

  • renamed 'human-readable embedded metadata' to 'embedded metadata' across the program, mostly just to stop it being so wide. I hate this system predicate, and with the jpeg stuff it is now a catch-all and basically useless as a discriminator. I have plans to replace it with a flexible all-in-one system that will integrate all the 'has icc profile' stuff together and bundle in fine search for 'jpeg:interlaced' or arbitrary EXIF data row search so you can search for what you actually want rather than the blanket 'uh some metadata I guess'
  • the 'move files now' dialog in database->move media files has a new 'run for custom time' button so you don't have to do 10/30/60/indefinite. note I also hate this whole system and want to replace it in the middle-term future with a background migration job, so fingers crossed this whole mess will be gone before long
  • when you manually lock the database with the Client API, the bottom-right status bar cell now says 'db locked'. when it is reading or writing, it now also just says 'db reading/writing' rather than 'db read/write locked'
  • the way the database updates the status bar with 'db reading' and stuff is now a little overhead efficient (it only updates the db cell, not the whole status bar)
  • clarified the text in options->importing
  • moved the 'default export directory' option from 'files and trash' to the new 'exporting' panel
  • if an SSLCertVerificationError occurs in a connection, the exception now has some extra info explaining the potential causes of the problem (issue #1642)

env stuff

  • I added a DEBUG checkbox to options->connection that explicitly sets the REQUESTS_CA_BUNDLE environment variable to your certifi's cacert.pem path, assuming that path exists and the env variable has not already been set. I'd like to test this a bit and see if it helps or breaks any situations, and maybe force it one day, or add some more options. also, I don't know much about CURL_CA_BUNDLE, but if you want me to defer to that rather than certifi if it is already set, or you have other thoughts, let me know what you think
  • added help->debug->data actions->show env, which simply spams it to a popup and writes it to the log. it also splits up your various PATH vars for readability, but the list is usually giant so this is best actually read in the log rather than the popup atm. a couple other places where the env is spammed to screen also now uses this now format

Qt enum cleanup

  • fixed up more Qt5 Enums to the new Qt6 locations, including those now under Qt.ItemDataRole, Qt.ItemFlag, Qt.SortOrder, Qt.ContextMenuPolicy, Qt.Key, Qt.KeyboardModifier, Qt.MouseButton, Qt.DropAction, Qt.AlignmentFlag, Qt.LayoutDirection, Qt.Orientation, Qt.CursorShape, Qt.WidgetAttribute, Qt.WindowState, Qt.WindowType, Qt.GlobalColor, Qt.FocusReason, Qt.FocusPolicy, Qt.CheckState, Qt.TextElideMode, Qt.TextFormat, Qt.TextFlag, Qt.TextInteractionFlag, Qt.ShortcutContext, Qt.ScrollBarPolicy, Qt.TimerType, Qt.ToolButtonsTyle, Qt.PenStyle, and Qt.BrushStyle
  • and QEvent.Type
  • and QItemSelectionModel.SelectionFlag

other code cleanup

  • cleaned up the recent 'make width sort before height in most places' hacks into something nicer
  • deleted the old 'Edit Multiple Predicates' panel py file, which was only handling the ratings stuff. was probably an interesting idea at some point, but it was too convoluted IRL, both for users and me to work with
  • decoupled some rating-to-stars and stars-to-rating rating conversion code out of the rating services object

new macOS App

  • sorry for no macOS App last week; github retired the old 'runner' that builds the App, and I missed the notifications. we are today updating from macos-12 to macos-13, which appears to still work on intel machines
  • macos-14, whose migration will presumably come in a few years, will likely require Apple Silicon (ARM), at which point I'll have to tell older mac users to run from source, but that's a problem for the future