Commit Graph
149 Commits
Author SHA1 Message Date
Kalah 49888217e6 Merge pull request #68 from lucannez64/pr61/system-profiler-overview
system_profiler: hardware and software overviews from IOKit and sysctl
2026-10-18 17:33:03 +02:00
lucannez64 fca543a62d Merge remote-tracking branch 'origin/main' into pr61/system-profiler-overview
# Conflicts:
#	.github/workflows/source-check.yml
2026-10-18 17:32:11 +02:00
Kalah ba640e68b7 Merge pull request #67 from lucannez64/pr61/metal-device-fixes
Metal: device edge-case fixes and a MacBookPro16,1 GPU name for Riot
2026-10-18 17:32:05 +02:00
lucannez64 7d74ed611b Merge remote-tracking branch 'origin/main' into pr61/metal-device-fixes
# Conflicts:
#	.github/workflows/source-check.yml
2026-10-18 17:31:14 +02:00
Kalah 6866c209de Merge pull request #66 from lucannez64/pr61/host-env-filter
Add an opt-in filter for host desktop-session variables
2026-10-18 17:31:06 +02:00
Kalah 33716840ca Merge branch 'main' into pr61/host-env-filter 2026-10-18 17:30:23 +02:00
Kalah b540a1021f Merge pull request #65 from lucannez64/pr61/close-inherited-fds
Close inherited host file descriptors before starting the guest
2026-10-18 17:30:12 +02:00
lucannez64andClaude Opus 5.5 59327fa9f0 Report the MacBookPro16,1 GPU name for Riot on AMD and Intel hosts
With DARLING_METAL_MAC_GPU_NAME=1, MTLDevice.name is the GPU the
MacBookPro16,1 that IOKit reports shipped with, from the host's vendor:
"AMD Radeon Pro 5500M" (vendor 0x1002) or "Intel UHD Graphics 630"
(0x8086). NVIDIA keeps its own name so the game never takes another
vendor's driver paths. recommendedMaxWorkingSetSize and every other value
stay the host's, which was the risky part of #61's identity.

The Riot launcher turns it on by default (0 or empty turns it off); other
Darling apps keep the host name. DARLING_METAL_GPU_NAME still wins.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:24:49 +02:00
34c3e4ae9f Report hardware and software overviews from IOKit and sysctl in system_profiler
system_profiler now answers SPHardwareDataType and SPSoftwareDataType (and
lists them in -listDataTypes). Model, serial number, platform UUID and
provisioning UDID come from IOKit's IOPlatformExpertDevice via ioreg; CPU,
cache and memory from sysctl; the OS version from sw_vers and uname. A
field the guest does not provide is left out.

#61 instead read a separate darling-smbios.conf written by a new
generator (gen-darling-smbios.py), with hardcoded fallbacks (an Intel Core
i9, macOS 14.7, SIP enabled). iokitd reads darling-platform.plist, so
system_profiler and IOKit could report different serials and models on the
same prefix, and the generator overwrote identities imported with
configure-darling-platform.py. Reading the guest's own APIs keeps a single
source of truth: configure-darling-platform.py remains the only way to set
or provision an identity, and it is still never run by install or launch.

tests/test_system_profiler.py runs the script under sh with stub guest
commands and runs in CI.

Split from #61.

Co-authored-by: DevWebeloper <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:17:05 +02:00
3752d9e812 Fix Metal device edge cases; keep reporting the host GPU
From #61, without the default "AMD Radeon Pro 5500M" / 4 GB identity: the
host GPU's name and Vulkan working set stay the default for every app, and
the existing DARLING_METAL_GPU_NAME and DARLING_METAL_VRAM_MB overrides
remain the opt-in. Reporting 4 GB on a 2 GB card invites allocation
failures, and under-reports larger cards.

Kept from #61:
- registryID returns MTLDeviceInfo::kDefaultRegistryID instead of 0; a
  real Mac never reports 0 and apps key devices by it.
