Short: Modern Amiga Web Browser with JS Author: Juen/APX+NAH+R3D (Pawel Nowak) Uploader: biuro cdlabel info (Pawel Nowak) Type: comm/www Version: 0.9.7 Architecture: m68k-amigaos Amelinium 0.9.7 - 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.7 - Sites built with Vue, Nuxt or Svelte now get their layout. Their stylesheets tag nearly every rule with a hidden scope marker, and the whole marked part was ignored, so such a page came out as a bare stack of lists. Photos on those sites appear too. Amelinium_low runs on Kickstart 1.3 as well as on 2.0 and above, tested on real ROMs. Its debug output works on 1.3 too. Logos and icons drawn as inline SVG now appear. A lot of modern sites draw their whole chrome that way, so those pages had blank headers and empty buttons. Large sites load faster. A page carrying dozens of stylesheets no longer opens a new connection for each one, and the stylesheet engine itself was rebuilt around proper indexes - one page went from over a minute to about half. Several ways a page could hang or take the whole machine down are gone: a stray character in a tag, a runaway regular expression, a stylesheet the parser could not get past, a download that started while the menu button was held, and a page whose tables nest deeply enough to run the browser out of stack. A hidden element could take a whole section of the page with it and leave nothing on screen. Much wider CSS support, measured against the web-platform test suite and against a desktop browser at the same window size: border images, outlines, background clipping, sticky headers, colour mixing, calc()/min()/max() on every property, logical properties, intrinsic sizing keywords, masks and rounded corners given as percentages. Many layout fixes on real pages: tables that vanished when positioned or floated, columns trimmed away by mistake, percentage widths applied twice, flexible rows that would not shrink, generated content taking its element's padding, and text overlapping the box above it. Pictures are handled better - responsive image sets, large photos scaled down before they are decoded, and images fetched at the size the page will actually show. Arrows, carets and play buttons drawn with borders now have their proper triangular shape, and round avatars and badges are round. Headings and pills are the right height, !important works with colour themes, and boxes that should hug their text no longer stretch across the page. Advertising and tracking hosts are blocked at the fetch, not just hidden, which saves both memory and time. Icons and buttons that sit in a row with a gap beside them are no longer squashed - menu buttons on news sites came out a few pixels wide and looked missing. A space between a word and the bracketed text after it is no longer swallowed, so link lists read properly instead of running together. The website menus are one WWW menu now, with Search, Amiga, Debug and Test as submenus under it. A small icon set on a page no longer comes out as the same symbol repeated - every forum and toolbar icon was drawn as whichever one the stylesheet mentioned last. Decorations placed over a padded box - warning icons, badges, carets - land where they belong instead of on top of the text they sit beside, and no longer push that text sideways. Superscripts and subscripts stay on their line. Cards that centre their contents in a column really do centre them, they used to line everything up on the left. Links are the right colour again on the very many sites built with Bootstrap. A rule those sites all carry was being applied to every link instead of to the few it names, so link text came out in the body colour - black on white, or invisible on a dark theme. Pages laid out in percentage-width columns come out at the right widths. Each column was being given a quarter or a half of its share, so names were clipped to a few characters and overlapped the text beside them. Measurements written without a leading zero, as most stylesheets do, were applied backwards - a decoration meant to sit 3 pixels up sat 3 pixels down. Icons, badges and menu buttons line up properly now. Icon sets no longer leave stray punctuation beside every menu entry, and decorations attached to a named element - a rule under a masthead, a caret on a menu - appear at all. The newer way of writing sizes and spacing - inline-size, block-size, margin-inline, padding-block and the rest - works again. A speed-up earlier in this release had silently stopped those from being read at all, so a page that sizes itself that way came out at the wrong width or with no spacing. Tall pictures - screenshots, long memes, phone photos - come out sharp. They were being decoded at a quarter of their size and then blown back up, so any text on them was unreadable. Fresher look: a new Home button, a lighter, more metallic toolbar on graphics-card screens, a slightly recessed strip beside the tabs, and icons with a subtle engraved edge. 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
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 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 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 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