Amelinium 0.9.6 - Web browser for classic Amiga
================================================
Support author on patreon:
http://juen.in/support
Always new version here: http://juen.in
Early development release. Expect bugs.
Compatibility first, speed later. Work in progress.
Requirements:
- bsdsocket.library v4+ (works with IMPBOX bsdsocket.library!)
- AmiSSL v5 for HTTPS support (without that still http:// sites works fine)
Included builds:
- Amelinium - 68000 (works on all Amigas, slowest)
- Amelinium_020 - 68020+
- Amelinium_040 - 68040+
- Amelinium_060 - 68060+ (fastest, recommended for RTG)
- Amelinium_low - AmigaOS 1.3 (Kickstart 34+), no images
- Amelinium_020_JS - 68020+ with built-in JavaScript (experimental)
- Amelinium_040_JS - 68040+ with built-in JavaScript (experimental)
- Amelinium_060_JS - 68060+ with built-in JavaScript (experimental)
Known issues:
- Some CSS2.1 features not yet implemented
- Many CSS3 features not yet implemented
- JavaScript: experimental (in the _JS builds) - DOM scripting and
some of jQuery work; heavy frameworks (e.g. Google's Closure) still not
- Many pages may render incorrectly
- Slow on 68000, usable on 68030+ (faster from cache)
Keyboard shortcuts:
- Up/Down - scroll
- Shift+Up/Down - page scroll
- Space - page down
- Backspace - page up
- Home/End - top / bottom of page
- Amiga = / - - zoom in / out (also on the Page menu)
- Esc - stop loading / stop a runaway script / close
- F5 - reload
- Amiga-C/X/V - copy / cut / paste the URL
- Amiga-T / W - new tab / close tab (also on the Tabs menu)
- Ctrl+click - open link in a background tab
- Shift+click - open link in a new tab and go there
Acknowledgments:
ttengine.library by Grzegorz Kraszewski (krashan@teleinfo.pb.bialystok.pl) -
high-quality TrueType rendering for AmigaOS / MorphOS / OS4.
http://amiga.pl/ttengine - used with author's permission.
Liberation Fonts (Red Hat, SIL OFL 1.1) - metric-compatible Arial /
Times / Courier replacements.
DejaVu Sans (DejaVu Fonts project, Bitstream Vera license) - used
when CSS names Verdana or Tahoma; matches their wider metrics
where Liberation Sans (Arial-metric) would be too narrow.
AmiSSL by Oliver Roberts - TLS for HTTPS.
stb_image (public domain) - PNG/GIF decoding.
TJpgDec by ChaN (BSD-style, 2021) - tiny JPEG decoder with
scale-on-decode (1/2, 1/4, 1/8). http://elm-chan.org/fsw/tjpgd/
Replaces stb_image for JPEG - same input, half the RAM and
much faster on oversized photo thumbnails.
Amiga Core Fonts for the Web (Amiga Information Center, 2000) -
bitmap fallback when TT is unavailable.
History:
0.9.6 - Sites with very large stylesheets display faster.
The stylesheet cache in PROGDIR:cache is around seven times
smaller.
A runaway script can now be stopped with Esc instead of
locking the browser up until it finishes. The same now goes
for a page that keeps rebuilding its own layout - some sites
do that hundreds of times over, which looked like a freeze
on "Building layout" with nothing that would interrupt it.
A name lookup that never answers no longer hangs the
browser. Connecting and reading always had a time limit.
Style rules that test two attributes at once now work, for
instance input[type=submit][value=Submit]. Such a rule used
to be ignored completely, so a control styled that way lost
its whole appearance.
A button or a field skinned with a picture now shows it.
Rules like input[type=submit] { background: url(go.gif) }
were thrown away, so the control came out blank.
Form controls no longer paint outside the box they sit in.
A field with padding was drawn a few pixels too high, and a
right-aligned button a few pixels too far right, so both
covered the frame around them - pouet.net's search box is
where that shows.
Tables that a page positions or floats now render. Before,
such a table and everything inside it vanished without a
trace.
New CSS: position: sticky, border-image, background-clip,
outline-offset, the logical properties (margin-inline and
friends), color-mix(), the min-content / max-content /
fit-content sizes, and calc() / min() / max() on every
property instead of only widths and heights.
Many selector fixes, where :not() and :is() were either
silently ignored or - worse - matched everything on the page.
Downloads that a page starts from a script (itch.io and the
like) are picked up straight away instead of after the page
has finished redrawing - those links expire in a minute, so
the wait was enough to lose them. A refused download now says
so instead of leaving the click looking ignored.
While a page's scripts keep reworking the layout, the status
bar shows a turning marker, so a slow page can no longer be
mistaken for a frozen one.
0.9.5 - Fixed a crash on deeply nested pages. Sites built from many
layers of tables could exhaust the program stack while
matching CSS, which corrupted memory and showed up much
later as a recoverable alert, often only after visiting
several pages. amigasource.com was the reliable case.
Fixed styles going wrong across a whole page. An element
with a ::before or ::after rule could hand its own style to
everything resolved after it, once anything re-styled the
page - a script change, a hover, a window resize. Elements
then showed sizes and colours nothing had asked for, which
looked like the site rendering badly rather than a bug.
Worth another look at pages you had written off.
Pages built with React render. Many modern sites showed
nothing at all before.
Icon fonts no longer come out as rows of question marks, and
arrows or curly quotes added by a stylesheet no longer show
as stray letters.
Text meant only for screen readers stays hidden instead of
spilling over the top of the page.
A page is no longer laid out wider than the window when one
element sticks out - everything else stays where it belongs
and the sideways scrollbar appears only when it should.
Scripts can measure and scroll the page, which is what a lot
of jQuery-based sites wait for before they show anything.
Settings -> Block ADS now really blocks. It used to only hide
the boxes, the ad scripts and pictures were still downloaded
and run. They are not fetched at all now - advertising,
ad measurement, analytics beacons and session recorders.
This is what makes heavy pages usable: one ad script could
use up all the memory and leave nothing working afterwards,
downloads included.
Downloads that a site hands over through a hidden frame now
work - itch.io game files, for one.
A page whose script sits waiting no longer freezes the
browser. The pointer shows it is busy and Esc stops it, so
the browser can always be closed.
CSS transitions. Colours and fades now slide between states
instead of snapping - the usual way a link or button
highlights on the modern web. Works from hover and from
scripts.
Boxes with their own scrollbar can now be scrolled sideways,
not just up and down. A wide table or a long line of code
inside one is reachable at last.
Decorative layers drawn over a link no longer swallow the
click (pointer-events).
Grid items can be aligned in their cell, across and down
(justify-items/-self, align-items/-self).
Elements moved with transform: translate now draw in the
right place, and are clickable there. Other transforms
(scale, rotate) are still not drawn.
A list can use a picture as its bullet (list-style-image).
Recognised since forever, drawn for the first time.
Grid lines can be named and placed against by name, including
the names an area creates for itself.
Collapsible sections work. A page built from <details>
panels no longer dumps every panel open at once - click the
heading to fold it away.
A form whose answer is a picture shows the picture instead of
a screenful of raw characters.
Tidier start page: the controls are a table, and the feature
list matches what the browser actually does.
0.9.4 - Drop-down menus work. Pointing at an item opens its panel -
before, nothing happened at all (hover).
CSS animations. Content that fades or colours itself in used
to stay invisible for good, now it appears and the fade runs.
Animations that move or resize jump to their end(!) state.
CSS Grid places items where the page asks - spanning columns
and rows, or pinned to a line. Multi-column text too, with
the rule between columns, and long lists flow across them.
aspect-ratio gives a box or picture a fixed shape.
grid-auto-rows sizes rows added beyond the declared ones.
Fixed pictures sized by percentage height coming out a few
pixels tall. Affected the ppa.pl news thumbnails.
Fixed a :has() rule styling everything instead of nothing.
Fixed tab switching losing part of a page's styling.
Error pages show the address that failed.
Cache from an older version is cleared at startup. Clearing
the cache by hand no longer wipes the download list.
Scripts: those carrying their code in the address now run,
and a page can read its own script list.
Fixed text files running together into one line after a tab
switch, Back or reload. Large ones could do it on first read
too.
Smaller fixes: the quit box could flash up and vanish,
leaving the browser unclosable, "Painting" stuck in the
status bar, the referring address sent to a site could be an
older page's, which broke some logins and forms, a page
arriving after a form was sent could show wrong accented
characters.
0.9.3 - Fixed colours going wrong after browsing a few pages. Reported
by several testers and hard to spot, because it only happens
on the Workbench screen and builds up gradually as sites with
icons are visited.
Text no longer loses its colour or typeface at a block. A
heading, list or preformatted block written inside a <font>
now keeps that font's colour - previously it fell back to the
page default, which on a dark page meant white text on a light
background. mviess.de/amiga was unreadable because of this.
Pictures obey object-fit, so a photo placed in a box of a
different shape can be fitted, cropped or centred instead of
being stretched. Images given both a width and a height now
get both, including percentages, which is how most sites size
their thumbnails.
0.9.2 - IMPORTANT: fixed a crash on juen.in - the page this browser
downloads its own updates from. Any page that declared its
character set with a <meta> tag, while the server did not send
one in the HTTP header, could take the browser down before it
drew anything. Please upgrade from 0.9.1.
Also fixed: a page with an unescaped quote inside an HTML
attribute lost everything from that point on and rendered
blank. ppa.pl news articles were affected.
Text spacing is right in more places: padding on inline
elements (links in navigation bars, list items) is now
applied, and a block inside a link or a <span> is laid out as
a block instead of collapsing - it could vanish entirely next
to a full-width float.
Style rules of the form ".class element element" now match.
This is a common shape, so several pages pick up styling they
were silently missing.
The window title and the tab label now show "quotes" and
other special characters instead of their raw HTML codes.
A tab for a site with no icon gets a small page symbol instead
of a blank gap.
0.9.1 - Tabs. A new row under the toolbar holds them: click a tab to
switch, X to close it, + to open a new one. Ctrl+click a link
to open it in a tab in the background, Shift+click to open it
and go there, or use the right-click menu. Nothing is kept
loaded in the background, so switching to a tab loads that page
again.
Back and Forward now return to the place on the page you were
at, instead of jumping to the top.
Faster: pages with tiled background images paint little quicker,
and style matching does less work on pages with a lot of CSS.
The right-click menu no longer appears when another window is
covering the browser at that spot.
0.9.0 - Faster: pages with a lot of CSS resolve their styles quicker,
and scrolling page should be faster.
Fixed page content drawing over the toolbar, the scrollbars
and the status bar - it happened on pages wider than the
window, usually just after an image or an embedded page
appeared.
Quitting now asks first - the close gadget, Esc, right-Amiga
Q and Browser/Quit all confirm. Return quits, Esc cancels,
and "Don't ask again" closes without asking from then on.
Settings has an "Ask before quitting" switch to put it back.
Latest downloads now records the date and time of each
download.
Clicking a picture now shows the picture. A thumbnail
linking to the full-size image used to open a page of
garbled characters instead.
Errors now say what they are, not just their number -
"404 Not Found", "403 Forbidden", "409 Conflict" - and
whether the site turned the request down or failed to
handle it. A refused download reports the same.
Settings -> Workbench now keeps the browser's name in the
Workbench title bar. It was left blank when switching
across from the browser's own screen.
New start page - fresh look, far less empty space at the
top, and highlights that follow the mouse. It also has an
address of its own now, amelinium://about, so it shows in
the address bar and works with Back, Forward and F5.
0.8.9 - New: Browser -> Latest downloads keeps a list of what you
downloaded - name, size, where it was saved and the page
it came from - with a link to fetch any of them again.
Saving a file that already exists now asks before it
overwrites, instead of replacing it silently.
Faster: pages with tables lay out in a fraction of the
time (repeated width measuring is now cached), and a
page's scripts are kept on disk like its stylesheets, so
a second visit skips re-downloading them.
Fixed garbled text (wrong characters) when going Back to
a non-UTF-8 page, a layout that could break after resizing
the window or using an iframe, the "Bookmarks" label
drawing over the toolbar, drop-down lists whose text sat
above their own row, oversized JPEGs, and a console window
popping up on an icon launch (JS logs are for the Shell
only now).
Fixed BOOKMARKS display and fixed "&" in img url's.
0.8.8 - Gets past "proof-of-work" gates (the checking screen on
the EAB forum and others): single-threaded Web Workers
and native SHA-256 (some F5 can be required...)
Saved logins survive a restart again - a "remember me"
cookie set for a parent domain is now read back and no
longer erased by ordinary browsing.
Big CSS accuracy pass, most visible on forum themes:
compound selectors like ".a.b x", pseudo-classes after
a class or id (":empty", ":checked", ":first-child"),
icons drawn with "content: url()", and a later
"background:" now clearing an earlier gradient or
colour. Floated items sit side by side instead of
stacking up.
Added amigans.net and the a1k.org forum to the AMIGA
menu, and a Fire Stick user agent to the Agent menu.
0.8.7 - CSS :hover works: links, buttons and menu entries
reaction when the mouse is over them.
Forms that post in the background with JavaScript (a
form's onsubmit that does an AJAX call and returns false)
now do just that, instead of reloading the whole page.
Several JavaScript-engine fixes (regular-expression line
handling and group backtracking, RegExp/Date type tags,
and full HTTP response headers).
Scrollable boxes: an element with its own scrollbar
(CSS overflow:scroll/auto) now really scrolls with the
mouse wheel or by dragging the bar, instead of just
showing a dead scrollbar.
A link pointing at a place on the SAME page (like a
comment permalink) now just scrolls there, instead of
reloading the whole page.
Inline frames: pages that embed another page with
<iframe> now render it in place, scroll it with the
wheel, and follow links inside it. Pages shown inside
frames and iframes now load their own stylesheets too,
so they look the way they should instead of unstyled.
"mailto:" links now open your e-mail program through
openurl.library. And the same for ftp:, news:, telnet:
JavaScript pages that use the History API (pushState /
back / forward) to change the address without reloading
now work, plus element.querySelector and document-order
node sorting, and a wider range of responsive @media
style rules.
0.8.6 - Fixed a freeze of the whole machine when the window was
resized two or three times in a row.
When a new version is out, the update window can now
install it for you: it downloads exactly the build you
are running, saves it over the program file (the old one
is kept as .old) and restarts the browser.
Buttons and links that do their work through JavaScript
- "javascript:" links and handlers that return false, like
the ppa.pl news and forum vote "+" - now do just that
instead of jumping to a wrong page or the front page. Such
AJAX actions also send the request header servers expect,
so the vote actually registers.
0.8.5 - Downloads now open their own window (like a classic
browser) with a progress bar, speed and time remaining,
plus Pause/Resume and Cancel - and the browser stays
usable while they run. Each file gets its own window, a
finished download closes itself, and closing the browser
while downloads are still going leaves them running until
they finish or you cancel them. The download window
reopens where you last left it, and the last folder you
saved to is remembered across launches.
Settings -> "Save mode as default" remembers the screen
mode you're on (or Workbench).
Fixed a crash (yellow guru) on some sites whose
stylesheets were in the disk cache - e.g. DuckDuckGo.
Save and download dialogs now work with EITHER asl.library
or reqtools.library
Big forms (e.g. cookie-consent pages like Google's) now
submit correctly instead of failing with a server error -
the form data is no longer truncated, and when a page has
two forms with the same target (Accept / Reject) only the
clicked form's fields are sent.
More JavaScript-heavy sites now work: dynamically
added <script> tags run, real XMLHttpRequest and
fetch(), and a wider set of browser APIs, so modern
single-page-app code loads instead of stalling.
0.8.4 - Right-click context menu (Chrome-style pop-up) with
actions for whatever is under the pointer: over a link
- Copy link address, Save link as; over an image - Save
image, Copy image address, Open image; in a text field
- Cut, Copy, Paste; plus Back, Forward, Reload, Save
page and add/remove bookmark. Right-click empty page
area and the normal Amiga menu bar opens instead.
Copy, cut and paste in the address bar (right-Amiga
C/X/V, or the new Edit menu) - share a URL, or paste
one in. Icon ToolTypes: set URL, PROXYHOST, PROXYPORT,
AGA, WB or DEBUG from the program icon's Information
window - no Shell needed. Home and End jump to the top
and bottom of the page. Amiga +/- zooms the page in and
out (Page menu too). The Stop button now reacts while a
page is rendering or pulling many stylesheets, not only
between fetches. New "Firefox (Linux)" choice in the
Agent menu, to look like a desktop browser to sites that
turn Amiga browsers away.
0.8.3 - Grab the scroll knob and drag it - the page now scrolls
live while you hold the mouse, instead of only jumping
when you release. Save Page As reopens in the last
drawer you saved to (now with asl.library too, not just
ReqTools).
0.8.2 - Frames! Classic <frameset>/<frame> pages now render
properly. New Stop button (next to Go) aborts a slow page.
The whole interface - title bar, menus,
toolbar, address and status bars - now uses your system
default font and grows to fit its size (page content
keeps its own fonts). The HTTP proxy now fetches page
images too, not just the HTML. Pages with large
stylesheets keep their look on reload. Much more
JavaScript runs - jQuery 3.x now parses - plus
URLSearchParams, Image(), FontFace, insertAdjacentHTML
and location/navigator fixes. Table-layout click fix.
Cookie-consent banners now display and respond correctly.
Faster scrolling on content-heavy pages, and table cell
backgrounds no longer spill past their blocks.
0.8.1 - HTTP Basic Auth: pages behind .htpasswd now prompt for a
login/password. Much smoother screen updates - JavaScript
changes, checkbox/radio clicks and typing in text areas
redraw only what changed instead of flashing the whole page.
Links inside JavaScript menus (e.g. a mobile "log in") now
follow through. Tables with align=center are centred.
0.8.0 - Optional built-in JavaScript (NodeAmiga engine), experimental.
DOM scripting, events, timers, jQuery; cookies and localStorage
from script. See jsdemo.html for a live tour.
0.7.6 - Big CSS layout-conformance pass.
Client-side image maps - clickable <area> regions.
Smoother image downscaling on truecolor RTG.
Non-AGA fix: an own screen below 8 bitplanes.
0.7.5 - Big RTG overhaul, every depth now renders correctly:
exact text colour and images/backgrounds on 8-bit and
16-bit RTG (including alpha icons and tiled/strip
backgrounds), and crisp TTF text on 16-bit (rendered via
TTEngine coverage maps composited over the real
background - no more glitched word backgrounds). On-the-fly
screen-mode switch redraws the whole page at the new depth;
light toolbar forced on 8-bit. Forms: POST with an empty
action="" keeps the page's query string.
Disk image cache fixes: no more recoverable-guru memory
crash on chipset/AGA (interleaved-bitmap planes were
saved/loaded past their buffer); cached images now carry
the screen depth in their key, so reopening a page at a
different colour depth re-fetches instead of showing
garbled pictures.
0.7.4 - TJpgDec replaces stb_image for JPEG
with scale-on-decode (1/2, 1/4, 1/8). Parsed CSS
disk cache (cp_<crc>) - warm visits skip the full
cascade pass. Lazy off-screen image decode - only
images that land in the viewport are decoded; the
rest stay encoded until you scroll them in. Raw
image bytes cached on disk (r_<crc>) so F5 / next
visit skips the network for off-screen images.
Stage-2 fast path: keep parsed DOM + computed
styles from stage 1, re-run only layout when image
dims become known. RTG gradient one-shot
WritePixelArray, eviction skipped on RTG.
Fixes around ASL/ReqTools save dialogs.
Much faster style resolution on big pages.
0.7.3 - Alpha-mask cache (per-image, native size).
Warm-visit skips stage-1 paint
when manifest hits. Menu text uses DETAILPEN
explicitly (was washed-out gray).
Bugfixes! Find now works again...
Menu reorganization: Search, Amiga, Debug, Test.
0.7.2 - Light GUI option, triple-slot keep-alive image
cache, TTF metrics consistency fix across
TTF toggle and page nav and more
0.7.1 - Fix: TTF rendering on Workbench screen at startup
0.7.0 - TTF, GUI, many CSS3 features, and many CSS2.1
bugfixes and also new features, and also
new bugs :)
0.6.0 - Real flexbox (all directions, wrap, grow/shrink,
justify/align/order), real CSS Grid (tracks, gap,
template-areas), :before/:after content +
counter() / counter-reset, linear-gradient
backgrounds (truecolor RTG, banded chipset),
var() + CSS custom properties, :first-letter,
@media px/em/rem, border-collapse Sec.17.6.2.1
conflict resolution, <col width>, table-layout:
fixed, HTML5 auto-tbody injection, <del>/<ins>/
<mark>, cookie Max-Age/Expires, vh/vw, font:
numeric weight + lighter, ::lang(), extended
list-style-type, fixes for shrink-to-fit autotables,
inside-marker spacing, font-size quantization
0.5.3 - Local pages from disk (Work:..., PROGDIR:...,
file://...), binary file check (executables /
archives go to Save-As instead of showing),
bookmarks sidebar, prefs file with per-mode
window position/size memory, AmigaOS 4 mouse
wheel
0.5.2 - Save-As goes where you pick, position:fixed CB,
@media em units, auto-refresh etc...
0.5.1 - Download fix, pointer, faster draw
0.5.0 - HTML forms, basic table/flex/grid
layout, and many more...
0.4.0 - More CSS, some CSS3, better fonts,
real shadows, rounds, transparent svg and many many more
0.3.0 - More CSS 2.1 compatibility, Proxy etc...
|