Commit Graph
100 Commits
Author SHA1 Message Date
daniel 21828990c4 cleanup: remove redundant shutdown.elf, update shell help/completions 2026-08-29 19:10:35 +02:00
daniel 70fa2016d1 fix: make Files lists scroll with arrow keys 2026-08-29 19:07:02 +02:00
daniel f69f08acbb fix: inherit redirected console in SYS_SPAWN_CAPS 2026-08-29 18:47:42 +02:00
daniel f0bea7736d feat: add C++ syntax highlighting to edit and Text Editor 2026-08-29 18:36:56 +02:00
daniel 3e596f2bad feat: add Pure Black Terminal theme & make it default for Console session 2026-08-29 18:32:33 +02:00
daniel 615ca7308a feat: add settings panel to Terminal 2026-08-29 18:24:07 +02:00
daniel e7646bbbdb feat: implement kernel capability model 2026-08-29 16:53:04 +02:00
daniel 9051b8a16e cleanup: update syscall man page 2026-08-29 12:38:25 +02:00
daniel 5cd5c2e6be fix: move RTL-SDR to userspace 2026-08-29 10:02:32 +02:00
daniel b1f1cfe32b feat: implement montauk::service_log & add support to system services 2026-08-28 11:56:29 +02:00
daniel 0d23db8a0e cleanup: change _zos to _mtk 2026-08-28 09:15:06 +02:00
daniel dac12c22cd feat: update isatty libc function to use SYS_TERMINAL_ATTACHED syscall 2026-08-28 09:14:02 +02:00
daniel c8264b92a9 feat: add is_terminal_attached syscall 2026-08-27 18:11:21 +02:00
daniel 8afadb44cb feat: expand and fix issues in SVG renderer 2026-08-26 12:04:38 +02:00
daniel ffc9756e67 feat: identify userspace logs by user and image 2026-08-22 18:48:38 +02:00
daniel 8a74b771e1 fix: update template, prevent double-spaced persisted kernel logs 2026-08-22 12:47:13 +02:00
daniel 903218168d split montaukos.org website out of OS source tree 2026-08-22 07:36:47 +02:00
daniel cc90b34fdb cleanup: update stale comments 2026-08-15 21:18:03 +02:00
daniel 788b662d44 fix: reduce idle CPU wakeups and deferred-work polling 2026-08-15 16:50:36 +02:00
daniel f7677ac3f1 fix: fix timezone formatting bug 2026-08-15 16:36:09 +02:00
daniel af7d096969 fix: fix ACPI hardware-ID endianness bug 2026-08-15 16:34:57 +02:00
daniel c917af0629 feat: login - write system log to disk (0:/os/logs/montaukos) during shutdown, limit disk flush stage to non-ramdisk storage devices 2026-08-15 11:21:14 +02:00
daniel f6be9e2563 cleanup: remove dead code in Api/Process.hpp, remove redundant logtest program 2026-08-14 19:14:49 +02:00
daniel 39a56153b4 fix: consistency in Files app volume labeling 2026-08-14 18:38:57 +02:00
daniel 724029cacb feat: add userspace system logging, rename klog to syslog, rename relevant syscalls and API functions 2026-08-14 18:37:27 +02:00
daniel 8e45d43116 refactor: kernel entry point - add architecture preprocessor checks and move module to Boot 2026-08-14 11:28:32 +02:00
daniel 0f81276efc feat: add inherited sessions and desktop session teardown 2026-08-14 10:33:20 +02:00
daniel f8ded3c30e readme - update readme image 2026-08-14 09:12:54 +02:00
daniel e3ef1b81ad fix: fix text overlap bug in file dialogs and remove unnecessary hint in Keyboard applet 2026-08-13 18:10:00 +02:00
daniel 821543238d feat: add keyboard layout support 2026-08-13 17:57:44 +02:00
danielandClaude Opus 5 86e3ebfe33 feat: release notes for 0.1.9; NetSurf license notices; bump version to 0.2.0
Cut two 0.1.9 x86_64 images: montauk-0.1.9-x86_64.iso (29 MB) and
montauk-0.1.9-sdk-x86_64.iso (194 MB). Both include the NetSurf port and
exclude the WIP git port; only the SDK image carries 0:/sdk.

