Check Godot mobile UI metadata for touch targets, safe areas, and text overflow risk.
Project description
Godot Mobile UI Doctor
godot-mobile-ui-doctor checks exported Godot UI metadata for common mobile
layout risks: small touch targets, cramped controls, safe-area overlap,
off-screen nodes, duplicate ids, and text that is likely to overflow its
rectangle.
The first version reads JSON metadata, so it can run in CI without opening the Godot editor. Projects can generate the metadata from their own debug tools, test harnesses, editor scripts, or screenshot pipelines.
Install
python -m pip install godot-mobile-ui-doctor
From a source checkout:
python -m pip install -e .\godot-mobile-ui-doctor
Quick Start
godot-mobile-ui-doctor examples\tiny-mobile-ui-project\mobile-ui.json --format markdown
Fail CI when warnings are present:
godot-mobile-ui-doctor mobile-ui.json --fail-on warning --format json --output reports\mobile-ui.json
Build a screen-by-screen readiness matrix:
godot-mobile-ui-doctor matrix mobile-ui.json --format markdown --output reports\mobile-ui-matrix.md
Render PNG overlays for quick visual review:
godot-mobile-ui-doctor overlays mobile-ui.json --output-dir reports\mobile-ui-overlays --fail-on none
Combine the UI matrix with nearby mobile release reports:
godot-mobile-ui-doctor readiness mobile-ui.json --input-report reports\input-map.json --export-report reports\export.json --mobile-perf-report reports\mobile-perf.json --format markdown --output reports\mobile-readiness.md
Reuse viewport definitions from a visual smoke capture plan:
godot-visual-smoke plan visual-smoke.toml --project . --format json --output reports\visual-plan.json
godot-mobile-ui-doctor matrix mobile-ui.json --visual-smoke-plan reports\visual-plan.json --format markdown
godot-mobile-ui-doctor overlays mobile-ui.json --visual-smoke-plan reports\visual-plan.json --output-dir reports\mobile-ui-overlays
godot-mobile-ui-doctor readiness mobile-ui.json --visual-smoke-plan reports\visual-plan.json --visual-smoke-report reports\visual-plan.json --format markdown
Metadata Shape
{
"thresholds": {
"min_touch_size": 44,
"min_touch_spacing": 8
},
"viewports": [
{
"name": "portrait_phone",
"width": 720,
"height": 1280,
"safe_area": {"left": 0, "top": 48, "right": 0, "bottom": 24}
}
],
"screens": [
{
"name": "main_menu",
"viewport": "portrait_phone",
"nodes": [
{
"id": "play",
"kind": "button",
"x": 24,
"y": 96,
"width": 44,
"height": 44,
"text": "Play",
"interactive": true
}
]
}
]
}
Coordinates are expected to be viewport pixels after layout. The tool does not need scene files or a Godot binary for this first metadata-based check.
If the UI metadata omits viewports, pass --visual-smoke-plan with JSON from
godot-visual-smoke plan --format json. Viewports in mobile-ui.json override
matching visual-smoke viewport names, so project-specific layout exports can
still take precedence.
Checks
missing_viewport: a screen references a viewport that was not exported.duplicate_node_id: a screen repeats a node id.node_outside_viewport: a node rectangle leaves the viewport bounds.safe_area_overlap: an important node overlaps a safe-area inset.touch_target_too_small: an interactive node is smaller than the configured target size.touch_targets_too_close: interactive rectangles are too close together.text_overflow_risk: text is unlikely to fit in the exported rectangle.no_interactive_controls: a screen has no interactive controls in the metadata.
Outputs
text: readable terminal report.json: CI and scripts.markdown: PR comments, release notes, and report artifacts.png: optional overlay previews from theoverlayscommand.
Mobile Readiness Matrix
The matrix command groups findings by screen and viewport. It is useful when a
project has several phone and tablet captures and you want a quick table showing
which screens are clean, which need review, and which need action.
The matrix includes safe-area, touch-target, spacing, text-fit, and viewport bounds status for each screen.
Overlay Previews
The overlays command writes one PNG per screen and viewport. It draws the
safe-area rectangle, exported control bounds, interactive touch targets, and any
rule ids attached to a control. The output is useful for PR artifacts because a
reviewer can see the risky rectangles without opening the Godot project.
godot-mobile-ui-doctor overlays mobile-ui.json --output-dir reports\mobile-ui-overlays --scale 0.5 --fail-on none
Combined Readiness
The readiness command builds on the screen matrix and can include JSON reports
from related toolkit checks:
--input-reportfromgodot-input-audit--export-reportfromgodot-export-doctor--localization-reportfromgodot-l10n-guard--mobile-perf-reportfromgodot-mobile-perf-doctor--visual-smoke-reportfromgodot-visual-smoke
This gives a compact mobile release review: portrait UI risks, touch/input coverage, export settings, localization expansion risk, static mobile performance warnings, and screenshot-plan status in one report.
How To Export Metadata
The tool deliberately keeps the input format simple. A project-specific exporter
can walk visible Control nodes after layout and write each node's id, class,
global rectangle, visible text, font size, and whether it is interactive.
Good ids are stable names such as cargo_buy_button or settings_back, not
generated scene-instance paths. Stable ids make reports easier to compare across
runs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file godot_mobile_ui_doctor-0.1.4.tar.gz.
File metadata
- Download URL: godot_mobile_ui_doctor-0.1.4.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d7767d7431d0c4e1f4e7b6471b7887d2e4f0aab0e299346819d386752c0a571
|
|
| MD5 |
dc00c3bfcbd255fa23c7a807116df5e1
|
|
| BLAKE2b-256 |
773800c235e27657d6987dd1326df18c0516302e88aee50678effeefdee72de2
|
Provenance
The following attestation bundles were made for godot_mobile_ui_doctor-0.1.4.tar.gz:
Publisher:
publish-mobile-ui-doctor.yml on NonniGB/godot-production-toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
godot_mobile_ui_doctor-0.1.4.tar.gz -
Subject digest:
1d7767d7431d0c4e1f4e7b6471b7887d2e4f0aab0e299346819d386752c0a571 - Sigstore transparency entry: 1787736051
- Sigstore integration time:
-
Permalink:
NonniGB/godot-production-toolkit@53fabbb609df59a7c133826465fe31c7889211bf -
Branch / Tag:
refs/tags/godot-mobile-ui-doctor-v0.1.4 - Owner: https://github.com/NonniGB
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-mobile-ui-doctor.yml@53fabbb609df59a7c133826465fe31c7889211bf -
Trigger Event:
push
-
Statement type:
File details
Details for the file godot_mobile_ui_doctor-0.1.4-py3-none-any.whl.
File metadata
- Download URL: godot_mobile_ui_doctor-0.1.4-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e14bd43610a419e0df3f4b8520959dee06810fa535b0d575fcaa8e6b25616be
|
|
| MD5 |
145426769bc25e96bdb3cc6facf4c970
|
|
| BLAKE2b-256 |
2a6f4a1432c6b627e869aabcaf2dc46f85c07fb9553d30014374c52eeadd1adc
|
Provenance
The following attestation bundles were made for godot_mobile_ui_doctor-0.1.4-py3-none-any.whl:
Publisher:
publish-mobile-ui-doctor.yml on NonniGB/godot-production-toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
godot_mobile_ui_doctor-0.1.4-py3-none-any.whl -
Subject digest:
6e14bd43610a419e0df3f4b8520959dee06810fa535b0d575fcaa8e6b25616be - Sigstore transparency entry: 1787736120
- Sigstore integration time:
-
Permalink:
NonniGB/godot-production-toolkit@53fabbb609df59a7c133826465fe31c7889211bf -
Branch / Tag:
refs/tags/godot-mobile-ui-doctor-v0.1.4 - Owner: https://github.com/NonniGB
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-mobile-ui-doctor.yml@53fabbb609df59a7c133826465fe31c7889211bf -
Trigger Event:
push
-
Statement type: