Skip to content

Texture png batch convert#338

Open
oldrepublicwizard wants to merge 231 commits into
OpenKotOR:masterfrom
oldrepublicwizard:texture-png-batch-convert
Open

Texture png batch convert#338
oldrepublicwizard wants to merge 231 commits into
OpenKotOR:masterfrom
oldrepublicwizard:texture-png-batch-convert

Conversation

@oldrepublicwizard

Copy link
Copy Markdown
Contributor

Description

Add the ability to mass convert textures to various formats using the texture-convert subcommand of the PyKotor CLI. Uncertain if this already existed but now it's explicit. This feature was implemented upon request, please request your features on the Issues tab or create a discussion.

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📚 Documentation update
  • 🔧 Refactoring (no functional changes)
  • ⚡ Performance improvement
  • ✅ Test addition or update
  • 🔨 Build system or CI changes
  • 🎨 Code style changes (formatting, renaming, etc.)

Package(s) Affected

  • PyKotor (core library)
  • One or more tools under Tools/
  • Documentation
  • CI/CD
  • Other: ___________

Testing

  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have tested this manually
  • I have tested on multiple Python versions (3.8+)
  • I have tested on multiple operating systems (if applicable)

Test Results

Ran a bit of texture conversions for standard uncompressed RGBA pipelines and confirmed PNG is proper.

Paste test output or describe test results here

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Screenshots (if applicable)

Parse solution doc Last CI check run IDs and emit defer_lfg_pr when
monitoring checkpoint is unchanged (plan 059).
Covers solution-doc run ID extraction and defer_lfg_pr logic (plan 060).
Emit lfg_deferred in JSON and stderr hint when monitoring is unchanged (plan 061).
Wire --compare-checkpoint --exit-on-defer into solution doc and workflow header (plan 062).
Single flag replaces four monitoring args; tests and docs updated (plan 063).
Exit 2 when lfg_deferred so agents can stop before noop PRs (plan 064).
Compare verify head_sha to origin/master; defer only when runs active
and not stale. Parse last verify link in Last CI check. Cancelled
26365458400; dispatched 26372746392 on master (plans 065-066).
Fix undefined checkpoint in human ci-status output; add canonical
table fallback parser and --emit-checkpoint-snippet (plan 067).
Detect benign FC SHA lag when master-only commits are docs-only,
fall back to local master ref, use dynamic dates in checkpoint snippets,
and add --validate-checkpoint-doc for doc vs live gh drift.
Embed doc_validation in monitor-preflight JSON, detect status word drift
vs Last CI check, prefer conclusion in snippets, and add
--include-checkpoint-snippet for one-shot doc update hints.
Include created_at and queued_hours on gh runs, block defer when FC
docs-only classification fails, flag doc_update_recommended on terminal
runs, surface queue backlog notes, and embed checkpoint_snippet in
monitor-preflight by default.
Add --apply-checkpoint-snippet to preview or write solution doc Last CI
check, canonical runs table, and plan 020 line from live gh data with
safe gating unless --force or doc drift recommends update.
Patch plan 020 verification table rows and plans index on apply,
refresh solution doc last_verified frontmatter, and emit proceed_reason
when checkpoint gate is not deferring.
Add --auto-apply-on-proceed to embed doc_apply in preflight when CI
terminal proceed reasons allow, emit lfg_proceed in JSON, and refresh
doc_validation after auto-write.
Map refresh_verify_dispatch and refresh_fc_dispatch to dry-run or
executed gh workflow run/cancel steps in monitor preflight JSON.
Unify doc and dispatch dry-run previews and refresh monitoring docs
after successful workflow dispatch when gh reports new run IDs.
One-shot refresh flag with defer guardrails and gh run polling before
post-dispatch doc sync when run IDs are slow to appear.
Grant issues:write for large-file PR comments with a non-fatal fallback,
and replace 40-char hex test fixtures that triggered devskim alerts.
Preview refresh actions without write or dispatch, block classify_fc_stale_gap,
and embed lfg_refresh_plan in preflight JSON.
Combine monitor preflight with refresh dry-run, embed proceed_hint in JSON,
and avoid early exit when dry-run refresh is blocked.
oldrepublicwizard and others added 30 commits May 28, 2026 15:05
Group flat-field mirroring with briefing and queue _mirror_* helpers without behavior changes.
Group _mirror_preflight_watch_summary_from_status with flat-field mirror and builder helpers.
Record watch_heartbeat_polls on preflight watch summary and emit flat_keys_heartbeat_polls only when unchanged flat-key polls reach the interval.
Surface watch_heartbeat_polls on summary stderr when unchanged flat-key polls occurred during gate or preflight watch.
Share flat-field mirror stderr parts and emit heartbeat_every on unchanged gate-watch poll lines.
Align gate-watch summary one-liner with poll lines using heartbeat_every while keeping watch_heartbeat_polls in JSON.
Mirror watch heartbeat interval as heartbeat_every in preflight watch summary JSON and compact gated stderr to flat_hb.
Use flat_hb on heartbeat poll lines and mirror flat_keys heartbeat count as flat_hb in preflight watch summary JSON.
Compact preflight watch summary to flat_unchanged tokens while keeping unchanged_flat_keys_polls in JSON.
Replace boolean flat_unchanged=true with numeric flat_unchanged=1 on compact unchanged poll lines.
Record flat_unchanged streak and flat_hb markers on gate-watch poll history snapshots.
Expose peak flat-key unchanged streak in summary JSON and stderr when it falls below total unchanged polls.
Emit live unchanged streak counts on compact poll lines instead of a fixed flat_unchanged=1 token.
…199)

Emit cumulative flat_hb=N on gate-watch heartbeat polls, add flat_hb_total
summary JSON alias, and store cumulative counts in watch history snapshots.
Align preflight watch summary stderr with plan 199 JSON by emitting
flat_hb_total=N instead of flat_hb=N while poll lines keep flat_hb=N.
Record flat_hb_total alongside flat_hb on heartbeat poll history entries
to align snapshot keys with summary JSON and stderr aliases.
…lan 202)

Derive heartbeat totals from preflight_watch_history when the status
counter is unset via _max_preflight_flat_hb_total history helper.
…n 203)

Move unchanged-count and max-streak helpers adjacent to
_build_preflight_watch_summary for parity with plan 186-187 clustering.
… 204)

Co-locate unchanged and heartbeat flat-key poll tokens in
_preflight_watch_poll_flat_stderr_parts without changing stderr output.
…lan 205)

Pair plan 204 poll helper with _preflight_watch_summary_flat_stderr_parts
for unchanged and heartbeat tokens on watch summary stderr lines.
Derive preflight watch summary flat_unchanged from history peak streak
when pairwise unchanged flat-key poll count is zero, mirroring plan 202.
… 207)

Extract resolve helpers for heartbeat and unchanged flat-key totals so
_build_preflight_watch_summary reuses plan 202/206 fallback logic cleanly.
…208)

Place poll and summary flat stderr helpers together and reuse
_preflight_watch_heartbeat_interval for heartbeat_every summary tokens.
Add _preflight_max_flat_unchanged and use it when gating max_flat_unchanged
tokens in preflight watch summary flat stderr output.
… 210)

Add _preflight_max_flat_unchanged_for_stderr to centralize gated
max_flat_unchanged summary stderr tokens when peak is below total.
Add _preflight_flat_hb_total_for_stderr to centralize gated flat_hb_total
summary stderr tokens alongside the plan 210 max_flat_unchanged helper.
Add _preflight_heartbeat_every_for_stderr to emit heartbeat_every summary
tokens only when unchanged flat-key polls occurred.
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