Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
42aea91
CI: first version of automated builds for os3
midwan Jan 27, 2023
c5c01d2
rename job title
midwan Jan 27, 2023
c773ad4
Fix build for gcc 6 (bebbo) and MUI 5
midwan Dec 15, 2025
3a44a5d
fix: additional sacredbanana/amiga-compiler build compatibility fixes
midwan Apr 15, 2026
c00486c
ci: update docker image to sacredbanana/amiga-compiler:m68k-amigaos
midwan Apr 15, 2026
6e678e4
fix: remove early return in MUIM_Backfill handler for MUI4 compatibility
midwan Apr 15, 2026
4ca8a17
ci: modernize workflow with latest actions and simplified docker usage
midwan Apr 15, 2026
6cf9049
ci: update actions to v5 (Node.js 22)
midwan Apr 15, 2026
668c9db
fix: critical dispatcher and memory fixes
midwan Apr 15, 2026
4520c1c
chore: CI improvements and bug fixes
midwan Apr 15, 2026
fc4b917
ci: add multi-platform builds (OS3, OS4, MorphOS) and release workflow
midwan Apr 15, 2026
b39f966
fix: enable all three platform builds (OS3, OS4, MorphOS)
midwan Apr 15, 2026
b6b3a8e
fix: add extern "C" for OS4 C++ dispatchers
midwan Apr 15, 2026
36696fb
fix: resolve MorphOS MCP and OS4 MCC build issues
midwan Apr 15, 2026
89d5b2f
Add LibLoad_Test and update CI to include test programs
midwan Apr 16, 2026
1456308
Fix OS4 build: make -ldebug conditional and stub kprintf for OS4
midwan Apr 16, 2026
fb546af
feat: network image loading in test programs + local-image render fixes
midwan Apr 18, 2026
925c668
Merge pull request #1 from midwan/feat/network-images
midwan Apr 18, 2026
2462ed3
feat: HTTPS support via AmiSSL + redirect following
midwan Apr 18, 2026
98e8f92
test: swap amigaworld redirect image to a URL that isn't 404 on HTTPS
midwan Apr 18, 2026
c47ddd7
fix: replace sprintf with snprintf in test image hook
midwan Apr 18, 2026
1964526
docs: update authors, copyright, changelog, and hook autodocs
midwan Apr 18, 2026
d3d080f
Merge pull request #2 from midwan/feat/https-support
midwan Apr 18, 2026
c00ec1c
chore: prepare 13.6 release
midwan Apr 20, 2026
6d97f49
feat(net-hook): reusable load hook library with TLS verify + cache
midwan Apr 20, 2026
9f86857
ci: verify build products and fail loud on missing artifacts
midwan Apr 20, 2026
0912313
docs: modernise README/TODO/.readme + add IMPROVEMENTS roadmap
midwan Apr 20, 2026
43a78e1
docs: correct copyright attribution on maintained files
midwan Apr 20, 2026
d96156d
ci: grant release job contents:write to create GitHub releases
midwan Apr 20, 2026
d6b8ce7
fix(backfill): gate MUI 3.x equality guard on muimaster lib_Version
midwan May 1, 2026
fc86e16
Merge pull request #3 from midwan/fix/mui-3x-backfill-guard
midwan May 1, 2026
5e93637
Various bug fixes, added RapaguiPattern Test program
midwan May 1, 2026
2fcd566
Bump version and date
midwan May 1, 2026
ce7a163
fix: graceful fallback for missing external MCCs
midwan May 2, 2026
964af83
Merge pull request #4 from midwan/fix/graceful-mcc-fallback
midwan May 2, 2026
840436f
chore: bump version to 13.8
midwan May 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 153 additions & 0 deletions .github/workflows/makefile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
name: Build

on:
push:
branches: [master]
tags:
- 'v*'
pull_request:
branches: [master]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build-os3:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Build mcc
uses: docker://sacredbanana/amiga-compiler:m68k-amigaos
with:
args: sh -c "cd mcc && make clean && make OS=os3"
- name: Build mcp
uses: docker://sacredbanana/amiga-compiler:m68k-amigaos
with:
args: sh -c "cd mcp && make clean && make OS=os3"
- name: Verify build products
run: |
set -e
ls mcc/bin_os3/HTMLview.mcc
ls mcc/bin_os3/SimpleTest
ls mcc/bin_os3/LibLoad_Test
ls mcp/bin_os3/HTMLview.mcp
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: htmlview-os3-${{ github.sha }}
if-no-files-found: error
path: |
mcc/bin_os3/*.mcc
mcc/bin_os3/SimpleTest
mcc/bin_os3/LibLoad_Test
mcp/bin_os3/*.mcp

build-os4:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Build mcc
uses: docker://sacredbanana/amiga-compiler:ppc-amigaos
with:
args: sh -c "cd mcc && make clean && make OS=os4"
- name: Build mcp
uses: docker://sacredbanana/amiga-compiler:ppc-amigaos
with:
args: sh -c "cd mcp && make clean && make OS=os4"
- name: Verify build products
run: |
set -e
ls mcc/bin_os4/HTMLview.mcc
ls mcc/bin_os4/SimpleTest
ls mcc/bin_os4/LibLoad_Test
ls mcp/bin_os4/HTMLview.mcp
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: htmlview-os4-${{ github.sha }}
if-no-files-found: error
path: |
mcc/bin_os4/*.mcc
mcc/bin_os4/SimpleTest
mcc/bin_os4/LibLoad_Test
mcp/bin_os4/*.mcp

build-morphos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Build mcc
uses: docker://sacredbanana/amiga-compiler:ppc-morphos
with:
args: sh -c "cd mcc && make clean && make OS=mos"
- name: Build mcp
uses: docker://sacredbanana/amiga-compiler:ppc-morphos
with:
args: sh -c "cd mcp && make clean && make OS=mos"
- name: Verify build products
run: |
set -e
ls mcc/bin_mos/HTMLview.mcc
ls mcc/bin_mos/SimpleTest
ls mcc/bin_mos/LibLoad_Test
ls mcp/bin_mos/HTMLview.mcp
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: htmlview-morphos-${{ github.sha }}
if-no-files-found: error
path: |
mcc/bin_mos/*.mcc
mcc/bin_mos/SimpleTest
mcc/bin_mos/LibLoad_Test
mcp/bin_mos/*.mcp

release:
needs: [build-os3, build-os4, build-morphos]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- uses: actions/checkout@v5
- name: Download all artifacts
uses: actions/download-artifact@v7
with:
pattern: htmlview-*
path: artifacts/
- name: Package release archives
run: |
set -euo pipefail
tag="${GITHUB_REF##*/}"
mkdir -p release
for platform in os3 os4 morphos; do
case "$platform" in
os3) bindir=bin_os3 ;;
os4) bindir=bin_os4 ;;
morphos) bindir=bin_mos ;;
esac
src="artifacts/htmlview-${platform}-${GITHUB_SHA}"
if [ ! -d "$src" ]; then
echo "Missing artifact for $platform at $src" >&2
exit 1
fi
pkg="HTMLview-${tag}-${platform}"
mkdir -p "release/${pkg}/mcc" "release/${pkg}/mcp"
cp "$src/mcc/${bindir}"/*.mcc "release/${pkg}/mcc/"
cp "$src/mcc/${bindir}"/SimpleTest "release/${pkg}/mcc/"
cp "$src/mcc/${bindir}"/LibLoad_Test "release/${pkg}/mcc/"
cp "$src/mcp/${bindir}"/*.mcp "release/${pkg}/mcp/"
for doc in README COPYING ChangeLog AUTHORS; do
[ -f "$doc" ] && cp "$doc" "release/${pkg}/"
done
(cd release && zip -r "${pkg}.zip" "${pkg}")
done
ls -la release/
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: release/*.zip
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
bin_*
.obj_*
mcp/locale.*
MEMORY.md
.DS_Store
mcc/amissl_sdk/
3 changes: 2 additions & 1 deletion AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

HTMLview.mcc - HTMLview MUI Custom Class
Copyright (C) 1997-2000 Allan Odgaard
Copyright (C) 2005-2010 by HTMLview.mcc Open Source Team
Copyright (C) 2023-2026 Dimitris Panokostas <midwan@gmail.com>

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
Expand All @@ -25,6 +25,7 @@ design provided by the following people:

Alfonso Ranieri <alforan@tin.it>
Allan Odgaard <duff2@users.sourceforge.net>
Dimitris Panokostas <midwan@gmail.com>
Dwight Meese <ikepgh@suddenlink.net>
Ilkka Lehtoranta <ilkleht@isoveli.org>
Jens Langner <Jens.Langner@light-speed.de>
Expand Down
117 changes: 104 additions & 13 deletions ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,112 @@ MUI HTMLview MCC class - ChangeLog
$Id$
$URL$

2016-07-29 Thore B�ckelmann <tboeckel@gmx.de>
2026-05-01 Dimitris Panokostas <midwan@gmail.com>

* mcc/library.c: register ScrollGroupClass and StringClass via
CPPDISPATCHERENTRY() instead of bare ENTRY(). On AmigaOS 3 the
bare form passes the raw C++ dispatcher pointer to MUI, which then
calls it with cl/obj/msg in registers a0/a2/a1 -- a calling
convention the C++ function does not have. The result was a
register-convention mismatch that crashed inside intuition.library
with PC=0x2C2 the moment any caller tried to instantiate either
private class via NewObject(mcc_Class, ...). The main HTMLview
class was unaffected because mccinit.c already uses
CPPDISPATCHERENTRY for it.
* mcc/Dispatcher.cpp: harden the OM_NEW failure path. When
AllocSignal(-1) returns -1 we used to call CoerceMethod(cl, obj,
OM_DISPOSE), which re-enters our class's OM_DISPOSE against an
instance whose parse thread, message port and ParseThreadName are
not yet initialised. That tour of uninitialised state was harmless-
ish on MUI 3.x but rebooted MUI 4/5 reliably. We now free only
what the partial OM_NEW actually allocated (the SharedData) and
defer to cl->cl_Super OM_DISPOSE, mirroring the pattern already
used a few lines earlier for the SharedData allocation failure.
Surfaces as "Error creating MOAI object" instead of a hard reset
on signal-saturated tasks.
* mcc/Dispatcher.cpp: MUIA_HTMLview_Scrollbars no longer wraps the
gadget in a private ScrollGroupClass instance. Class-introspecting
callers (RapaGUI / Hollywood) treat the OM_NEW return as "the
HTMLview" and only translate their "Contents"/"URL"/etc.
properties to MUIA_HTMLview_* when the object actually looks like
one. The wrapper broke that detection, silently dropping property
writes. Returning the bare gadget always lets the caller's
introspection succeed. Apps that previously relied on us auto-
wrapping should now wrap externally with MUIC_Scrollgroup; see
mcc/SimpleTest.c for the canonical pattern. ScrollGroupClass is
still registered for callers that wire it up directly via
NewObject(mcc_Class, ...).
* mcc/Debug.cpp, mcc/Makefile: DEBUG=1 builds on OS3 used to fail to
link with a "multiple definition of kprintf" error -- Debug.cpp
defined its own kprintf and -ldebug pulled in another. Guard the
Debug.cpp definition with #ifndef DEBUG so it only compiles into
release builds, where -ldebug is not linked.
* mcc/RapaguiPattern_Test.c: new self-contained test program that
mimics the bare creation pattern used by MOAI / RapaGUI hosts
(no LoadHook tags, optionally signal-saturated via -burn N, and
optionally creating multiple gadgets via -many N). Used during
triage to reproduce the AllocSignal-failure path independently of
Hollywood. Wired into the OS3/OS4/MorphOS Makefile alongside
SimpleTest and LibLoad_Test.

2026-04-20 Dimitris Panokostas <midwan@gmail.com>

* Release 13.6.
* mcc/rev.h, mcp/rev.h: bumped LIB_REVISION to 6, LIB_DATE to
20.04.2026, and copyright range to 2005-2026.
* .github/workflows/makefile.yml: release job now packages each
platform's mcc/mcp binaries into a single versioned zip
(HTMLview-<tag>-<platform>.zip) instead of uploading loose
files that collided across platforms via merge-multiple.
Debug/map artefacts and the test.png are stripped from the
release bundle; README, COPYING, ChangeLog and AUTHORS are
included.

2026-04-18 Dimitris Panokostas <midwan@gmail.com>

* mcc/test_image_hook.h: HTTPS support via AmiSSL. The shared test-program
image hook now handles https:// URLs and follows http->https redirects
(up to five hops). TLS is wrapped through amisslmaster.library +
amissl.library (jens-maus AmiSSL 5.27 SDK), using the inline macros
against task-local library bases -- no stub lib link and no global
AmiSSLBase symbol required. Certificate verification is currently
VERIFY_NONE; CA bundle wiring is a follow-up.
* mcc/test_image_hook.h: Replaced unbounded sprintf into log buffers with
snprintf; a long Location: header or redirect target could otherwise
overflow the stack log buffer.
* mcc/Makefile: On-demand AmiSSL SDK download (lha xq). HTTPS is enabled
for OS3 and OS4 builds; MorphOS stays on plain HTTP.
* mcc/SimpleTest.c, mcc/LibLoad_Test.c: Added network-image test entries
(plain HTTP from aminet, http->https redirect on amigaworld, direct
HTTPS from aminet).
* mcc/LibLoad_Test.c: New test program that exercises the same hook as
SimpleTest but through dlopen-style library loading, making it easier
to verify the shipped HTMLview.mcc on each platform.

2026-04-17 Dimitris Panokostas <midwan@gmail.com>

* mcc: Fix MorphOS MCP and OS4 MCC build issues; OS4 build now makes
-ldebug conditional and stubs kprintf when not building with DEBUG=1;
enabled all three platform builds (OS3, OS4, MorphOS) in CI.
* mcc/ImageManager.cpp, mcc/IM_Render.cpp, mcc/Dispatcher.cpp: Local
image rendering fixes uncovered by the new test programs (decoder
handshake, frame cleanup, hook dispatcher wiring on OS4).

2016-07-29 Thore B�ckelmann <tboeckel@gmx.de>

* mcc: lots of changes to get this beast buildable with our Linux based cross
compiler again with a mixture of C and C++ code plus explicit 68k register
definitions which the g++ doesn't know.

2010-09-17 P�r Boberg <pbobbenb@spray.se>
2010-09-17 P�r Boberg <pbobbenb@spray.se>

* mcp/locale/swedish.ct: new file generated by FlexCat 2.7.

2010-09-08 Mariusz Danilewicz <mandi@interia.pl>

* AUTHORS: added translators section (please check and update missing persons).

2010-05-19 Thore B�ckelmann <tboeckel@gmx.de>
2010-05-19 Thore B�ckelmann <tboeckel@gmx.de>

* mcp/locale: set some properties.

Expand All @@ -37,11 +128,11 @@ $URL$
* include/mccinit.c: RTF_EXTENDED was not set for the MorphOS build making
revision number ineffective.

2008-03-06 P�r Boberg <pbobbenb@spray.se>
2008-03-06 P�r Boberg <pbobbenb@spray.se>

* mcp/locale/swedish.ct: added swedish translation.

2008-02-19 Thore B�ckelmann <tboeckel@gmx.de>
2008-02-19 Thore B�ckelmann <tboeckel@gmx.de>

* Debug.h: replaced all abort() usages in our ASSERT() macros with the
respective calls to assert(). This should prevent the MorphOS compile
Expand All @@ -60,7 +151,7 @@ $URL$
annoying if you are using HTMLview in a multitabs application.
It seems that simply passing a SigBit allocated in the main
application and letting all the HTMLview MsgPorts using it,
solve the whole problem. I tested it in strang� for some days
solve the whole problem. I tested it in strang� for some days
and it works. It needed, of course to define a new tag.

* I left a very high stack values used to run parsing threads
Expand Down Expand Up @@ -180,7 +271,7 @@ $URL$

* mcc: fixed broken compilation due to recent changes.

2007-07-25 Thore B�ckelmann <tboeckel@gmx.de>
2007-07-25 Thore B�ckelmann <tboeckel@gmx.de>

* #?/library.c: now really uses the 3 parameter version of GETINTERFACE()
defined in mccinit.c instead of the old obsolete version in mcc_common.h.
Expand All @@ -193,7 +284,7 @@ $URL$

* include/mccinit.c: updated to latest 1.7 version

2007-07-24 Thore B�ckelmann <tboeckel@gmx.de>
2007-07-24 Thore B�ckelmann <tboeckel@gmx.de>

* include/mccinit.c: updated to latest 1.6 version which fixes an unbalanced
if statement.
Expand All @@ -208,7 +299,7 @@ $URL$
* include/mccinit.c: updated to latest 1.4 version and adapted all our
library.c files to make use out of the new stack enforcing mechanisms.

2007-06-13 Thore B�ckelmann <tboeckel@gmx.de>
2007-06-13 Thore B�ckelmann <tboeckel@gmx.de>

* #?/Debug.c: unified the _DPRINTF() functions for all platforms.

Expand All @@ -220,21 +311,21 @@ $URL$
2007-06-10 Jens Langner <Jens.Langner@light-speed.de>

* mcp: adapted source to compile with new mccinit.c instead of mccheader.c
* misc: integrated a large patch kindly provided by J�rg Strohmayer. Beside
* misc: integrated a large patch kindly provided by J�rg Strohmayer. Beside
cleaning up the C++/C linkage some cleanups in the library init code should
make htmlview.mcc less error prone. In addition, some fixes should finally
enable us to build a running version which we can base our future changes
on. However, still a lot work needs to be done to get HTMLview.mcc working
as well as integrating Gunther Nikl's image decoders source code into the
repository as well.

2007-05-29 Thore B�ckelmann <tboeckel@gmx.de>
2007-05-29 Thore B�ckelmann <tboeckel@gmx.de>

* include/mccheader.c: reworked the LibOpen() and LibClose() functions to
increment/decrement the lib_Open counter before obtaining the semaphore to
prevent a possible race condition with LibExpunge().

2007-03-23 Thore B�ckelmann <tboeckel@gmx.de>
2007-03-23 Thore B�ckelmann <tboeckel@gmx.de>

* #?/Debug.c: fixed wrong final output of debug classes and flags.

Expand Down Expand Up @@ -294,7 +385,7 @@ $URL$
cleanly before we begin to hunt bugs.
* mcc/mcp: replaced all GetAttrs()/get() uses with xget()

2007-03-12 Thore B�ckelmann <tboeckel@gmx.de>
2007-03-12 Thore B�ckelmann <tboeckel@gmx.de>

* #?/Debug.c: disabling a debug flag was not possible due to a check for the
'!' at a wrong index.
Expand Down
Loading