Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
647 commits
Select commit Hold shift + click to select a range
84c1c39
Fix Linux packaging, renderer, fonts & build safety
themuffinator Jun 4, 2026
aed9310
Fix HDR postprocess smoke test guard check
themuffinator Jun 4, 2026
a2461f7
Disable IsSimple to preserve retail GUI semantics
themuffinator Jun 4, 2026
f2b72fd
Suppress OpenQ4 override warnings & asset cleanup
themuffinator Jun 4, 2026
f0c72bf
Remove airdefense1_noblue
themuffinator Jun 4, 2026
5134196
Prefix napalmgun filename with 00_
themuffinator Jun 4, 2026
9bfd581
Refactor settings menu and crosshair UI
themuffinator Jun 5, 2026
8d6a1d2
Fix ARM64 clock tick init; update release notes
themuffinator Jun 5, 2026
6090029
Add major/minor/patch release bump modes
themuffinator Jun 5, 2026
dd7b1b3
Use fixed 32-bit float bit operations
themuffinator Jun 6, 2026
83a59ec
Use SDL3 Wayland on Linux; Steam Deck fixes
themuffinator Jun 8, 2026
cfc0cd7
Add Linux ARM64 CI and split Linux debug symbols
themuffinator Jun 9, 2026
c4de54b
POSIX: SDL console, GLX VSync, renderer fixes
themuffinator Jun 10, 2026
2dab1c2
Add Discord badge to README
themuffinator Jun 10, 2026
cb379c4
Normalize openQ4 branding and workflows
themuffinator Jun 10, 2026
3baf1a5
Publish renderer reports and add macOS ObjC args
themuffinator Jun 10, 2026
49b076c
Support assetless renderer bootstrap on ARM64
themuffinator Jun 10, 2026
186dd45
Renderer rework 2
themuffinator Jun 10, 2026
80db58c
SSE2 SIMD, render call dedup, loading input
themuffinator Jun 10, 2026
a9601ce
Fall back to silence when no OpenAL device is available
themuffinator Jun 10, 2026
99b83e9
Enable index VBOs, add VBO pooling and SSE2 TriPlanes
themuffinator Jun 11, 2026
7b8c20e
Fix SSAO bind, index VBO policy, SSE2 compares
themuffinator Jun 11, 2026
d7d3915
Use CLOCK_MONOTONIC and add CPU freq helper
themuffinator Jun 11, 2026
18438c3
Refactor console text for scaled diagnostics
themuffinator Jun 11, 2026
73558fa
Renderer audit pass: 66 verified fixes across the GL pipeline
themuffinator Jun 12, 2026
0c9c91e
Improve lens flare, depth handling, and map parsing
themuffinator Jun 12, 2026
fe4440e
High-DPI mouse, glyph padding & shadow fallbacks
themuffinator Jun 12, 2026
0276fd9
Clamp lens flare depth; machine-spec & shadows
themuffinator Jun 12, 2026
bd0b759
Add assetless game/AAS checks to ARM64 CI
themuffinator Jun 12, 2026
73caa84
Normalize joystick look axis before scaling
themuffinator Jun 13, 2026
c9347f4
Stage color fallback, flare tapering, shader fixes
themuffinator Jun 13, 2026
48cda83
Add player-facing docs
Copilot Jun 13, 2026
8b33c1d
Merge pull request #71 from themuffinator/copilot/revise-readme-butto…
themuffinator Jun 13, 2026
5de38ff
Complete Steam Deck support pass
themuffinator Jun 13, 2026
58c7ada
Modernize lens flare validation and runtime path
themuffinator Jun 13, 2026
67eef80
Add controller gyro & touchpad settings UI
themuffinator Jun 13, 2026
8e90f68
Anchor lens flares to authored light origins
themuffinator Jun 13, 2026
f2b44c4
Fix and expose SMAA post anti-aliasing
themuffinator Jun 13, 2026
48bc8bc
Advance shadow-map planning and diagnostics
themuffinator Jun 13, 2026
d06659c
Add shadow debug, SMAA controls, and flare refactor
themuffinator Jun 13, 2026
7b15a59
Restrict lens flares to shadow-casting lights
themuffinator Jun 14, 2026
be3747c
Document quiet startup loadouts
themuffinator Jun 14, 2026
89c5829
Improve level loading performance
themuffinator Jun 14, 2026
bf07765
Add macOS Metal bridge build option
themuffinator Jun 14, 2026
f0cad34
Clamp shadow slope bias, lower defaults
themuffinator Jun 14, 2026
8923f40
Update README.md
themuffinator Jun 14, 2026
c79371f
Remove baked lightgrid .tga files in .install
themuffinator Jun 14, 2026
9486bf0
Add base OQ4 loadscreen assets (DDS/TGA)
themuffinator Jun 14, 2026
2663c69
Rename airdefense loadscreen assets
themuffinator Jun 14, 2026
f3c828f
Soft-particle safety and levelshot map lookup
themuffinator Jun 14, 2026
efe6a6f
Update release-completion.md
themuffinator Jun 14, 2026
101311c
Support overlays on animated/primbatch models
themuffinator Jun 14, 2026
1c0f35d
Add lightgrid maps for q4dm1-3; update AGENTS.md
themuffinator Jun 15, 2026
bd037a0
Refactor light-grid rendering and add staging helpers
themuffinator Jun 15, 2026
b44da2d
Document Linux AI dormancy fix
themuffinator Jun 15, 2026
d6dec4c
Update README.md
themuffinator Jun 16, 2026
0840620
Include animated GUI models in GuiTrace
themuffinator Jun 17, 2026
c9ad118
Improve macOS packaging, SDL3 Linux, and CI
themuffinator Jun 17, 2026
15ab318
Add .lightgridpack format and SDL3/SteamDeck updates
themuffinator Jun 17, 2026
ef6d762
Guard macOS renderer startup entry points
themuffinator Jun 17, 2026
ed7b25b
Harden macOS package and macro guards
themuffinator Jun 17, 2026
669ec99
Add Discord release announcements
themuffinator Jun 18, 2026
4490863
Add lightgrid textures and update shader/tasks
themuffinator Jun 18, 2026
b53688e
Merge pull request #74 from themuffinator/codex/macos-macro-robustness
themuffinator Jun 18, 2026
5715be2
Preserve receiver-referenced light-grid residency
themuffinator Jun 18, 2026
f0f96a3
Merge branch 'main' of https://github.com/themuffinator/OpenQ4
themuffinator Jun 18, 2026
6b889e6
Preserve split-map campaign transition state
themuffinator Jun 18, 2026
e63472d
Match retail BSE sprite particle quads
themuffinator Jun 18, 2026
8aa64cd
Restore retail enemy-hit crosshair flash
themuffinator Jun 18, 2026
11116db
Add display-aware resolution selection
themuffinator Jun 18, 2026
3b47547
Fix brightness and gamma presentation on SDL backends
themuffinator Jun 18, 2026
58cd457
Fix non-English menu localization handling
themuffinator Jun 18, 2026
b8a15ba
Update lightgrid textures for maps
themuffinator Jun 18, 2026
f9c6d38
Add scoped look sensitivity setting
themuffinator Jun 18, 2026
da31e13
Add scope & display localization strings
themuffinator Jun 18, 2026
bb15c12
Add scope sensitivity strings to locales
themuffinator Jun 18, 2026
51c5e1f
Use branded Discord release avatar
themuffinator Jun 18, 2026
4f5364b
Restore Q4 sound-driven light amplitude
themuffinator Jun 18, 2026
116fca6
Restore aspect-agnostic machinegun scope blur
themuffinator Jun 18, 2026
3cb690d
Add scope sensitivity setting to Game options
themuffinator Jun 18, 2026
24dfed5
Merge pull request #75 from themuffinator/codex/issue-69-localization…
themuffinator Jun 18, 2026
d0aee65
Add nailgun scope assets and GUI layout
themuffinator Jun 18, 2026
5a36fed
Improve MSAA/Post-AA, add FlushGui, SDL3 fallbacks
themuffinator Jun 19, 2026
ba252de
Improve macOS packaging, hardening, and robustness
themuffinator Jun 19, 2026
17393ed
Remove .install/baseoq4 installed assets
themuffinator Jun 19, 2026
f875d3e
Lightgrids
themuffinator Jun 19, 2026
65d5b8c
Update loadscreen images and add MCC assets
themuffinator Jun 19, 2026
2e1d2cd
Build pak0, add perf/turbo UI and CI tests
themuffinator Jun 19, 2026
2eb9f17
Support 16:9 cinematic bars and state updates
themuffinator Jun 19, 2026
dde4990
Rename companion repo to openQ4-game
themuffinator Jun 19, 2026
1372fe6
Clear input events on loading-continue
themuffinator Jun 20, 2026
676c804
Enhance CI and macOS packaging
themuffinator Jun 20, 2026
91ca751
Fix nailgun scope reticle packaging
themuffinator Jun 20, 2026
51976a5
Add OQ4 nailgun scope assets and references
themuffinator Jun 20, 2026
c5ad9a2
Relocate baseoq4 content into pak folders
themuffinator Jun 20, 2026
2dd80eb
Sound: align attenuation, volume, pitch & diagnostics
themuffinator Jun 21, 2026
e37c813
Discord release defaults and sound skip flag
themuffinator Jun 21, 2026
43a9715
Enable BSE effect frustum culling by default
themuffinator Jun 21, 2026
341c2c3
Migrate Windows to borderless windowed by default
themuffinator Jun 21, 2026
4256efe
Remove airdefense1 lightgrid assets
themuffinator Jun 21, 2026
c9dea09
Cache loop counts and optimize GL/material/AAS
themuffinator Jun 21, 2026
3a1b576
Add pak manifest + robustness and safety fixes
themuffinator Jun 22, 2026
dbbd49b
Fix macOS guarded string compares
themuffinator Jun 22, 2026
3f618a3
Allow releases without macOS signing secrets
themuffinator Jun 22, 2026
f0b51cf
Restore retail sound ABI and release notes
themuffinator Jun 22, 2026
8ac4bbe
Support unsigned macOS releases & update README images
themuffinator Jun 22, 2026
e4e2d49
Add macOS unsigned fallback; perf preset self-test
themuffinator Jun 22, 2026
83cf78f
Remove obsolete README images
themuffinator Jun 22, 2026
c05b732
Add BC7/BPTC DDS texture support
themuffinator Jun 22, 2026
de238e7
Decode RXGB DDS as normal maps for bump
themuffinator Jun 22, 2026
08abdc7
Fix DDS padding, fog ordering, OpenAL occlusion
themuffinator Jun 22, 2026
d6f47cc
Preserve LDR highlights until near-white
themuffinator Jun 22, 2026
3d826c6
Add game_class_allocator_alignment test
themuffinator Jun 22, 2026
4c0820a
Preserve macOS client/app binary match
themuffinator Jun 23, 2026
6ea3b24
Expand CI validation and add safety tests
themuffinator Jun 23, 2026
6bf1449
Fix macOS game module release target type
Copilot Jun 23, 2026
e751b26
Merge pull request #80 from themuffinator/copilot/resolve-action-run-…
themuffinator Jun 23, 2026
5a90f72
Delete docs-dev/legacy directory
themuffinator Jun 23, 2026
932c8b9
Normalize macOS game module install names
themuffinator Jun 23, 2026
1f99d30
Fix overlapping System post-effects rows
themuffinator Jun 23, 2026
6335b49
Keep separate macOS client and app signatures
themuffinator Jun 23, 2026
bc09095
Add lightgrid textures and loadscreen assets
themuffinator Jun 23, 2026
b648aa1
Add OpenAL HRTF option and device monitoring
themuffinator Jun 23, 2026
073d0a2
Disable VBO for Apple GL2.1 and fix ARB2 offsets
themuffinator Jun 23, 2026
2b0f19a
Note ARM64 save-game restore reliability fix
themuffinator Jun 23, 2026
8533a68
Validate Discord URLs, reorganize docs, expand CI
themuffinator Jun 24, 2026
50835d9
Fix view-dependent light-grid receivers
themuffinator Jun 24, 2026
f2c5f8e
More loadingscreens
themuffinator Jun 24, 2026
de054e0
Fix optimized light fixture glow colors
themuffinator Jun 24, 2026
f255b90
Improve OpenAL reliability and diagnostics
themuffinator Jun 24, 2026
fc43ea2
OpenAL: portable noexcept handling & test fix
themuffinator Jun 24, 2026
0566909
Free immediately-expired BSE effects in renderer
themuffinator Jun 24, 2026
f6e0b86
Add game-module fallback and OpenAL hardening
themuffinator Jun 25, 2026
59b01d9
Use optimized release builds and add BC7 DDS support
themuffinator Jun 25, 2026
15c5ef1
Mark macOS experimental; add rimlight & UI updates
themuffinator Jun 25, 2026
175c8cf
Restore pre-plan OpenAL path; limit post-plan opt-in
themuffinator Jun 25, 2026
874e7d3
OpenAL opt-in: decl refs + restart on change
themuffinator Jun 25, 2026
ff45dcf
Update README.md
themuffinator Jun 26, 2026
be5c5ef
Prefer simple ARB interaction on Apple GL2.1
themuffinator Jun 26, 2026
60bcdd9
Expand macOS support guardrails
themuffinator Jun 30, 2026
ffa75b5
Harden save restores and OpenAL voice gating
themuffinator Jul 1, 2026
76a63d0
Revert OpenAL voice experiment to June 23 baseline
themuffinator Jul 2, 2026
ae535b4
Harden macOS GL2.1 path and support intake
themuffinator Jul 3, 2026
2bad013
Harden macOS archive and signoff validation
themuffinator Jul 4, 2026
86440cc
Harden ARB2 bypass state restore diagnostics
themuffinator Jul 5, 2026
ae90509
Harden ARB2 bypass and OpenAL voice handling
themuffinator Jul 5, 2026
40629e7
Harden macOS packaging and OpenAL audio
themuffinator Jul 7, 2026
ab725f5
Harden savegame, macOS, and audio reliability for v0.6.5
themuffinator Jul 7, 2026
22c7c52
Align OpenAL channel logic with retail behavior
themuffinator Jul 7, 2026
7f90990
Fix macOS package preflight module paths
themuffinator Jul 8, 2026
c1e2938
Update air defense GUI assets
themuffinator Jul 8, 2026
94cc910
Fix splash stability and objective popup clipping
themuffinator Jul 8, 2026
fc65d3f
Fix menu backgrounds and sound emitter lifecycle
themuffinator Jul 8, 2026
c6817d5
Harden macOS runtime and release pipeline
themuffinator Jul 9, 2026
35546e6
Add engine header parity test for macOS libs
themuffinator Jul 9, 2026
122e6f0
Add production-grade shadow mapping assessment and plan
themuffinator Jul 9, 2026
bf7a280
Merge pull request #86 from themuffinator/docs/shadowmapping-producti…
themuffinator Jul 9, 2026
31c74cc
Shadow mapping phase 0: salvage Phase A onto main with CI coverage
themuffinator Jul 9, 2026
d1c430d
Shadow mapping phase 1: bias contract correctness
themuffinator Jul 9, 2026
c31d1df
Shadow mapping phase 2a: parallel-light ortho path and deterministic LOD
themuffinator Jul 9, 2026
4af1818
Shadow mapping phase 2b: coverage parity for casters, receivers, and …
themuffinator Jul 9, 2026
cf8cb5b
Shadow mapping phase 3: temporal stability, filtering polish, regress…
themuffinator Jul 9, 2026
4365b04
Shadow mapping phase 4a: scene scalability and a bit-exact regression…
themuffinator Jul 9, 2026
71766eb
Shadow mapping phase 4b: point lights become the default mapped path
themuffinator Jul 9, 2026
439aa62
Shadow mapping phase 4c: graceful budget degradation and subview tele…
themuffinator Jul 9, 2026
50bf1f9
Shadow mapping phase 5a: persistent projected-light shadow atlas
themuffinator Jul 9, 2026
1fb5f9b
Shadow mapping phase 5b: layered static/dynamic composition for proje…
themuffinator Jul 9, 2026
688a099
Shadow mapping phase 5c: modern path consumes the real persistent atlas
themuffinator Jul 9, 2026
f3198bb
Shadow mapping phases 5d/6: subview policy, importance budget, transl…
themuffinator Jul 10, 2026
fbeff71
Harden renderer and savegame systems
themuffinator Jul 10, 2026
b2fc692
Update savegame bounds validation contract
themuffinator Jul 10, 2026
1491135
Wire macOS shadow policy into validation
themuffinator Jul 10, 2026
975e296
Fix macOS SDL audio link and ARM64 self-tests
themuffinator Jul 10, 2026
a635c62
Another Linux/Wayland enhanced support round
themuffinator Jul 14, 2026
96c8bf9
Big macOS enhancement compatibility round, removed airdefense1 lightgrid
themuffinator Jul 15, 2026
9adb69a
Caching and asset handling optimizations for faster level loads
themuffinator Jul 16, 2026
3a81775
Fix Linux ARM64 dedicated cross build
themuffinator Jul 16, 2026
50d4f7f
Avoid spurious GameLibs Meson reconfigure
themuffinator Jul 16, 2026
4706cd3
Fix stale post-pass threshold in modern compatibility self-test
themuffinator Jul 16, 2026
8bcdcdb
Vulkan renderer track Phase A: module ABI, r_renderApi selection, ren…
themuffinator Jul 16, 2026
73bccf7
Vulkan renderer Phase B1: engine call sites onto the public renderer …
themuffinator Jul 16, 2026
a07c9ec
Vulkan renderer Phase B2-prep/B3: image-utility header, material-decl…
themuffinator Jul 16, 2026
a4b3602
Add Vulkan renderer Phase B staging plan from the coupling audit
themuffinator Jul 16, 2026
0412889
Vulkan renderer Phase B2: carve the shared imagetools static library
themuffinator Jul 16, 2026
79df21e
Vulkan renderer Phase B3: bakeLightGrids world internals behind the r…
themuffinator Jul 16, 2026
24f84ae
Vulkan renderer Phase B4: complete the module import/export surface (…
themuffinator Jul 16, 2026
9dbdaa5
Vulkan renderer Phase B6a: retire the dmap -draw GL visualization
themuffinator Jul 16, 2026
4fbab26
Vulkan renderer Phase B6: carve the shared render-geometry library
themuffinator Jul 16, 2026
7f07617
Vulkan renderer Phase B5a: engine-owned window state split from glConfig
themuffinator Jul 16, 2026
0b87ec5
Record the implementation-ready B5b blueprint in the Phase B staging …
themuffinator Jul 17, 2026
67083c0
Vulkan renderer Phase B5b: SDL3 context half behind the window-servic…
themuffinator Jul 17, 2026
759c46d
Vulkan renderer Phase B8.1a: sever GL typedefs from renderer headers
themuffinator Jul 17, 2026
fbe2615
Vulkan renderer Phase B finale F0: seam TU operates via context primi…
themuffinator Jul 17, 2026
db32a8a
Vulkan renderer Phase B8 F1+F2: renderer-gl module builds and renders
themuffinator Jul 17, 2026
0c9d76e
Vulkan renderer Phase B closure: capture gate, client shed, default f…
themuffinator Jul 17, 2026
33ee887
Vulkan renderer Phase C: clear + present — the real game loop runs on…
themuffinator Jul 18, 2026
01ad1f3
Vulkan renderer Phase D: images, vertex cache path, 2D/GUI parity — t…
themuffinator Jul 18, 2026
834bdaa
Vulkan renderer Phase E core: world geometry — depth prepass + ambien…
themuffinator Jul 19, 2026
a7e79d3
Vulkan renderer Phase E4b: cube texgen — skies render on Vulkan
themuffinator Jul 19, 2026
2fe4bd9
vk_shader_header_pin: compare EOL-insensitively
themuffinator Jul 19, 2026
88768c4
docs: Phase E plan updated to the landed record
themuffinator Jul 19, 2026
00943a1
docs: Phase F recon ground truth (interaction pass, light front-end, …
themuffinator Jul 19, 2026
ad4b865
docs: Phase F staging plan (F1 unshadowed interactions, F2 shadow map…
themuffinator Jul 19, 2026
1a13441
Vulkan renderer Phase F1: unshadowed interaction lighting — per-light…
themuffinator Jul 19, 2026
f156a97
Vulkan renderer Phase F1 review fixes: viewport baseline + split tri …
themuffinator Jul 19, 2026
1022b5d
docs: Phase G recon ground truth (stencil pass, fog/blend lights, lig…
themuffinator Jul 20, 2026
d94750f
Vulkan renderer Phase F2a: projected-light shadow maps — atlas, caste…
themuffinator Jul 19, 2026
45aa208
Vulkan renderer Phase F2b: point-light cube shadow maps — the dominan…
themuffinator Jul 20, 2026
6e94da9
Vulkan renderer Phase F2 review fix: translucent receivers keep the s…
themuffinator Jul 20, 2026
ec7a9eb
docs: Phase F plan updated to the landed F1+F2 record; F3 folded into…
themuffinator Jul 20, 2026
debfb54
docs: Phase G staging plan (G1 stencil volumes, G2 fog/blend, G3 ligh…
themuffinator Jul 20, 2026
3539d80
docs: Phase H recon ground truth (captures + post surfaces, post chai…
themuffinator Jul 20, 2026
c98888b
Vulkan renderer Phase G1: stencil shadow volumes — retail-default sha…
themuffinator Jul 20, 2026
b471b4b
Vulkan renderer Phase G2: fog and blend lights on Vulkan
themuffinator Jul 20, 2026
8eadaa2
Vulkan renderer Phase G F3+G3: shadow-map resource honesty + light-gr…
themuffinator Jul 22, 2026
ebcb0cc
docs: Phase H staging plan (H1 render-texture infra + captures + read…
themuffinator Jul 22, 2026
a7eb9cd
framework: fix NULL renderSystem crash in early-startup FatalError on…
themuffinator Jul 23, 2026
5e0ddea
docs: document the Vulkan renderer as experimental / opt-in
themuffinator Jul 23, 2026
7af84f4
Vulkan fixes (md5/md5r, interactions, lighting, materials, etc.)
themuffinator Jul 24, 2026
69b05a9
Fix Vulkan screenshot capture and prepare 0.9.0
themuffinator Jul 24, 2026
11fd888
Fix macOS release splash staging
themuffinator Jul 24, 2026
b0c1b83
Fix Linux renderer release packaging
themuffinator Jul 24, 2026
4ce6e84
Stabilize macOS release smoke validation
themuffinator Jul 24, 2026
7a1d0c5
Harden macOS release smoke validation
themuffinator Jul 24, 2026
ffc96c7
Add MoltenVK-backed Vulkan renderer for macOS
themuffinator Jul 25, 2026
3f6d35c
Fix six non-macOS bug reports
themuffinator Jul 26, 2026
f5ee7dc
Merge pull request #93 from themuffinator/fix/non-macos-bug-sweep
themuffinator Jul 26, 2026
425761a
Add Quake Live MP gametypes and HUD support
themuffinator Jul 28, 2026
918236c
Fix rotated skyboxes from doubly-converted retail progimg cube faces
themuffinator Jul 28, 2026
089331a
Restore the generated image cache to fix long level loads
themuffinator Jul 28, 2026
2709cf5
Stop arm64 hosts classifying as the lowest machine-quality tier
themuffinator Jul 28, 2026
d8a2051
Make the command-completion varargs AAPCS64-safe
themuffinator Jul 28, 2026
aa477f2
Make idStr hashing and comparison independent of char signedness
themuffinator Jul 28, 2026
30ee5e1
Serialize the win32 thread registries against their readers
themuffinator Jul 28, 2026
51253cf
Make testSIMD honest and measurable outside Windows and macOS
themuffinator Jul 28, 2026
0d96080
Cover Windows packages and renderer modules in release validation
themuffinator Jul 28, 2026
d495e61
Do not promote memory-bound arm64 boards out of the downsizing tier
themuffinator Jul 28, 2026
8632851
Land TTF fonts, cel shading, console themes and MP work
themuffinator Jul 29, 2026
2038e63
Restore the 8-bit idlib tables lost to a UTF-8 re-encode
themuffinator Jul 29, 2026
3a08e76
Get Push Verification green again after the renderer-module split
themuffinator Jul 29, 2026
d41186e
Bots tweaks and chat, MVD, advanced demo viewer, demo menu
themuffinator Jul 31, 2026
4007a98
chore: sync pre-rebase game-library fixes
themuffinator Aug 1, 2026
034756e
chore: preserve pre-rebase openPREY rebrand work
themuffinator Aug 1, 2026
19a3ed4
wip: preserve superseded light-grid and HDR renderer work
themuffinator Aug 1, 2026
e87a0d9
chore: make basepr the sole game namespace
themuffinator Aug 1, 2026
3df7b45
chore: purge generated install tree from version control
themuffinator Aug 1, 2026
85f9ee1
chore: record pre-rebase openPREY ancestry
themuffinator Aug 1, 2026
3c8504d
chore: ignore local analysis artifacts
themuffinator Aug 1, 2026
b9ab112
Complete openPREY rebase onto OpenQ4
themuffinator Aug 1, 2026
cbff94d
Prey bot characters, Ogg Vorbis, rebase hardening
themuffinator Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
529 changes: 529 additions & 0 deletions .codex/environments/openq4.toml

Large diffs are not rendered by default.

144 changes: 144 additions & 0 deletions .codex/scripts/run-vscode-entry.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
param(
[Parameter(Mandatory = $true, Position = 0)]
[ValidateSet('task', 'launch')]
[string]$Kind,

[Parameter(Mandatory = $true, Position = 1)]
[int]$Index
)

$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest

$workspaceRoot = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..'))
$tasksPath = Join-Path $workspaceRoot '.vscode\tasks.json'
$launchPath = Join-Path $workspaceRoot '.vscode\launch.json'

function Resolve-WorkspaceToken([string]$Value) {
if ($null -eq $Value) {
return $null
}

return $Value.Replace('${workspaceFolder}', $workspaceRoot)
}

function Get-JsonFile([string]$Path) {
if (-not (Test-Path -LiteralPath $Path)) {
throw "Required VS Code configuration file not found: $Path"
}

return Get-Content -LiteralPath $Path -Raw | ConvertFrom-Json
}

function Invoke-ConfiguredCommand(
[string]$Label,
[string]$Command,
[object[]]$Arguments,
[string]$WorkingDirectory
) {
if ([string]::IsNullOrWhiteSpace($Command)) {
return
}

$resolvedCommand = Resolve-WorkspaceToken $Command
$resolvedArgs = @()
$argumentList = @()

if ($null -ne $Arguments) {
$argumentList = @($Arguments)
}

foreach ($argument in $argumentList) {
if ($null -eq $argument) {
continue
}

$resolvedArgs += Resolve-WorkspaceToken ([string]$argument)
}

$resolvedWorkingDirectory = Resolve-WorkspaceToken $WorkingDirectory
if ([string]::IsNullOrWhiteSpace($resolvedWorkingDirectory)) {
$resolvedWorkingDirectory = $workspaceRoot
}

Write-Host "Running $Label"
Push-Location -LiteralPath $resolvedWorkingDirectory
try {
& $resolvedCommand @resolvedArgs
if ($LASTEXITCODE -ne $null) {
exit $LASTEXITCODE
}

if (-not $?) {
exit 1
}
}
finally {
Pop-Location
}
}

$taskConfig = Get-JsonFile $tasksPath
$taskIndexByLabel = @{}
for ($i = 0; $i -lt $taskConfig.tasks.Count; $i++) {
$taskIndexByLabel[$taskConfig.tasks[$i].label] = $i
}

$visitedTasks = New-Object System.Collections.Generic.HashSet[int]

function Invoke-TaskByIndex([int]$TaskIndex) {
if ($TaskIndex -lt 0 -or $TaskIndex -ge $taskConfig.tasks.Count) {
throw "Task index $TaskIndex is out of range."
}

if ($visitedTasks.Contains($TaskIndex)) {
return
}

[void]$visitedTasks.Add($TaskIndex)
$task = $taskConfig.tasks[$TaskIndex]
$dependencies = @()

if ($null -ne $task.dependsOn) {
$dependencies = @($task.dependsOn)
}

foreach ($dependency in $dependencies) {
if (-not $taskIndexByLabel.ContainsKey($dependency)) {
throw "Task '$($task.label)' depends on unknown task '$dependency'."
}

Invoke-TaskByIndex ([int]$taskIndexByLabel[$dependency])
}

Invoke-ConfiguredCommand -Label $task.label -Command $task.command -Arguments $task.args -WorkingDirectory $task.options.cwd
}

function Invoke-LaunchByIndex([int]$LaunchIndex) {
$launchConfig = Get-JsonFile $launchPath

if ($LaunchIndex -lt 0 -or $LaunchIndex -ge $launchConfig.configurations.Count) {
throw "Launch index $LaunchIndex is out of range."
}

$launch = $launchConfig.configurations[$LaunchIndex]

if (-not [string]::IsNullOrWhiteSpace($launch.preLaunchTask)) {
if (-not $taskIndexByLabel.ContainsKey($launch.preLaunchTask)) {
throw "Launch '$($launch.name)' references unknown preLaunchTask '$($launch.preLaunchTask)'."
}

Invoke-TaskByIndex ([int]$taskIndexByLabel[$launch.preLaunchTask])
}

Invoke-ConfiguredCommand -Label $launch.name -Command $launch.program -Arguments $launch.args -WorkingDirectory $launch.cwd
}

switch ($Kind) {
'task' {
Invoke-TaskByIndex $Index
}
'launch' {
Invoke-LaunchByIndex $Index
}
}
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
# Auto detect text files and perform LF normalization
*.sh text eol=lf
* text=auto

# Preserve byte-stable legacy and generated idTech content. These authoring formats
# commonly emit trailing spaces and mixed indentation as part of their source data.
content/basepr/pak0/** -whitespace
content/basepr/dev/maps/** -whitespace
141 changes: 141 additions & 0 deletions .github/ISSUE_TEMPLATE/linux-arm64-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
name: Linux ARM64 hardware report
description: Report a Linux aarch64 result — a bug, or a successful run that can feed the ARM64 signoff evidence record.
title: "[Linux ARM64]: "
labels:
- linux
- arm64
- preview-support
body:
- type: markdown
attributes:
value: |
Linux ARM64 is currently a **preview** support tier. Hosted CI proves that the build, package, and
assetless startup paths work on native aarch64 runners, but real-hardware gameplay, audio, input,
dedicated-server, and display evidence is still required before the tier can move to first-class.

Both kinds of report are useful here:

- **A defect** — something is wrong on aarch64 that is not wrong on x64.
- **A clean run** — you played, it worked. That is evidence, and it is what the tier gate is waiting on.

Please paste terminal output and `openprey.log` as text rather than screenshots.
- type: input
id: version
attributes:
label: openPREY version
description: The version string printed at startup, or the release tag you downloaded.
placeholder: "0.0.1"
validations:
required: true
- type: input
id: artifact
attributes:
label: Package artifact name
description: Paste the exact downloaded file name, or say "built from source" and give the commit SHA.
placeholder: "openprey-0.0.1-linux-arm64-preview.tar.xz"
validations:
required: true
- type: dropdown
id: report_kind
attributes:
label: What kind of report is this?
options:
- Defect — something is broken
- Clean run — reporting a working session as evidence
- Performance observation
validations:
required: true
- type: input
id: hardware
attributes:
label: CPU / board
description: Exact part if you know it. `lscpu` output is ideal.
placeholder: "Ampere Altra Q80-30 / Raspberry Pi 5 / Snapdragon X Elite under Linux"
validations:
required: true
- type: dropdown
id: physical
attributes:
label: Is this physical hardware?
description: >-
Emulated and virtualized runs are still useful, but only physical aarch64 hardware counts toward the
first-class signoff evidence record.
options:
- Physical aarch64 hardware
- Virtual machine on an aarch64 host
- Emulated (qemu-user, qemu-system, Rosetta, box64, FEX)
- Not sure
validations:
required: true
- type: input
id: distro
attributes:
label: Distribution and kernel
placeholder: "Ubuntu 24.04.1, kernel 6.8.0-45-generic aarch64"
validations:
required: true
- type: dropdown
id: session
attributes:
label: Display session
options:
- Native Wayland
- XWayland
- X11
- Headless / dedicated server only
- Not sure
validations:
required: true
- type: input
id: gpu
attributes:
label: GPU and driver
placeholder: "Mali-G610 / panfrost 24.2, or AMD RX 6600 / mesa 24.2 radeonsi"
validations:
required: true
- type: textarea
id: what_happened
attributes:
label: What happened
description: >-
For a defect, describe the symptom and how to reproduce it. For a clean run, say what you did —
which maps, single player or multiplayer, how long, and whether audio and input behaved.
validations:
required: true
- type: textarea
id: x64_comparison
attributes:
label: Does the same thing happen on x64?
description: >-
This is the single most valuable field for an architecture report. If you can run the same version
on an x86-64 machine, say whether the behavior differs. "Not tested" is a fine answer.
placeholder: "Not tested / same on x64 / x64 is fine, only aarch64 shows this"
validations:
required: false
- type: textarea
id: logs
attributes:
label: Terminal output and openprey.log
description: Paste as text. Include the startup banner — it carries the version, architecture, and CPU line.
render: text
validations:
required: true
- type: input
id: machine_spec
attributes:
label: Reported machine quality tier
description: >-
Run `com_machineSpec` in the console and paste the value. aarch64 hosts report no CPU frequency, so
this is a known problem area and the value is worth capturing.
placeholder: "com_machineSpec = 2"
validations:
required: false
- type: checkboxes
id: evidence_consent
attributes:
label: Evidence record
options:
- label: >-
This is a physical-hardware run and I am willing to have it referenced in
docs/dev/linux-arm64-signoff-evidence.md.
required: false
Loading