+ Script info
+ List of available parameters and their script set defaults (null'ed items unless specified get UNSET()):
+ Importing 'cats.ini' key => value pairs from all directories starting in [DOCUMENT_ROOT] thru /updates...
+ UNSET()'ing any parameters = 'null'....6 parameters removed
+ Current [PARAM]eters for this page (CATS.INI::[defaults] + URL-based parameters)
+ Current [KEYWORDS] for this page (CATS.INI / [keywords])
+ Retrieving templates...
+ [PLUGIN] defined => update
+ [PLUGINS] defined => /sean/code/cats/plugins
+ [PLUGINS] => [DOCUMENT_ROOT]/sean/code/cats/plugins
+ [PLUGINS]/[PLUGIN] => '/home/shrumnet/public_html/sean/code/cats/plugins/update.php' FOUND
+ Calling [PLUGINS]/[PLUGIN] for [DATA] array...
+ [DATA] => [51] x [3]
| base | ext | contents | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025.11.02 @ 01.55.00 | .update | [ <font size=2><a href="/cats.php?dir=">/</a></font> ] :: Another rewrite. Bear with me as I get the site back up. Creating subdomain redirects and updating pages and code in my older projects to make sure everything is still working. I'll post links to updated areas here as I go along. | ||||||||||||||||||||||||
| 2025.11.02 @ 02.45.09 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/ezpcdets">/sean/code/ezpcdets</a></font> ] :: Update to EZPCDETS. Use the 'binary' link to download the newer 2.10 version. Addresses Windows 11 max line count of 4 in tray tip windows by consolidating lines. Documentation has been updated. | 20182048 | Sunday | Sun | 2 | 2<sup>nd</sup> | 02 | November | Nov | 11 | 11 | 2025 | 25 | 2 | 02 | am | AM | 2 | 02 | 45 | 09 | 233 | ~7 months | morning | AM |
| 2025.11.02 @ 03.45.09 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/bubbletip">/sean/code/bubbletip</a></font> ] :: Update to Bubbletip. Use the 'binary' link to download the newer 1.10 version. Updated in-app web links and documentation has been updated. | 20178448 | Sunday | Sun | 2 | 2<sup>nd</sup> | 02 | November | Nov | 11 | 11 | 2025 | 25 | 3 | 03 | am | AM | 3 | 03 | 45 | 09 | 233 | ~7 months | morning | AM |
| 2025.11.09 @ 23.20.26 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Numerous code updates to CATS in terms of data validation, additional debug output support, and more proper DIE'ing. Starting to write more function specific plugins as I need them and I'll post those later into the <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats/plugins">plugins</a> area. Documentation has been updated as I went along which can be found in the <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats/docs"> CATS documentation</a> section. | 19503131 | Sunday | Sun | 9 | 9<sup>th</sup> | 09 | November | Nov | 11 | 11 | 2025 | 25 | 11 | 11 | pm | PM | 23 | 23 | 20 | 26 | 225 | ~7 months | evening | PM |
| 2025.11.10 @ 00.52.55 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/autorun">/sean/code/autorun</a></font> ] :: Autorun page and nav links updated. | 19497582 | Monday | Mon | 10 | 10<sup>th</sup> | 10 | November | Nov | 11 | 11 | 2025 | 25 | 12 | 12 | am | AM | 0 | 00 | 52 | 55 | 225 | ~7 months | morning | AM |
| 2025.11.11 @ 23.27.02 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Changes to Hotrkeyz (v1.05) to exclude files in the combo root folder (running only files in the "ShellExecute" and "ShellExecuteWait" subfolders). Tray icon will now display the app title and number of combos being monitored for. Removed the "_sample" combos folder as the app was trapping "_" as a user defined hotkey. 'Support' SysTray menu will now redirect to website support page. Now hosting both x86 and x64 builds for those without AutoIT installed. Links to these are in the Hotrkeyz nav bar. Appended more information on the app in the FAQ's section regarding unassociated filetypes and "combos" folder location moves | 19329935 | Tuesday | Tue | 11 | 11<sup>th</sup> | 11 | November | Nov | 11 | 11 | 2025 | 25 | 11 | 11 | pm | PM | 23 | 23 | 27 | 02 | 223 | ~7 months | evening | PM |
| 2025.11.12 @ 01.43.34 | .update | [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Support page has been changed. Added a "DIYer's" section outlining and providing links to off-site programming sites, forums, and editors. Multiple additions. Moved support email link to bottom of page. | 19321743 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 1 | 01 | am | AM | 1 | 01 | 43 | 34 | 223 | ~7 months | morning | AM |
| 2025.11.12 @ 02.05.18 | .update | [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Changed subdomain and index.html redirect on sean.shrum.net and shrum.net/sean to go to Updates with "search=/sean". | 19320439 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 2 | 02 | am | AM | 2 | 02 | 05 | 18 | 223 | ~7 months | morning | AM |
| 2025.11.12 @ 03.31.34 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/prompter">/sean/code/prompter</a></font> ] :: Minor changes to Prompter (2.02). Now hosting both x86 and x64 builds. Navbar links updated | 19315263 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 3 | 03 | am | AM | 3 | 03 | 31 | 34 | 223 | ~7 months | morning | AM |
| 2025.11.12 @ 16.06.30 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/dir2subs">/sean/code/dir2subs</a></font> ] :: Changes to Dir2Subs (v2.02) to default to the [s]ource directory if the [d]estination parameter is omitted in command line calls. Now offering both x86 and x64 builds for those without AutoIT installed. Links to these are in the nav bar. Added screenshots of dialogs and example output. | 19269967 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 4 | 04 | pm | PM | 16 | 16 | 06 | 30 | 223 | ~7 months | afternoon | PM |
| 2025.11.12 @ 18.24.31 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/execute">/sean/code/cats</a></font> ] :: Minor cleanup to Execute (v1.03). Now offering both x86 and x64 builds for those without AutoIT installed. Links to these are in the nav bar. | 19261686 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 6 | 06 | pm | PM | 18 | 18 | 24 | 31 | 222 | ~7 months | evening | PM |
| 2025.11.12 @ 18.39.01 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/query">/sean/code/query</a></font> ] :: Minor cleanup to Query (v2.04). Now offering both x86 and x64 builds for those without AutoIT installed. Links to these are in the nav bar. | 19260816 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 6 | 06 | pm | PM | 18 | 18 | 39 | 01 | 222 | ~7 months | evening | PM |
| 2025.11.12 @ 19.16.08 | .update | [ <font size=2><a href="http://www.shrum.net/sean/code/relocate">/sean/code/relocate</a></font> ] :: Minor changes to Relocate (v2.04). Dropped SysTray menu item to Homepage and placed it in the About dialog. Minor other tweaks. | 19258589 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 7 | 07 | pm | PM | 19 | 19 | 16 | 08 | 222 | ~7 months | evening | PM |
| 2025.11.12 @ 23.53.23 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/wan2web">/sean/code/wan2web</a></font> ] :: Changes to <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/wan2web">Wan2Web</a> (v2.04). [W]an setting prompt defaults to my <a href="http://www.shrum.net/remote_addr.php">remote_addr.php</a> for wan ip reporting but can be set to elsewhere, set [M]inutes default to 30, and now allow the user to store their FTP password in the registry (you have to manually add it). Updated documention on where to put the key. | 19241954 | Wednesday | Wed | 12 | 12<sup>th</sup> | 12 | November | Nov | 11 | 11 | 2025 | 25 | 11 | 11 | pm | PM | 23 | 23 | 53 | 23 | 222 | ~7 months | evening | PM |
| 2025.11.13 @ 19.47.20 | .update | [ <font size=2><a href="/cats.php?dir=/sean/photos">/sean/photos</a></font> ] :: Got around to creating an area to showcase my <a href="$PHP_SELF$?dir=/sean/code/cats">CATS</a> web server script ability to generate navigable photo albums. Plus it showcases CATS "Random" <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script Parameters - A to Z.shtml#sort">[SORT]</a> ability. Still need to figure out Imagemagick's mogrify command as the resulting output gif files are not respecting the input jpg orientations. | 19170317 | Thursday | Thu | 13 | 13<sup>th</sup> | 13 | November | Nov | 11 | 11 | 2025 | 25 | 7 | 07 | pm | PM | 19 | 19 | 47 | 20 | 221 | ~7 months | evening | PM |
| 2025.11.14 @ 01.10.00 | .update | [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Site ID page change. Note the "wrench" icon preceding the pathname title at the top of the page. Clicking on the wrench on any page generated by my content system will output additional <a href="http://$HTTP_HOST$/*name*?dir=sean/code/cats">CATS</a> debug info by appending "&debug=y" to the end of every URL here. This lets you see what the script is doing behind the scenes. Plus it gives me an easy 1 click option to toggle into debug mode without having to type it into the URL every time I need it. Moved coding around to optimize speed and allow for function skipping when required parameters are not present. | 19150957 | Friday | Fri | 14 | 14<sup>th</sup> | 14 | November | Nov | 11 | 11 | 2025 | 25 | 1 | 01 | am | AM | 1 | 01 | 10 | 00 | 221 | ~7 months | morning | AM |
| 2025.11.14 @ 22.43.59 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/relocate">/sean/code/relocate</a></font> ] :: Added screenshots of window positioning movements to documentation. | 19073318 | Friday | Fri | 14 | 14<sup>th</sup> | 14 | November | Nov | 11 | 11 | 2025 | 25 | 10 | 10 | pm | PM | 22 | 22 | 43 | 59 | 220 | ~7 months | evening | PM |
| 2025.11.15 @ 00.12.30 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Wrote in some [DATA] array testing after performing [WHERE] and [SEARCH] functions to make sure we don't start trying to do array stuff on an empty array which would break things that would normally happen after a valid set of [DATA] was returned. Empty arrays results return an image of a goose egg. | 19068007 | Saturday | Sat | 15 | 15<sup>th</sup> | 15 | November | Nov | 11 | 11 | 2025 | 25 | 12 | 12 | am | AM | 0 | 00 | 12 | 30 | 220 | ~7 months | morning | AM |
| 2025.11.15 @ 17.57.56 | .update | [ <font size=2><a href="/cats.php?dir=/">/</a></font> ] :: Updated site posted to www.shrum.net. Minor changes to site theme page but tweaked the content just about everywhere. My CATS script is now compliant on both my local and remote servers (no more error_log entries). | 19004081 | Saturday | Sat | 15 | 15<sup>th</sup> | 15 | November | Nov | 11 | 11 | 2025 | 25 | 5 | 05 | pm | PM | 17 | 17 | 57 | 56 | 219 | ~7 months | evening | PM |
| 2025.11.16 @ 00.05.11 | .update | [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Reverted back to a <a href="http://sean.shrum.net">site splash entry</a> (a 4y word cloud of my blog from many years ago) when using <b>sean.</b>shrum.net or shrum.net<b>/sean</b> URLs versus throwing everyone directly into the updates page. It was laying around so figured I'd use it. Calls to <b>shrum.net</b> and <b>www.</b>shrum.net still get Diana's project site. | 18982046 | Sunday | Sun | 16 | 16<sup>th</sup> | 16 | November | Nov | 11 | 11 | 2025 | 25 | 12 | 12 | am | AM | 0 | 00 | 05 | 11 | 219 | ~7 months | morning | AM |
| 2025.11.17 @ 11.08.15 | .update | [ <font size=2><a href="/cats.php?dir=">/</a></font> ] :: Shrum.net entry page now forks based on family member. I tested Diana's site in a subfolder and nothing broke. I moved it under her subdomain at <a href="http://diana.shrum.net">diana.shrum.net</a>. | 18855862 | Monday | Mon | 17 | 17<sup>th</sup> | 17 | November | Nov | 11 | 11 | 2025 | 25 | 11 | 11 | am | AM | 11 | 11 | 08 | 15 | 218 | ~7 months | morning | AM |
| 2025.11.18 @ 22.41.49 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Sorting tweaks. Sorting was executing in "case sensitive" mode. Capitalized words would appear ahead of lower cased. Inserted "SORT_NATURAL|SORT_FLAG_CASE" into array_multisort() calls to address this issue. | 18727848 | Tuesday | Tue | 18 | 18<sup>th</sup> | 18 | November | Nov | 11 | 11 | 2025 | 25 | 10 | 10 | pm | PM | 22 | 22 | 41 | 49 | 216 | ~7 months | evening | PM |
| 2025.11.19 @ 20.55.55 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added code variable names in <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats&body=/sean/code/cats/docs/Template Tokens.shtml">Template Tokens</a> documentation so users know where the values are coming from. | 18647802 | Wednesday | Wed | 19 | 19<sup>th</sup> | 19 | November | Nov | 11 | 11 | 2025 | 25 | 8 | 08 | pm | PM | 20 | 20 | 55 | 55 | 215 | ~7 months | evening | PM |
| 2025.11.20 @ 19.44.45 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added code to use $aScript['subdomain'] to create cyclical link between 'local.[domainname]' and 'www.[domainname]' to allow for 1 click switching between development server and live server | 18565672 | Thursday | Thu | 20 | 20<sup>th</sup> | 20 | November | Nov | 11 | 11 | 2025 | 25 | 7 | 07 | pm | PM | 19 | 19 | 44 | 45 | 214 | ~7 months | evening | PM |
| 2025.11.21 @ 01.57.00 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Optimization; <a href="http://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> bails out when conditions do not match user requested terms. This will greatly decrease search times on large data sets. Added '^' for defining a case sensitive search term as all other searches case insensitive (fuzzy). Version rev 4.12. | 18543337 | Friday | Fri | 21 | 21<sup>st</sup> | 21 | November | Nov | 11 | 11 | 2025 | 25 | 1 | 01 | am | AM | 1 | 01 | 57 | 00 | 214 | ~7 months | morning | AM |
| 2025.11.21 @ 21.25.45 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: <a href="https://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#in">[in]</a> parameter now handles user defined field(s) selection for <a href="https://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> and provides more robust filtering options using conditional operators (+/-/"/^). Going forward, the following SQL parameters are deprecated and no longer used with CATS directly (can still be used by plugins): [select], [from], [group], [sql]. | 18473212 | Friday | Fri | 21 | 21<sup>st</sup> | 21 | November | Nov | 11 | 11 | 2025 | 25 | 9 | 09 | pm | PM | 21 | 21 | 25 | 45 | 213 | ~7 months | evening | PM |
| 2025.11.21 @ 23.21.04 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Recordnum counter was not respecting actual record number when displayed as part of a <a href="https://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#limit">[limit]</a> set, was resetting to '1' on page 2, 3, etc. Adding $aRecordset['start'] to $iRecord fixed this. | 18466293 | Friday | Fri | 21 | 21<sup>st</sup> | 21 | November | Nov | 11 | 11 | 2025 | 25 | 11 | 11 | pm | PM | 23 | 23 | 21 | 04 | 213 | ~7 months | evening | PM |
| 2025.11.22 @ 17.26.39 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added sort on CATS <a href="http://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> operators, gives the following order of operation: - (not include), + (must include), none (or), ^ (case sensitive or), " (phrase or) which allows me to halt additional processing on multi term search strings if NOT or AND conditions are not met first (OR conditions skipped). | 18401158 | Saturday | Sat | 22 | 22<sup>nd</sup> | 22 | November | Nov | 11 | 11 | 2025 | 25 | 5 | 05 | pm | PM | 17 | 17 | 26 | 39 | 212 | ~7 months | evening | PM |
| 2025.11.23 @ 19.55.16 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: RECORD2,3,4 parameters are now depreciated and no longer supported. Never used these and really can't see a situation where multiple record templates would be needed. Site documentation updated. | 18305841 | Sunday | Sun | 23 | 23<sup>rd</sup> | 23 | November | Nov | 11 | 11 | 2025 | 25 | 7 | 07 | pm | PM | 19 | 19 | 55 | 16 | 211 | ~7 months | evening | PM |
| 2025.11.25 @ 13.55.40 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: <a href="http://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#where">[where]</a> is now a "server side" protected parameter (if user tries to overwrite or NULL the parameter via the query string, it is ignored). This allows webmasters to filter recordsets prior to passing [DATA] to the user to view and start doing searches on. Ultimately, the best place to do filtering is in a plugin but this gives a more flexible option for when it's needed instead of creating multiple plugins that require redundant coding. | 18154617 | Tuesday | Tue | 25 | 25<sup>th</sup> | 25 | November | Nov | 11 | 11 | 2025 | 25 | 1 | 01 | pm | PM | 13 | 13 | 55 | 40 | 210 | ~7 months | afternoon | PM |
| 2025.12.14 @ 17.13.43 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added value operations to <a href="https://$HTTP_HOST$/cats.php?dir=/sean/code/cats&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> to include >, <, >=, <=. Script documentation updated to reflect these additions. | 16501134 | Sunday | Sun | 14 | 14<sup>th</sup> | 14 | December | Dec | 12 | 12 | 2025 | 25 | 5 | 05 | pm | PM | 17 | 17 | 13 | 43 | 190 | ~6 months | evening | PM |
| 2026.01.27 @ 23.41.16 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/orphaned">/sean/code/orphaned</a></font> ] :: Creating a new app for locating/segregating orphaned files in a backup. These are files that no longer match up to the source locations in active use either because the source file was renamed, moved, or deleted. When such file is found it is copied (maybe moved later) to a subfolder. This allows users with years of backed up files to create a folder of only orphaned files. It's in development and I'll give it the production treatment, complete with command line enabling and dialog prompting later. Right now I'm testing on my backup. | 12676281 | Tuesday | Tue | 27 | 27<sup>th</sup> | 27 | January | Jan | 1 | 01 | 2026 | 26 | 11 | 11 | pm | PM | 23 | 23 | 41 | 16 | 146 | ~4 months | evening | PM |
| 2026.01.29 @ 20.11.10 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/orphaned">/sean/code/orphaned</a></font> ] :: Code and documentation uploaded. Click the link to get more info on this utility for locating orphaned files in a backup. | 12516087 | Thursday | Thu | 29 | 29<sup>th</sup> | 29 | January | Jan | 1 | 01 | 2026 | 26 | 8 | 08 | pm | PM | 20 | 20 | 11 | 10 | 144 | ~4 months | evening | PM |
| 2026.02.17 @ 16.59.24 | .update | [ <font size=2><a href="http://shrum.net/updates">/updates</a></font> ] :: Moved '/sean/updates' to '/updates' (a higher level to act as "catch all" for site-wide updates). Sub area searches can be done thru the search field at the top of the page. Access to updated areas can be done via the included link located at the front of each update post. Direct calls to 'shrum.net/sean/updates' will automatically redirect to the new location and will automatically filter on just '/sean' (sub)area updates. Some update calls from my apps and utilities (if present) will fail but ultimately, all homepage links will continue to work and links to area specific updates will work from there. Code has been updated but binaries should be built to incorporate the new site layout. | 10885993 | Tuesday | Tue | 17 | 17<sup>th</sup> | 17 | February | Feb | 2 | 02 | 2026 | 26 | 4 | 04 | pm | PM | 16 | 16 | 59 | 24 | 125 | ~4 months | afternoon | PM |
| 2026.02.17 @ 18.42.33 | .update | [ <font size=2><a href="http://www.shrum.net/sean/code/ezpcdets">/sean/code/ezpcdets</a></font> ] :: Code and documentation changes. Rev to v.2.20. Hovering over the EzpcDets Systray icon will display LAN1 & WAN address info. Clicking on the Systray icon will display 3 lines: "[Domain] / Computername / Username / os ver and sp ver" on line 1, "Sysdrive free and total" on line 2, and "Sysmem load % and total" on line 3. Binaries are updated. Documentation is updated to include updated screenshots. | 10879804 | Tuesday | Tue | 17 | 17<sup>th</sup> | 17 | February | Feb | 2 | 02 | 2026 | 26 | 6 | 06 | pm | PM | 18 | 18 | 42 | 33 | 125 | ~4 months | evening | PM |
| 2026.02.18 @ 17.52.52 | .update | [ <font size=2><a href="http://www.shrum.net/sean/code">/sean/code</a></font> ] :: In an effort to give me more flexibility on file locations, I've modified all projects to route web calls for updates to '[project dir]/updates.html' which will redirect to the appropriate CATS call and location of the update files. This allows me to move updates in the future without having to modify code and recompile. Additionally, the same has been done for support calls. These now all go to '[project dir]/support.html' to be redirected. Any project that had a 'donate' link in it has had this removed. All projects that use these calls have been updated and recompiled. | 10796385 | Wednesday | Wed | 18 | 18<sup>th</sup> | 18 | February | Feb | 2 | 02 | 2026 | 26 | 5 | 05 | pm | PM | 17 | 17 | 52 | 52 | 124 | ~4 months | evening | PM |
| 2026.02.18 @ 20.42.10 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Rev to v.1.06. Added a 'first run' dialog that explains basic usage of Hotrkeyz. This dialog then goes silent on future executions. Documentation updated to include screenshot of dialog. Added some additional FAQ entries as well. | 10786227 | Wednesday | Wed | 18 | 18<sup>th</sup> | 18 | February | Feb | 2 | 02 | 2026 | 26 | 8 | 08 | pm | PM | 20 | 20 | 42 | 10 | 124 | ~4 months | evening | PM |
| 2026.03.13 @ 00.53.50 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Rewrite and new version 2.0. Now includes an active key capture dialog and uses key names (Ctrl, Alt, Win, Shift) instead of code characters (#$^!). Will not work with v.1 combos as the subfolder naming is different. You will need to recreate your Hotrkeyz combos and copy the program links from your old v.1 combo folders into the new v.2 combo folders. Documentation has been updated with new operations and screeenshots. | 8873927 | Friday | Fri | 13 | 13<sup>th</sup> | 13 | March | Mar | 3 | 03 | 2026 | 26 | 12 | 12 | am | AM | 0 | 00 | 53 | 50 | 102 | ~3 months | morning | AM |
| 2026.04.09 @ 16.20.41 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/launcher">/sean/code/launcher</a></font> ] :: AI assisted redo of Launcher 3.2. New version, new interface, same functionality. Docs, code, and exe are uploaded. | 6485516 | Thursday | Thu | 9 | 9<sup>th</sup> | 09 | April | Apr | 4 | 04 | 2026 | 26 | 4 | 04 | pm | PM | 16 | 16 | 20 | 41 | 75 | ~2 months | afternoon | PM |
| 2026.04.13 @ 17.31.24 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/launcher">/sean/code/launcher</a></font> ] :: Added volume label monitoring to Launcher which makes my VolRun script obsolete. If you are using VolRun, you will want to upgrade to Launcher 3.3.18.0 or later. | 6135673 | Monday | Mon | 13 | 13<sup>th</sup> | 13 | April | Apr | 4 | 04 | 2026 | 26 | 5 | 05 | pm | PM | 17 | 17 | 31 | 24 | 71 | ~2 months | evening | PM |
| 2026.05.04 @ 20.29.03 | .update | [ <font size=2><a href="/sean/datasets" target="new">/sean/datasets</a></font> ] :: (tickers.txt) Creating a system that will pull ticker values for later local analysis and reporting. Tickers.txt will be populated with Dow 30, Nasdaq 100, S&P 500, and the Russell 2000 as well as a few others I track. Roughly 3000 tickers, My threshold for inclusion will be tickers with a market cap of >$1B. This file will be used to populate pricehistory output text files. | 4310614 | Monday | Mon | 4 | 4<sup>th</sup> | 04 | May | May | 5 | 05 | 2026 | 26 | 8 | 08 | pm | PM | 20 | 20 | 29 | 03 | 49 | ~a month | evening | PM |
| 2026.05.04 @ 22.29.03 | .update | [ <font size=2><a href="/sean/datasets" target="new">/sean/datasets</a></font> ] :: (pricehistory.py) Created a new subarea for datasets I generate for analysis. I'm now generating and hosting CSV-formatted, stock market price history files at https://sean.shrum.net/datasets. This is keyed to tickers.txt located in the same location.<br> <UL><li>pricehistory_max.txt :: ALL price values available thru yfinance<li>pricehistory_365.txt :: latest 365 weekdays price values (faster d/l)</ul> Files have .txt extensions for browser viewing but only need to be renamed or appended with '.csv' when stored locally (not needed but aids in spreadsheet processing without prompting you for delimiter type). All pricehistory files will have current date closing values auto updated every weekday starting at 6pm PST in col 2. Header is ticker followed by newest date first, next date, etc... Check file timestamp before d/l'ing to be sure it has been updated. | 4303414 | Monday | Mon | 4 | 4<sup>th</sup> | 04 | May | May | 5 | 05 | 2026 | 26 | 10 | 10 | pm | PM | 22 | 22 | 29 | 03 | 49 | ~a month | evening | PM |
| 2026.05.15 @ 22.30.45 | .update | [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (pricehistory.py) Update pricehistory script to address an issue where adding new tickers to an existing pricehistory_max.txt file was not getting all price data and only returning current price data. Also updated the script to omit all trailing comma separators on tickers that have no extended price data for dates outside it's IPO date in an effort to bring down the overall file sizes. Dataset files are being updated now. | 3352912 | Friday | Fri | 15 | 15<sup>th</sup> | 15 | May | May | 5 | 05 | 2026 | 26 | 10 | 10 | pm | PM | 22 | 22 | 30 | 45 | 38 | ~a month | evening | PM |
| 2026.06.10 @ 18.04.06 | .update | [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (ma200.py) Creates a report based on the 200d moving averages of the tickers in the tickers.txt and price histories from pricehistory_365.txt in the datasets folder.<UL><LI>ma200.txt</li><li>ma200.csv</li></ul>These files are identical but the csv allows for easier importing into spreadsheet apps for personalized column sorting.<p>Fields are: Ticker, Current price, MA200 average price, MA%, 1w%, 1m%, and YTD%.<P>Reports refresh daily at 5pm PST. | 1122511 | Wednesday | Wed | 10 | 10<sup>th</sup> | 10 | June | Jun | 6 | 06 | 2026 | 26 | 6 | 06 | pm | PM | 18 | 18 | 04 | 06 | 12 | ~a week | evening | PM |
| 2026.06.12 @ 12.30.41 | .update | [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (stability.py) Consolidating reports (25 was already too many). Script now outputs 2 sets of distinct but similar reports (5 in total to date). Each one will cover 1M, YTD, 1Y, 2Y, and 5Y and return top 20 results per timeframe. Files with 'nofilter' in the name have no chaos filtering and no volatility smoothing (1). More reports will appear later as I deem them needed.<P>+ [SET 1] STABILITY BASED</p><p>Currently, 3 reports with varying "chaos" limiters and a 'nofilter' report. <P>Reports that use chaos values will list them in the filename.<P>Example: <i>stability-chaos=[Move]pct@[Limit]pct@[Smooth].txt</i> <ul><li><b>Move</b><br>..... threshold % for abnormal daily returns,</li><LI><b>Limit</b><BR>..... allowed % of abnormal days</li><li><b>Smooth</b><BR>..... volatility dampener; 1=none, higher=magnified, lower=minimized</li></ul> <P>Current file(s): <UL> <LI>stability-chaos=4pct@10pct@1.5.txt ("stability obsessed")</LI> <LI>stability-chaos=5pct@12pct@1.0.txt ("sane institutional")</LI> <LI>stability-chaos=6pct@18pct@0.7.txt ("momentum friendly")</LI> <LI>stability-nofilter.txt ("Catch all")</LI> </ul> <P>+ [SET 2] CATAGORY BASED <P>Reports that prioritize based on catagory order in filename: (1st sort)_(2nd sort)_(3rd sort)_(etc). The current catagories available are: <OL><LI>Return</LI><LI>Updays</LI><LI>Consistency</li><li>Efficiency</li><li>Stability</li><li>Momentum</li></ol> <p> Current file(s): <UL><LI>momentum_stability_return-nofilter.txt</LI></UL> Use at your own discretion, and as always, dbl-check values. | 969716 | Friday | Fri | 12 | 12<sup>th</sup> | 12 | June | Jun | 6 | 06 | 2026 | 26 | 12 | 12 | pm | PM | 12 | 12 | 30 | 41 | 11 | ~a week | afternoon | PM |
| 2026.06.15 @ 17.26.10 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Revision to stock price storage. Old prices on a ticker that has a stock split needs to be updated otherwise reports using the data will generate incorrect output. Modified script to do split checking when yfinance updates single stock pricing to force a full price history refresh. (KLAC is reporting a MA200 of $1394.39 when the ATH price today was $256.43 post 20-1 split).<P>What I've found: Yfinance has not yet updated their historical price data and as such the values coming from there are PRE-SPLIT values. This will mess with any reports doing historical price analysis against current market values until things are updated on the yfinance side. Just be aware of this if you start seeing tickers with unexplainable massive % gain or declines as this is the culprit. You've been informed. | 692787 | Monday | Mon | 15 | 15<sup>th</sup> | 15 | June | Jun | 6 | 06 | 2026 | 26 | 5 | 05 | pm | PM | 17 | 17 | 26 | 10 | 8 | ~a week | evening | PM |
| 2026.06.18 @ 18.41.06 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Yfinance has finally updated the price on KLAC post split to reflect the new stock price. Split detection pulled a full history for the updated ticker price as designed. | 429091 | Thursday | Thu | 18 | 18<sup>th</sup> | 18 | June | Jun | 6 | 06 | 2026 | 26 | 6 | 06 | pm | PM | 18 | 18 | 41 | 06 | 4 | 4 days | evening | PM |
| 2026.06.19 @ 19.12.11 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (YoY_pct.py) YoY % analysis; calendar-year end-to-end YoY percent report spanning 10y.<P>This report analyzes year-over-year (YoY) percentage changes using raw, unadjusted calendar-year price data. For each ticker, the script identifies the earliest valid price within each calendar year and compares it to the most recent price in that same year. The resulting YoY percentage reflects the end-to-end performance for that year, without smoothing, normalization, or averaging. TXT and CSV formats. <P>The '+Streak' column highlights long-term postive year over year consistency. This provides a quick visual / sorting indicator of sustained multi-year strength, helping highlight companies that have demonstrated durable, repeated positive performance over extended periods. <P>Word of caution: Beware of stock price consolidation (reverse stock splits) results. I have no way of reliably detecting these. As always, if a value seems suspect, trust your gut and verify it with your own trusted source. | 340826 | Friday | Fri | 19 | 19<sup>th</sup> | 19 | June | Jun | 6 | 06 | 2026 | 26 | 7 | 07 | pm | PM | 19 | 19 | 12 | 11 | 3 | 3 days | evening | PM |
| 2026.06.21 @ 16.44.52 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (tickers.txt) I've removed BVC and MGRT tickers from the master list as their market cap no longer meets my threshold ($1B) but more so their reverse splits were reeking havoc in my reports. | 176865 | Sunday | Sun | 21 | 21<sup>st</sup> | 21 | June | Jun | 6 | 06 | 2026 | 26 | 4 | 04 | pm | PM | 16 | 16 | 44 | 52 | 2 | 2 days | afternoon | PM |
| 2026.06.22 @ 18.17.09 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Update script to purge weekday price rows that return no data due to being a market closed holiday (like last June 19, 2026). Script created row and left blank price values (as yFinance returns none) which was causing all my other analysis script reports to go wonky. Rebuilding pricehistory_*.txt files now with a new purge routine for such occasions in the future. | 84928 | Monday | Mon | 22 | 22<sup>nd</sup> | 22 | June | Jun | 6 | 06 | 2026 | 26 | 6 | 06 | pm | PM | 18 | 18 | 17 | 09 | 0 | 23 hours | evening | PM |
+ [PLUGIN]:time = 0.0020/s
+ [WHERE] undefined; operation skipped
+ ass_search()
+ [SEARCH] defined; => '/sean'
+ [SEARCH] 1 term(s) detected
operator term /sean + [SEARCH] applying search terms to [DATA]...
+ [SEARCH] 4 entries cut
+ [DATA] => [47] x [27]
base ext contents age weekday wkday mday mdayth mday_0 month mon mnum mnum_0 year yr hour_12 hour_12_0 am_pm AM_PM hour_24 hour_24_0 min sec days when timeofday ampm 2025.11.02 @ 02.45.09 .update [ <font size=2><a href="/cats.php?dir=/sean/code/ezpcdets">/sean/code/ezpcdets</a></font> ] :: Update to EZPCDETS. Use the 'binary' link to download the newer 2.10 version. Addresses Windows 11 max line count of 4 in tray tip windows by consolidating lines. Documentation has been updated. 20182048 Sunday Sun 2 2<sup>nd</sup> 02 November Nov 11 11 2025 25 2 02 am AM 2 02 45 09 233 ~7 months morning AM 2025.11.02 @ 03.45.09 .update [ <font size=2><a href="/cats.php?dir=/sean/code/bubbletip">/sean/code/bubbletip</a></font> ] :: Update to Bubbletip. Use the 'binary' link to download the newer 1.10 version. Updated in-app web links and documentation has been updated. 20178448 Sunday Sun 2 2<sup>nd</sup> 02 November Nov 11 11 2025 25 3 03 am AM 3 03 45 09 233 ~7 months morning AM 2025.11.09 @ 23.20.26 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Numerous code updates to CATS in terms of data validation, additional debug output support, and more proper DIE'ing. Starting to write more function specific plugins as I need them and I'll post those later into the <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats/plugins">plugins</a> area. Documentation has been updated as I went along which can be found in the <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats/docs"> CATS documentation</a> section. 19503131 Sunday Sun 9 9<sup>th</sup> 09 November Nov 11 11 2025 25 11 11 pm PM 23 23 20 26 225 ~7 months evening PM 2025.11.10 @ 00.52.55 .update [ <font size=2><a href="/cats.php?dir=/sean/code/autorun">/sean/code/autorun</a></font> ] :: Autorun page and nav links updated. 19497582 Monday Mon 10 10<sup>th</sup> 10 November Nov 11 11 2025 25 12 12 am AM 0 00 52 55 225 ~7 months morning AM 2025.11.11 @ 23.27.02 .update [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Changes to Hotrkeyz (v1.05) to exclude files in the combo root folder (running only files in the "ShellExecute" and "ShellExecuteWait" subfolders). Tray icon will now display the app title and number of combos being monitored for. Removed the "_sample" combos folder as the app was trapping "_" as a user defined hotkey. 'Support' SysTray menu will now redirect to website support page. Now hosting both x86 and x64 builds for those without AutoIT installed. Links to these are in the Hotrkeyz nav bar. Appended more information on the app in the FAQ's section regarding unassociated filetypes and "combos" folder location moves 19329935 Tuesday Tue 11 11<sup>th</sup> 11 November Nov 11 11 2025 25 11 11 pm PM 23 23 27 02 223 ~7 months evening PM 2025.11.12 @ 01.43.34 .update [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Support page has been changed. Added a "DIYer's" section outlining and providing links to off-site programming sites, forums, and editors. Multiple additions. Moved support email link to bottom of page. 19321743 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 1 01 am AM 1 01 43 34 223 ~7 months morning AM 2025.11.12 @ 02.05.18 .update [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Changed subdomain and index.html redirect on sean.shrum.net and shrum.net/sean to go to Updates with "search=/sean". 19320439 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 2 02 am AM 2 02 05 18 223 ~7 months morning AM 2025.11.12 @ 03.31.34 .update [ <font size=2><a href="/cats.php?dir=/sean/code/prompter">/sean/code/prompter</a></font> ] :: Minor changes to Prompter (2.02). Now hosting both x86 and x64 builds. Navbar links updated 19315263 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 3 03 am AM 3 03 31 34 223 ~7 months morning AM 2025.11.12 @ 16.06.30 .update [ <font size=2><a href="/cats.php?dir=/sean/code/dir2subs">/sean/code/dir2subs</a></font> ] :: Changes to Dir2Subs (v2.02) to default to the [s]ource directory if the [d]estination parameter is omitted in command line calls. Now offering both x86 and x64 builds for those without AutoIT installed. Links to these are in the nav bar. Added screenshots of dialogs and example output. 19269967 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 4 04 pm PM 16 16 06 30 223 ~7 months afternoon PM 2025.11.12 @ 18.24.31 .update [ <font size=2><a href="/cats.php?dir=/sean/code/execute">/sean/code/cats</a></font> ] :: Minor cleanup to Execute (v1.03). Now offering both x86 and x64 builds for those without AutoIT installed. Links to these are in the nav bar. 19261686 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 6 06 pm PM 18 18 24 31 222 ~7 months evening PM 2025.11.12 @ 18.39.01 .update [ <font size=2><a href="/cats.php?dir=/sean/code/query">/sean/code/query</a></font> ] :: Minor cleanup to Query (v2.04). Now offering both x86 and x64 builds for those without AutoIT installed. Links to these are in the nav bar. 19260816 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 6 06 pm PM 18 18 39 01 222 ~7 months evening PM 2025.11.12 @ 19.16.08 .update [ <font size=2><a href="http://www.shrum.net/sean/code/relocate">/sean/code/relocate</a></font> ] :: Minor changes to Relocate (v2.04). Dropped SysTray menu item to Homepage and placed it in the About dialog. Minor other tweaks. 19258589 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 7 07 pm PM 19 19 16 08 222 ~7 months evening PM 2025.11.12 @ 23.53.23 .update [ <font size=2><a href="/cats.php?dir=/sean/code/wan2web">/sean/code/wan2web</a></font> ] :: Changes to <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/wan2web">Wan2Web</a> (v2.04). [W]an setting prompt defaults to my <a href="http://www.shrum.net/remote_addr.php">remote_addr.php</a> for wan ip reporting but can be set to elsewhere, set [M]inutes default to 30, and now allow the user to store their FTP password in the registry (you have to manually add it). Updated documention on where to put the key. 19241954 Wednesday Wed 12 12<sup>th</sup> 12 November Nov 11 11 2025 25 11 11 pm PM 23 23 53 23 222 ~7 months evening PM 2025.11.13 @ 19.47.20 .update [ <font size=2><a href="/cats.php?dir=/sean/photos">/sean/photos</a></font> ] :: Got around to creating an area to showcase my <a href="$PHP_SELF$?dir=/sean/code/cats">CATS</a> web server script ability to generate navigable photo albums. Plus it showcases CATS "Random" <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script Parameters - A to Z.shtml#sort">[SORT]</a> ability. Still need to figure out Imagemagick's mogrify command as the resulting output gif files are not respecting the input jpg orientations. 19170317 Thursday Thu 13 13<sup>th</sup> 13 November Nov 11 11 2025 25 7 07 pm PM 19 19 47 20 221 ~7 months evening PM 2025.11.14 @ 01.10.00 .update [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Site ID page change. Note the "wrench" icon preceding the pathname title at the top of the page. Clicking on the wrench on any page generated by my content system will output additional <a href="http://$HTTP_HOST$/*name*?dir=sean/code/cats">CATS</a> debug info by appending "&debug=y" to the end of every URL here. This lets you see what the script is doing behind the scenes. Plus it gives me an easy 1 click option to toggle into debug mode without having to type it into the URL every time I need it. Moved coding around to optimize speed and allow for function skipping when required parameters are not present. 19150957 Friday Fri 14 14<sup>th</sup> 14 November Nov 11 11 2025 25 1 01 am AM 1 01 10 00 221 ~7 months morning AM 2025.11.14 @ 22.43.59 .update [ <font size=2><a href="/cats.php?dir=/sean/code/relocate">/sean/code/relocate</a></font> ] :: Added screenshots of window positioning movements to documentation. 19073318 Friday Fri 14 14<sup>th</sup> 14 November Nov 11 11 2025 25 10 10 pm PM 22 22 43 59 220 ~7 months evening PM 2025.11.15 @ 00.12.30 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Wrote in some [DATA] array testing after performing [WHERE] and [SEARCH] functions to make sure we don't start trying to do array stuff on an empty array which would break things that would normally happen after a valid set of [DATA] was returned. Empty arrays results return an image of a goose egg. 19068007 Saturday Sat 15 15<sup>th</sup> 15 November Nov 11 11 2025 25 12 12 am AM 0 00 12 30 220 ~7 months morning AM 2025.11.16 @ 00.05.11 .update [ <font size=2><a href="/cats.php?dir=/sean">/sean</a></font> ] :: Reverted back to a <a href="http://sean.shrum.net">site splash entry</a> (a 4y word cloud of my blog from many years ago) when using <b>sean.</b>shrum.net or shrum.net<b>/sean</b> URLs versus throwing everyone directly into the updates page. It was laying around so figured I'd use it. Calls to <b>shrum.net</b> and <b>www.</b>shrum.net still get Diana's project site. 18982046 Sunday Sun 16 16<sup>th</sup> 16 November Nov 11 11 2025 25 12 12 am AM 0 00 05 11 219 ~7 months morning AM 2025.11.18 @ 22.41.49 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Sorting tweaks. Sorting was executing in "case sensitive" mode. Capitalized words would appear ahead of lower cased. Inserted "SORT_NATURAL|SORT_FLAG_CASE" into array_multisort() calls to address this issue. 18727848 Tuesday Tue 18 18<sup>th</sup> 18 November Nov 11 11 2025 25 10 10 pm PM 22 22 41 49 216 ~7 months evening PM 2025.11.19 @ 20.55.55 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added code variable names in <a href="http://$HTTP_HOST$/cats.php?dir=/sean/code/cats&body=/sean/code/cats/docs/Template Tokens.shtml">Template Tokens</a> documentation so users know where the values are coming from. 18647802 Wednesday Wed 19 19<sup>th</sup> 19 November Nov 11 11 2025 25 8 08 pm PM 20 20 55 55 215 ~7 months evening PM 2025.11.20 @ 19.44.45 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added code to use $aScript['subdomain'] to create cyclical link between 'local.[domainname]' and 'www.[domainname]' to allow for 1 click switching between development server and live server 18565672 Thursday Thu 20 20<sup>th</sup> 20 November Nov 11 11 2025 25 7 07 pm PM 19 19 44 45 214 ~7 months evening PM 2025.11.21 @ 01.57.00 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Optimization; <a href="http://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> bails out when conditions do not match user requested terms. This will greatly decrease search times on large data sets. Added '^' for defining a case sensitive search term as all other searches case insensitive (fuzzy). Version rev 4.12. 18543337 Friday Fri 21 21<sup>st</sup> 21 November Nov 11 11 2025 25 1 01 am AM 1 01 57 00 214 ~7 months morning AM 2025.11.21 @ 21.25.45 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: <a href="https://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#in">[in]</a> parameter now handles user defined field(s) selection for <a href="https://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> and provides more robust filtering options using conditional operators (+/-/"/^). Going forward, the following SQL parameters are deprecated and no longer used with CATS directly (can still be used by plugins): [select], [from], [group], [sql]. 18473212 Friday Fri 21 21<sup>st</sup> 21 November Nov 11 11 2025 25 9 09 pm PM 21 21 25 45 213 ~7 months evening PM 2025.11.21 @ 23.21.04 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Recordnum counter was not respecting actual record number when displayed as part of a <a href="https://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#limit">[limit]</a> set, was resetting to '1' on page 2, 3, etc. Adding $aRecordset['start'] to $iRecord fixed this. 18466293 Friday Fri 21 21<sup>st</sup> 21 November Nov 11 11 2025 25 11 11 pm PM 23 23 21 04 213 ~7 months evening PM 2025.11.22 @ 17.26.39 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added sort on CATS <a href="http://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> operators, gives the following order of operation: - (not include), + (must include), none (or), ^ (case sensitive or), " (phrase or) which allows me to halt additional processing on multi term search strings if NOT or AND conditions are not met first (OR conditions skipped). 18401158 Saturday Sat 22 22<sup>nd</sup> 22 November Nov 11 11 2025 25 5 05 pm PM 17 17 26 39 212 ~7 months evening PM 2025.11.23 @ 19.55.16 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: RECORD2,3,4 parameters are now depreciated and no longer supported. Never used these and really can't see a situation where multiple record templates would be needed. Site documentation updated. 18305841 Sunday Sun 23 23<sup>rd</sup> 23 November Nov 11 11 2025 25 7 07 pm PM 19 19 55 16 211 ~7 months evening PM 2025.11.25 @ 13.55.40 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: <a href="http://$HTTP_HOST$/cats.php?plugin=null&dir=/sean/code/cats/docs&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#where">[where]</a> is now a "server side" protected parameter (if user tries to overwrite or NULL the parameter via the query string, it is ignored). This allows webmasters to filter recordsets prior to passing [DATA] to the user to view and start doing searches on. Ultimately, the best place to do filtering is in a plugin but this gives a more flexible option for when it's needed instead of creating multiple plugins that require redundant coding. 18154617 Tuesday Tue 25 25<sup>th</sup> 25 November Nov 11 11 2025 25 1 01 pm PM 13 13 55 40 210 ~7 months afternoon PM 2025.12.14 @ 17.13.43 .update [ <font size=2><a href="/cats.php?dir=/sean/code/cats">/sean/code/cats</a></font> ] :: Added value operations to <a href="https://$HTTP_HOST$/cats.php?dir=/sean/code/cats&body=/sean/code/cats/docs/Script%20Parameters%20-%20A%20to%20Z.shtml#search">[search]</a> to include >, <, >=, <=. Script documentation updated to reflect these additions. 16501134 Sunday Sun 14 14<sup>th</sup> 14 December Dec 12 12 2025 25 5 05 pm PM 17 17 13 43 190 ~6 months evening PM 2026.01.27 @ 23.41.16 .update [ <font size=2><a href="/cats.php?dir=/sean/code/orphaned">/sean/code/orphaned</a></font> ] :: Creating a new app for locating/segregating orphaned files in a backup. These are files that no longer match up to the source locations in active use either because the source file was renamed, moved, or deleted. When such file is found it is copied (maybe moved later) to a subfolder. This allows users with years of backed up files to create a folder of only orphaned files. It's in development and I'll give it the production treatment, complete with command line enabling and dialog prompting later. Right now I'm testing on my backup. 12676281 Tuesday Tue 27 27<sup>th</sup> 27 January Jan 1 01 2026 26 11 11 pm PM 23 23 41 16 146 ~4 months evening PM 2026.01.29 @ 20.11.10 .update [ <font size=2><a href="/cats.php?dir=/sean/code/orphaned">/sean/code/orphaned</a></font> ] :: Code and documentation uploaded. Click the link to get more info on this utility for locating orphaned files in a backup. 12516087 Thursday Thu 29 29<sup>th</sup> 29 January Jan 1 01 2026 26 8 08 pm PM 20 20 11 10 144 ~4 months evening PM 2026.02.17 @ 16.59.24 .update [ <font size=2><a href="http://shrum.net/updates">/updates</a></font> ] :: Moved '/sean/updates' to '/updates' (a higher level to act as "catch all" for site-wide updates). Sub area searches can be done thru the search field at the top of the page. Access to updated areas can be done via the included link located at the front of each update post. Direct calls to 'shrum.net/sean/updates' will automatically redirect to the new location and will automatically filter on just '/sean' (sub)area updates. Some update calls from my apps and utilities (if present) will fail but ultimately, all homepage links will continue to work and links to area specific updates will work from there. Code has been updated but binaries should be built to incorporate the new site layout. 10885993 Tuesday Tue 17 17<sup>th</sup> 17 February Feb 2 02 2026 26 4 04 pm PM 16 16 59 24 125 ~4 months afternoon PM 2026.02.17 @ 18.42.33 .update [ <font size=2><a href="http://www.shrum.net/sean/code/ezpcdets">/sean/code/ezpcdets</a></font> ] :: Code and documentation changes. Rev to v.2.20. Hovering over the EzpcDets Systray icon will display LAN1 & WAN address info. Clicking on the Systray icon will display 3 lines: "[Domain] / Computername / Username / os ver and sp ver" on line 1, "Sysdrive free and total" on line 2, and "Sysmem load % and total" on line 3. Binaries are updated. Documentation is updated to include updated screenshots. 10879804 Tuesday Tue 17 17<sup>th</sup> 17 February Feb 2 02 2026 26 6 06 pm PM 18 18 42 33 125 ~4 months evening PM 2026.02.18 @ 17.52.52 .update [ <font size=2><a href="http://www.shrum.net/sean/code">/sean/code</a></font> ] :: In an effort to give me more flexibility on file locations, I've modified all projects to route web calls for updates to '[project dir]/updates.html' which will redirect to the appropriate CATS call and location of the update files. This allows me to move updates in the future without having to modify code and recompile. Additionally, the same has been done for support calls. These now all go to '[project dir]/support.html' to be redirected. Any project that had a 'donate' link in it has had this removed. All projects that use these calls have been updated and recompiled. 10796385 Wednesday Wed 18 18<sup>th</sup> 18 February Feb 2 02 2026 26 5 05 pm PM 17 17 52 52 124 ~4 months evening PM 2026.02.18 @ 20.42.10 .update [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Rev to v.1.06. Added a 'first run' dialog that explains basic usage of Hotrkeyz. This dialog then goes silent on future executions. Documentation updated to include screenshot of dialog. Added some additional FAQ entries as well. 10786227 Wednesday Wed 18 18<sup>th</sup> 18 February Feb 2 02 2026 26 8 08 pm PM 20 20 42 10 124 ~4 months evening PM 2026.03.13 @ 00.53.50 .update [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Rewrite and new version 2.0. Now includes an active key capture dialog and uses key names (Ctrl, Alt, Win, Shift) instead of code characters (#$^!). Will not work with v.1 combos as the subfolder naming is different. You will need to recreate your Hotrkeyz combos and copy the program links from your old v.1 combo folders into the new v.2 combo folders. Documentation has been updated with new operations and screeenshots. 8873927 Friday Fri 13 13<sup>th</sup> 13 March Mar 3 03 2026 26 12 12 am AM 0 00 53 50 102 ~3 months morning AM 2026.04.09 @ 16.20.41 .update [ <font size=2><a href="/cats.php?dir=/sean/code/launcher">/sean/code/launcher</a></font> ] :: AI assisted redo of Launcher 3.2. New version, new interface, same functionality. Docs, code, and exe are uploaded. 6485516 Thursday Thu 9 9<sup>th</sup> 09 April Apr 4 04 2026 26 4 04 pm PM 16 16 20 41 75 ~2 months afternoon PM 2026.04.13 @ 17.31.24 .update [ <font size=2><a href="/cats.php?dir=/sean/code/launcher">/sean/code/launcher</a></font> ] :: Added volume label monitoring to Launcher which makes my VolRun script obsolete. If you are using VolRun, you will want to upgrade to Launcher 3.3.18.0 or later. 6135673 Monday Mon 13 13<sup>th</sup> 13 April Apr 4 04 2026 26 5 05 pm PM 17 17 31 24 71 ~2 months evening PM 2026.05.04 @ 20.29.03 .update [ <font size=2><a href="/sean/datasets" target="new">/sean/datasets</a></font> ] :: (tickers.txt) Creating a system that will pull ticker values for later local analysis and reporting. Tickers.txt will be populated with Dow 30, Nasdaq 100, S&P 500, and the Russell 2000 as well as a few others I track. Roughly 3000 tickers, My threshold for inclusion will be tickers with a market cap of >$1B. This file will be used to populate pricehistory output text files. 4310614 Monday Mon 4 4<sup>th</sup> 04 May May 5 05 2026 26 8 08 pm PM 20 20 29 03 49 ~a month evening PM 2026.05.04 @ 22.29.03 .update [ <font size=2><a href="/sean/datasets" target="new">/sean/datasets</a></font> ] :: (pricehistory.py) Created a new subarea for datasets I generate for analysis. I'm now generating and hosting CSV-formatted, stock market price history files at https://sean.shrum.net/datasets. This is keyed to tickers.txt located in the same location.<br> <UL><li>pricehistory_max.txt :: ALL price values available thru yfinance<li>pricehistory_365.txt :: latest 365 weekdays price values (faster d/l)</ul> Files have .txt extensions for browser viewing but only need to be renamed or appended with '.csv' when stored locally (not needed but aids in spreadsheet processing without prompting you for delimiter type). All pricehistory files will have current date closing values auto updated every weekday starting at 6pm PST in col 2. Header is ticker followed by newest date first, next date, etc... Check file timestamp before d/l'ing to be sure it has been updated. 4303414 Monday Mon 4 4<sup>th</sup> 04 May May 5 05 2026 26 10 10 pm PM 22 22 29 03 49 ~a month evening PM 2026.05.15 @ 22.30.45 .update [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (pricehistory.py) Update pricehistory script to address an issue where adding new tickers to an existing pricehistory_max.txt file was not getting all price data and only returning current price data. Also updated the script to omit all trailing comma separators on tickers that have no extended price data for dates outside it's IPO date in an effort to bring down the overall file sizes. Dataset files are being updated now. 3352912 Friday Fri 15 15<sup>th</sup> 15 May May 5 05 2026 26 10 10 pm PM 22 22 30 45 38 ~a month evening PM 2026.06.10 @ 18.04.06 .update [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (ma200.py) Creates a report based on the 200d moving averages of the tickers in the tickers.txt and price histories from pricehistory_365.txt in the datasets folder.<UL><LI>ma200.txt</li><li>ma200.csv</li></ul>These files are identical but the csv allows for easier importing into spreadsheet apps for personalized column sorting.<p>Fields are: Ticker, Current price, MA200 average price, MA%, 1w%, 1m%, and YTD%.<P>Reports refresh daily at 5pm PST. 1122511 Wednesday Wed 10 10<sup>th</sup> 10 June Jun 6 06 2026 26 6 06 pm PM 18 18 04 06 12 ~a week evening PM 2026.06.12 @ 12.30.41 .update [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (stability.py) Consolidating reports (25 was already too many). Script now outputs 2 sets of distinct but similar reports (5 in total to date). Each one will cover 1M, YTD, 1Y, 2Y, and 5Y and return top 20 results per timeframe. Files with 'nofilter' in the name have no chaos filtering and no volatility smoothing (1). More reports will appear later as I deem them needed.<P>+ [SET 1] STABILITY BASED</p><p>Currently, 3 reports with varying "chaos" limiters and a 'nofilter' report. <P>Reports that use chaos values will list them in the filename.<P>Example: <i>stability-chaos=[Move]pct@[Limit]pct@[Smooth].txt</i> <ul><li><b>Move</b><br>..... threshold % for abnormal daily returns,</li><LI><b>Limit</b><BR>..... allowed % of abnormal days</li><li><b>Smooth</b><BR>..... volatility dampener; 1=none, higher=magnified, lower=minimized</li></ul> <P>Current file(s): <UL> <LI>stability-chaos=4pct@10pct@1.5.txt ("stability obsessed")</LI> <LI>stability-chaos=5pct@12pct@1.0.txt ("sane institutional")</LI> <LI>stability-chaos=6pct@18pct@0.7.txt ("momentum friendly")</LI> <LI>stability-nofilter.txt ("Catch all")</LI> </ul> <P>+ [SET 2] CATAGORY BASED <P>Reports that prioritize based on catagory order in filename: (1st sort)_(2nd sort)_(3rd sort)_(etc). The current catagories available are: <OL><LI>Return</LI><LI>Updays</LI><LI>Consistency</li><li>Efficiency</li><li>Stability</li><li>Momentum</li></ol> <p> Current file(s): <UL><LI>momentum_stability_return-nofilter.txt</LI></UL> Use at your own discretion, and as always, dbl-check values. 969716 Friday Fri 12 12<sup>th</sup> 12 June Jun 6 06 2026 26 12 12 pm PM 12 12 30 41 11 ~a week afternoon PM 2026.06.15 @ 17.26.10 .update [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Revision to stock price storage. Old prices on a ticker that has a stock split needs to be updated otherwise reports using the data will generate incorrect output. Modified script to do split checking when yfinance updates single stock pricing to force a full price history refresh. (KLAC is reporting a MA200 of $1394.39 when the ATH price today was $256.43 post 20-1 split).<P>What I've found: Yfinance has not yet updated their historical price data and as such the values coming from there are PRE-SPLIT values. This will mess with any reports doing historical price analysis against current market values until things are updated on the yfinance side. Just be aware of this if you start seeing tickers with unexplainable massive % gain or declines as this is the culprit. You've been informed. 692787 Monday Mon 15 15<sup>th</sup> 15 June Jun 6 06 2026 26 5 05 pm PM 17 17 26 10 8 ~a week evening PM 2026.06.18 @ 18.41.06 .update [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Yfinance has finally updated the price on KLAC post split to reflect the new stock price. Split detection pulled a full history for the updated ticker price as designed. 429091 Thursday Thu 18 18<sup>th</sup> 18 June Jun 6 06 2026 26 6 06 pm PM 18 18 41 06 4 4 days evening PM 2026.06.19 @ 19.12.11 .update [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (YoY_pct.py) YoY % analysis; calendar-year end-to-end YoY percent report spanning 10y.<P>This report analyzes year-over-year (YoY) percentage changes using raw, unadjusted calendar-year price data. For each ticker, the script identifies the earliest valid price within each calendar year and compares it to the most recent price in that same year. The resulting YoY percentage reflects the end-to-end performance for that year, without smoothing, normalization, or averaging. TXT and CSV formats. <P>The '+Streak' column highlights long-term postive year over year consistency. This provides a quick visual / sorting indicator of sustained multi-year strength, helping highlight companies that have demonstrated durable, repeated positive performance over extended periods. <P>Word of caution: Beware of stock price consolidation (reverse stock splits) results. I have no way of reliably detecting these. As always, if a value seems suspect, trust your gut and verify it with your own trusted source. 340826 Friday Fri 19 19<sup>th</sup> 19 June Jun 6 06 2026 26 7 07 pm PM 19 19 12 11 3 3 days evening PM 2026.06.21 @ 16.44.52 .update [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (tickers.txt) I've removed BVC and MGRT tickers from the master list as their market cap no longer meets my threshold ($1B) but more so their reverse splits were reeking havoc in my reports. 176865 Sunday Sun 21 21<sup>st</sup> 21 June Jun 6 06 2026 26 4 04 pm PM 16 16 44 52 2 2 days afternoon PM 2026.06.22 @ 18.17.09 .update [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Update script to purge weekday price rows that return no data due to being a market closed holiday (like last June 19, 2026). Script created row and left blank price values (as yFinance returns none) which was causing all my other analysis script reports to go wonky. Rebuilding pricehistory_*.txt files now with a new purge routine for such occasions in the future. 84928 Monday Mon 22 22<sup>nd</sup> 22 June Jun 6 06 2026 26 6 06 pm PM 18 18 17 09 0 23 hours evening PM + [ORDER] defined => 'base', header exists
+ [SORT] defined => descending base
+ [ORDER]+[SORT] => [descending base]
+ ass_search():time => 0.0007/s
+ [LIMIT] => [0,15]
| base | ext | contents | age | weekday | wkday | mday | mdayth | mday_0 | month | mon | mnum | mnum_0 | year | yr | hour_12 | hour_12_0 | am_pm | AM_PM | hour_24 | hour_24_0 | min | sec | days | when | timeofday | ampm |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026.06.22 @ 18.17.09 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Update script to purge weekday price rows that return no data due to being a market closed holiday (like last June 19, 2026). Script created row and left blank price values (as yFinance returns none) which was causing all my other analysis script reports to go wonky. Rebuilding pricehistory_*.txt files now with a new purge routine for such occasions in the future. | 84928 | Monday | Mon | 22 | 22<sup>nd</sup> | 22 | June | Jun | 6 | 06 | 2026 | 26 | 6 | 06 | pm | PM | 18 | 18 | 17 | 09 | 0 | 23 hours | evening | PM |
| 2026.06.21 @ 16.44.52 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (tickers.txt) I've removed BVC and MGRT tickers from the master list as their market cap no longer meets my threshold ($1B) but more so their reverse splits were reeking havoc in my reports. | 176865 | Sunday | Sun | 21 | 21<sup>st</sup> | 21 | June | Jun | 6 | 06 | 2026 | 26 | 4 | 04 | pm | PM | 16 | 16 | 44 | 52 | 2 | 2 days | afternoon | PM |
| 2026.06.19 @ 19.12.11 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (YoY_pct.py) YoY % analysis; calendar-year end-to-end YoY percent report spanning 10y.<P>This report analyzes year-over-year (YoY) percentage changes using raw, unadjusted calendar-year price data. For each ticker, the script identifies the earliest valid price within each calendar year and compares it to the most recent price in that same year. The resulting YoY percentage reflects the end-to-end performance for that year, without smoothing, normalization, or averaging. TXT and CSV formats. <P>The '+Streak' column highlights long-term postive year over year consistency. This provides a quick visual / sorting indicator of sustained multi-year strength, helping highlight companies that have demonstrated durable, repeated positive performance over extended periods. <P>Word of caution: Beware of stock price consolidation (reverse stock splits) results. I have no way of reliably detecting these. As always, if a value seems suspect, trust your gut and verify it with your own trusted source. | 340826 | Friday | Fri | 19 | 19<sup>th</sup> | 19 | June | Jun | 6 | 06 | 2026 | 26 | 7 | 07 | pm | PM | 19 | 19 | 12 | 11 | 3 | 3 days | evening | PM |
| 2026.06.18 @ 18.41.06 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Yfinance has finally updated the price on KLAC post split to reflect the new stock price. Split detection pulled a full history for the updated ticker price as designed. | 429091 | Thursday | Thu | 18 | 18<sup>th</sup> | 18 | June | Jun | 6 | 06 | 2026 | 26 | 6 | 06 | pm | PM | 18 | 18 | 41 | 06 | 4 | 4 days | evening | PM |
| 2026.06.15 @ 17.26.10 | .update | [ <font size=2><a href="/sean/datasets">/sean/datasets</a></font> ] :: (pricehistory.py) Revision to stock price storage. Old prices on a ticker that has a stock split needs to be updated otherwise reports using the data will generate incorrect output. Modified script to do split checking when yfinance updates single stock pricing to force a full price history refresh. (KLAC is reporting a MA200 of $1394.39 when the ATH price today was $256.43 post 20-1 split).<P>What I've found: Yfinance has not yet updated their historical price data and as such the values coming from there are PRE-SPLIT values. This will mess with any reports doing historical price analysis against current market values until things are updated on the yfinance side. Just be aware of this if you start seeing tickers with unexplainable massive % gain or declines as this is the culprit. You've been informed. | 692787 | Monday | Mon | 15 | 15<sup>th</sup> | 15 | June | Jun | 6 | 06 | 2026 | 26 | 5 | 05 | pm | PM | 17 | 17 | 26 | 10 | 8 | ~a week | evening | PM |
| 2026.06.12 @ 12.30.41 | .update | [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (stability.py) Consolidating reports (25 was already too many). Script now outputs 2 sets of distinct but similar reports (5 in total to date). Each one will cover 1M, YTD, 1Y, 2Y, and 5Y and return top 20 results per timeframe. Files with 'nofilter' in the name have no chaos filtering and no volatility smoothing (1). More reports will appear later as I deem them needed.<P>+ [SET 1] STABILITY BASED</p><p>Currently, 3 reports with varying "chaos" limiters and a 'nofilter' report. <P>Reports that use chaos values will list them in the filename.<P>Example: <i>stability-chaos=[Move]pct@[Limit]pct@[Smooth].txt</i> <ul><li><b>Move</b><br>..... threshold % for abnormal daily returns,</li><LI><b>Limit</b><BR>..... allowed % of abnormal days</li><li><b>Smooth</b><BR>..... volatility dampener; 1=none, higher=magnified, lower=minimized</li></ul> <P>Current file(s): <UL> <LI>stability-chaos=4pct@10pct@1.5.txt ("stability obsessed")</LI> <LI>stability-chaos=5pct@12pct@1.0.txt ("sane institutional")</LI> <LI>stability-chaos=6pct@18pct@0.7.txt ("momentum friendly")</LI> <LI>stability-nofilter.txt ("Catch all")</LI> </ul> <P>+ [SET 2] CATAGORY BASED <P>Reports that prioritize based on catagory order in filename: (1st sort)_(2nd sort)_(3rd sort)_(etc). The current catagories available are: <OL><LI>Return</LI><LI>Updays</LI><LI>Consistency</li><li>Efficiency</li><li>Stability</li><li>Momentum</li></ol> <p> Current file(s): <UL><LI>momentum_stability_return-nofilter.txt</LI></UL> Use at your own discretion, and as always, dbl-check values. | 969716 | Friday | Fri | 12 | 12<sup>th</sup> | 12 | June | Jun | 6 | 06 | 2026 | 26 | 12 | 12 | pm | PM | 12 | 12 | 30 | 41 | 11 | ~a week | afternoon | PM |
| 2026.06.10 @ 18.04.06 | .update | [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (ma200.py) Creates a report based on the 200d moving averages of the tickers in the tickers.txt and price histories from pricehistory_365.txt in the datasets folder.<UL><LI>ma200.txt</li><li>ma200.csv</li></ul>These files are identical but the csv allows for easier importing into spreadsheet apps for personalized column sorting.<p>Fields are: Ticker, Current price, MA200 average price, MA%, 1w%, 1m%, and YTD%.<P>Reports refresh daily at 5pm PST. | 1122511 | Wednesday | Wed | 10 | 10<sup>th</sup> | 10 | June | Jun | 6 | 06 | 2026 | 26 | 6 | 06 | pm | PM | 18 | 18 | 04 | 06 | 12 | ~a week | evening | PM |
| 2026.05.15 @ 22.30.45 | .update | [ <font size=2><a href="/sean/datasets" target="_new">/sean/datasets</a></font> ] :: (pricehistory.py) Update pricehistory script to address an issue where adding new tickers to an existing pricehistory_max.txt file was not getting all price data and only returning current price data. Also updated the script to omit all trailing comma separators on tickers that have no extended price data for dates outside it's IPO date in an effort to bring down the overall file sizes. Dataset files are being updated now. | 3352912 | Friday | Fri | 15 | 15<sup>th</sup> | 15 | May | May | 5 | 05 | 2026 | 26 | 10 | 10 | pm | PM | 22 | 22 | 30 | 45 | 38 | ~a month | evening | PM |
| 2026.05.04 @ 22.29.03 | .update | [ <font size=2><a href="/sean/datasets" target="new">/sean/datasets</a></font> ] :: (pricehistory.py) Created a new subarea for datasets I generate for analysis. I'm now generating and hosting CSV-formatted, stock market price history files at https://sean.shrum.net/datasets. This is keyed to tickers.txt located in the same location.<br> <UL><li>pricehistory_max.txt :: ALL price values available thru yfinance<li>pricehistory_365.txt :: latest 365 weekdays price values (faster d/l)</ul> Files have .txt extensions for browser viewing but only need to be renamed or appended with '.csv' when stored locally (not needed but aids in spreadsheet processing without prompting you for delimiter type). All pricehistory files will have current date closing values auto updated every weekday starting at 6pm PST in col 2. Header is ticker followed by newest date first, next date, etc... Check file timestamp before d/l'ing to be sure it has been updated. | 4303414 | Monday | Mon | 4 | 4<sup>th</sup> | 04 | May | May | 5 | 05 | 2026 | 26 | 10 | 10 | pm | PM | 22 | 22 | 29 | 03 | 49 | ~a month | evening | PM |
| 2026.05.04 @ 20.29.03 | .update | [ <font size=2><a href="/sean/datasets" target="new">/sean/datasets</a></font> ] :: (tickers.txt) Creating a system that will pull ticker values for later local analysis and reporting. Tickers.txt will be populated with Dow 30, Nasdaq 100, S&P 500, and the Russell 2000 as well as a few others I track. Roughly 3000 tickers, My threshold for inclusion will be tickers with a market cap of >$1B. This file will be used to populate pricehistory output text files. | 4310614 | Monday | Mon | 4 | 4<sup>th</sup> | 04 | May | May | 5 | 05 | 2026 | 26 | 8 | 08 | pm | PM | 20 | 20 | 29 | 03 | 49 | ~a month | evening | PM |
| 2026.04.13 @ 17.31.24 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/launcher">/sean/code/launcher</a></font> ] :: Added volume label monitoring to Launcher which makes my VolRun script obsolete. If you are using VolRun, you will want to upgrade to Launcher 3.3.18.0 or later. | 6135673 | Monday | Mon | 13 | 13<sup>th</sup> | 13 | April | Apr | 4 | 04 | 2026 | 26 | 5 | 05 | pm | PM | 17 | 17 | 31 | 24 | 71 | ~2 months | evening | PM |
| 2026.04.09 @ 16.20.41 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/launcher">/sean/code/launcher</a></font> ] :: AI assisted redo of Launcher 3.2. New version, new interface, same functionality. Docs, code, and exe are uploaded. | 6485516 | Thursday | Thu | 9 | 9<sup>th</sup> | 09 | April | Apr | 4 | 04 | 2026 | 26 | 4 | 04 | pm | PM | 16 | 16 | 20 | 41 | 75 | ~2 months | afternoon | PM |
| 2026.03.13 @ 00.53.50 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Rewrite and new version 2.0. Now includes an active key capture dialog and uses key names (Ctrl, Alt, Win, Shift) instead of code characters (#$^!). Will not work with v.1 combos as the subfolder naming is different. You will need to recreate your Hotrkeyz combos and copy the program links from your old v.1 combo folders into the new v.2 combo folders. Documentation has been updated with new operations and screeenshots. | 8873927 | Friday | Fri | 13 | 13<sup>th</sup> | 13 | March | Mar | 3 | 03 | 2026 | 26 | 12 | 12 | am | AM | 0 | 00 | 53 | 50 | 102 | ~3 months | morning | AM |
| 2026.02.18 @ 20.42.10 | .update | [ <font size=2><a href="/cats.php?dir=/sean/code/hotrkeyz">/sean/code/hotrkeyz</a></font> ] :: Rev to v.1.06. Added a 'first run' dialog that explains basic usage of Hotrkeyz. This dialog then goes silent on future executions. Documentation updated to include screenshot of dialog. Added some additional FAQ entries as well. | 10786227 | Wednesday | Wed | 18 | 18<sup>th</sup> | 18 | February | Feb | 2 | 02 | 2026 | 26 | 8 | 08 | pm | PM | 20 | 20 | 42 | 10 | 124 | ~4 months | evening | PM |
| 2026.02.18 @ 17.52.52 | .update | [ <font size=2><a href="http://www.shrum.net/sean/code">/sean/code</a></font> ] :: In an effort to give me more flexibility on file locations, I've modified all projects to route web calls for updates to '[project dir]/updates.html' which will redirect to the appropriate CATS call and location of the update files. This allows me to move updates in the future without having to modify code and recompile. Additionally, the same has been done for support calls. These now all go to '[project dir]/support.html' to be redirected. Any project that had a 'donate' link in it has had this removed. All projects that use these calls have been updated and recompiled. | 10796385 | Wednesday | Wed | 18 | 18<sup>th</sup> | 18 | February | Feb | 2 | 02 | 2026 | 26 | 5 | 05 | pm | PM | 17 | 17 | 52 | 52 | 124 | ~4 months | evening | PM |
+ Creating / formatting HTML recordset table and populating [RECORD] template with [DATA]...DONE
+ Combining templates; [RECORD]set=>[TABLE]=>[BODY]=>[PAGE]<=NAV
+ Applying S&R on recordset entries (start, last, slicenext, sliceprevious, slicefirst, slicecount, etc)
+ Applying S&R on tokenized entries (parameter, _SERVER, keyword, and script)...
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||