- Vertex buffer layout and attribute arrays release the old item after
  retiring it; the retire step read the item after the release could free it.
- newDepthStencilState, newSamplerState and the device name return nil (or
  the fallback name) when Indium throws, instead of unwinding through
  Objective-C.
- MTLDepthStencilGetIndium is declared only with DARLING_METAL_ENABLED.
- The replaceRegion trace probes at most `width` bytes, which stays inside
  the first row for every pixel format.

metal.patch is regenerated in its existing file order, so the diff is
these changes only. tests/test_metal_device_info.py compiles the host
check against MTLDeviceInfo.h as shipped in the patch and runs in CI.

Split from #61.

Co-authored-by: DevWebeloper <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:14:47 +02:00
03fdd25bc0 Add an opt-in filter for host desktop-session variables
RCLOL_FILTER_HOST_ENV=1 makes exec-guest.py drop host session metadata
(WAYLAND_DISPLAY, XDG_SESSION_*, XDG_CURRENT_DESKTOP, GNOME/KDE/GDM,
systemd, SSH agent, terminal, toolkit, Flatpak/Snap/AppImage, exported
shell functions) and set SHELL to the guest's /bin/zsh. It is off by
default; RCLOL_KEEP_HOST_ENV lists names to keep anyway.

Unlike the denylist in #61, the filter runs after the launcher sets its
GPU tuning, keeps everything Darling and the host graphics and audio
libraries read (DISPLAY, XAUTHORITY, XDG_RUNTIME_DIR and the XDG base
directories, D-Bus, PulseAudio/PipeWire/ALSA, DRI_PRIME, MESA_*, __GL_*,
__NV_*, VK_*, LD_PRELOAD for gamemoderun, LD_LIBRARY_PATH), and lives in
one place instead of three.

tests/test_exec_guest.py runs in CI; the launcher check also verifies
that MESA_NO_ERROR=1 and __GL_THREADED_OPTIMIZATIONS=0 reach the guest
with the filter on.

Split from #61.

Co-authored-by: DevWebeloper <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:13:24 +02:00
6b753e87c5 Close inherited host file descriptors before starting the guest
A terminal, IDE or service manager can leave descriptors open in the
launcher, and the guest inherited all of them. tools/exec-guest.py closes
every descriptor above stderr and then execs the guest command.

A shell loop over /proc/self/fd cannot do this portably: dash only parses
single-digit descriptors in redirections, so "exec 10>&-" runs a command
named 10 and ends the launcher on Debian and Ubuntu.

The launcher offline check now leaks descriptors 3, 4, 12 and 200 into the
launcher and asserts the guest sees only 0, 1 and 2. It runs in CI.

Split from #61.

Co-authored-by: DevWebeloper <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:11:36 +02:00
Kalah 603b5a168e Merge pull request #58 from DavidutzDev/fix/chromium-temp-dir
fix(launcher): give Chromium a usable temp directory ("Not Found" client page)
2026-10-18 15:19:45 +02:00
lucannez64 57511fd5e7 Merge remote-tracking branch 'origin/main' into fix/pr58-docs 2026-10-18 15:19:05 +02:00
Kalah 455ab66161 Merge pull request #57 from DavidutzDev/fix/nvidia-580-threaded-egl
fix(nvidia): keep threaded optimizations off for driver 580 (Pascal black screen)
2026-10-18 15:18:21 +02:00
lucannez64 c29f2fc81d docs(launcher): scope Chromium temp failures and use standalone checks 2026-10-18 15:17:46 +02:00
David GhegheaandClaude Opus 5.5 eb17acce6e fix(launcher): give Chromium a usable temp directory
Chromium on macOS takes its temp directory from NSTemporaryDirectory(), which is
unusable under Darling. Electron opens files in app.asar asynchronously by
copying them to a temp file, and reports the failed copy as "not found", so the
Riot client showed a "Not Found" page instead of its UI. Running the client
binary as Node reproduces it: fs.readFileSync on app.asar/dist/renderer/index.html
works, fs.createReadStream fails with ENOENT, and MAC_CHROMIUM_TMPDIR fixes it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:54:25 +02:00
David GhegheaandClaude Opus 5.5 ac89ac78ed fix(nvidia): keep threaded optimizations off for driver 580
With __GL_THREADED_OPTIMIZATIONS=1, NVIDIA 580 (the last branch for Pascal
GPUs) with egl-x11 1.0.6 rejects the X11 EGLDisplay with EGL_BAD_DISPLAY on
every thread that has a context current. A native EGL program reproduces it
outside Darling. In the Riot client the main thread loses EGL after its first
window frame, so CGLCreateContext fails with error 10004 and the game window
stays black. Default the launcher to 0; setting the variable restores 1.

CGLDestroyWindow also returns early for the NULL window CGLGetWindow gives
when eglCreateWindowSurface fails, instead of passing EGL_NO_SURFACE on.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:54:03 +02:00
Kalah 4d7049f194 Merge pull request #27 from dnsouzadev/fix/riot-session-crashes-download-recovery
Fix Riot session crashes, stalled downloads and hidden client launches
2026-10-18 14:41:48 +02:00
lucannez64 4c1f4a44c5 fix(test): let Darling initialize the private session prefix 2026-10-18 14:38:15 +02:00
lucannez64 a682eba974 Merge remote-tracking branch 'origin/main' into fix/pr27-reviewed 2026-10-18 14:30:00 +02:00
Kalah 96185f804e Merge pull request #51 from SypherrDev/perf/nvidia-ioctl-reduction
perf(indium): cut NVIDIA driver calls per frame (lazy event-loop wake-ups, tunable submit batching)
2026-10-18 14:28:16 +02:00
lucannez64 9c2ceeafd0 fix(indium): preserve device field offsets and clarify tuning defaults 2026-10-18 14:27:41 +02:00
lucannez64 70d2d3121f test(cfnetwork): scope probe overlays after private-prefix startup 2026-10-18 14:20:40 +02:00
lucannez64 fb12b2aa07 chore(manifest): record CFNetwork session patch ownership 2026-10-18 14:18:35 +02:00
lucannez64andSypherrDev 8d462f2246 perf(indium): rebase lazy wakeups and batch tuning onto current polling
Keep the merged per-device completion budget, bounded parsing, idle blocking and timeout accounting. Scope the registration/blocking handshake to each device, restrict live batch windows to the timer resolution, and test registration interleavings, spin-disabled polling, shutdown, opt-out and independent devices with actual patched methods.

Co-authored-by: SypherrDev <[email protected]>
2026-10-18 14:17:35 +02:00
lucannez64 e07cf72a15 fix(cfnetwork): preserve shared sessions and delegate-queue completions
Ignore both invalidation methods on the shared session; deliver task completion through the owning session delegate queue. Extend the standalone probe to exercise singleton reuse and a suspended custom queue. Require stable old-client process identities and complete window data before optional recovery, and continue launch after shutdown failures.
2026-10-18 14:16:32 +02:00
Daniel Souza 0087384a02 Fix Riot session aborts, CDN downloads and hidden client recovery 2026-10-18 14:09:59 +02:00
Kalah a3e19d882a Merge pull request #54 from hamzajer/fix/ubuntu-24.04-build-and-coretext-name
Fix darlingserver build on Ubuntu 24.04 and implement CTFontCopyLocalizedName
2026-10-18 14:03:00 +02:00
lucannez64 7ae09c6202 Merge remote-tracking branch 'origin/main' into fix/pr54-update 2026-10-18 14:02:24 +02:00
Kalah 0f204f8685 Merge pull request #29 from pirrandi/fix/nvidia-support
fix(nvidia): CPU readback, native resize signals and bounded completion polling
2026-10-18 14:00:57 +02:00
lucannez64andPirrandi a5ceabb8e8 fix(nvidia): retain readback, resize and bounded completion fixes
Rebuild the remaining NVIDIA changes on current main, preserving the merged visual, draw-buffer, descriptor ownership and mixed Metal-tree fixes. Scope native-thread forwarding to resize notifications and make completion polling per device, bounded and part of the caller timeout budget.

Co-authored-by: Pirrandi <[email protected]>
2026-10-18 13:59:49 +02:00
Kalah 1125666cf2 Merge pull request #56 from nicolai455/review/nix-packaging
feat(nix): add experimental rootless package with guided setup and desktop launcher
2026-10-18 13:55:38 +02:00
lucannez64 8dc17b8e80 test(nix): cover region routing, stable readiness and lost terminals 2026-10-18 13:54:18 +02:00
Nicolai Bruns 6909c7f83b fix(nix): address review feedback on setup and runtime safety 2026-10-18 13:51:58 +02:00
Nicolai Bruns 57223d4c0a fix(nix): simplify compiler setup and complete rootless session lifecycle 2026-10-18 13:35:15 +02:00
Hamza JermouniandClaude Opus 5.5 9a320f17cb Implement CTFontCopyLocalizedName with the canonical name
The stub returned nil and left the language output untouched. Chromium
pre-fills that output with a sentinel and reads it whenever it is
non-NULL, so the League client UI read garbage. Return CTFontCopyName
and always write NULL to the language output. The CoreText font-list
check now covers both.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 12:28:12 +02:00
Hamza JermouniandClaude Opus 5.5 d898703fca Define PROCMAP_QUERY when the kernel headers lack it
Ubuntu 24.04 ships Linux 6.8 headers, which predate the PROCMAP_QUERY
ioctl (6.11), so darlingserver failed to build. The ioctl ABI is fixed,
so define it locally; on an older running kernel the ioctl fails and
the /proc/<pid>/maps text parser is used as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 12:28:12 +02:00
Nicolai Bruns f5e65e3cf1 feat(nix): add experimental rootless FHS package and desktop launcher 2026-10-18 00:30:14 +02:00
Kalah e287abb5d6 Merge pull request #52 from lucannez64/lucannez64-patch-1
Update README with contact info and project goals
2026-10-18 00:11:57 +02:00
Kalah 8b24ecbcd3 Update README with contact info and project goals
Added contact information for job opportunities and clarified project goals regarding Linux compatibility.
2026-10-18 00:11:42 +02:00
Kalah 5880c9219d Merge pull request #47 from lucannez64/fix/pr41-deferred
Implement deferred shell, CPU, registry and platform configuration fixes
2026-10-17 23:41:10 +02:00
Kalah 4ad2857dbb Merge branch 'main' into fix/pr41-deferred 2026-10-17 23:40:55 +02:00
Kalah a332a0d699 Merge pull request #44 from lucannez64/fix/pr41-compatibility
Extract tested runtime compatibility fixes from #41
2026-10-17 23:40:44 +02:00
Kalah 50ec67e978 Merge branch 'main' into fix/pr41-compatibility 2026-10-17 23:40:22 +02:00
lucannez64 0f2233304a Add stable opt-in per-prefix identity provisioning 2026-10-17 23:38:49 +02:00
lucannez64 d87ad2ce45 Implement bounded registry APIs and opt-in platform configuration 2026-10-17 23:32:01 +02:00
lucannez64 3ed48bd2ac Fix shell stream ownership and CPU frequency units 2026-10-17 23:31:23 +02:00
Kalah 7cfd3fee12 Merge pull request #45 from lucannez64/lucannez64-patch-1
Add warning about 3-Day Suspension and project takedown
2026-10-17 23:17:58 +02:00
Kalah 2642e276e1 Add warning about 3-Day Suspension and project takedown 2026-10-17 23:17:35 +02:00