GNUmakefile: add RELEASE_WITHOUT_SDK=1 to the release target, mirroring
RELEASE_WITH_PORTS. Needed because devkit is .PHONY and repopulates
programs/bin/sdk on every build, so the SDK cannot be held out by hand.
sdk/tcc and sdk/lua stay (installed by their own targets), as does 0:/tmp,
which the libc uses for tmpnam() and not just compiler intermediates.

Also strip .release-tmp/boot/kernel. The ramdisk carries its own copy of
the kernel -- the image the Installer lays down on the target disk -- and
it is not named *.elf, so the existing find missed it. It was shipping
unstripped at 6.2 MB against 0.7 MB.

Licensing: NetSurf (GPLv2, MIT artwork), the ten NetSurf project libraries
(MIT), utf8proc (MIT) and zlib now ship in both images and had no
attribution anywhere. Add notices for each, and broaden the stb_image
section to cover stb_truetype, which the GUI apps have always linked. The
component lists in license.txt and license.html were stale to match;
license.txt is the source for 0:/os/licenses/LICENSE.txt, so it ships.

downloads.html: 0.1.9 card with separate download links for the plain and
SDK images; 0.1.8 moves to the archive.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-13 10:54:42 +02:00
daniel a28b8ad0b2 fix: fix ramdisk readdir inconsistency. 2026-08-12 18:35:14 +02:00
daniel 7f2d4b693f feat: add crash stack snapshots and context menu annotations 2026-08-12 18:30:08 +02:00
daniel 3ef98a9fd5 fix: inherit process environment and untrack libc objects 2026-08-11 13:08:40 +02:00
daniel 0a91131cb0 feat: add ssh server (sshd) 2026-08-11 12:53:36 +02:00
daniel 69725658cf feat: init - dynamic service discovery via init.toml 2026-08-10 17:00:52 +02:00
daniel e25ef470e0 feat: files - update volume label formatting 2026-08-10 16:53:48 +02:00
daniel 990d184bd0 feat: pdfviewer - expand PDF rendering support 2026-08-10 15:03:54 +02:00
daniel 9b23d99082 feat: overhaul userspace heap and virtual memory 2026-08-10 12:25:27 +02:00
daniel 4ecec32c5c montaukos.org - docs - add docs page for TOML config API 2026-08-10 11:05:31 +02:00
daniel b91b342d5c montaukos.org - docs - volume name changes 2026-08-10 10:11:34 +02:00
daniel 0b7fd37694 fix: make getcwd report truncated buffers as ERANGE 2026-08-09 12:16:57 +02:00
daniel 1c498ffa6a feat: implement utime libc function, SYS_UTIME syscall, filesystem support (ext2 only) 2026-08-09 11:16:59 +02:00
daniel 771c3a5a98 fix: align POSIX stdio and argument handling, clarify Intel iwlwifi licensing 2026-08-09 10:42:09 +02:00
danielandClaude Opus 5 a06ef0192d fix: ramdisk - dereference symlinks, they pack as zero-byte files
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NQRTGoYgnZQsh7uCh6Jsxm
2026-08-08 14:42:42 +02:00
danielandClaude Opus 5 e8407afcdb feat: libc - add SYS_GETCHAR_NB and a non-blocking stdin readiness probe
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NQRTGoYgnZQsh7uCh6Jsxm
2026-08-08 14:42:38 +02:00
danielandClaude Opus 5 fe10216f8b feat: libc - add strndup, scandir, alphasort, usleep, ftruncate, M_PI constants
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018Ae69wJS7sueQMUwNxV3nX
2026-08-07 21:26:25 +02:00
danielandClaude Opus 5 53a9965e7c feat: libc - add pread/pwrite
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018Ae69wJS7sueQMUwNxV3nX
2026-08-07 20:28:12 +02:00
danielandClaude Opus 5 27c13b8dc2 refactor: move DOOM out to the mtkports ports tree
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018Ae69wJS7sueQMUwNxV3nX
2026-08-07 20:10:52 +02:00
daniel b77449faeb fix: toolchain - update docs 2026-08-07 16:27:09 +02:00
daniel 53d3e6c568 refactor: remove old hello.elf userspace program 2026-08-07 13:26:06 +02:00
daniel cc1d80442e refactor: split out game engine experiment and demo game 2026-08-07 13:24:46 +02:00
daniel 2c8733298f montaukos.org - docs reorganization 2026-08-07 12:04:43 +02:00
daniel 326416636d feat: desktop - use MTK buttons for power dialogs 2026-08-07 11:41:47 +02:00
daniel 0e1601be74 feat: desktop - use MTK menu for desktop right-click menu 2026-08-07 10:55:38 +02:00
daniel 9eb21eb3e3 feat: wi-fi - expand support and fix issues, add GUI components 2026-08-07 10:36:53 +02:00
daniel bbe1df62fd feat: wi-fi - join WPA2/WPA3-PSK networks and carry traffic like ethernet 2026-08-06 19:44:35 +02:00
daniel a01e63c717 feat: intel wi-fi (AX211) driver with network scanning 2026-08-06 08:36:10 +02:00
daniel 75d92d560c refactor: libc - share printf, split the float path, fix relink deps 2026-08-04 17:29:24 +02:00
daniel edc3452d61 feat: real stat metadata across all filesystems, plus mkdir and rmdir 2026-08-04 13:03:08 +02:00
daniel ca5331c9db feat: vfs - add dynamic filesystem mounts and safe unmount lifecycle 2026-08-04 08:58:50 +02:00
daniel b1c55073c7 fix: kernel concurrency, interrupt context, and user VA safety 2026-08-01 15:43:38 +02:00
daniel f222bf1f04 cleanup: remove "MODESETTING SAFETY" section in Display app 2026-07-31 18:56:27 +02:00
daniel 18122136dd fix: improve Bluetooth reliability 2026-07-31 18:42:48 +02:00
daniel 4627ac92fd fix: correct Intel GGTT setup and DP AUX EDID 2026-07-30 19:28:09 +01:00
daniel a965e67c93 fix: prevent IPC slot reuse during object teardown 2026-07-30 17:46:38 +01:00
daniel 471903bafb feat: expand Intel GPU display management 2026-07-30 17:12:08 +01:00
daniel 86de3400a9 feat: audio - add concurrent mixing, output switching, and device-aware UI 2026-07-29 20:03:35 +01:00
daniel d99dab45e5 feat: add NTP; fix networking bugs/regressions 2026-07-29 16:32:18 +01:00
daniel a288dee7df refactor: network - harden TCP/IP and unify HTTP clients 2026-07-29 15:35:17 +01:00
daniel 75ae7ede56 refactor: unify desktop apps and Settings under item catalog 2026-07-29 13:59:46 +01:00
daniel 84ea28a978 montaukos.org - add known issue note to website (ISO size for 0.1.8) 2026-07-29 10:20:16 +01:00
daniel 826ecba43a chore: update readme 2026-07-29 10:15:01 +01:00
daniel e9d8c66ff5 feat: files app - render modified dates in Properties dialog 2026-07-21 14:44:44 +02:00
daniel de7edaf623 feat: vfs - add stat syscall 2026-07-21 14:23:06 +02:00
daniel 5c02c5fe79 feat: ext2 - save timestamp metadata 2026-07-21 14:09:17 +02:00
danielandClaude Opus 4.8 48e5d31e07 chore: purge committed ISOs from history; ignore ISO images
ISOs are now archived on the download server (nginx) instead of git.
History was rewritten with git-filter-repo to remove all *.iso and
ramdisk.tar blobs, shrinking the repo from ~500MB to ~80MB.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-18 20:22:40 +02:00
daniel b6d7b80f57 montaukos.org - 33/33 menus adapted to update sidebar menu 2026-07-18 17:49:16 +02:00
daniel 597d1289af montaukos.org - add issue tracker link 2026-07-18 17:42:44 +02:00
daniel d7f6b58d04 license - add GCC/binutils notices to license/third party notices 2026-07-18 17:40:17 +02:00
danielandClaude Opus 4.8 6f6ebd6528 feat: release notes for 0.1.8; archive 0.1.8 iso; bump version to 0.1.9
Cut the 0.1.8 release (native GCC/binutils port forming the Montauk SDK,
revamped MTK-based Installer, anti-aliased MTK rounded-rect frames,
vblank-synced double-buffered Intel GPU page flips, max windows raised
to 32, and various bug fixes, including the halved ISO size from no
longer nesting ramdisk.tar). Archive the 0.1.8 ISO, publish it to the
website, refresh release notes and the downloads page, and open the
0.1.9 dev cycle (apiVersion 10, BuildNo reset).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-18 13:08:47 +02:00
danielandClaude Opus 4.8 2980169a27 fix: stop nesting ramdisk.tar - size improvement
The ramdisk build embedded a full second copy of ramdisk.tar at
boot/ramdisk.tar inside the ramdisk itself. Nothing consumes it (the
Installer copies the live 0:/ tree file-by-file and explicitly skips it),
so it was pure dead weight that doubled the image. Build the tar once.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-18 13:08:39 +02:00
daniel 2319858e8c fix: add path qualification to Files app pathbar 2026-07-18 12:07:53 +02:00
daniel b319399139 feat: revamp Installer UI 2026-07-18 11:55:11 +02:00
daniel 3ac25b7abd feat: raised max windows to 32 2026-07-18 10:34:46 +02:00
daniel 796ed46d12 fix: fix Font Preview crash if opened manually 2026-07-18 10:21:22 +02:00
daniel 7c8b7a5cf7 fix: fix totals calculation in Software step, Installer app 2026-07-18 10:14:59 +02:00
daniel 16d7321484 fix: fix MTK elements' border radiuses 2026-07-18 10:10:56 +02:00
daniel 3dea1ee6d5 montaukos.org - license changes 2026-07-18 00:00:32 +02:00
danielandClaude Opus 4.8 95e3ca3272 feat(mtk): anti-alias rounded-rect frames (buttons, fields, panels)
Route draw_rounded_frame through a new fill_round_rect_aa that fills the
straight interior solid and 4x4-supersamples only the four corner arcs,
so button/text-field/panel/list-frame corners are smooth instead of
pixelated, at negligible cost.

