#<- my catch-all tag for this stuff i should maybe rename it
Explore tagged Tumblr posts
Note
Wait I'm confused how is the girldad stuff misogynistic? I'm not a fan either but i think I'm missing something here
i talked about this when people kept saying girldad shit about tubbo but i can't find that ask (thanks tumblr) so ill have to re-explain it.
"girldad" and "boymom" are both extremely troubled terms because of the way they set up gender dynamics within families. to highlight the latter quickly, "boymom" culture is obsessed with the idea that raising boys as a woman is so fundamentally strange, because women/girls are so fundamentally different from men/boys, and that it is also a mother's duty to raise her boys with the "proper" masculinity (assigned by our hegemonic culture, of course; this rarely refers to mothers raising sons and discussing consent and thoughtful masculinity with their children). with "girldad," the concept is really weird and awful to me because so often the implication is "see, look at this dad who cares deeply about his daughter(s)! isn't that unusual and to be remarked upon?" which is, to me, batshit. or it's about how different it is to raise girls versus boys, how rough-and-tumble boys are versus how precious and emotional girls are. it's gender essentialism, it's misogyny, it's patriarchal, and it's weird. raising girls and raising boys is not fundamentally different. there are different societal norms around each and different things you may have to address with your children but they are not different species and in an ideal world (which I recognize that we do not live in) it would not be different at all, your child(ren) would just have different interests and different behavior just as all children do. the idea that being a "girldad" is particularly special because you have to be more in tune with your emotions or that you have to "deal" with more emotions or more dress up play or whatever versus "boymoms" being special because it's women having to deal with rambunctious boys is ridiculous for both the children and the parents as well. there are plenty of women who enjoy the outdoors or sports or cars or whatever else people imagine to be solely within the realm of masculinity. there are plenty of men (and ought to be more) who like dressing up or enjoy playing tea parties with their kids (of any gender!) or don't mind pink and sparkles or anything else people imagine to be in the world of feminity. being a father to a daughter should not be any different to being a father to a son, and the fact that oftentimes "girldad" as a concept is used to put competent fathers of daughters onto a pedestal is ridiculous to me. yes, good parents and good fathers should be applauded, and i understand the historical context as to why the latter are so lauded, but acting as if it is unique and strange to be the father of a girl is ridiculous. my dad was not special or strange for wanting to spend time with me or play polly pockets or whatever when i was a kid. he was being a parent. it's sad to me that that is considered unusual or that we have to make up a word for "dad that is willing to play with his child."
21 notes
·
View notes
Text
Version 529
youtube
windows
zip
exe
macOS
app
linux
tar.gz
NOTICE! For everyone but macOS, Version 527 had special update instructions. If you are updating from 526 or earlier, please consult the post here: https://github.com/hydrusnetwork/hydrus/releases/tag/v527
I had a good week. There's a new quick lookup system that lets you search for a file's source without importing it.
full changelog
sauce
Every now and then, I am looking at a file outside of hydrus and I can't remember who the artist/character is, or I want to know if I have the artist subbed. When it isn't something the common online source platforms support, I usually download the file, import it to my client, and then do a 'open->similar looking files' on it to see everything I have that looks like it to get more info. I'm basically doing SauceNAO but on my own client. I wanted a way to do this faster.
So, this week, check out the renamed 'system:similar files' predicate on a fresh search page. It now has two tabs. The latter is the normal 'system:similar to' that takes file hashes, if you need to do some manual lookup between imported files, but the first panel is now essentially a paste button. If you copy image data or a file path to your clipboard and paste it there, it'll calculate the similar files info and embed it into the search predicate, letting you search for anything that looks similar to what you have in your clipboard. Give it a go!
I also added a search cache to the main 'similar files' search system. Repeat searches should be massively faster, and searches you re-run with increased distance, like 0 to 4 to 8, and the background similar files search should also accelerate naturally as the cache populates. My 10k file test client's similar files search sped up about 3-4x! I'm not sure what a million+ file client will do, but let me know what you see.
other (advanced) highlights
The v527 update went ok, no massive problems, but I wish I had done a bit more testing. Some Win 10 users are getting a two-second delay on opening any page due it seems to a Qt bug that got fixed in the next update, and putting these new libraries in front of more eyes would have caught this. Therefore, I have made a 'future' beta build that is the same code as the normal release, but it uses the newer library versions I am planning to next update to, for instance Python 3.10 instead of 3.9 and Qt 6.5.0 rather than 6.4.1. I am not sure how often I will put these future previews out--maybe once a month, maybe every week--but for now, if you had any weird issues with the recent update like the two-second bug, please check out the 'future' version of last week's 528 here: https://github.com/hydrusnetwork/hydrus/releases/tag/v528-future-1 . I'd also like to hear from anyone who has an older or unusual system and just wants to try it out. I particularly want to hear about problems--if you need to perform a clean install to update, if you have an older OS and it straight up won't boot, just any feedback on what is good and bad, and I can tweak it before I roll the updates into the master branch.
Thanks to a user, the HTML parsing formula now lets you search the previous or next siblings of a tag (instead of just descendants or ancestors). If you know you need the 2nd 'p' tag after the 'div' you have, it should be pretty easy now!
next week
I'll keep at small jobs and cleanup. I realised just now that my new similar files paste button should probably take direct file URLs too, so I'll give that a go. It'd be nice to hammer out some more Client API stuff too, and I really need to catch up on github issues, but we'll see. I am not firing on all cylinders right now, so I am keeping it simple.
1 note
·
View note
Text
hm. i should start over on that tumblr post saver. now that i actually know [literally anything at all] about webdev and web apis and shit, i bet i could do a WAY better job than my previous 'reblog 200 posts to another blog' attempt, because franlly that script sucks dick, is worthless, and i never even bothered to set it up such tjat it ran continuously (had IDEAS to run it off an rpi, but never even got ariund to figuring THAT out. jeez...)
id defijitely also want to get/make a viewer, too. because, frankly, exporting a shitton of xml or json or whatever the fuck? not even helpful at all. lame!
though, hm. i have... no idea, how to make working webpages (cuz if u cant get stuff of a certain tag whassa point)
maybe a self-contained exe that runs both the server and the client? that might not be a terrible idea
viewer levels:
literally just xml
generate a basic html file that contains all da posts
make it have css too (how?) (i dontnknow right now fuck off)
allow tag filtering based on runtime arguments (postviewer.exe -tags 'honk, fuck, kill' -reblogs false)
allow tag fiktering from within the viewer, by clicking on tags. like tumblr does jow, kinda.
search up tags, too.
would also wnana be able to capture pictures. other media forms would be good, but pictures are franjly mandatory. (i dont feel thatd be super hard tbh. download image, rename it according to the post id, have that be accessible in the folder. append a cointer for multiple images in a post)
multiple post types is a potential worry. how are dialogues handled? has the way tumblr stores / encodes posts changed since the strt (surely, right)? how are reblogs hanxled, in the code?
would probably be helpful to find or make a test blog. fkr experimentation, and testing. on a blog.
i like this idea, i feel ike its smth i could actually do AND that is actually useful. maybe i could start over christmas break. plus, if i getthis working good and reliably, maybe i could let other ppl use it, too^_^ (for showing off to irl ppl, include one of the sandsverse blogs as an example. nice and weird, but so weird it works imo? plus iirc a nice variety of post types. not so good with taghing though iirc. check that later, maybe one is betterthan the other ones.) (yeah just went and checked sandsvendor. no damn tags. cmon seymour.)
anyway. might be a good idea to slot all the posts into a database? could sort by notes and shit, that way... but it also kinda implies rails (cuz thats tje only database-oriented stuff i interact with...)
doing thus in rails feels kind of stupid. plus, load time on start? should NOT be long, prederably under thirty seconds imo. idk hlw achievavle that is with rails or an sql darabase in general, since i know my blog for example has like 30000 posts or more if u include everything. which wasnt the initial plan, but... meh.
hm. okay. so.
initial plan: save all posts on a tumblr blog with one/more of a given set of tags. eg, the set [blog, saved, later] would catch posts woth tags [blog, i hate you, five dogs] and [later, saved, i love this so much] but not [aaaaa, you you you you, two] or []. Images (and possibly other media) attached to such posts are to be saved as wrll, in a format in which they can be retrieved at time of viewing. This process must be enactable with minimal user input, beyond choosing the tags and the blog url. Posts must be saved in a non-volatile format, ie they must be retrievable not just by this program. (bare minimum)
A viewer should be included, which is capable of rendering the posts in a manner that is human-readable. Posts must have all text, tags, timestamps, and images (possibly other media) as when they were on tungle.net.
Optionally, posts ij the viewer should be sortable and filterable. Users should be able to filter by tags (and possibly also timestamps, and whether the backed-up blog is the OP of a post). Users should be able to sort by timestamp both ascending and descending (if u need to sort by anything else well nyeeeeh)
okay! so. i THINK that really the main thing that rails kr another web framework would be needed for is tgat last point, and maybe the formating. i have no idea how hard/easy adding css formatring to straight html is (probably hard lol<_<)
hmmmmmm. okay. ill be real w u here. doing this in rails feels... dumb? Im not here to build a web app.
then again, filtering by tags, sorting? those are practically what databases were MADE to do. so if i want those (and, franjly, i do!), then it may be wise to resign myself to needing to use something of that nature.
maybe i could look into what those homestuck viewer people did? thats basically the platonic ideal of what i want this to be: a familiarish interface used to sift through the wreckage of the past.
hm. well, if any of yall have any ideas, feel free to chime in! hopefulky i end up actually doing this, so any tips would be super appreciated! (esp on how to handle the iewer part <_< thas the psrt that turns this from a script to a real projext imo)
11 notes
·
View notes
Text
END OF AGE: Our Winners from Age 86: Global Viction
This is our end age article covering our winners in the following categories: Networth / Land / Honour / War Win Crown. For the age, fairly cut and dry as we have two kingdoms that covered all categories: Emeriti won the networth and land crowns Barcoloco won the honour and war win crowns I caught up with both kingdoms to ask them about their age and to dig into some of the events that were important and played their part in coming out on top for their respective areas. EMERITI Dorje made himself available to talk to me about Emeriti's age: Mad_Scottish: Hi Dorje, age 86 Global Viction is over and Emeriti have come out on top for the land and networth crowns. Was growth and having a run for #1 the goal set for the age? Dorje: Sure. We wanted to war some, then grow. Mad_Scottish: Normally you would think that warring first would stunt growth while those focused purely on growth could get ahead. Was that a concern that you had at all? Dorje: Growth is always a crap-shoot, because you start with a lot of pool and so long as you are in war you will grow in pool without bound. Normally whoever gets wars is going to be able to double size in postwar and always end up bigger than the province that is OOW. The downside of warring is you cannot get large and strong TMs or cows, which you can do with pool aiding OOW. Mad_Scottish: That's a really good point that I totally missed with the mechanics! I believe you had 3 wars in total, were these back to back or did they end up a bit spread out? Dorge: Essentially back to back, yes. In protection we had a war arranged with what later turned out to be ascension, but as they were all undead war heroes we decided that was a suicide move. expected them to wave us but they instead kept relations open so they could put up cows. Then we lucked into a first war by waving a war-tier kingdom, and arranged a second and third war before dumping pool. The way the game works, if you have complete protection in postwar you can almost always simply dump to like 15% bigger than the next biggest kingdom, and then bully them to ensure a win. Mad_Scottish: Was the success of growth linked purely to the work during the end of war CFs? What was the plan out of war, planned waves/randoms? Dorje: Planned waves. Randoms don't exist. Mad_Scottish: Were there any points in the age that were turning points/really helped out with growth beyond the wars and end of war CFs? Dorje: We waved down on several kingdoms after our last war, so that helped with growth. however two kingdoms began giving us 3 meter a day of plunders/robs, so we could never really stock money as you would normally do in a position when ahead waiting for others to catch up. at one point Ronin did a plunder wave and we accidentally gave them ops so they FG'd 700M GC. having our small provinces always broke certainly made growth hard for most of the age. Mad_Scottish: Things were getting really hairy towards the end with #2 for nw/land and then the war with Barcoloco happened. What was going on there? What was going on at the top politically? Dorje: After they waved us, we EoA cease-fired Ronin. But SWEA would not stop robbing, or ceasefire us so that we could fight Barco and of course Barco did the same play of exploring to 15% bigger, so all the gold would be needed for a fair fight. The assumption that Barco and SWEA are friendly made this look even dumber, and SWEA had also out of nowhere told us earlier in the age they might wave into our war prep later. So we did not give Barco the full 97 hours of free pump, and waved into their postwar. After that things went down as one might expect: SWEA did wave into our war prep, we had 7 broke provinces for the fight with Barco, but we pulled out land and networth in what turned out to be a pretty even fight. Mad_Scottish: If i remember correctly, there looked to be almost a 20k jump in acres. Is that accurate? I want to say I think I remember you being around 156k before the war with Barco Dorje: My numbers may be imprecise. I think we were around 160k with 10k pool, and Barco explored 105->180k in postwar or something. So we dumped pool, waved, they ended up re-dumping even more pool with the 5 day ceasefire so were around 160k. Then SWEA waved us for 15k or something so we were within ~500 acres when the 5-day ceasefire ended. Mad_Scottish: Did the war with Barco end or did it just run through the end of the age? Dorje: Ran through EoA. I believe it was around 40 hours Mad_Scottish: Any other highlights from the age that made things interesting or just come to mind? Dorje: From a utopia perspective, it was a uniquely boring age. Nobody was competing except for Ascension, who went inactive halfway through the age, and Barco who was staying tiny to ghetto farm. The highlight I suppose would be the Black Lives Matter movement, which a lot of kingdoms renamed to support. Mad_Scottish: Any shout outs for the age? effort from the kingdom/particular players? and any closing comments from you? Dorje: Shout out to everyone in the kingdom: grant, nimtar, arpi, juicebox, unos, universe, hengz, binar, chad, allanon, sjippe, dumnorix, peetah, carber, retard, jalgir, jcdb4, kax0, chris_keeling, tox, octobrev, megafusion, lagski, jorosar, and Nuck. And a shout out to everyone who believes black lives matter. BARCOLOCO Maugrim made himself available to talk about Barco's age: Mad_Scottish: Age 86, Global Viction has wrapped up. Barco has come out on top for war wins and honor. What was your final war number and number of war wins? Maugrim: Oh jeez, I can't even remember the war score anyway. We ended with 5 war wins out of 6 wars, and we were in a war with Emeriti when the age ended, but that obviously doesn't count towards anything, I think. Mad_Scottish: How did the wars work out over the age? Were you able to plan all wars or did we have some good old waves and declarations? Maugrim: I'm probably the worst person to ask these things. I know the last three wars were arranged for sure and we had start dates and stuff. I think the first OOP war we lost was too, but maybe the 2nd was from waving, I can't recall exactly. We sat OOW a little longer than we would like to on some occasions. But that can be timing and a bunch of different things. Overall, I think it was pretty smooth Mad_Scottish: You pipped Hipmunks to the honour crown. Do you think the setup helped hold on to honor? Maugrim: For sure, we had a few extended wars too which let us float more upwards. Mad_Scottish: I should have taken a screenshot of the kingdom page before the age resets. Were the T/Ms able to stay out of range and hold onto the honour or was there more of an even spread across the kingdom? Maugrim: Most of the honour was definitely on the TM provs, we had a few big avians who managed to hold some, but that honour is always fairly fluid. The TM did most of the honour carrying and it's a lot more protected there Mad_Scottish: Was there a particular war where you grabbed most of the honor or fairly spread out across each of the wars? Maugrim: Our war vs the hitch hikers guide kingdom, 7:11??? I want to say, it lasted maybe 4 days and that one really let us pack on some big honour stacks. They had quite a bit of honour themselves, and just the extended nature of the war let us take a lot more than one might be normally able to. Mad_Scottish: Between wars, were you waving or was it a case of sit and pump to get ready for the next war? Maugrim: No, we waved a few times. That garbage 5:11 kingdom Fluffy? We waved them. We're often forced to wave, and it's fun that way. Excited for this age and waving all the time! Mad_Scottish: Any real stands outs for the age that come to mind for you? Anyone that you want to give a shout out to? Maugrim: It was a fun age with some good ol' fashioned drama. Looking forward to this age though! Shout out to everyone in Barco Mad_Scottish: End of age got very interesting with the moving pieces related to the war with Emeriti. We received the version from them, what is your version? Maugrim: After we beat Hipmunks, we were faced with a choice many have faced in the past while sitting in the shadow of Emeriti at second place: be content with second best, or try to win it all? The odds were decidedly NOT in our favor: we were less than 50% of Emeriti’s size, Emeriti had *billions* of gc, and they had sat on the throne of the number one spot for *weeks*, with nothing to do other than to pump GC, WPA, sci, whatever the heck they wanted. They even tagged up after their second war win, confident they had secured the age. Keeping with our fighting tradition, we went for it all. For 48 ticks into our EOWCF, we did nothing but send aid and hit explore on our provs. Each prov was absolutely dry- no GC, no soldiers, no WPA, nothing. And Emeriti could see this, because they intell'd us each tick. Nothing but empty acres. How could Emeriti possibly be scared? So what did Emeriti do? Trad and raze into our EOWCF like a bunch of cowards. The only explanation was their PTSD from the last time they literally handed us their crowns after we dumped our entire pool, Emeriti accused us of cheating, DavidC confirmed we hadn’t, and then proceeded to farm out to us to the tune of 22,000 acres. Emeriti’s pathetic excuse for their cowardly actions? They couldn’t get a CF with wee little SWEA to protect their 2.5 billion GC. Odd—seeing how Emeriti still had 1.15 billion GC after training at the start of our war (10x more than us) . . . After being completely stunned by Emeriti’s actions, we fortunately found out that we could force CF because we were decidedly *well* out of NW war range. What we *didn’t* know was there was a known bug that had prevented Hipmunks from crowning just the age before, that sat unfixed for an *entire* age. Until now. When it was Emeriti—and not Hipmunks—running with its tail between its legs to DavidC, he immediately fixed the bug within half an hour. The cherry on top was DavidC’s audacity to send a snarky, patronizing in mail to each of our LS, “thanking” him for helping find this bug. As if he hadn’t known about it for an entire age, but couldn’t care less until now that it was affecting his golden child. Everyone thought we had given up by that point, having been beat down by both Emeriti and DavidC. But we made the impossible choice to kill 4 provinces—Adi, Bry, Powwow, Rageman (they deserve shout outs)--that had worked hard the entire age in order to get our kingdom out of land war range—our last hope at fighting Emeriti. Dorje claims it was a fair fight. Frankly, that’s the only way Emeriti can sleep at night. But the fact of the matter was that it was a 25 v 21 province fight, Emeriti still had a +1 billion GC lead, and they had literally 3/4 of the age to pump sci/wpa against a kingdom that Emeriti could not even stand to let grow peacefully from 70k to 150k acres in 2-3 days. Emeriti’s decision to hit into another KD’s EOWCF was an act of cowardice. They knew it and everyone knew it. Dorje even had an explanatory speech ready at his fingertips to post in Discord within *minutes* in an attempt to justify his actions. They’ve established a precedent that, if ignored, will ultimately result in the demise of this game: (1) there is no code of honour or conduct in this game, i.e. anything goes; (2) developers, particularly DavidC, are biased towards certain players and kingdoms that will result in age-changing bug fixes for some and not others. **End of Article** Journalist note: Congratulation to your crown winners. Best of luck in the new age! HERE WE GO!
0 notes
Text
Version 446
youtube
windows
zip
exe
macOS
app
linux
tar.gz
I had an ok week. The client does not have a huge changelog this week, but the server has a neat privacy improvement.
The PTR is going to be doing a heap of maintenance this week. It will be 'busy' a lot, approximately one hour of busy and then three hours free. Please bear with it, and if you have a million mappings to upload, I recommend you just give it a break and come back later. I am not totally sure how long it will take. Best case it is a day, worst case it might take four or five.
null account
tl;dr: The hydrus server is now even more anon. You don't have to do anything.
As the PTR has moved to multiple accounts, we've had several good discussions about privacy. Separate accounts, despite being anon, could potentially leave a fingerprint of preferences on the server. If the server were to fall into bad hands many years from now, someone could mine those records--maybe mixed with one time you casually said 'yeah, I added that sibling'--and perhaps derive something from it.
There is no technical need to remember which account uploaded what long term, so now all hydrus servers completely anonymise their content after a certain duration, default 90 days. A new non-useable 'null' account takes possession of files, tag mappings, siblings, or parents after the delay, letting the original uploaders be forgotten. Janitors will still have time to work on recent account-based problems, but the historical record works just like the old shared public account: all merged together.
I have updated the privacy document in the help to talk a little about it. As long as you do not tag your own face in pictures or something, I think we are pretty great now, especially if you use a VPN.
https://hydrusnetwork.github.io/hydrus/help/privacy.html#account_history
It will take some time to anonymise the PTR or any other big server, as it has to go through its whole historical record to catch up. Please bear with it.
full list
misc:
fixed a typo bug in the latest pending upload routine when it was cancelled/errors out early
fixed a problem with the new subscription gap downloader, where when the page opens with the first query, it could sometimes assign 'already in db' to items in that query that were actually 'successful'. some other downloaders may have been rarely hit by this, but it was mostly the gap downloader
the client _should_ now support a service host that has path components (e.g. one hosted on a proxy), like myserver.com/hydrus_repo. the port will now be correctly inserted in the address before all requests. hydrus and ipfs both should work, fingers crossed
when an admin modifies the account types, the server now only prints the 'updated account type' log record if there were actual changes
.
downloader UI:
the confusingly named 'file import status' and 'gallery search log' in the downloader system are now renamed 'file log'/'search log'/'check log' for the file import queue, gallery downloader, and watcher respectively. the 'table' bitmap buttons are also replaced with simple easy (and easy to refer to!) label buttons.
when you open the file/search/check logs from the downloader page list right-click menu, they now spawn properly inside regular windows, not modal dialogs (which were inhibiting interaction with the rest of the program while open)
relabelled the awkward 'even if url/hash recognised' checkboxes in file import options. 'do not skip if' becomes 'force download even if', and the text matches that in tag import options for page content. also improved the tooltip on these checkboxes
all of the downloader layout boxes have also been renamed and harmonised with each other. gone are overly technical 'import queue' and 'gallery parsing'. now it is generally 'imports' up top and 'search' or 'checker' etc... below
layouts have also been harmonised a little. the url downloader page now has boxes for file vs search URLs, the hard drive import pause button is moved up as other pages have, and several off-by-a-pixel sizer layouts have been fixed
.
null account:
to further improve server privacy, particularly after the PTR's multiple account switch, all repositories now forget which accounts uploaded which content after a certain age. by default it is 90 days, but you can check in _review services_ once a server updates. this defends against a variety of hypothetical attacks where someone very clever gains access to the raw server database files, maybe years from now, and tries to crawl its anonymous account history for derivable information--now there is no history!
it will take some time to retroactively scrub a huge server like the PTR. for the PTR, it is mostly a relative no-op of moving account ids from the old public shared account to a new 'null' account, but it'll still be about 1.2 billion rows! this happens in the background, so the server will still be useable most of the time, but it will have spikes of 'busy' for about one hour every four (i.e. one hour of mostly busy, three hours of free), probably for several days. it may be a pain to try uploading a bunch of stuff in that time, so if you have a million pending mappings, you might like to just give the PTR a break for a few days. once it has fully caught up, the anonymisation should only be 20-60 seconds of 'busy' a day
the way the anonymisation works is all serverside services now have a single non-useable 'null account' that will take possession of all content after the delay. the original uploader is lost, and the whole historical record is merged together.
the privacy help doc has been updated to talk about the new anonymising system. overall, I think the null account pretty much eliminates the speculative account cross-referencing worries we had, and I am happy
.
admin/janny info:
for admins, all repositories now have an 'anonymisation period' option that you can edit in the service admin menu, defaulting to 90 days (min 1, max 360). you'll also see summary statements in the server logs as updates are anonymised. anonymisation will kick in two minutes after boot, so if you want to change this value immediately on update, get ready and be quick about it!
for jannies who can see accounts, you will see the null account pop up in reference to older content (moreso in future when I expand janny UI and permissions). it being special is highlighted, and various account modifying UI shows it cannot be edited
also for jannies/admins, I had to do some wickity woo to get the null account to work without a network update for everyone. if you try to look at the null account on 445 you may get an error. normal users won't run into this, but there's a kind of 'soft' network version update for you today
next week
The null account took most of my time this week, and I now have several extra little jobs to catch up with. So I'll bash away at that small work, and I'd really like to crack the multiple column lists that keep growing in width.
0 notes
Text
Version 440
youtube
windows
zip
exe
macOS
app
linux
tar.gz
I had an unfortunately short week, but I did some good work. The tiled renderer has nice fixes.
tiled renderer
I regret the tiled renderer, while good most of the time, had crashes when it did go wrong. To stop this with any new errors that might pop up, the whole block now has an additional layer of error catching around it. If a tile fails to render for any reason, you now get a black square, and if some coordinate space cannot be calculated or a portion of the image is truncated, the system will now print some errors but otherwise ignore it.
A particular problem several users encountered was legacy images that have EXIF rotation metadata but were imported years ago when the client did not understand this. Therefore, hydrus thought some old image was (600x900) when it then loaded (900x600). In the old system, you would have had a weird stretch, maybe a borked rotation, but in my new tiled system it would try to draw tiles that didn't exist, causing our errors-then-crashes. The client now recognises this situation, gives you a popup, and automatically schedules metadata regeneration maintenance for the file.
some misc
You can now set a custom 'namespace' file sort (the 'series-creator-volume-chapter-page' stuff) right on a page. Just click the new 'custom' menu entry and you can type whatever you like. It should save through your session and be easy to edit again. This is prep for some better edit UI here and increased sort/collect control, so if you do a lot of namespace sorting, let me know how you get on!
I prototyped a new 'delete lock' mode, which prohibits deletion of files if they match a criteria. I am starting with if a file is archived. You can turn this mode on under options->files and trash. It mostly just ignores deletes at the moment, but in future I will improve feedback, and maybe have a padlock icon or something, and eventually attach my planned 'metadata conditional' object to it so you'll be able to delete-lock all pngs, or all files with more than four tags, or whatever you can think of.
new builds to test
This is probably just for advanced users. If you would like to help test, make sure you have a backup before you test anything on a real database!
A user has been working hard on replicating the recent macOS build work for the other releases, cribbing my private build scripts together into a unified file that builds on github itself from the source, as well as rolling out a Docker package. I have had a look over everything and we agree it is ready for wider testing, so if you would like to help out, please check out the test v440 builds here:
https://github.com/hydrusnetwork/hydrus/releases/tag/v440-test-build
These should work just like my normal builds above--the scripts are using PyInstaller and InnoSetup as I do on my machines, so it all assembles the same way--but we are interested in any errors you nonetheless encounter. We may need to hammer out some stricter library version requirements for older machines, since until now we've basically been relying on my home dev environments staying static until I next remember to run pip update.
Once we have these working well, I'd like to use this system for the main build. It makes things easier and more reliable on my end, and should improve security since the builds are assembled automatically in clean environments with publicly viewable scripts rather than my random-ass dev machines using my own dlls, batch files, and prayers. Who knows, we may even defeat the anti-virus false positives.
Also, if you would like to try the Docker package, check it out here:
https://github.com/users/hydrusnetwork/packages/container/package/hydrus
I don't know much about Docker, so while I can't help much, I'll still be interested in any feedback. If and when we are ready to switch over here, I'll be updating my help with any appropriate new backup instructions and links and so on.
Please also remember that running hydrus from source is also always an option:
https://hydrusnetwork.github.io/hydrus/help/running_from_source.html
As we went through this process of automating my builds, we've improved the requirements.txts, and I've learned a bit more about automatic environment setup, so I hope I can also add some quick setup scripts for different platforms to make running from source and even building your own release much easier.
full list
tiled renderer:
the tiled renderer now has an additional error catching layer for tile rendering and coordinate calculation and _should_ be immune to to the crashes we have seen from unhandled errors inside Qt paint events
when a tile fails to render, a full black square will be used instead. additional error information is quickly printed to the log
fixed a tile coordinate bug related to viewer initialisation and shutdown. when the coordinate space is currently bugnuts, now nothing is drawn
if the image renderer encounters a file that appears to have a different resolution to that stored in the db, it now gives you a popup and automatically schedules a metadata regen job for that file. this should catch legacy files with EXIF rotation that were imported before hydrus understood that info
when a file completes a metadata regen, if the resolution changed it now schedules a force-regen of the thumbnail too
.
the rest:
added a prototype 'delete lock' for archived files to _options->files and trash_ (issue #846). this will be expanded in future when the metadata conditional object is made to lock various other file states, and there will be some better UI feedback, a padlock icon or similar, and some improved dialog texts. if you use this, let me know how you get on!
you can now set a custom namespace sort in the file sort menu. you have to type it manually, like when setting defaults in the options, but it will save with the page and should load up again nicely in the dialog if you edit it. this is an experiment in prep for better namespace sort edit UI
fixed an issue sorting by namespaces when one of those namespaces was hidden in the 'single media' tag context. now all 'display' tags are used for sort comparison groups. if users desire the old behaviour, we'll have to add an option, so let me know
the various service-level processing errors when update files are missing or janked out now report the actual hash of the bad update file. I am chasing down one of these errors with a couple of users and cannot quite figure out why the repair code is not auto-fixing things
fixed a problem when the system tray gets an activate event at unlucky moments
the default media viewer zoom centerpoint is now the mouse
fixed a typo in the client api with wildcard/namespace tag search--sorry for the trouble!
.
some boring multiple local file services cleanup:
if you have a mixture of trash and normal thumbnails selected, the right-click menu now has separate choices for 'delete trash' and 'delete selected' 'physically now'
if you have a mixture of trash and normal thumbnails selected, the advanced delete dialog now similarly provides separate 'physical delete' options for the trashed vs all
media viewer, preview viewer, and thumbnail view delete menu service actions are now populated dynamically. it should say 'delete from my files' instead of just 'delete'
in some file selection contexts, the 'remote' filter is renamed to 'not local'
next week
I had a run of IRL stuff eating my hydrus time, but I think I am now free. I'll catch up on smaller work and keep grinding at multiple local file services.
0 notes