Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
477dc97
Bump actions/upload-artifact from 6 to 7
dependabot[bot] Mar 2, 2026
9650b11
Bump github/codeql-action from 4.32.3 to 4.32.4
dependabot[bot] Mar 2, 2026
21e5a02
[BUG] SCRIPT ERROR: Parse Error: Could not resolve external class mem…
ikostan Mar 3, 2026
6ce492a
Merge pull request #449 from ikostan/dependabot/github_actions/action…
ikostan Mar 3, 2026
8306897
Merge pull request #450 from ikostan/dependabot/github_actions/github…
ikostan Mar 3, 2026
f990af2
Update settings.gd
ikostan Mar 3, 2026
b238b07
Merge branch 'parse-error-could-not-resolve-external-class-member-set…
ikostan Mar 3, 2026
0deb225
Update globals.gd
ikostan Mar 3, 2026
4b977b9
Update input_remap_button.gd
ikostan Mar 3, 2026
67ea986
Update settings.gd
ikostan Mar 3, 2026
25c9a0e
issue (bug_risk): Guard for Globals/Globals.settings still calls Glob…
ikostan Mar 3, 2026
ecef73b
Version comment is incorrect and creates inconsistency across workflows.
ikostan Mar 3, 2026
1328cd9
Update scripts/globals.gd
ikostan Mar 3, 2026
71e7fd8
Merge branch 'parse-error-could-not-resolve-external-class-member-set…
ikostan Mar 3, 2026
03a1dd6
Update game_settings_resource.gd
ikostan Mar 3, 2026
b136e3c
Update test_globals.gd
ikostan Mar 3, 2026
5d002c6
Update scripts/input_remap_button.gd
ikostan Mar 3, 2026
1266ea2
Update input_remap_button.gd
ikostan Mar 3, 2026
33c348b
suggestion: Exported settings is always overwritten in _ready, which …
ikostan Mar 4, 2026
cdbfbaf
Create no_error_logs_test.py
ikostan Mar 4, 2026
1124a5c
style: format code with Black and isort
deepsource-autofix[bot] Mar 4, 2026
92fa42f
Create validate_clean_load_test.py
ikostan Mar 4, 2026
dea4852
Merge branch 'parse-error-could-not-resolve-external-class-member-set…
ikostan Mar 4, 2026
3eea81e
style: format code with Black and isort
deepsource-autofix[bot] Mar 4, 2026
86d79c6
Unused import json
ikostan Mar 4, 2026
42616f5
Apply Ruff RUF010 explicit f-string conversion.
ikostan Mar 4, 2026
4660c53
Use explicit UTF-8 when writing artifacts and coverage files.
ikostan Mar 4, 2026
a627706
Use f-string conversion flag instead of str()
ikostan Mar 4, 2026
5815b49
style: format code with Black and isort
deepsource-autofix[bot] Mar 4, 2026
2fe5314
question (bug_risk): Guarding modifiers behind physical_keycode != 0 …
ikostan Mar 4, 2026
8f0136a
Remove redundant commented debug prints in tests
ikostan Mar 4, 2026
0d02fc2
suggestion (testing): Also capture pageerror events to catch uncaught…
ikostan Mar 4, 2026
e0f590f
style: format code with Black and isort
deepsource-autofix[bot] Mar 4, 2026
8aa0bbc
suggestion (testing): Consider making the timeouts less brittle or co…
ikostan Mar 4, 2026
57ced50
Merge branch 'parse-error-could-not-resolve-external-class-member-set…
ikostan Mar 4, 2026
b483a2d
style: format code with Black and isort
deepsource-autofix[bot] Mar 4, 2026
eff433f
question (testing): Clarify whether matching critical error patterns …
ikostan Mar 4, 2026
98e6d12
style: format code with Black and isort
deepsource-autofix[bot] Mar 4, 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
6 changes: 3 additions & 3 deletions .github/workflows/browser_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@
id: "export"
uses: "firebelley/godot-export@930577654862a320eef793f399ee911b4479efb9"
with:
godot_executable_download_url: "https://github.com/godotengine/godot/releases/download/4.5-stable/Godot_v4.5-stable_linux.x86_64.zip"

Check warning on line 33 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

33:91 [line-length] line too long (143 > 90 characters)
godot_export_templates_download_url: "https://github.com/godotengine/godot/releases/download/4.5-stable/Godot_v4.5-stable_export_templates.tpz"

Check warning on line 34 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

34:91 [line-length] line too long (153 > 90 characters)
relative_project_path: "./"
relative_export_path: "./export/web_thread_off"
archive_output: false
cache: false
verbose: true
presets_to_export: "Web_thread_off"
use_preset_export_path: true # Move exports to the directory defined in export_presets.cfg