Consolidate the checkbox's private AA fill/blend helpers onto the shared
aa_blend_px / fill_round_rect_aa primitives.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-17 20:55:35 +02:00
danielandClaude Opus 4.8 0377be4524 feat: redesign installer on MTK toolkit with component selection
Rewrite the Installer app on the Montauk Toolkit (Canvas + gui/mtk
widgets, theme, hover states, scrollbar) replacing the hand-rolled px_*
renderer and bespoke TrueType usage.

Add a new "Software" step: an expandable checkbox tree for optional
components (Montauk SDK with gcc/g++, binutils, tcc, lua sub-items;
Games; Office; Internet apps; Printing; experimental httpd and SDR).
Unchecked components' paths are excluded from the install copy, with a
longest-path ownership rule so e.g. sdk/tcc installs even when the rest
of the SDK is deselected. The update flow refreshes only the components
the target already has.

Add tri-state checkbox and disclosure-arrow widgets to the MTK toolkit
(anti-aliased, supersampled).

Merge tcc and lua into 0:/sdk (0:/sdk/tcc, 0:/sdk/lua) and drop 0:/lib:
update tcc config.h, lua luaconf.h, both Makefiles, the devkit clean
scope, man pages and montaukos.org notices.

Make printing optional: init skips printd when 0:/os/printd.elf is
absent.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-17 20:52:19 +02:00
daniel 8e6b619b02 feat: port gcc to MontaukOS 2026-07-17 15:47:45 +02:00
daniel 324b18edda montaukos.org - 'User's Manual' => 'Tutorials' 2026-07-17 13:05:53 +02:00
daniel f25fa96aaf index.html homepage revamp 2026-07-17 13:02:25 +02:00
daniel 6d70fca110 add contact email to downloads.html 2026-07-17 12:38:53 +02:00
danielandClaude Fable 5 6b88db35f2 fix: distinct fake inodes for directories in stat()
stat() synthesized path-hash inodes for regular files but left
st_ino = 0 for directories. GCC's include-path setup deduplicates
directories by (st_dev, st_ino), so every directory on MontaukOS
compared equal and cc1plus silently dropped all C++ include dirs
except the first - <iostream> resolved but the target-specific
bits/c++config.h directory was gone. Directories now get the same
path-hash inodes as files. (Different spellings of one directory
hash differently; the harmless direction - a dir may be searched
twice, never dropped.)

Native GCC relinked against the fixed libc.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-17 10:51:05 +02:00
danielandClaude Fable 5 1c851a3627 fix: real argv[0] via SYS_GETEXECPATH - GCC driver finds its backends
The GCC driver relocates its install prefix from argv[0]. crt1
hardcoded argv[0] as "prog", so make_relative_prefix cwd-joined it
and computed exec prefixes relative to the current directory
(0:/users/admin/../libexec/gcc/...), and because the computed
gcc_exec_prefix is non-NULL the standard /sdk prefixes were never
searched. cc1plus was unreachable from anywhere except (by accident
of the path arithmetic) 0:/sdk/bin. sdk-diag proved the kernel and
libc layers all worked; only the driver's self-relocation was lost.

New SYS_GETEXECPATH (151) returns the absolute path the process was
spawned from (Process::name); crt1 uses it for argv[0] with a "prog"
fallback. With a real argv[0], make_relative_prefix computes
0:/sdk/bin/../libexec/gcc/ from any cwd. Native GCC relinked against
the new crt1; sdk-diag ships in the SDK as a permanent probe; the
montauk.h TCC mirror gains the wrapper (checker enforced it).

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-17 10:43:59 +02:00
danielandClaude Fable 5 2f1010b02e fix: stream ELF program loading instead of buffering whole files
ElfLoad read the entire binary into one kernel heap allocation before
copying segments out. The heap grows through ReallocConsecutive, so a
40 MB cc1plus required 10k physically contiguous pages - effectively
impossible after boot with a 368 MB ramdisk module resident, and the
failed spawn surfaced as posix_spawnp ENOENT in the gcc driver.

The loader now reads the ELF header and program header table (bounded
at 64 entries), then copies each PT_LOAD page and the PT_TLS template
directly from the VFS into freshly mapped process pages. Peak kernel
memory per load drops from fileSize to one page regardless of binary
size. Boot-smoke verified: all userspace loads through this path.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-17 10:25:30 +02:00
danielandClaude Fable 5 78ce551688 fix: USTAR prefix-field parsing and directory-aware chdir
Two ramdisk fixes exposed by shipping the C++ header tree:

Paths longer than 100 characters (libstdc++'s pb_ds detail headers)
are split by USTAR across the name field and the 155-byte prefix
field at offset 345. The parser only read the name field, so the
tails of 7 deep header paths appeared as bogus root-level entries
while the real paths were missing. The parser now joins
prefix + '/' + name, and MaxNameLen grows to 260 to hold the full
combined path.

SYS_CHDIR validated non-root targets by opening them as files, which
only ever worked because directories used to be openable. It now uses
the ReadDir probe, which fails for nonexistent paths and regular
files on all backends (ext2/fat32 already validate the inode type).

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-17 10:18:58 +02:00
danielandClaude Fable 5 aa3b92d834 fix: ramdisk Open no longer opens directory entries
SYS_OPEN succeeded on directory tar entries, so userspace stat() -
which tries open-as-file first - reported every directory as a
regular file. GCC's include-path setup stats each search directory
and rejected all the real ones with "not a directory" warnings.
Directories now fall through Open to -1 and stat() classifies them
via the (recently fixed) ReadDir existence probe.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-17 10:13:59 +02:00