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:
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.)
* "
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 "
".
* Sometimes the little cover picture is missing.
* The genres are all run together, like
"AdventureComedyFantasy".
* The menu options for What's New and search are
greyed out. There are other ways to call these;
and - of course - they don't work...
0.48b 2020/08/30
Added "ForceSSL" program to set the SSL bit in the
settings. No program changes, so no version bump.
0.49 2020/09/01
David Feugey reported that downloading a manga led
him to be blocked, so Manga will now implement a
10 second hold-off between each image fetch.
This will make it a lot slower, but better that
than being booted.
[I don't know if 10 seconds is a good value, it's
just a guess, please let me know if it does or
doesn't work for you]
0.50 2020/09/05
Fixed the problem that would cause crashes upon
trying to parse the main mange index at startup.
[was because the huge wodge of script at the
page start was overflowing the buffer because
1024+terminator won't fit into 1024 bytes!]
The problem didn't happen immediately as the
script today is slightly different to how it was
on the 1st. I don't know if this is work on the
Mangareader site, or something Cloudflare does
(as I suspect it filters the HTML to make this
mess)...
Now correctly handles manga with no description.
Fixed genre parsing.
Fixed thumbnail image fetching. Some references
began with "https://", while others only began
with "//".
Yes, I was smart enough to look for the 's' in
https, just in case they go http again... ;-)
What's New should now work, but note that it is
unclear if "new" entries will work correctly (as
there currently aren't any!).
Added some additional code for the manga updates
I've seen in the update history that start to
count from 1, but don't mark the manga as new.
So now Manga will.
Suggestions now working.
And to round off the functionality, Search is
operational. So we're back to where we were
before the Cloudflare change.
Finally. ;-)
If you want to try tweaking the holdoff delay,
you can set the system variable:
Manga$HoldOffDelay
If the value is less than 20, it is assumed to
be seconds. Otherwise, it is centiseconds.
Thus:
Set Manga$HoldOffDelay 5
and:
Set Manga$HoldOffDelay 500
are identical.
The delay is read once when starting up the
manga download operation.
A quick test indicates that six seconds works...
0.51 2020/10/10
Fetching timeout changed to 16 seconds (from 8)
because their whizzy new CloudFlare site can be
*VERY* slow at responding.
0.52 2020/10/22
Added system variable Manga$FetchTimeout to
permit you to alter the fetcher timeout from 5
to 60 seconds (the default is 16).
However, be aware that if a timeout is reached
at 16, you'll probably find that after ~45s
you'll get sent an error 520 which is CloudFlare
"helpfully" pointing out that they're good but
the server you're trying to contact is screwed,
and for MangaReader these days (hosting all the
images on imggur.net, that happens FREQUENTLY).
Clicking the pop-up status window (the one in
the middle, not the little one at the bottom
left) with ALT held down will abort the current
fetch.
Clicking it with CTRL held down will invoke
your browser to fetch the content.
[this requires AcornURI, which is built into
RISC OS 3.50 and ought to be softloadable on
older versions; tested with NetSurf]
0.53 2021/01/16
For a couple of weeks now, mangareader.net has
been returning 404s, and the main page says
there's a temporary problem and to try again
in a few minutes.
It's been too long - so I have taken the
decision to switch to a different manga source.
I am now using mangahere.cc.
So, there's good news and there's bad news.
Let's get the bad news out of the way first:
Manga is quite a bit slower to start up, and it
now requires eight megabytes just to get going
(not including page buffering).
Why? Well, that's the good news - you can
pick from a selection of... what was it,
something like THIRTY thousand manga (as
opposed to about four and a half thousand)?
I think you'll agree that makes the increase
worthwhile. Especially if you have a modern
machine that can chunder through the data
that much faster. ;-)
Search/What'sNew/Suggestions/Library are
currently disabled. They'll be done, be
patient...
0.54 2021/01/23
Increased fetch chunk size to 4KiB (was 1KiB).
Examined every sprintf, strcat, and strcpy and
all of those where the string being copied was
neither fixed nor already bounded were converted
to snprint, strncat, and strncpy to build in
better prevention of errant buffer overruns.
The library download kept on failing in a way
that prevented any further fetches until the
AcornHTTP module was quite and reloaded. This
tipped me in to thinking that the server's
anti-leech protection worked by recognising
the session cookie. So now the library
downloader wipes all mangahere cookies after
every single library request.
Side effect? We don't need that ten second
holdoff any more. ;-)
[just downloaded all of Anne Freaks (24
chapters containing 721 pages) in about
forty minutes]
Noticed the "Add 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....?