Check warning on line 41 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

41:91 [line-length] line too long (101 > 90 characters)
- name: "Flatten Export Directory"
run: |
bash ./.github/scripts/flatten_export.sh "export/web_thread_off" "Web_thread_off"

Check warning on line 44 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

44:91 [line-length] line too long (91 > 90 characters)
- name: "List Export Directory Contents"
run: |
ls -la export/web_thread_off
Expand All @@ -54,11 +54,11 @@
python-version: "3.12"
- name: "Cache PIP Dependencies"
uses: "actions/cache@v5"
id: cache

Check warning on line 57 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

57:13 [quoted-strings] string value is not quoted with double quotes
with:
path: "~/.cache/pip"
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}

Check warning on line 60 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

60:16 [quoted-strings] string value is not quoted with double quotes
restore-keys: ${{ runner.os }}-pip-

Check warning on line 61 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

61:25 [quoted-strings] string value is not quoted with double quotes
- name: "Install Playwright"
run: |
sudo apt-get update && sudo apt-get install -y libxml2-utils
Expand All @@ -66,8 +66,8 @@
- name: "Cache Playwright Browsers"
uses: "actions/cache@v5"
with:
path: ~/.cache/ms-playwright

Check warning on line 69 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

69:17 [quoted-strings] string value is not quoted with double quotes
key: ${{ runner.os }}-playwright-${{ hashFiles('**/requirements.txt') }} # Or your dependency file

Check warning on line 70 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

70:91 [line-length] line too long (109 > 90 characters)

Check warning on line 70 in .github/workflows/browser_test.yml

View workflow job for this annotation

GitHub Actions / YAML Lint / build (3.x)

70:16 [quoted-strings] string value is not quoted with double quotes
restore-keys: ${{ runner.os }}-playwright-

- name: "Install Playwright Browsers"
Expand Down Expand Up @@ -150,7 +150,7 @@

- name: "Upload LCOV Artifact"
if: always()
uses: "actions/upload-artifact@v6"
uses: "actions/upload-artifact@v7"
with:
name: lcov-report
path: "./coverage/lcov/lcov.info"
Expand All @@ -176,14 +176,14 @@

- name: "Upload Test Report Artifact"
if: always()
uses: "actions/upload-artifact@v6"
uses: "actions/upload-artifact@v7"
with:
name: test-report
path: junit.xml

- name: "Upload Screenshot and Coverage Artifacts"
if: always()
uses: "actions/upload-artifact@v6"
uses: "actions/upload-artifact@v7"
with:
name: test-screenshots
path: |
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
run: |
bash ./.github/scripts/patch_index_js.sh "export/web"
- name: "Initialize CodeQL"
uses: "github/codeql-action/[email protected].3"
uses: "github/codeql-action/[email protected].4"
with:
# yamllint disable rule:quoted-strings
languages: ${{ matrix.language }}
Expand All @@ -74,10 +74,10 @@ jobs:
debug: "false"

- name: "Autobuild (optional for JS but included for completeness)"
uses: "github/codeql-action/[email protected].3"
uses: "github/codeql-action/[email protected].4"

- name: "Perform CodeQL Analysis"
uses: "github/codeql-action/[email protected].3"
uses: "github/codeql-action/[email protected].4"

- name: "Post-scan summary (optional)"
if: "always()" # Run even if previous steps fail
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gdunit4_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
ls -la ${{ steps.find_report.outputs.latest_report }}/
- name: "Upload Test Reports Artifacts"
if: always()
uses: "actions/upload-artifact@v6"
uses: "actions/upload-artifact@v7"
with:
name: gdunit-reports
path: reports/**
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gut_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
ls -la ${{ steps.find_report.outputs.latest_report }}/
- name: "Upload Test Reports Artifacts"
if: always()
uses: "actions/upload-artifact@v6"
uses: "actions/upload-artifact@v7"
with:
name: gut-reports
path: gut-reports/**
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/snyk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
continue-on-error: true

- name: "Upload Snyk Code SARIF to GitHub"
uses: "github/codeql-action/upload-sarif@ef618feace3c4838ae42b239ab86e8fb46437508"
uses: "github/codeql-action/upload-sarif@0ec47d036c68ae0cf94c629009b1029407111281"
if: "always() && hashFiles('snyk-code.sarif') != ''"
with:
sarif_file: "snyk-code.sarif"
Expand All @@ -54,7 +54,7 @@ jobs:
continue-on-error: true

- name: "Upload Snyk Open Source SARIF to GitHub"
uses: "github/codeql-action/upload-sarif@ef618feace3c4838ae42b239ab86e8fb46437508"
uses: "github/codeql-action/upload-sarif@0ec47d036c68ae0cf94c629009b1029407111281"
if: "always() && hashFiles('snyk-os.sarif') != ''"
with:
sarif_file: "snyk-os.sarif"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/trivy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
ignore-unfixed: true # Ignore vulns without fixes available

- name: "Upload Trivy scan results to GitHub Security tab"
uses: "github/codeql-action/upload-sarif@ef618feace3c4838ae42b239ab86e8fb46437508" # Pinned to SHA for v4.32.2
uses: "github/codeql-action/upload-sarif@0ec47d036c68ae0cf94c629009b1029407111281" # Pinned to SHA for v4.32.2
if: always() # Upload even if scan fails
with:
sarif_file: 'trivy-results.sarif'
File renamed without changes.
6 changes: 2 additions & 4 deletions scripts/game_settings_resource.gd
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,8 @@ extends Resource
@export var difficulty: float = 1.0:
set(value):
if value < 0.5 or value > 2.0:
Globals.log_message(
"Invalid difficulty loaded (" + str(value) + ") - clamping to valid range.",
Globals.LogLevel.WARNING
)
# BREAK THE CYCLE: Use push_warning instead of Globals.log_message
push_warning("Invalid difficulty loaded (" + str(value) + ") - clamping.")
_difficulty = clamp(value, 0.5, 2.0)
get:
return _difficulty
Expand Down
10 changes: 8 additions & 2 deletions scripts/globals.gd
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ enum LogLevel { DEBUG, INFO, WARNING, ERROR, NONE = 4 }
# @export var difficulty: float = 1.0 # Multiplier: 1.0=Normal, <1=Easy, >1=Hard

# Add the resource reference here
@export var settings: GameSettingsResource = preload("res://settings/default_settings.tres")

@export var settings: GameSettingsResource
# In globals.gd (add after @export vars)
var options_instance: CanvasLayer = null
# var hidden_menu: Node = null
Expand All @@ -37,6 +36,13 @@ var current_input_device: String = "keyboard" # "keyboard" or "gamepad"


func _ready() -> void:
# Load the resource here instead of preloading at the top
settings = load("res://config_resources/default_settings.tres")
if not settings:
# Use push_error since Globals logging might not be ready
push_error("CRITICAL: 'GameSettingsResource' failed to load at path.")
return

if Engine.is_editor_hint() or settings.enable_debug_logging:
settings.current_log_level = LogLevel.DEBUG
log_message("Log level set to: " + LogLevel.keys()[settings.current_log_level], LogLevel.DEBUG)
Expand Down
17 changes: 12 additions & 5 deletions scripts/input_remap_button.gd
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,19 @@ func _ready() -> void:
func _on_pressed() -> void:
listening = button_pressed
if listening:
# Safely check if Globals and settings are ready
if is_instance_valid(Globals) and Globals.settings:
# FIXED: Check the actual current_device to return the correct prompt
text = (
Globals.settings.remap_prompt_keyboard
if current_device == DeviceType.KEYBOARD
else Globals.settings.remap_prompt_gamepad
)
text = (
Globals.settings.remap_prompt_keyboard
if current_device == DeviceType.KEYBOARD
else Globals.settings.remap_prompt_gamepad
)
else:
Globals.log_message(
"'Globals.settings' resource is NULL'",
Globals.LogLevel.ERROR
)
else:
update_button_text()

Expand Down
1 change: 1 addition & 0 deletions scripts/key_mapping.gd
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ func _on_reset_pressed() -> void:
# Function resets only the selected device type (keyboard or gamepad)
var device_type: String = "keyboard" if keyboard.button_pressed else "gamepad"
Settings.reset_to_defaults(device_type)
# You must update the UI buttons so they show the new defaults!
update_all_remap_buttons()
Globals.log_message("Resetting " + device_type + " controls.", Globals.LogLevel.DEBUG)
# NEW: Clear critical warning flag when player fixes unbound (once-per-session)
Expand Down
8 changes: 7 additions & 1 deletion scripts/settings.gd
Original file line number Diff line number Diff line change
Expand Up @@ -386,10 +386,16 @@ func deserialize_event(serialized: String) -> InputEvent:

match parts[0]:
"key":
if parts[1].is_valid_int():
if parts.size() >= 2 and parts[1].is_valid_int():
# if parts[1].is_valid_int():
var ev := InputEventKey.new()
# You saved as physical_keycode, so you MUST load as physical_keycode
ev.physical_keycode = parts[1].to_int()
if ev.physical_keycode == 0:
return
# print("DEBUG: Deserializing '", serialized, "' -> keycode: ", ev.physical_keycode)
# Logic for combinations (Shift + Tab etc)
# Modifiers must be checked explicitly in the 'parts' array
if "shift" in parts:
ev.shift_pressed = true
if "ctrl" in parts:
Expand Down
Loading