Versions ======== 0.00 2014/11/27-29 The manga reader on my phone stopped working, so I thought about writing a similar sort of program for RISC OS, only without all the endemic advertising. Fetches from MangaReader(.net), parses the manga list, displays the info for each manga. The time taken (27-29) was multiple attempts at building the menu in a sensible time frame until I decided on doing it alphabetically. A huge list was possible (RISC OS doesn't break sweat at a 10,000 entry menu) but it's a real sod to navigate. By initial letter is much simpler to work with (as a user). Ghost In The Shell is under G, not "waaaaay down". ...promptly forgot about this project, along with a load of other things swimming around in my head like seasick goldfish... 0.00 2017/07/12 Can now load chapter information, create page links. 0.00 2017/07/13 Can now fetch pages. SELECT for the next page, ADJUST for the previous. 0.00 2017/07/14 Fixed a bug where loading one manga would show the images from another, I was using the *chapter* number as an offset into the manga array, not the manga ID. Duh. ;-) Wasted a bunch of time reading some random manga. 0.00 2017/07/15 Fixed a few annoyances (like the image now returns scrollbar to the top with each new page) and removed a bunch of debugging messages. Want to drop it onto my website and post an announcement on the ROOL forum, but... too busy wasting time reading manga. ;-) Don't complain though - thanks to this Manga now supports scrollwheels. 0.00 2017/07/16 Extended MANGAMAX to 8000, as the current count (4462) was getting close to the original limit (5000). Back in 2014, there were ~3500 entries! Hardened the manga parser so if the limit should be crossed, it will give up gracefully and not Epic Fail. :-) Index array now holds the length/CRC used to generate the "MangaID" which is used to refer to files in Scrap. As the array has changed, the program will reject the older index file and cause a new one to be generated from fresh data. As this happens anyway >24 hours, this is no big deal. ;-) The "index" file now only saves the information for the available mangas, instead of dumping the entire array. A shortcut added to the page fetcher that if an image matching the desired MangaID and chapter/page exists, it will immediately be loaded instead of requesting page information first. Big speed-up on going through pages already read/cached. Now should ask you to retry if something went wrong while fetching the chapter information. This is hard to test as server response faults are essentially random... A new file will be created in Scrap, called "_index", it will just list the MangaIDs against the titles. It's for you, so you can look up what each ID relates to. Now implements a history. When you click "Go!", if a manga is successfully loaded, an entry will be added to the history. This is available at the top of the big menu, to make it easier to get to things you've been reading. 0.00 2017/07/17 Overzealous caching meant that the fetcher kept returning the SAME chapter information file when looking up chapter information. This showed up in "I Am A Hero" as the first chapter has 46 pages, the rest... less so. If you hit a bunch of unexpected 404s, this is why. Ooops! :-/ Fixed redraw issue when loading a new manga with the main viewer window open. There's code to receive/send cookies. It isn't compiled at the moment, but it's there should the source tighten up on things. [note to self - it looks like the "Referer" is the chapter, not the page (snooping headers in Firefox WebDev)] History cross-references to determine the appropriate manga reference when Manga loads. Those that do not reference a manga (this'll be due to source being taken down) will be greyed out in the menu. Manga now responds to a Manga URI, in the format "manga:xx-xxxx" where "xx-xxxx" is the MangaID. Note that "manga:" must be lower case. Fixed the issue with the clipped title bar text. Overlong manga titles will be clipped with an ellipsis, so the chapter/page numbers always appear. 0.00 2017/07/19 Now records the "last page read" in the history, which updates as you read the manga. Note that the FIRST page that you read does not update the history. This is because an entry is not added to the history until something has been successfully fetched (in case links broken, etc); and as such there will be no history reference for that manga until after it has been loaded. Subsequent pages will be recorded, however. The "You have read..." will tell you if you have read this manga or not, and if you have, how far you got (chapter and page). By default, if you HAVE read a manga, the last chapter read will be highlighted as the default. However, there is a new icon which says "Where left off" that - if ticked - will override the chapter setting (which always defaults to page 1) and will instead take you DIRECTLY to the last page you looked at. As this makes it really easy to pick up where you left off earlier, this option is always ticked by default. If you have a history file from an earlier version of Manga, it will tell you that you read up to chapter 1 page 1; any further reading will be recorded correctly. 0.01 2017/07/21 A version bump at last, now this program appears to be behaving nicely. Maybe time to consider it more beta than alpha? Or have I jinxed things? :-) This is mostly a tidy-of-annoying-quirks release. It is possible to have the manga selection window open at the same time as the manga viewer. Now choosing a different chapter number in the selector won't mess up what you're reading in the viewer. Using the up/down toggles on the chapter number to read will automatically untick the "Where left off" option, on the basis that if you're manually choosing a chapter, you don't want to resume where you left off... Fun was to be had if you had the viewer open at the same time as the manga selector, and you chose a new manga from the Big Menu. Now choosing a different manga will forcibly close the viewer. Ctrl-Adjust goes back ten pages (to match Ctrl-Select going forward ten). Won't go before the beginning of the chapter. Ctrl-Select beyond the end of a chapter will go to the first page of the next chapter. No longer tries to fetch beyond the last chapter before telling you that there is no more to read. No longer closes the viewer upon having no more to read, it isn't a serious error that warrants closing the viewer! Clicking Adjust to go back a page (or ten) on the first page of a chapter will go back to the last page of the previous chapter. Now records the chapter/page number for the very first page loaded. MangaDump now always displays the history, even if no manga is currently being read. The page fetcher now interlocks, so clicking the viewer window repeatedly won't fire off as many incremental fetches as clicks... it did actually work but the result might not have been what was expected. :-) Now it does strictly one page fetch at a time. Removed initial one-time warning, as the program seems fairly stable now. :-) Now registers itself as supporting manga URIs to auto-start Manga if the user clicks on a "manga:" link without Manga running. The command line parameters are "-u ". The "Clear cache" entry now deletes the cache contents (after asking for confirmation prompting with number of files and their total size). [mine's 806 files, 129MB - it adds up!] Because it was useful to poke around in the cache (or is that just me?), there is a separate entry in the iconbar menu to open the cache. It's .Manga...in case you're interested. (at start-up, Manga copies the file "!ScrapFiles" there, which explains what all the files are and their purpose...in case you're interested) 0.02 2017/07/24 Application name officially registered 2017/07/23 (Sunday! Eeek!). "index" and "history" now stored in Choices:Manga. If you have "index" and "history" within the application (any previous installation) then these files will be automatically moved to Choices. Removed the warning if you try to run Manga from an archive. No longer wants to place a *BIG* file there, so it's okay. Removed the WarnOldOS prompt. As a feature against possible file corruption, the history file is copied if it's been more than three days since the last time. The copy is held within Choices:Manga with the filename "history_yyyy-mm-dd". Note that the datestamp of the Choices:Manga directory is what is used to determine when to create the backup. There's no provision for backing up the index file, it is recreated if it's older than 24 hours, and if there is any doubt about the file's contents, just wipe it. It'll be recreated from freshly fetched data. Manga will report "Manga is already running." and quit if... guess what... if Manga is already running. :-) This is because having multiple instantations of an application each writing to their own copies of the SAME files could be messy. What happens to the history, for instance? Licence amended now that the software is fit for posting on my site. 0.03 2017/07/25 Changed HTTP request to use the correct "\r\n" style of line ending (instead of just "\n"). Ironically, the only server to have complained so far about the wrong terminator was heyrick.co.uk. :-) Added some code to link into DADebug if it is present (and DEBUGCODE is defined). This will aid with development. [note: your releases probably won't have this code included] When Manga starts, it will check for updates. This works by fetching a small file describing the current version and comparing the version available with the current version. If there is an update, you will be asked if you want to download it. If you reply "Yes", the update archive will be downloaded and then 'run' (which should open it in SparkFS, if you have that running). A better update mechanism will be considered for a future release. You can disable the update check by setting the system variable Manga$NoUpdateCheck (doesn't matter what - it's the presence that matters). Setting Manga$BetaTrack will look for updates on my private server rather than the "properly released" updates. 0.04 2017/07/26 Now responds to the Desktop shutting down and quits accordingly, as it is supposed to. [bug reported on ROOL forum by Doug Webb] 0.05 2017/07/27 I'm on holiday now, YAY! Expanded buffer size for dealing with manga that has long names, such as Re:Zero kara Hajimeru Isekai Seikatsu - Daiisshou - Outo no Ichinichi Hen (which is so long I can't put quotes around it and have it fit the line) Update file is now placed in .Manga.Update so it can be kept apart from the *many* files that may turn up in the cache. Because: Manga looks to see if there is something to handle Zip files. If there is, it will "run" the update file (should cause something (SparkFS?) to open it). If there is nothing to handle the archive, then the containing directory will be opened along with a message about what to do next... The update prompt now has a "More info" button that will download a short file that says what is new in the last release or two (depending on frequency of release). Clicking "More info" aborts the update process. This is so you can read the information provided (not possible with an error box on the screen). You should quit and restart Manga to restart the update process if you wish to update. Yes - this IS ass-backwards, but it is a stop gap until a nicer GUI method available. That'll be done soon. No longer advances beyond the next page if there was an error fetching. Clicking to try again will retry the same (next) page, not skipping one. 0.06 2017/06/31 Removed never-used Cancel button from the slidey-bar status window, so now the slidey-bar can take the entire width. It looks better... Changed the update notification to a pleasant-looking UI instead of all those error boxes. Work in the background for a major new feature. Some code is there, but the feature doesn't work yet, only parts of it. What? You may ask... well, that would be telling... I'd get more done if I didn't get sidetracked reading "Azumi". :-) 0.07 2017/07/02 Better traps duff image data, and generates a "null" window that is blue and says "No image data available..." upon this happening. Now deletes downloaded file if download was incomplete, to avoid leaving junk in the cache. Should help with problem reported by André here: https://www.riscosopen.org/forum/forums/11/topics/9401?page=2#posts-68918 Switching to a different manga with the main viewer still open no longer writes last-read-up-to references to the wrong manga. The main viewer now has a "Chapter" menu. The "Help" option will bring up the little inline help message (as Menu click did previously). Other options are the available chapters, and choosing one will take you to the first page of that chapter. [suggestion by André] 0.08 2017/08/25 The addition of some new functions in DeskLib 2.30 / RM (32) means a few things can be changed in Manga. No new functionality, just a few small changes as described below: The HTTP fetcher is now case INsensitive in its parameter parsing, as is the spec; pretty much every server on earth will return "Content-Length:" but it's wrong to choke if one says "cOnTeNt-LeNgTh:" instead. The new "Error_Question" function requires us to specify what our buttons should be, which can make for more expressive questions than simple Yes and No buttons are able to offer. For instance: Are you sure you want to delete all the items (2860 files totalling 457 Mbytes) in your Manga cache? [No] [Yes] versus: Are you sure you want to delete all the items (2860 files totalling 457 Mbytes) in your Manga cache? [Cancel] [Delete cache] While "Yes" and "Delete cache" are equivalent actions, the "Delete cache" button is an affirmation of what is going to happen if you click it. The Yes/No questions have been organised so that pressing ESCape (eg. the No option) will always be the option that does nothing. Consider, for instance, a disc formatter that popped up the following question: Are you sure you want to leave your media as it is currently? [No] [Yes] In this instance, the Yes option would do nothing, and the No option would initiate the format. Yes, I've actually seen messages that dumb in commercial software. :-) All of the error messages now have an appropriate category. Most are warnings. Some are informational (like trying to load the previous page when you're on page one) and the ones you don't want to see say "STOP" and mean the application must quit. 0.09 2017/11/30 Implemented scale-to-fit. This will scale large images DOWN to fit in the screen area. It won't zoom smaller images up. The scaling does not appear to attempt to anti-alias, so in my opinion it degrades the image quality, but you may prefer it to normal size if you don't like scrolling. It probably depends upon what you're reading. To toggle the scale to fit option on and off, there's an option in the iconbar menu. If it is ticked, then any subsequent pages of manga that you load will be scaled (if necessary). If you want to have this option enabled as the default, open up the !Run file. At the bottom is the line: Run .!RunImage %*0 append an "-s", so it now looks like: Run .!RunImage %*0 -s then save the !Run file. You can still control whether or not scaling is performed by UNticking the icon bar menu option. [added for Patric Aristide] 0.10 2017/12/03 Scaling enhanced so that it will try to pass the JPEG to ChangeFSI for rescaling, falling back to the lame method if ChangeFSI cannot be found. This adds around 5-8 seconds to the image loading (depending greatly on JPEG size and processor speed), however the results are pretty good, so you may wish to consider this if scrolling is annoying. 0.11 2017/12/30 Added a little toolbar, with many thanks to Martin Avison for help in getting the extended Nested Wimp stuff working. The toolbar will appear on capable Wimp versions. Toolbar icons: '<' Previous page '>' Next page 'c' Toggle auto-centring of pages (best keep this on unless you have a HUGE screen). Adjust-click to push the current page to the centre without changing the setting. 's' Toggle whether or not scale-to-fit mode is enabled. 'b' Currently disabled. For a future addition. Now supports !Help for proper help. Choosing the "Help" option from the menu will now run !Help, instead of popping up a rubbish help message. All internal messages are, now, held in the Messages file. Main menu now has option for toggling auto-centring. 0.12 2018/01/06 Added a forced timeout to abort a download if no data is received in a five second period, to counter the stalls reported by Tristan M. https://www.riscosopen.org/forum/forums/11/topics/9401?page=3#posts-72923 0.12S 2018/01/13 Version released on !Store. No functional changes, just 'S' suffixed to the version number... [slightly different configuration - doesn't auto-check for updates] 0.14 2018/01/15 Will now use multitasking (Resolver) lookup if available (it should be!), reverting to blocking lookup otherwise. Lookup timeout is eight seconds. [this is for changing the domain name into the IP(v4) address that the Internet stack requires] Fixed a bug where a JPEG that doesn't need scaling would invoke ChangeFSI with a zero scaling (ChangeFSI would silently abort with a division by zero error, and the original JPEG would be loaded, so it was working correctly as far as the user could see ;-) ). Now pops up a warning message if you have invoked update checking but are NOT on the beta track. This is because since !Manga is on !Store, it is updated there and not on my website. The beta track is maintained, that's where you may have obtained this version from. ;-) Default configuration for !Store release is to NOT check for updates. And for Beta Track releases? To check for Beta Track updates. [it's controlled by the !Run file] Fixed typo in help. Hold CTRL to skip, not SHIFT. Various updates to the !Help file. 0.15 2018/01/18 Cache image filenames amended. Used to be like "J_04-240F_01-01", now like "04-240F.001-001" (note the subdirectory). This has been done because: 1, My cache contained over 3,100 files. In one directory. That's ridiculous. So now they are held in a per-manga directory. 2, The original names would fail to be unique on older (pre RISC OS 4) machines that only support 10 character filenames. 3, Some manga has lots of chapters/pages. The filenames would overflow to be longer if necessary, but it would look messy and not sort nicely. When Manga starts, it will look to see if any old-style names exist, and if they do, will convert them to the new naming style. This, as you can expect, only needs to happen the one time... [on my Pi2, it took a little over two minutes to rearrange the 3,100 files] Hardened cache conversion routine to deal with the mess if user goes back to an older version of Manga (old style cache) and then runs this version (or later) again. Dupe files will now simply be deleted. Other temporary data is still kept in the base Manga directory, such as Manga descriptions and cover thumbnails, etc. Cache clearing routine moved to the new "cache" module, and amended to correctly count with the new caching method (steps into each manga directory and counts the files within). 0.16 2018/02/06 Added keyboard control, as it's cold and I didn't want to keep holding the mouse with the same hand (switching is not an option due to where it is). So... keyboard controls! ;-) Alt-click the manga viewer window to give it focus (yellow highlight). When it has focus... Left - Previous page Right - Next page Up - Scroll up Down - Scroll down ^C - Toggle AutoCentre ^S - Toggle Scale-to-Fit ^Q - Quick Exit (quits application immediately) ^V - View cache (opens cache directory) F1 - Runs !Help Minor changes to !Run to ensure that we have at least RISC OS 3.50 and Internet. Manga needs JPEG drawing so this precludes RISC OS 3.10, and since it fetches from a website, checking for Internet (TCP/IP) is logical. 0.17 2018/02/09 The general concensus of opinion on the RISC OS forums is: * Have the *first* click of the viewer window set the input focus, with subsequent clicks changing the page as normal. [remove the Alt-click behaviour] * Use normal keypresses instead of control keypresses. Both of these have been implemented. The control keypresses work as well, but will be removed in a forthcoming version, so please use these keypresses: Left - Previous page Right - Next page Up - Scroll up Down - Scroll down C - Toggle AutoCentre S - Toggle Scale-to-Fit Q - Quick Exit (quits application immediately) V - View cache (opens cache directory) F1 - Runs !Help Fix to prevent toolbar buttons from causing the input focus to be claimed if the viewer window doesn't currently have it. :-) 0.18 2018/03/05 Quick hack to support SSL since mangareader.net now redirects all requests to SSL. This requires the R-Comp SecureSockets module. You may have this if you have NetFetch or the like (look in !System.500.Modules.Network for "Secure32"). If not, please ask R-Comp for a copy. As I said, this was a quick fix to get Manga running again. It seems to work okay on my Pi2, reading several different manga. If it should misbehave, please let me know. You are given a "bytes transferred" instead of a slidey bar like before, as for some reason the server headers do not include a length report, so Manga just needs to keep going until it runs out of data. Also, there is some subtle throttling in there (which will slow things down) as running SSL too fast resulted in the transfer throwing error 99 (no idea what that means, but throttling made it go away). 0.19 2018/03/06 Changed code to use htons() for setting the port number. Thanks to Peter Howkins for this suggestion. Altered SSL fetcher method to use a time-based delay instead of just polling the wimp a few hundred times (told you v0.18 was a quick hack!). The thing is, without any delay, the data transfers are corrupted (and may abort early). With a delay, they are okay. The default delay is now 3cs in between each chunk, and the chunks can be up to 4KiB to account for the delay. As the appropriate delay *may* depend upon processor speed (2cs+ works fine on my Pi2, 1cs messes up, so I've settled on 3cs to give some margin); there is a system variable "Manga$NCFetch" which you can set: *Set Manga$NCFetch 5 to give a 5cs delay. Hopefully 3cs will work okay for everybody... If you find your manga index truncated (missing some/most entries) or your images not updating or updating with rubbish, then this problem is biting you. Add some more delay! [and delete "mrindex" in the cache] On my Pi2 - a 3cs delay gives me ~60K/sec a 2cs delay gives me ~85K/sec a 1cs delay gives me ~177K/sec and sometimes corrupts a 0cs delay gives me ~250K/sec and always fails Given it takes several seconds for ChangeFSI to scale the images, you might prefer 2-3cs and good data? I know I do... Since the downloader no longer has a slidey bar for manga fetches (due to the lack of a "Length:" header - is this the fault of CloudFlare?), it would report how much has been fetched; which is typically 330K or so for the index, 11K-20K for chapter info, and 60K-160K (ish) for the images. The thing is, a rapidly changing number is pretty useless as anything other than an indication that something is happening. It might as well have been WOPR trying to crack the nuclear launch codes... So this has been changed to report the size in bytes (up to 4K), and then Kbytes beyond. It uses the OS routine, so Kbytes here has a small 'k' for some obscure reason (given 'M' and 'G' are both capitals). Now performs an extra check to ensure the SSL module is present. Altered !Run to look for "SecureG" in !System, reverting to the one within !Manga if that doesn't load. [older machines without the BootCommands module will always have the one loaded from !Manga]. Manga is now supplied with the SecureSockets module by kind permission of Andrew Rawnsley (R-Comp). This makes it a lot easier for you to get Manga working after the HTTPS change. Just start it up and hit the ground running. :-) 0.20 2018/03/10 Stability revisions to the SSL code. We can now try it without the throttling - it is disabled in the !Run file so is still tweakable if necessary. Side effect? Fetches are more like 250K/sec+. Sweet. 0.20S 2018/03/12 Version built for !Store update. No functional changes. 0.21 2018/04/23 There is some weirdness (leftover debug code?) that in some circumstances will end a block of data with erroneous &0D &0A bytes, and begin the following block of data with four hex digits followed by an &0D &0A byte pair. This, surprisingly, didn't seem to break things, which is why it wasn't noticed. It did, however, cause a fatal crash when reading Naruto, because the junk data appeared in the middle of a chapter URL, which threw the parser into a tizzy and... bang. So now the SSL fetcher looks for the &0D &0A marker and if found, takes approriate action to suppress the unwanted rubbish. This should not conflict with MangaReader as it does not use &0D &0A for its line termination... 0.22 2018/06/05 A problem came to light when my server was off for extended periods of time - Manga would fetch the list of new mangas and then hang. [reported by Doug Webb] It turns out that the initial connection to a server was being done in BLOCKING mode, which means that it would simply sit there forever trying to connect. As that was about as useful as a chocolate teapot I have changed the connection code to perform a non-blocking connect with a five second timeout. Additionally, when looking for a beta-track update, the mouse pointer will briefly appear in green-on-cream (visual confirmation). The normal colours will be restored once the check has completed. 0.22S 2018/06/15 Same executable as v0.22. 0.23S 2018/07/02 Fixed small bug where trying to fetch manga info would pop up a status message about fetching an image, with "%d" for the chapter and page. This was because both of these functions used a message with the same tag. Oops! Manga now indicates if manga should be read right-to-left (this is the default) or left-to-right (for western origin manga and manhwa (from Korea)). Note - the index will need to rebuilt in order to note which manga are to be read left-to-right. This happens automatically once the file is older than 24 hours; you can force it by using Manga's icon bar menu to "View cache", and then deleting the file "mrindex", then quit and restart Manga... The beta-track version will identify itself as v0.23S as both were created at the same time with the same executable. 0.24S 2018/07/04 Fixed bug where a timeout would be reported as a communication failure (type 36). It'll now say that it's a timeout. Reverted SSL fetcher to use blocking connection. This is because the server (now seems to be hosted by CloudFlare's CDN?) frequently failed to respond when using non-blocking connections; but blocking ones work reliably. I'll look to see if I can work out why some other time. What's important today is getting our manga fix. ;-) The beta-track version will identify itself as v0.24S as both were created at the same time with the same executable. 0.25 2018/07/29 Tweaked manga info parser to now correctly extracts the cover image path, so the cover images work again. Some tweaks to a few errant messages. Altered Templates to remove green slidey bar from the "busy" window. The SSL fetches don't return a content length in the header, so there's no way to know how much data is going to be received... Added a Settings window, with settings saved in Choices; instead of the -s parameter or the menu choices. -s is ignored. Menu choices no longer exist. Internally refactored the code to use the settings options instead of the two globals (autocentre and autoscale) that it used to use. Implemented a "What's new?" at start-up. Clicking on an entry will load that manga into the manga selection window, with the indicated chapter (if applicable) highlighted. Click "Go!" if you wish to begin reading. Added a "What's new?" entry to the iconbar menu, in case you don't want it during start-up. The settings window gives you the opportunity to participate in the beta track update checking. This is now the way to control if Manga looks for updates. The system variables no longer have any effect. Additionally, there is ONLY the ability to join the BETA track; checking for main updates has been obsoleted as Manga is now available from !Store, not my heyrick.co.uk site... Implemented a "Suggestions" menu entry in case you need some inspiration. Clicking on an entry will load that manga into the manga selection window. If the manga interests you, click "Go!" to begin reading. [it's mostly recycling the What's new? behaviour] Noticed that the older Ctrl-keypresses were still supported. As these were deprecated in v0.17 (February), they have now been removed. 0.26 2018/07/31 What's new? and Suggestions listings now terminate the title with an ellipsis if the title is longer than the space allocated (which is now a little bit bigger than before). What's new? list will add an ellipsis if an entry has multiple new chapters. The suggestions list will now say how many chapters are available with each manga. Yes, Naruto is 700 and Bleach isn't far behind; but just wait until you see how many chapters One Piece has. If you pick these, you're in it for the long haul... History editor implemented. You can sort all of the entries either alphabetically, or by most recent (at the top). You can also delete the entry that you click over, and optionally remove associated files from the cache (this is recommended to avoid orphaning the files). Additional interactive help added. 0.27 2018/08/02 Recycled that list-of-manga window yet again. This time for a fully blown search by title (or partial title) or by genre. You can use this to search for new manga to read. Protip: Leave the search phrase empty and use the genre choices to discover new manga. It's easy to search for tragic psychological horrors or gender-bender mecha (actually, I lie, nobody has written anything that fits the latter...yet?). If you don't happen to know your "Shônen" from your "Josei", the interactive help is for you. 0.28 2018/08/06 A quick'n'simple but really useful hack today. :-) When you begin reading a manga, Manga will try to precache the next page so it is available for instant display. A side effect of this, given that fetching takes time, is that if you change page quickly, it may seem as if nothing is happening. This is because the precache is still taking place in the background. In this instance, will beep. Try again in a short while (how long depends upon your connection). [looking at your network activity indicators may be helpful] Generally speaking, a precache fetch on a 3(ish) megabit connection will be faster than it takes to read an average page of manga. How do I know? Guess who got sidetracked^W^Wtested it with Azumi. ;-) On the really hot days, it seems there was a problem with the auto updater due to a flakey connection to my home server - not sure if it was the broadband or the WiFi bridge. It was suggested that the delay in attempting the connection be increased. I have decided NOT to do this, as I reserve "up to 5 seconds" for the DNS lookup, and "up to 5 seconds" for the connection attempt. To my mind, if the server isn't going to sensibly respond in that time, it isn't worth continuing (imagine how slowly it would send any update file, given that said updates include the SSL module so are quite large). Today, a server in Sweden (tools.pingdom.com) took 12.33s to fetch a 1.2MB text file from my site; so this slowness is only a temporary problem. The side effect? You might not be notified of an update the moment it is released. But when you start Manga in the future (and communications work), you'll be notified... 0.29 2018/08/11 A (synthesised) download failure of the manga info file (the one used when you choose a manga in the selection window) was treated as a fatal error. This is dumb. So now you'll get a message and be sent back to retry or pick another manga... Additionally, if the info file is too small to be useful (quoted as less than 1024 bytes in length), it will trigger a refetch instead of opening an obviously bad file and then getting stressy. As well as beeping, a fetch attempt while a fetch is in progess will pop upon a little window (lower left of the screen) to say that a fetch is in progress. It'll go away when the fetch is complete. Some additional interlocks to prevent fetching-while-fetching issues. Added configuration option to disable precaching. It is NOT recommended that you use it (fetching in the background, even if slow, is surely better than fetching on demand), but it's there if you want it. More sympathetic polling when doing background fetching (not that you'd notice on a modern machine ;-) ). Also responds to a quit request immediately, doesn't complete the fetch and THEN quit. Due to code copy-pasting a billion years ago, the "age" of the manga info file was being determined by looking at the file of the big list of manga. This has been fixed. Note that SSL connections BLOCK while connecting. It seems that connecting normally only works for BLOCKING connections. Trying to use non-blocking will cycle forever as EINPROGRESS without actually progressing (test code left running half an hour while I went to get the bin from the top of the lane...). If a "new" entry appears very recently in the "What's new?" list, it is possible that it won't be able to be looked up in the manga index if it's more recent than the last index update. In this case, you will now be given a message to explain this (instead of nothing happening). Additionally, starting Manga while holding (either) Alt key will cause the index to be updated regardless of how old it is (by default it updates at program start if the file is more than 24 hours old). 0.30 2018/08/18 Reporting the version (parameter -v) now works. Previously would give a blank reply, as was using Messages before they were set up. Internal tweaks and enhancements to how the SSL stuff is handled. Fixed precache updating the history, so your "read up until" was being one page ahead of where you really were. Now supports Ctrl-Left and Ctrl-Right keypresses to go backwards or forwards ten pages (this mimics the Ctrl-click behaviour). The What's new / Suggestions / Search results / History editor window now supports the use of scroll wheel. It's a shame that one cannot do the same thing with large menus... 0.31 2018/08/24 Special patch version: Today's release of AcornSSL now supports non-blocking, but when I'd be expecting EWOULDBLOCK (which ought to be error &20E35), I'm getting something about SWI &80146 not known... So Manga works when all the data can be received in one go, and fails otherwise. This version simply disables the non-blocking behaviour so it will behave like before (and work). While I'm here, I can come clean. The "Internal tweaks" to the SSL stuff in version 0.30 was a huge chunk of code to handle the AcornSSL module _as well as_ SecureSockets. It'll still use AcornSSL by preference. ;-) 0.32 2018/09/21 MangaReader has become horribly slow and unreliable for me, so I have made some changes to Manga in order to make it cope better with the server "just giving up", as it seems rather prone to do. Fixed problem with timeout implementation, so now the 5 second timeout works for the SecureSockets fetcher. I have not done anything for the AcornSSL fetcher as that currently works in a non-blocking mode, so that'll hang up either way... If using SecureSockets, clicking the "busy" message window with Alt held will abort the connection (once it has made it to the part of trying to receive data). This might be useful if the transfer drops to 1K/sec or something. Don't worry about it if the transfer stalls entirely, it'll time out after five seconds. 0.33 2018/11/16 Nice to see MangaReader have fixed whatever was wrong with their servers. Now between Manga and Koi-Koi, I can get even less work done! :-) Minor tweak to correctly position window at the top of the image for manga that uses tall strip format, such as Song of the Cloud whose images are in the order of 620 x 9,000 (!). Now correctly throws in the towel if there's a problem rendering the image - no longer draws junk. New menu entry added to the chapter list menu (main window), "Refetch". This will delete the current image and download it again, so if an image was received corrupt, you can now retry it. 0.34 2019/06/10 Minor change to the initial chapter handling of items selected Suggestions or What's new?. If the manga has NOT been read, then the initial chapter to read will be the first. If the manga HAS been read, then it'll default to the chapter indicated in the What's New/Suggestions. If the "Please wait, busy" window pops up because you clicked on the viewer to go the next page whilst an image was being pre- cached, then this image will be shown to you once it has been fetched. You won't need to click again. Configuration option to create the history menu in reverse order so the most recent things you've added appear at the top instead of the bottom. This is set as the default behaviour for new installs, existing users can choose it in Settings. [note - the history is built in order of manga added to the list, not which ones you have most recently actually read] Fixed a bug with the code that greyed out unavailable manga. 0.35 2019/07/05 Overview: Proper support for AcornSSL, and cache tidy. If there is no description, there's now a "no description" message instead of an empty description box. Cache location set using Manga$CacheDir. This will usually point at Wimp$ScrapDir. It was added so I can test behaviour on a hacked version of RAMFS that presents an older style device that maxes out at 77 files per directory (like RISC OS 3.x). That is... "Coming Soon". Changed AcornSSL fetcher to use the URL fetcher subsystem. Much simpler code, much less bother. :-) Created a small helper program "SSLloader" to check for and load the stuff necessary for using Manga with AcornSSL. The info window will tell you which fetcher Manga is using. After the bit saying how many manga are indexed, and how many are in the history, you'll see a letter in square brackets: [A] if Manga is using AcornSSL (via the URL module) [S] if Manga is using SecureSockets Remember, while the SSL loader and Manga will both prefer AcornSSL if it is present, you can start Manga while holding down 'S' to force the use of SecureSockets instead. Manga will now rein in the history file backups, and retain the five most recent. Manga will also trim the cruft in the cache. When Manga starts, any of the "mr_*" files that do not relate to items in your history and are over a week old will be deleted. These files are usually the description/coverart data that is fetched for filling in the "Choose a manga" window when you select something in the menu (or the What's New/Search). If you choose not to read a manga, the files would have lingered. Now they're expired after a week. 0.36 2019/07/27 Overview: Maintenance update for better support of legacy machines with 10 char/77 file filing systems. Bug fix - if an AcornSSL fetch fails due to an unexpected HTTP response (namely, anything that isn't 200 OK), Manga would have reported a weird error. That's because it was giving the value of the URL string rather than the value of the status code like it should have. Noticed with "Mourning Bride" page 1.3 which is currently returning a 520 error. By default, upon a fetch failure, Manga will set itself back to the image that worked (to avoid showing blanks), so if Mourning Bride page 1.3 failed to fetch, clicking to go to the next page would try fetching page 1.3 again. If, however, you hold down Shift while dismissing the error message, the page pointer will not be reset, so performing a new page fetch again would look for page 1.4 (which works!). This can be used to skip over partially broken manga. Now traps Disc Full and Directory Full while fetching, and reports helpful messages. Also now reports other errors that might happen, such as Disc Error. You shouldn't see many Directory Full issues, as Manga will now trap that specific error and attempt to make space by deleting the first image in the manga's cache directory, to make space for the image you're downloading. Now includes additional checks on filenames to help Manga work on earlier versions of RISC OS that only support ten character filenames. Manga uses three files ("mr_XX-XXXX" (Manga info), "mr_XX-XXXX_C" (chapter info), and "mr_XX-XXXX_P" (page info) ) which all look the same to a filesystem with 10 character names and automatic truncation. This would result in the symptom that a Manga could be loaded from the selection window, read, etc. But if you went back to it later, then it would fail to load (selection window would remain empty). This was because the manga info parsing would fail because it would actually be looking at the wrong file. So now Manga will try to open the file with some junk appended, and if that works (it shouldn't!) it'll know that the filesystem is truncating to 10 characters, and will always download the info file instead of relying on the cache. Tested on a special hacked version of RAMFS that provides older style map to behave like FileCore on legacy machines. 0.37 2019/08/16 Small tweaks to the SSL fetcher. Note that if you get crashes on High Vector builds of RISC OS, this appears to be something in the underlying transport. See: https://www.riscosopen.org/forum/forums/4/topics/14691 Rewrote the window positioning code so the window is opened and sized in only one place, and fixed the non-centred code to only resize the window to fit the screen or if the new manga page is smaller, otherwise leave it alone (though it is recommended to use the auto-centre code for best results). This will stop the toolbar briefly flickering at the top of the window Implemented bookmarking. Adjust-click the 'b' to set the bookmark (button looks 'pressed'). Click the 'b' normally to jump to the bookmark. You can also Ctrl-click the 'b' to jump to the bookmark and set the previous page as a new bookmark (so you can flip back and forth). There is only one bookmark, and it is specific to a manga. Fixed a problem in the manga parser, so it now reads more than the first two or three genres. Adjust-clicking the manga description (even if blank) will open the manga description page in a browser. It is our cached copy, not the live site. This is so that the manga description can be read if it's verbose... Speaking of descriptions, Manga will now attempt to parse UTF-8. It's a bit limited (because of RISC OS' Latin1), but it translates the stuff I've found so far. Please let me know if you see any unexpected question marks. Additional functions added to the iconbar icon. Click Select while holding Ctrl to call up the "What's New?" list. Click Adjust to call up the Search window. No longer beeps when popping up the "I'm busy" window. I'm currently enjoying "Hyakumanjou Labyrinth". :-) Manga is no longer supplied with the SecureSockets module, which makes the application much smaller (!). If you need this... http://heyrick.ddns.net/manga/securesockets105.zip 0.38 2019/08/17 AcornSSL fetcher now has an 8 second timeout, and properly multitasks while trying to connect (oops!). Fetcher multitasking is every 10cs, rather than every block like before; so fetches may run a little faster. Fixed help messages for the chapter menu. Speaking of the chapter menu, you might notice a new entry - "Add to library". You might want to try clicking it. :-) Full offline library support (I hope!). Manga can be downloaded and added to your library for either reading offline, or for reading without the delays of waiting for image fetches. Image data copied to the library is deleted from the cache, to avoid dupes. Image data that exists is skipped in subsequent attempts to download a manga that is already in your library; so this might be useful for adding new chapters to a previously downloaded manga (though this scenario hasn't been tested yet). Size estimations range from optimistic to pessimistic. It calculated Hyakumanjou Labyrinth as being between 26MB and 62MB. The actual size taken is a little under 33MB. Note: The library system does NOT cater for old map media with a limit of 77 files per directory. It will work so long as there are less than 77 pages per chapter (this is normal) and less than 74 chapters. Behaviour beyond these limits is undefined. [this is not a problem for "big discs"] 0.39 2019/08/18 Fixed a bug where Manga would crash when choosing a new manga to read. This was due to copying more data than the string had size for. I was using strncpy(), but got the size field wrong. :-( 0.40 2019/08/18 Quitting the application now works correctly while downloading. A few remaining messages embedded in the code now moved to the messages file. Failure to download chapter info will trigger a retry. If the retry fails, download will abort. This no longer pops up loads of messages. It'll just continue until it is done, when you'll see a summary. Aborting download will unset "I'm downloading" flag. Downloading a manga will no longer mess up your current reading position, and the manga reader will re-open when download complete. Now keeps track of how many pages had to be skipped when downloading, so you can retry (also shows this in the running status). Made some changes to my version of DeskLib to support a new smart-opening of windows. If a window is NOT visible on-screen, it will be opened in the centre of the display. If it is already visible, it will be brought to the top in its current position. This means in Manga that you can push the manga selection window aside when looking at what's new and it will no longer keep popping back to the middle of the screen. Blocks attempts to do certain actions (Search, What's New, Suggestions) when in off-line mode. [offline is determined as "couldn't update manga list"] 0.40b 2018/08/26 Chris Mahoney reported that Jojo's Bizarre Adventure part 3, page 1/1 had a bit of background down the right hand side. This is because the width of the scan is less than the window needs to display that title. So I have added some code to force the window background to white before plotting the image; but only if the eventual window size is larger than we originally asked for, in order to stop flickering with larger manga like "Release that witch". 0.41 2020/02/10 Oh FFS. All the work in getting the SSL stuff running, now MangaReader fails with a 301 error. This is a permanent redirect. So I look at the headers and see: HTTP/1.0 301 Moved Permanently Server: nginx/1.14.2 Date: Mon, 10 Feb 2020 18:25:11 GMT Content-Type: text/html Location: http://www.mangareader.net/ Content-Length: 185 Yeah. They aren't using SSL any more. So Manga now references HTTP (not HTTPS) and translates stored https links on-the-fly. It's all done as a build switch, so it'll be easy enough to undo it when they next change their minds. ;-) 0.42 2020/02/17 Revised SSL/non-SSL behaviour to be runtime selectable. There is no API method of switching this on and off, however hacking the configuration file to set bit 12 will switch to SSL behaviour. Detection of what protocol to use has changed, it will look for the Acorn fetcher first, reverting to SecureSockets if that isn't found. Detects Acorn fetcher by looking for URL module, not specifically AcornSSL. It's no longer possible to 'force' the use of SecureSockets by holding down 'S' as the program starts. This is because: the Acorn fetcher is mature enough to be useful, and MangaReader doesn't do SSL right now anyway... If the user is using SecureSockets, Manga will now downgrade to the plain HTTP fetcher; however it appears as if this is not working correctly as it times out with an unable to fetch (error code 36) message. This means EINPROGRESS, that the connection is in progress; but with the timeout set to 30 seconds, it's the same story. Fetcher works with my server so I don't know if it's just me or what. I've added a warning that this combo might not work (it'll appear every start-up). Annoying? Perhaps. But it's time to embrace the Acorn fetcher stuff. They're simple and they work and mbedTLS is like cutting edge up to date. What's not to like? The fetcher dispatcher will now bodge the links (http:// or https://) according to whether the program is working in SSL mode or not. The info window now has two letters in the square brackets. The first is 'A' or 'S' for AcornSSL or SecureSockets fetching, and the second is 'H' or 'S' for plain HTTP or SSL. At the current time, the best combination to see here is "[A/H]". WTF is up with MangaReader? Here's an image link from a randomly selected manga:
The Black June 1 - Page 3
So if you follow that, it'll quietly send back a 301 redirection to the non-SSL version. Uh, why not tweak whatever script generates these pages to just do that in the first place, instead of wasting bandwidth (and time) on unnecessary things? [Manga doesn't support redirection, so it'll just fix up the appropriate protocol prefix] Added handling for HTTP error code 301 to say that one should check their SSL/non-SSL setting. Will now look to see if !MangaLib is residing within a zip file, and if it is, "Add to library" will be disabled (you'll get a message). This is so it doesn't "take forever" if you try to download a manga while running !Manga directly from its distribution archive. Double-clicking on an entry in the What's New? (etc) window would cause an error about being upable to create a file, because the FIRST request would already be dealing with it. This wasn't an important error, just annoying. There's now an inhibit so you can't request manga information while Manga is currently dealing with a request; it'll beep so you know that it noticed but is choosing to ignore you. The long-description marker "[Œ]" was appearing as "[" because the UTF-8 parsing code was eating the 'Œ' character. I've done a horrible bodge to make it work again. I'm not going to fix it properly, because the code that does the interpretation needs a complete overhaul, which will happen in a forthcoming release. For now, "[Œ]" works. The end. Fixed "What's New?" parser, as it was looking for "strong" in the markup to detect where the title was, but this was going wrong with the manga called "Goblin Is Very Strong" :-) so now it looks for "strong>" to ensure it is finding an HTML tag and not a title. Now tells you if there were no search matches, instead of showing an empty results window. For the Acorn URL fetcher, the URL being fetched will no longer be shown if it's a search URL (many parameters, it's long and untidy). 0.43 2020/02/23 Completely rewrote and improved the UTF-8 and entity decoding; so it can now be applied to the author and alt. title fields as well as the description. Copes with varying types of entity encoding: * Literal '&' Re: "I Am A Hero" (author) * " Re: "Elfen Lied" (desc.) * &quot; Re: "Mx0" (desc.) * UTF-8 punctuation Re: "Good Morning Psychopath" (desc.) * \' Re: Mahoutsukai to Deshi[Œ] (desc.) * ' Re: I'm Kagome (title) Now supports entire list of named 8859/1 entities ("Á" etc). UTF-8 supports puctuation seen in titles, plus some other puctuation. It will also convert letters with macrons to ones with circumflex, so RISC OS will show you "Tôkyô" instead of "T?ky?". It also assumes that codes 128-255 are the same as 8859/1 or CP1252 (which are the same for the accented). Anything outside of this subset will be replaced with a '?'. All translations currently assume that the machine is running in Latin1 (or compatible). Please note that dupe titles are not a bug in Manga; it's like that in the original manga index. Example: A Love That Feels The Cold Arifureta Shokugyou de Sekai Saikyou (and several others) It is mildly annoying but not a show stopper, as the Manga IDs are based upon the title length and an encoding of the title text; so two manga with the exact same name will be treated as the same manga within !Manga. Added check to suppress spurious commas in genre list (seen in "School Shock"). ADVANCE WARNING: SecureSockets in Manga is now to be considered "deprecated". 0.44 2020/03/14 Minor change to regular HTTP fetcher code, now memset and memcpy instead of bzero and bcopy. Functionally the same. What's New / Suggestions / Search now clip the titles in the same way as the index generation; so lookups for manga with long titles will no longer fail. Does not handle UTF-8 or such in the titles (are there any?). Chapter parsing of "What's New" improved, as it seems some manga (those marked "HOT"?) have an unexpected linebreak inserted before the list of chapters, this is now handled. Played around with some custom scaling code. It is very basic, and only slightly better[*] than the braindead JPEG scaled rendering; but note that it uses LOADS of memory. On the plus side, what took BASIC nearly half a minute to do is less than half a second in C, so there's scope for improving the algorithm. !Run file now directly looks for URL, and the Acorn[HTTP|SSL] fetchers. 0.45 2020/03/15 Remembered to bump the version number. Whoops! Created a better scaling algorithm. When you find the secret way in, you can use + and - to rescale larger and smaller to see how it looks at different sizes (clamped to minimum of half and maximum of double; but note that > original will use tonnes of memory - around 20MiB for a normal sized page). 0.46 2020/03/19 The SecureSockets fetcher is no longer included within Manga. The executable is about 4K smaller. ;-)   New entry in the iconbar menu, "Surprise me". This will open the selection window with the information of a randomly chosen manga that you have not read. To save having to go back and forth to the menu, you can click the "menu" button at the top right of the manga selection window while holding down ALT to "surprise me". This can permit you to look at a random selection of manga quickly until you find something of interest. Following a manga link (with or without chapter and page) will not immediately mess up your saved state, if you were reading this manga. Going to any other page WILL, however your original chapter and page will be bookmarked so you can jump back to it once you've looked at whatever the link is showing. Manga URIs now support a chapter and page reference ( manga:xx-xxxx_cc.pp ) so it is now possible to give an exact chapter and page in a manga: link. For out of range references (like 999.-1), it will revert to chapter and/or page 1. For the picture used on my blog for the example of the scaling routine, try this URL: manga:21-E7B5_3.1 or from the command line (Manga NOT running): /.!Run -u manga:21-E7B5_3.1 The scaling test routine will now scale the image to fit the current screen resolution (it will currently scale UP as well, though in reality we would likely display at normal size if smaller). Fixed DeskLib (!) so the code compiles clean and doesn't report "implicit cast (to 'int') overflow" warnings because setting the icon's background colour needs unsigned integers, and the SetIconState call is defined as accepting (signed) integers. The explicit cast doesn't raise warnings. A full build now completes with ZERO throwback. !Run file now asks for CLib 5.44 as a minimum. It was previously looking for 5.74 basically as a value plucked from my posteriour quarters. I did an evaluation of CLib versions: https://heyrick.eu/blog/index.php?diary=20200318 so now I know that the minimum that Manga requires is 5.44. 0.47 2020/05/02 Fixed cache tidying to work correctly. It was clipping the ends of filenames, so wouldn't have been correctly wiping old files. Moved cache operations in main menu to a submenu, added a "Cache tidy" option. Unlike the automatic tidying (which removes old files not belonging to manga you're reading that are over a week old) this one will remove without any time restriction. History editor now enumerates the files that belong to each manga, and will report a code in brackets following the page number. The first letter is either 'L' or 'C' depending upon whether the manga data is in your library or the cache. This is followed by a dash, and then a number ending in either 'K' or 'M'. This represents the size of content in either kilobytes or megabytes (to give you an idea of the size consumed by each manga). Changed all error report messages to have an appropriate icon (information, warning, stop...). 0.48 2020/08/29 Changes to the fetcher to "look like NetSurf". This, when combined with AcornHTTP v1.04 and AcornSSL v1.06 are enough to make !Manga look like a browser to the Cloudflare system. Many *many* internal changes to the parser to support the new "optimised" and condensed markup. PLEASE REPORT BACK ANY TITLES THAT DON'T WORK. Currently "What's new?", "Suggestions", and "Search" are disabled; because of how completely different the markup is now. This will be fixed soon. But I thought it better to get a working Manga out, than hold back for fixing everything. ;-) Known bugs: * Sometimes the description is blank or something like "

to library?" prompt was embedded rather than in Messages. Fixed. This version built without parser debugging since it appears to work correctly. Changed !Run to report if CLib is too old, but NOT attempt to RMLoad a newer one. I know everybody does it, but they shouldn't. MangaLib -> fixed EnumLib to correctly read the manga title...was reading the alternate name by mistake, which was often (but not always) a copy of the title; MangaHere does not provide alternate names. Also added a reference to the download source, though this is not so useful in the case of MangaReader. 0.54b 2021/01/25 Variant of v0.54 that forces HTTPS to be used, to try to see if this helps Doug's problem. 0.55 2021/01/30 It seems that the problem is a faulty AcornHTTP module. Manga now runs the file "CheckHTTP" just before starting, which will detect the faulty version and abort with an error message. Whether to use http or https is now a user choice. The big manga list is now sorted alphabetically. 0.55b 2021/02/01 [not a public release] Added debug messages into the plain ordinary fetcher to try to diagnose a "File too big" error when trying to invoke the self-updater thingy. 0.55c 2021/02/03 [not a public release] Built without debugging now, and looking at what was going on, it appears that I was trapping for when the number of bytes read was -1 and the error code was *not* EWOULDBLOCK (in other words anything other than "I'm busy, try again"), but if the error *was* EWOULDBLOCK, then it would fall through to try to write -1 bytes to the file. It is clearly filesystem dependant as SDFS just did nothing (other than, I presume, thinking that the programmer is a twat to try to write -1 bytes). While another filing system (and obviously the one Doug is using) would have taken it as a request to write a mere 4,294,967,295 bytes! 0.56 2021/02/06 Added some anti-crash protection, in that if Manga should crash, it is likely that it will do so with a file left open. Therefore, at start, it will scan for open files to identify those which are its own (in !Scrap...Manga) and close them. Re-enabled "Surprise me" which works locally so didn't need to be disabled. Implemented "What's new". It lists the 20 most recent entries (any more means switching to dealing with JSON). The site has many updates per day, so looking to see what's new will always refetch the content. The chapter information for the update is lifted directly from the link, because there are at least three different ways of specifying a chapter: "c123" or "c123.1" or "v12,c34". I don't bother trying to parse this... Added cookie nuking everywhere so fast readers don't get screwed. ;-) 0.57 2021/02/07 Implemented Suggestions. This uses the weekly ranking, so rather than showing the same list of popular manga, it will show what's popular from week to week (so should change depending on trends). 0.58 2021/02/14 Latest manga list now fetches a second page for more results (in testing today, that takes us back eight hours - this is a POPULAR site!). Search now implemented. As before, you can add (green) or remove (red) genres, and search by partial title name, or leave it blank to see matching manga in the selected genres. It also fetches a second page of results in order to give a better choice. The following search categories have been removed: Demons, Magic, Military, Superpower, and Vampire. The following search categories have been added in their place: Adult, Dôjinshi, Lolicon, Shotacon, and Webtoons. (don't ask how "adult" differs from "mature") Why no JSON nonsense? Well, I started up Firefox 47 on my XP box in order to snoop on what was being sent to the server (developer tools -> network) and the site sent a simpler setup for the older browser, pages instead of one auto-updating page. Useful for us! Made Info window bigger. There was no risk of a buffer overrun writing all that stuff into the status icon. There was plenty of space for the data, just not enough to actually show it. ;-) Expanded manga selection window to full size now that many manga have thumbnails. The thumbnails are scaled to fit the window, which means they're scaled 2:1. Bugfix: Clearing the search form now clears the "Ongoing" and "Completed" icons, if they were selected. [is this a Wimp bug? it's a radio icon, ESG1, shouldn't selecting one icon (SetIconState) automatically deselect the others?] Revised the interactive help messages. Manga information parser now handles manga descriptions split across multiple lines (this was why some were oddly terminated/cut short). Fixed auto-update notification reporting the wrong versions. Due to FP inaccuracies, when we're looking at versions 0.57 or 0.59, the old code does NOT work: ourvers = (int) ( atof(appvers) * 100.0 ); This does: ourvers = (int) ( atof(appvers) * 100.1 ); I knew there was a reason why I hate maths. 0.59 2021/02/16 Weird errors (malloc failed, memory overwritten) in the release of v0.58. Rebuilt it after a reboot, it's a different size and doesn't seem to crash at the drop of a hat....?