--- 2025 --- 11-15 (1.0.0.3) - The "oops I never checked if Unicode text worked at all" fix update. - FIX: Problem: non-ASCII characters were printed as if they were many characters, not 1. Cause: I refactored my UTF-8 functions a while ago but I guess I never tested if they were correct. I used to check for !(char&0x80) to detect UTF-8 characters, at some point I switched that to (char<=0x7F). I assumed it was the same because mentally I think of text as just a bunch of bytes, however I didn't realize that since the character type in C is a signed integer, it can be negative which means that ALL bytes values will match (char<=0x7F). - FIX: Problem: if the query had non-ASCII characters, espcially at the start, it may not be found even if it exists in files. Cause: similar to above, some parts of the query matching were wrong work due to char being a signed integer. - FIX: Problem: pasting non-ASCII text from clipboard didn't work. Cause: to get something from the clipboard, you have to check many different formats, and use the one that you prefer. I first check for Unicode text, then for ASCII text, but I forgot to return if the unicode text was found, so it always got immediately overwritten by ASCII text. I've changed my clipboard functions many times because the API is a pain to use, and I screwed it up somewhere along the way. - FIX: Problem: memory leak when copy pasting text. Cause: I forgot that my clipboard function uses a normal (non-temporary) memory allocator and the memory needs to be freed after being used. - WHOCARES: Switched all my library files for who cares why. There's a chance that something broke because sometimes I fix a thing for a program, but forget to save the changes to my master libraries, and then something like this brings the problem back. The executable is also slightly smaller. 10-29 (1.0.0.2) - FIX: Problem: some of the state files (remember.state, saved_*.txt) got corrupted sometimes, and who knows what problems might have been happening. Cause: I accidentally stored their file paths in temporary memory, which is of course temporary so the paths got discarded later and the memory was used all wrong. - FIX?: Problem if the search query only contained whitespaces (for example " "). Cause: The matched lines get trimmed (to prevent showing a bunch of tabs/spaces at the beginning), but if the match only has spaces then it will be completely trimmed out and become 0-length. I don't think it ever actually affected the release builds of the program though (triggered an assert that gets removed for release builds). 10-07 (1.0.0.1) - FIX: Problem: the query did not accept quote marks or backslashes, and maybe had other problems. Cause: I accidentally applied a path filter on all the text inputs, not just the path input, so the query was modified as if it was supposed to be a file path. - WHOCARES: Changed the "Src" label text to "Query". 10-05 (1.0) - NEW: Ability to set a whitelist/blacklist for file names. - NEW: Ability to search for file names. - ENHANCE: Added a button to toggle file size limit. Previously you had to remove it from settings.txt if you wanted to disable it. - ENHANCE: File names can now be clicked too. - ENHANCE: Text no longer overflows the text inputs. - ENHANCE: Search is no longer restarted just from opening dropdowns or clicking inputs. - ENHANCE: The location of the match is now highlighted on the match lines. - CHANGE: In the match list, the file path is now shown before the file name, not after. - CHANGE: Inverted the case sensitivity button: before the button meant that sensitivity is off, now it means sensitivity is on. Also changed the text from "A=a" to "Case". - FIX: Problem: some customizable left/right click actions on matches didn't work. Cause: in 0.9.8.5 I made all paths have a trailing slash, but I forgot to remove them for the click actions, so they ended up having multiple shashes in the file path. I didn't notice this until now because I use a text editor where it doesn't matter. 09-12 (0.9.8.6) - FIX: Line numbers become off by 1 for every match in a file. Cause: When a match is found, the whole line is treated as a match and the line number is incremented. Problem was that the search continued at the line break character instead of after it, so the line was counted twice. This wasn't always a problem, I guess I created it by accident along with the search optimization..? - FIX: If a match is found at the end of the file, the text will be cut off. Cause: when searching for a match, STST reduces the file size by the query length because that helps safely search the file. This reduction was accidentally shown in the match. 08-21 (0.9.8.5) - ENHANCE: Improved the path input to fix issues and make navigating through folders easier. Pressing [Enter] no longer switches to the query input, it just enters the folder. You can now click path suggestions, and added "<-" into the suggestion list which takes you backwards, it's easier to navigate with a mouse. Trailing slashes are now handled in a more consistent way. The program no longer crashes if the path is something like "C:", and if the path has no "/" in it, it will list your computer's drives. - ENHANCE: STST now remembers the window position, window size, and case sensitive mode, and restores them when you open the program again. - VISUAL: Improved the visuals of the buttons/icons. - FIX: Problem: The favorite buttons didn't work properly in some cases. Cause: A tangled mess of code. Fix: Lazy patches that makes it even more of a tangled mess, but maybe I'll untangle it later... surely. - FIX: Problem: Case-sensitive search that starts with an upper-case character didn't work. Cause: Case insensitive search works by turning all uppercase letters into lower case ones. I accidentally used a case insensitive check on one place even in case sensitive mode, so the file effectively had only lower case letters, but the search query did not. 08-18 (0.9.8) - FEATURE: Added a button to toggle case-sensitive search. - PERFORMANCE: Optimized the search, should be a bit faster now. It used to check every character in a file separately, but now it checks 8 characters at the same time. - VISUAL: Favorite buttons now have a star icon. - FIX: Problem: the path input breaks if there's spaces at the end. Cause: There's a function that cleans up file paths to remove potential issues, one of the things it does is remove trailing/leading spaces. I didn't realize that it would cause a problem like this. The text edit cursor was also not moved after the path was altered, so it behaved weirdly. - FIX: Problem: the folder suggestion list goes away if the current path exists, even if there's more potential matches. Fix: the suggestion list is now always shown when the path input is selected. - FIX: Problem: sometimes clicking a text match will not do anything. Cause: I'm not 100% sure how, but my program is not getting a "mouse button was lifted" event after the click command is executed, so the button state gets stuck down, and it only resets after the next click. Maybe it has something to do with the fact that the text editor window may open and get focused before you lift the mouse button. The STST window does understand when you click the window and lift mouse outside of it, but somehow in this case it doesn't work. Fix: I forcibly create a mouse button lift event after a text match is clicked. 08-17 (0.9.7) - ENHANCE: Remade a bunch of my super old window related functionalities. - The window now scales better for high-DPI monitors. - The window contents now update immediately when the window is resized, previously it only updated after you lifted the mouse button. - The window now starts with a dark background color, no more white flash at the start. (This doesn't always work because Windows is a piece of shit.) - The bottom/right edges of the window now work properly. A collision test was off by 1 pixel, so the program thought the mouse was on top of the inner window area and changed the cursor into an arrow even though it was supposed to have the 'resize' cursor. - FIX: Problem: The yellow outline did not always go away properly. Cause: The window only updates when something new happens. The search being finished was not considered as something new happening, so the outline would only go away the next time you move the mouse or use the keyboard or something. Fix: the window now updates once when the search ends. - FIX/WHOCARES: Problem: The scrollbar was rendered on top of the yellow outline. Cause: I was too lazy to fix it because the code that determines whether or not to render the scrollbar was in an inconvenient place relative to the code that renders the outline. Fix: I became less lazy and just fixed it. - WHOCARES: the text inputs now react to right click better. Previously they would only update when you lift the mouse button and maybe didn't update at all in some situations, now they should update immediately when you press down. 07-28 (0.9.6) - FIX: Problem: crashes sometimes when typing in the search bar. Cause: There's a program thread that searches files, and there's another thread that reads the results and shows them on the screen. I was hoping I could just be lazy and not have to deal with any data-race issues if thread A modifies data when thread B is in the middle of reading it, but it turned out to be a problem after all. It sounded plausible but I forgot that an array may re-allocate data. I am not 100% sure if the crash is fixed because I'm still being lazy, I just slapped a mutex on it and hoping that's enough. 05-09 (0.9.5) - (initial release)