Skip to content

feat(astc): read upload capabilities from backend manifests - #428

Merged
apotema merged 2 commits into
developmentfrom
codex/407-texture-caps
Sep 27, 2026
Merged

apotema merged 2 commits into
developmentfrom
codex/407-texture-caps

Conversation

@apotema

@apotema apotema commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

ASTC upload limits now come from the pinned backend's backend.manifest.zon, keyed by the resolved target name. The CLI no longer contains backend names or backend-version checks in src/astc/. The command reports whether the default came from a manifest or the conservative 4x4-only fallback.

The reader validates block lists and defaults strictly, supports local and cached remote package pins, and distinguishes an older manifest from a missing package. Malformed declarations stop the build rather than allowing a stale ASTC sibling to be consumed. Existing explicit/per-atlas/default precedence and stale-sibling handling remain. An explicit backend override cannot borrow the previous backend's metadata.

The companion bgfx manifest (labelle-toolkit/labelle-bgfx#157) declares 4x4/8x8 with an 8x8 default and PNG fallback on web. The assembler's runtime PNG fallback generation is unchanged; consuming the same fallback field there remains assembler #378 scope. Older backend manifests use 4x4 until their pins are updated. The converter is removed from the agnosticism guard's migration allowlist.

Validation:

  • Zig 0.16.0 full CLI suite: 1,031 pass, 5 skip, zero failures.
  • Tests distinguish manifest vs fallback even when both select 4x4, select different targets/version pins, and reject malformed/unsupported/duplicate blocks or a missing package.
  • Real CLI comparison using four copied Flying Platform atlases: outputs are byte-identical to CLI v1.75.0 (characters/rooms/objects at 4x4, ship at 8x8). Switching the fixture from wasm to Android reuses all four outputs.
  • No backend names or backend-version checks remain under src/astc/.

Release the companion backend declaration before upgrading projects that require the 8x8 default. This PR targets development and does not modify provider implementation files. The guard change removes one now-clean allowlist entry, so it may need reconciling with #422.

Closes #407.

Additional integration check: assembler 0.113.2 generated all four web atlas registrations through pickCompressedTexture(ASTC, PNG) with this manifest. The existing web PNG fallback is preserved.

All six CI jobs pass: Linux/macOS/Windows build and tests, Docker build, versions integration, and progress-feed end-to-end tests. CodeRabbit skips this development base under the repository configuration; the companion bgfx PR completed both bot reviews without findings.

@coderabbitai

coderabbitai Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 4792b3ba-939d-48f4-bab0-6428374fc44c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-27T01:40:49.769974Z 850f111 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Resolve the pipeline.zig conflict by keeping development's split: the
ASTC prepass now lives in src/cli/pipeline/generate.zig, so the PR's
InvalidTextureCapabilities fatal exit and comment update move there.

Claude-Session: https://claude.ai/code/session_01R2K5sJDL5Msn1uRTkybiDP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant