Please note that this is just an overview and does not mention or explain every new feature.
The following is a (probably incomplete) list of changes made between the 3.20 and 3.21 release of MorphOS to the ROM (boot.img) based components.

Quark
- Improved low level memory management code
- Fixed reset, shutdown and cpu speed switching on SMU Macs
- Fixed interrupt routing on PowerMac11,2
CDRive
- Fixed to only mount the disc or image as ISO when the format is identified as ISO 9660
Cybergraphics
- Improved graphics memory management
- Fixed accelerated line draw
Dos
- Fixed race conditions resolving deferred resident commands
- Removed unsafe debug code from DupLock() function that could result in system crashes when "Lock" DOS debug was enabled
Drvrpackldr New
Handles loading of additional drivers from Mirari's SD card.
Exec
- Fixed a subtle bug in aligned memory allocation code that could lead to memory corruption and system crashes
- Corrected a flaw in available memory accounting, resulting in wrong amount of free memory being reported
- Fixed out of bounds array access with excessively large allocation sizes
Intuition
- Fixed a deadlock when opening menus during DisplayBeep animation
- Fixed submenu mouse move handling dereferencing NULL window pointer
- Waits for blankers to stop before sending DPMS OFF to a monitor
- Fixed a deadlock when animating window close
Keylargo
- Fixed a resource leak in SMU ack failure path
Layers3D
- Optimized to better handle high memory pressure and ever-repainting screen titlebar
- Removed triple buffering
- Fixed potential missing tile repaints
Mirari
- Miscellaneous bugfixes
Mount
- Added MBR EFI SYSTEM partition detection
NVMEMount New
Auto-mounter for Mirari's nvme.device to mount and/or boot NVMe based partitions.
SATA
- Tweaked initialization timings to fix SATA startup issues
PowerBook / iMac
- Hotkeys are now fully configurable
ShellCmd
- Fixed several race conditions
- Fixed Resident REPLACE/S potentially freeing memory that is still in use
Touchpad
- Improved the acceleration curve
- Fixed settings being ignored in some cases
Following is a (probably incomplete) list of changes made to the disk based components of MorphOS. While not mentioned for every component, translations were updated for most of them. Also various cosmetic fixes were applied here and there.

Ambient
- Fixed wallpaper transitions, transitions are refused on pixel format mismatches. Fixed setting background to a solid color
- Added CellBasics and PageBasics to Ambient's recognition db
- Optimized thumbnail generation by ignoring directories
- Fixed an issue where Ambient context menus were unable to extract archives containing AmigaDOS pattern chars like ()#?
- Fixed sorting with diacriticals in listers
- Fixed a crash when synchronous file operation fails
Applications/BasicWorks New
CellBasics and PageBasics. An office suite with document and spreadsheet authoring capabilities. Loads and saves Microsoft Office and OpenOffice documents.
Applications/Flacapella
- Switched to MusicBrainz for CDDB and cover data
Applications/FlowStudio
- Passes PROJECTINDEX_LANGUAGEVARIANT to projectindex
Applications/MirrorBackup
- Fixed unterminated backup config strings
Applications/RemoteShell
- Updated to OpenSSH 10.6p1
Applications/Synergy/SynergyClient
- Fixed localizations being loaded too late
Applications/Transfer
- Use SC_COLLATE2 for file name sorting to match Ambient

C/Automator
- Added server mode & various new commands
C/Newer
- Added MISSINGVEROLDER/S option that can be used to make the command consider missing version information same as the version being older than the other file
C/Xad*
- Disabled unconditional debug
Classes/Blankers New
Marbles and Cyber 3D blankers (R300-R500 graphics card required).
Classes/Frameworks/MUI
- Fixed an array out-of-bounds exception when dragging the last tab
Classes/MUI/AboutMorphOS
- Reintroduced the butterfly animation
Classes/MUI/Graph
- Fixed rendering issues, including painting out of bounds
Classes/Multimedia/gif.decoder
- Fixed a logic error that could lead into busy-looping and hang with some GIF images
Classes/Multimedia/netpbm.demuxer
- Fixed MMA_Video_BytesPerLine for Portable PixMap
Classes/Multimedia/ogg.demuxer
- Fixed a crash with some Ogg streams
Classes/Multimedia/vorbis.decoder
- Disabled unconditional debug

Devs/Monitors/Radeon
- Implemented 2-way GART backed bitmap transfer, dramatically improving low-VRAM performance (limited to hardware with real AGP and PCIe ports)
- Fixed low resolution digital modes scaling on R500+ cards
- Fixed screen swapping being broken when switching from an autoscroll screen to a narrower one
- Fixed accelerated alpha scaling writing garbage with srcx > 0
Devs/Networks/Bcm43xx
- Added automatic transmit rate selection instead of a fixed 54 Mbit/s
- Updated the embedded firmware to version 508.154
- Fixed repeated disconnects from access points with 802.11b rates disabled
- Fixed "replay attack" errors and dead connections, for example with an iPhone hotspot
- Fixed board specific workarounds not being applied, including AirPort Extreme power amplifier control
- Fixed poor throughput caused by heavy collisions and incorrect timing
- Fixed incorrect signal strength readings
- Radio recalibration no longer blocks traffic for minutes
- Various WPA, scanning and stability fixes

L/Rawdisk
- Added automatic remounting of filesystems when disk beginning is written to, improving user experience when writing disk images
L/Smb2fs
- Disabled unconditional debug
- Improved error handling when directories are operated as files
L/XADFS
- Fixed a wrong error check
Libs/Cairo
- Refactored cairo color svg glyph codepaths for a >12x speed increase
Libs/Calendar
- Fixed infinite recursion between EventSet and EventCheck
- Fixed short events after midnight being stretched to end-of-day
- Reordering alerts could duplicate them if only one was set
Libs/Expat
- Fixed CVE-2026-93990 vulnerability
Libs/Freetype
- Updated to freetype 2.15.0
Libs/Harfbuzz
- Updated to Harfbuzz 15.0.0
Libs/Ixemul
- Fixed several rare race conditions, including lost signals
- Fixed grep and other tools not working with pipes
- Fixed getgroups(), pread()/pwrite(), dup2(), fstat() and setjmp() issues
- Fixed a crash in execve() when out of memory
- Fixed locating resident commands
- Terminal input is no longer lost while a command is running
Libs/Locale
- Updated timezone data to 2026f version
- Implemented SC_COLLATE2
- Improved coordination with IPrefs during system startup
- Replaced system timezone locking with reference counting
Libs/Lzma
- Make lzma_lz_decoder_init() safe to use after an alloc failure
Libs/Netconfig
- Fixed DHCP not working with some network equipment
- Fixed DHCP failing to get a new address after a lease could not be renewed
- Added support for DHCP option overload
Libs/ObjFW
- Updated ObjFW to 1.5.7
Libs/OpenSSL4
- Updated to OpenSSL 4.1.0
- Enabled DTLS-SRTP, DGRAM and DTLS, disabled OpenSSL native QUIC
Libs/Random
- Fixed a long-standing bug that could block system boot when attempting to initialize the random seed
Libs/TinyGL
- Improved RAM <> VRAM texture copy performance, using GART and/or AltiVec when supported by hardware
- Invalidates the texture cache after a framebuffer switch, so that sampling a texture the card has just rendered into reads what was rendered
- Improved shader compiler's performance and reduced memory fragmentation
- Fixed an edge case where an app would be trying to read back an evicted texture
- Implemented missing GLDeleteObjectARB, GLDeleteProgram and GLDeleteShader
- Constant operands of ALU and OUT instructions are now relocated on R500 just like they are on R300
- Set ZB_ZTOP for select shader programs
- Fixed a stale state on arrays
Libs/TTEngine
- Grayscale-alpha antialiased text is now hardware accelerated
- Fixed memory corruption caused by soft styles / legacy metrics
Libs/Vorbisfile
- Reduced stack usage
Libs/XADMaster
- Archives can no longer write files outside the target directory
- Fixed handling of malformed ZIP and LhA archives
- Fixed problems caused by older or buggy external clients, including Tar 1.10
- Colons in LhA archive paths are now handled the same way as the LhA command does
Libs/Zip
- Fixed a crash in the constructor/destructor support code
- Zip archive correctness fixes

MUI
- Refactored Title layout. Implemented MUIA_Title_Shortening
- Fixed skin previews in Screens.mprefs when layer fade-in effects are enabled
- Rewritten Title.mui layouter to avoid squeezing objects too tight so that only close buttons are visible. Added wheel scroll of tabs
- Fixed Listtree's drag & drop repaint issues
- Listtree Display: don't stomp memory if a string longer than 1024 is used
Net
- Updated curl-ca-bundle.crt
- Removed "emSign ECC Root CA - G3" trust due to private key compromise
Network/Netstack
- Fixed gethostname memory corruption with too many A records
- Implemented faster checksum code
Network/WirelessManager
- KRACK fix back port and several other fixes and improvements
Prefs/Blanker
- Don't animate a preview blanker unless MUIM_Show was received after MUIM_Setup
Prefs/Compositing
- Removed triple buffer setting
Prefs/Laptop & iMac
- Fully configurable hotkeys for PowerBook and iMac
Tools/WebFontInstaller
- Fixed race conditions and improved network error handling
- Require minimum TLS 1.2
Utilities/Commodities/Expose
- Improved memory security inspecting foreign task information
- Fixed behaviour with a lot of icons (multiple rows instead of scaling down)
- Fixed window size calculation to avoid scrollers popping up
- Fixed tab repeat triggering a wrong icon to be selected depending on timing