rdc-cli 0.4.4__tar.gz → 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rdc_cli-0.5.0/.github/ISSUE_TEMPLATE/bug_report.yml +65 -0
- rdc_cli-0.5.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- rdc_cli-0.5.0/.github/ISSUE_TEMPLATE/feature_request.yml +37 -0
- rdc_cli-0.5.0/.github/PULL_REQUEST_TEMPLATE.md +17 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/PKG-INFO +3 -2
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/README.md +2 -1
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/data/commands.json +7 -1
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/examples.astro +37 -3
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/usage.astro +27 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/gen-commands.py +1 -1
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/_skills/SKILL.md +44 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/_skills/references/commands-quick-ref.md +14 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/cli.py +2 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/info.py +12 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/resources.py +106 -15
- rdc_cli-0.5.0/src/rdc/commands/unused_targets.py +43 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/daemon_server.py +2 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/query.py +56 -3
- rdc_cli-0.5.0/src/rdc/handlers/unused.py +40 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/services/query_service.py +364 -8
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc_cli.egg-info/PKG-INFO +3 -2
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc_cli.egg-info/SOURCES.txt +10 -0
- rdc_cli-0.5.0/tests/fixtures/gles-multipass-debug.apk +0 -0
- rdc_cli-0.5.0/tests/fixtures/gles_multipass_mali.rdc +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/mocks/mock_renderdoc.py +2 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_draws_events_daemon.py +170 -1
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_info_commands.py +63 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pass_deps.py +209 -3
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pipeline_shader.py +18 -4
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_query_service.py +490 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_resources_commands.py +158 -5
- rdc_cli-0.5.0/tests/unit/test_rt_switches.py +243 -0
- rdc_cli-0.5.0/tests/unit/test_unused_targets.py +371 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.commitlintrc.yml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.githooks/pre-commit +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.githooks/pre-push +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.github/CODEOWNERS +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.github/workflows/aur.yml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.github/workflows/ci.yml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.github/workflows/commitlint.yml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.github/workflows/docs.yml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.gitignore +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.python-version +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/.release-please-manifest.json +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/CONTRIBUTING.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/LICENSE +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/Makefile +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/SECURITY.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/aur/PKGBUILD +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/aur/stable/PKGBUILD +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docker/Dockerfile +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/astro.config.mjs +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/package-lock.json +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/package.json +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/public/.nojekyll +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/public/favicon.svg +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Commands.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Demo.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Features.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Footer.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Hero.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Install.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Navbar.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Philosophy.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/Terminal.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/data/replay.json +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/data/stats.json +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/layouts/Base.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/layouts/Docs.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/ai-integration.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/commands.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/design.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/index.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/install.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/remote.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/docs/vfs.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/pages/index.astro +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/src/styles/global.css +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/tailwind.config.mjs +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/tapes/pipeline.tape +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/tapes/quickstart.tape +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/tests/validate.mjs +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/docs-astro/tsconfig.json +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/mypy.ini +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/2026-03-03-bugfix-p2-batch/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/2026-03-03-bugfix-p2-batch/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/2026-03-03-bugfix-p2-batch/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/2026-03-04-w6-windows-bugfixes/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/2026-03-04-w6-windows-bugfixes/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/2026-03-04-w6-windows-bugfixes/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-core-checks/specs/foundation/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/specs/daemon/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/specs/daemon/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/specs/tooling/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-pixi-env/specs/tooling/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/specs/session/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/specs/architecture/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/specs/daemon/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/daemon/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/foundation/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-draws-events/specs/daemon/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-resources-passes/specs/daemon/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-ai-agent-skill/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-ai-agent-skill/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-ai-agent-skill/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-docs-automation/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-docs-automation/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-docs-automation/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-image-compare/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-image-compare/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-skill-auto-install/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-skill-auto-install/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-skill-auto-install/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b17-eid-mutation/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b17-eid-mutation/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b17-eid-mutation/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-docs-polish/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-docs-polish/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-docs-polish/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-fix-aur-build/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-fix-aur-build/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-fix-aur-build/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-phase-w2-build-script/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-phase-w2-build-script/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-phase-w2-build-script/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-m-macos-support/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-m-macos-support/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-m-macos-support/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-28-design-deviation-fixes/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-28-design-deviation-fixes/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-28-design-deviation-fixes/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-28-dev-install-enhancement/proposal.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-28-dev-install-enhancement/tasks.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/changes/archive/2026-02-28-dev-install-enhancement/test-plan.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/specs/architecture/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/specs/ci/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/specs/daemon/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/specs/foundation/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/specs/packaging/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/specs/session/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/openspec/specs/tooling/spec.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/pixi.lock +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/pixi.toml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/pyproject.toml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/release-please-config.json +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/ruff.toml +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/build-renderdoc.sh +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/build_renderdoc.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/capture_fixture.sh +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/dev_install.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/e2e_test.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/ensure-renderdoc.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/ensure-renderdoc.sh +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/ensure-skill-link.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/gen-replay.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/gen-skill-ref.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/gen-stats.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/gen_and_check.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/setup-renderdoc.sh +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/setup-vulkan-samples.sh +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/setup_android_tools.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/setup_vulkan_samples.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/verify-package.sh +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/scripts/verify_package.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/setup.cfg +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/__init__.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/_build_renderdoc.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/_platform.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/_skills/__init__.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/_transport.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/adapter.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/capture_core.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/_helpers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/android.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/assert_ci.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/assert_image.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/capture.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/capture_control.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/capturefile.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/completion.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/counters.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/debug.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/diff.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/doctor.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/events.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/export.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/install_skill.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/mesh.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/pick_pixel.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/pipeline.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/pixel.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/remote.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/script.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/search.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/serve.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/session.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/setup_renderdoc.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/shader_edit.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/snapshot.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/tex_stats.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/unix_helpers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/usage.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/commands/vfs.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/daemon_client.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/__init__.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/alignment.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/draws.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/framebuffer.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/pipeline.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/resources.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/stats.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/diff/summary.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/discover.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/formatters/json_fmt.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/formatters/kv.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/formatters/options.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/formatters/tsv.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/__init__.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/_helpers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/_types.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/buffer.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/capture.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/capturefile.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/core.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/debug.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/descriptor.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/pipe_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/pixel.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/script.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/shader.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/shader_edit.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/texture.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/handlers/vfs.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/image_compare.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/protocol.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/remote_core.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/remote_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/services/__init__.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/services/diff_service.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/services/session_service.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/session_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/target_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/vfs/__init__.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/vfs/formatter.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/vfs/router.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc/vfs/tree_cache.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc_cli.egg-info/entry_points.txt +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc_cli.egg-info/requires.txt +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/src/rdc_cli.egg-info/top_level.txt +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/conftest.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/__init__.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/blackbox_test_catalog.md +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/conftest.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/e2e_helpers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_advanced.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_assert.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_capture.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_capturefile.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_debug.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_diff.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_export.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_formats.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_presession.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_query.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_session.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_shader_edit.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/e2e/test_vfs.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/fixtures/gles-triangle-debug.apk +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/fixtures/gles_android_mali.rdc +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/fixtures/hello_triangle.rdc +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/fixtures/vkcube.rdc +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/fixtures/vkcube_validation.rdc +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/integration/test_build_renderdoc_integration.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/integration/test_daemon_handlers_real.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/integration/test_mock_api_sync.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/integration/test_real_replay.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/integration/test_vulkan_samples.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/conftest.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_adapter.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_android_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_assert_ci_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_assert_image_command.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_binary_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_buffer_decode.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_build_renderdoc.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_capture.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_capture_control.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_capture_core.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_capture_handlers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_capturefile_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_capturefile_handlers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_ci_files.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_cli.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_cli_session_flag.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_completion.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_count_shadermap.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_counters_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_counters_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_daemon_crash_regression.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_daemon_output_quality.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_daemon_pipeline_extended.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_daemon_server_unit.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_daemon_shader_api_fix.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_daemon_shader_extended.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_daemon_transport.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_debug_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_debug_handlers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_descriptors_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_dev_install.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_alignment.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_command.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_draws.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_framebuffer.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_pipeline.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_resources.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_service.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_stats.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_diff_summary.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_discover.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_doctor.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_draws_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_draws_events_cli.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_eid_completion.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_events_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_export_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_export_overlay.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_fix1_draws_pass_name.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_fix2_vfs_intermediate_dirs.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_formatters.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_formatters_kv.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_gen_skill_ref.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_handlers_remote.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_image_compare.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_install_skill.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_json_errors.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_keep_remote.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_mesh_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_mesh_handler.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_mock_capture_types.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_mock_renderdoc.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_open_remote.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_output_options.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_overlay_handler.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pick_pixel_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pick_pixel_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pipeline_cli_phase27.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pipeline_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pipeline_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pipeline_section_routing.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pipeline_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pixel_history_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pixel_history_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_pixi_files.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_platform.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_protocol.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_quickfix_batch.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_remote_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_remote_core.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_remote_replay.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_remote_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_require_pipe.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_resource_semantic_completion.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_resources_filter.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_script_command.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_script_handler.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_search.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_semantic_completion.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_serve.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_session_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_session_completion.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_session_service.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_session_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_setup_renderdoc.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_setup_vulkan_samples.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_shader_edit_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_shader_edit_handlers.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_shader_preload.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_skill_structure.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_snapshot_command.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_split_binary.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_split_core.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_target_state.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_tex_stats_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_tex_stats_handler.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_tooling_files.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_unix_helpers_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_usage_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_usage_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_vfs_binary.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_vfs_commands.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_vfs_completion.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_vfs_daemon.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_vfs_formatter.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_vfs_router.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_vfs_tree_cache.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/tests/unit/test_windows_compat.py +0 -0
- {rdc_cli-0.4.4 → rdc_cli-0.5.0}/uv.lock +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Something isn't working as expected
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Thanks for reporting! Please fill in as much detail as you can.
|
|
9
|
+
|
|
10
|
+
- type: textarea
|
|
11
|
+
id: what-happened
|
|
12
|
+
attributes:
|
|
13
|
+
label: What happened?
|
|
14
|
+
description: Describe the bug. What did you do, what did you expect, and what happened instead?
|
|
15
|
+
placeholder: |
|
|
16
|
+
Steps to reproduce:
|
|
17
|
+
1. Run `rdc open capture.rdc`
|
|
18
|
+
2. Run `rdc draws`
|
|
19
|
+
3. ...
|
|
20
|
+
|
|
21
|
+
Expected: ...
|
|
22
|
+
Actual: ...
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
|
|
26
|
+
- type: textarea
|
|
27
|
+
id: doctor-output
|
|
28
|
+
attributes:
|
|
29
|
+
label: "`rdc doctor` output"
|
|
30
|
+
description: Paste the output of `rdc doctor` (helps us understand your environment).
|
|
31
|
+
render: text
|
|
32
|
+
validations:
|
|
33
|
+
required: false
|
|
34
|
+
|
|
35
|
+
- type: input
|
|
36
|
+
id: os
|
|
37
|
+
attributes:
|
|
38
|
+
label: OS / Platform
|
|
39
|
+
placeholder: "e.g. Ubuntu 24.04, Windows 11, macOS 15, Android 12 (EMUI)"
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
|
|
43
|
+
- type: input
|
|
44
|
+
id: python
|
|
45
|
+
attributes:
|
|
46
|
+
label: Python version
|
|
47
|
+
placeholder: "e.g. 3.12.3"
|
|
48
|
+
validations:
|
|
49
|
+
required: false
|
|
50
|
+
|
|
51
|
+
- type: input
|
|
52
|
+
id: rdc-version
|
|
53
|
+
attributes:
|
|
54
|
+
label: rdc-cli version
|
|
55
|
+
placeholder: "e.g. 0.4.4 (from `rdc --version`)"
|
|
56
|
+
validations:
|
|
57
|
+
required: true
|
|
58
|
+
|
|
59
|
+
- type: textarea
|
|
60
|
+
id: capture
|
|
61
|
+
attributes:
|
|
62
|
+
label: Capture file
|
|
63
|
+
description: If possible, attach a minimal `.rdc` file that reproduces the issue, or describe the GPU API / hardware involved.
|
|
64
|
+
validations:
|
|
65
|
+
required: false
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest a new feature or improvement
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Describe the use case first — what problem are you solving?
|
|
9
|
+
|
|
10
|
+
- type: textarea
|
|
11
|
+
id: problem
|
|
12
|
+
attributes:
|
|
13
|
+
label: Problem / Use case
|
|
14
|
+
description: What are you trying to do that isn't possible or is too difficult today?
|
|
15
|
+
placeholder: "I'm trying to ... but currently I have to ..."
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: solution
|
|
21
|
+
attributes:
|
|
22
|
+
label: Proposed solution
|
|
23
|
+
description: If you have ideas on the CLI interface, include example invocations.
|
|
24
|
+
placeholder: |
|
|
25
|
+
```bash
|
|
26
|
+
rdc frobnicate --flag value
|
|
27
|
+
```
|
|
28
|
+
validations:
|
|
29
|
+
required: false
|
|
30
|
+
|
|
31
|
+
- type: textarea
|
|
32
|
+
id: alternatives
|
|
33
|
+
attributes:
|
|
34
|
+
label: Alternatives considered
|
|
35
|
+
description: Have you tried any workarounds? Other tools that solve this?
|
|
36
|
+
validations:
|
|
37
|
+
required: false
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## What
|
|
2
|
+
|
|
3
|
+
<!-- One-sentence summary of what this PR does. -->
|
|
4
|
+
|
|
5
|
+
## Why
|
|
6
|
+
|
|
7
|
+
<!-- The problem or motivation. Link to the issue if there is one (Fixes #123). -->
|
|
8
|
+
|
|
9
|
+
## How
|
|
10
|
+
|
|
11
|
+
<!-- Brief description of the approach. Call out any non-obvious decisions. -->
|
|
12
|
+
|
|
13
|
+
## Test plan
|
|
14
|
+
|
|
15
|
+
- [ ] `pixi run check` passes (lint + typecheck + tests)
|
|
16
|
+
- [ ] Added/updated unit tests
|
|
17
|
+
- [ ] Manual testing with a real `.rdc` capture (if applicable)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rdc-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: CLI for RenderDoc .rdc captures
|
|
5
5
|
Author: Jim
|
|
6
6
|
License-Expression: MIT
|
|
@@ -40,6 +40,7 @@ Dynamic: license-file
|
|
|
40
40
|
[](https://bananasjim.github.io/rdc-cli/)
|
|
41
41
|
[](https://bananasjim.github.io/rdc-cli/)
|
|
42
42
|
[](https://bananasjim.github.io/rdc-cli/)
|
|
43
|
+
[](https://discord.gg/h3zwUadp4k)
|
|
43
44
|
|
|
44
45
|
**Turn RenderDoc captures into Unix text streams.** rdc-cli does not replace RenderDoc — it makes `.rdc` file contents accessible to `grep`, `awk`, `sort`, `diff`, `jq`, and AI agents.
|
|
45
46
|
|
|
@@ -236,7 +237,7 @@ Run `rdc --help` for the full list, or `rdc <command> --help` for details. See
|
|
|
236
237
|
| GPU state | `pipeline`, `bindings`, `shader`, `shaders`, `shader-map` |
|
|
237
238
|
| Debug | `debug pixel`, `debug vertex`, `debug thread`, `pixel`, `pick-pixel`, `tex-stats` |
|
|
238
239
|
| Shader edit | `shader-build`, `shader-replace`, `shader-restore`, `shader-restore-all`, `shader-encodings` |
|
|
239
|
-
| Resources | `resources`, `resource`, `passes`, `pass`, `usage` |
|
|
240
|
+
| Resources | `resources`, `resource`, `passes`, `pass`, `usage`, `unused-targets` |
|
|
240
241
|
| Export | `texture`, `rt`, `buffer`, `mesh`, `snapshot` |
|
|
241
242
|
| Search | `search`, `counters` |
|
|
242
243
|
| Assertions | `assert-pixel`, `assert-state`, `assert-image`, `assert-count`, `assert-clean` |
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
[](https://bananasjim.github.io/rdc-cli/)
|
|
14
14
|
[](https://bananasjim.github.io/rdc-cli/)
|
|
15
15
|
[](https://bananasjim.github.io/rdc-cli/)
|
|
16
|
+
[](https://discord.gg/h3zwUadp4k)
|
|
16
17
|
|
|
17
18
|
**Turn RenderDoc captures into Unix text streams.** rdc-cli does not replace RenderDoc — it makes `.rdc` file contents accessible to `grep`, `awk`, `sort`, `diff`, `jq`, and AI agents.
|
|
18
19
|
|
|
@@ -209,7 +210,7 @@ Run `rdc --help` for the full list, or `rdc <command> --help` for details. See
|
|
|
209
210
|
| GPU state | `pipeline`, `bindings`, `shader`, `shaders`, `shader-map` |
|
|
210
211
|
| Debug | `debug pixel`, `debug vertex`, `debug thread`, `pixel`, `pick-pixel`, `tex-stats` |
|
|
211
212
|
| Shader edit | `shader-build`, `shader-replace`, `shader-restore`, `shader-restore-all`, `shader-encodings` |
|
|
212
|
-
| Resources | `resources`, `resource`, `passes`, `pass`, `usage` |
|
|
213
|
+
| Resources | `resources`, `resource`, `passes`, `pass`, `usage`, `unused-targets` |
|
|
213
214
|
| Export | `texture`, `rt`, `buffer`, `mesh`, `snapshot` |
|
|
214
215
|
| Search | `search`, `counters` |
|
|
215
216
|
| Assertions | `assert-pixel`, `assert-state`, `assert-image`, `assert-count`, `assert-clean` |
|
|
@@ -168,13 +168,19 @@
|
|
|
168
168
|
"name": "passes",
|
|
169
169
|
"id": "passes",
|
|
170
170
|
"help": "List render passes.",
|
|
171
|
-
"usage": "rdc passes [--json] [--deps] [--dot] [--graph] [--no-header] [--jsonl] [-q]"
|
|
171
|
+
"usage": "rdc passes [--json] [--deps] [--dot] [--graph] [--table] [--switches] [--no-header] [--jsonl] [-q]"
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
174
|
"name": "pass",
|
|
175
175
|
"id": "pass",
|
|
176
176
|
"help": "Show detail for a single render pass by 0-based index or name.",
|
|
177
177
|
"usage": "rdc pass <IDENTIFIER> [--json]"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "unused-targets",
|
|
181
|
+
"id": "unused-targets",
|
|
182
|
+
"help": "Detect render targets produced but never consumed by visible output.",
|
|
183
|
+
"usage": "rdc unused-targets [--json] [-q] [--no-header]"
|
|
178
184
|
}
|
|
179
185
|
]
|
|
180
186
|
},
|
|
@@ -260,17 +260,51 @@ rdc --session after close</code></pre>
|
|
|
260
260
|
|
|
261
261
|
<h2 id="render-pass">Render Pass Analysis</h2>
|
|
262
262
|
|
|
263
|
-
<pre><code>{"# List all render passes"}
|
|
263
|
+
<pre><code>{"# List all render passes (NAME, DRAWS, DISPATCHES, TRIANGLES, BEGIN_EID, END_EID)"}
|
|
264
264
|
rdc passes
|
|
265
265
|
|
|
266
|
-
{"# Inspect a
|
|
266
|
+
{"# Inspect attachments, load/store ops, and dimensions for a pass"}
|
|
267
267
|
rdc pass GBuffer
|
|
268
268
|
|
|
269
269
|
{"# List draws in a pass"}
|
|
270
270
|
rdc draws --pass GBuffer
|
|
271
271
|
|
|
272
272
|
{"# Find passes with many draws"}
|
|
273
|
-
rdc passes --json | jq '.[] | select(.draw_count > 50)'
|
|
273
|
+
rdc passes --json | jq '.[] | select(.draw_count > 50)'
|
|
274
|
+
|
|
275
|
+
{"# Largest triangle passes"}
|
|
276
|
+
rdc passes --json | jq 'sort_by(.triangles) | reverse | .[0:5] | .[] | {name, triangles}'
|
|
277
|
+
|
|
278
|
+
{"# Passes that clear then discard (load=Clear, store=Discard — wasted work)"}
|
|
279
|
+
rdc passes --json | jq '.[] | select(.load_ops[]? == "Clear" and .store_ops[]? == "Discard")'</code></pre>
|
|
280
|
+
|
|
281
|
+
<h2 id="pass-deps">Pass Dependency Analysis</h2>
|
|
282
|
+
|
|
283
|
+
<pre><code>{"# Per-pass reads/writes/load/store table"}
|
|
284
|
+
rdc passes --deps --table
|
|
285
|
+
|
|
286
|
+
{"# TBR/mobile: identify passes that switch render targets frequently"}
|
|
287
|
+
rdc passes --switches
|
|
288
|
+
|
|
289
|
+
{"# Passes with RT_SWITCHES > 2 (high bandwidth pressure on tile-based GPUs)"}
|
|
290
|
+
rdc passes --switches --json | jq '.[] | select(.rt_switches > 2) | {name, rt_switches}'
|
|
291
|
+
|
|
292
|
+
{"# Full dependency graph as DOT (render with Graphviz)"}
|
|
293
|
+
rdc passes --deps --dot | dot -Tsvg -o passes.svg</code></pre>
|
|
294
|
+
|
|
295
|
+
<h2 id="unused-targets">Dead Render Target Detection</h2>
|
|
296
|
+
|
|
297
|
+
<pre><code>{"# Find render targets that are written but never read"}
|
|
298
|
+
rdc unused-targets
|
|
299
|
+
|
|
300
|
+
{"# Names only — quick scan"}
|
|
301
|
+
rdc unused-targets -q
|
|
302
|
+
|
|
303
|
+
{"# JSON — get name + writer + wave for each dead target"}
|
|
304
|
+
rdc unused-targets --json | jq '.unused[] | {name, written_by, wave}'
|
|
305
|
+
|
|
306
|
+
{"# Count dead targets (useful as a CI assert)"}
|
|
307
|
+
rdc unused-targets -q | wc -l</code></pre>
|
|
274
308
|
|
|
275
309
|
<h2 id="pixel-ladder">Pixel Investigation Ladder</h2>
|
|
276
310
|
|
|
@@ -95,4 +95,31 @@ rdc usage 5
|
|
|
95
95
|
|
|
96
96
|
# Show all resource usage
|
|
97
97
|
rdc usage --all</code></pre>
|
|
98
|
+
|
|
99
|
+
<h2>Pass Analysis</h2>
|
|
100
|
+
<p>
|
|
101
|
+
<code>rdc passes</code> shows 6 columns: NAME, DRAWS, DISPATCHES, TRIANGLES, BEGIN_EID, END_EID.
|
|
102
|
+
GL/GLES/D3D11 captures get synthetic pass inference automatically.
|
|
103
|
+
</p>
|
|
104
|
+
<pre><code># Tabular pass summary
|
|
105
|
+
rdc passes
|
|
106
|
+
|
|
107
|
+
# Per-pass dependency graph (reads/writes/load/store)
|
|
108
|
+
rdc passes --deps --table
|
|
109
|
+
|
|
110
|
+
# Add RT_SWITCHES column for TBR/mobile bandwidth analysis
|
|
111
|
+
rdc passes --switches
|
|
112
|
+
|
|
113
|
+
# Inspect attachments, load/store ops, and dimensions for a pass
|
|
114
|
+
rdc pass GBuffer
|
|
115
|
+
|
|
116
|
+
# JSON output — includes load_ops/store_ops per pass
|
|
117
|
+
rdc passes --json | jq '.[] | {name: .name, load: .load_ops, store: .store_ops}'</code></pre>
|
|
118
|
+
|
|
119
|
+
<h2>Dead Render Target Detection</h2>
|
|
120
|
+
<pre><code># List render targets written but never sampled/read
|
|
121
|
+
rdc unused-targets
|
|
122
|
+
|
|
123
|
+
# JSON output for scripted analysis
|
|
124
|
+
rdc unused-targets --json | jq '.[].name'</code></pre>
|
|
98
125
|
</Docs>
|
|
@@ -32,7 +32,7 @@ CATEGORIES: list[tuple[str, str, str | None, list[str]]] = [
|
|
|
32
32
|
]),
|
|
33
33
|
("Resources", "resources-section", None, [
|
|
34
34
|
"resources", "resource", "usage", "shader", "shaders", "shader-map",
|
|
35
|
-
"search", "passes", "pass",
|
|
35
|
+
"search", "passes", "pass", "unused-targets",
|
|
36
36
|
]),
|
|
37
37
|
("Export", "export", None, [
|
|
38
38
|
"texture", "buffer", "rt", "mesh", "snapshot",
|
|
@@ -59,6 +59,50 @@ Example -- JSON pipeline with jq:
|
|
|
59
59
|
rdc events --json | jq '.[] | select(.type == "DrawIndexed")'
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
+
## Render Pass Analysis
|
|
63
|
+
|
|
64
|
+
### List passes (Phase 8 columns)
|
|
65
|
+
|
|
66
|
+
`rdc passes` outputs 6 columns: NAME, DRAWS, DISPATCHES, TRIANGLES, BEGIN_EID, END_EID.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
rdc passes # TSV table
|
|
70
|
+
rdc passes --json # includes load_ops/store_ops per pass
|
|
71
|
+
rdc passes --switches # adds RT_SWITCHES column (TBR optimization)
|
|
72
|
+
rdc passes --deps --table # per-pass READS/WRITES/LOAD/STORE
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Inspect a single pass
|
|
76
|
+
|
|
77
|
+
`rdc pass <name>` shows enriched attachments: resource name, format, dimensions, and load/store ops.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
rdc pass GBuffer
|
|
81
|
+
rdc pass GBuffer --json
|
|
82
|
+
rdc pass 0 # by 0-based index
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Detect dead render targets
|
|
86
|
+
|
|
87
|
+
`rdc unused-targets` finds render targets written but never consumed by visible output. Columns: ID, NAME, WRITTEN_BY, WAVE.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
rdc unused-targets # TSV
|
|
91
|
+
rdc unused-targets --json # structured
|
|
92
|
+
rdc unused-targets -q # one resource ID per line (for scripting)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Frame statistics
|
|
96
|
+
|
|
97
|
+
`rdc stats` outputs three sections: Per-Pass Breakdown, Top Draws by Triangle Count, and Largest Resources.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
rdc stats # all three sections
|
|
101
|
+
rdc stats --json # includes largest_resources array
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
GL/GLES/D3D11 captures without native BeginPass/EndPass markers get synthetic pass inference automatically — no extra flags needed.
|
|
105
|
+
|
|
62
106
|
## Common Tasks
|
|
63
107
|
|
|
64
108
|
### Find all draw calls
|
|
@@ -651,6 +651,8 @@ List render passes.
|
|
|
651
651
|
| `--deps` | Show pass dependency DAG. | flag | |
|
|
652
652
|
| `--dot` | Graphviz DOT output (requires --deps). | flag | |
|
|
653
653
|
| `--graph` | Human-readable graph (requires --deps). | flag | |
|
|
654
|
+
| `--table` | Per-pass I/O table (requires --deps). | flag | |
|
|
655
|
+
| `--switches` | Show RT switch count per pass (TBR flush risk). | flag | |
|
|
654
656
|
| `--no-header` | Omit TSV header | flag | |
|
|
655
657
|
| `--jsonl` | JSONL output | flag | |
|
|
656
658
|
| `-q, --quiet` | Print primary key column only | flag | |
|
|
@@ -1149,6 +1151,18 @@ Display VFS subtree structure.
|
|
|
1149
1151
|
| `--depth` | | integer range | 2 |
|
|
1150
1152
|
| `--json` | JSON output | flag | |
|
|
1151
1153
|
|
|
1154
|
+
## `rdc unused-targets`
|
|
1155
|
+
|
|
1156
|
+
Detect render targets produced but never consumed by visible output.
|
|
1157
|
+
|
|
1158
|
+
**Options:**
|
|
1159
|
+
|
|
1160
|
+
| Flag | Help | Type | Default |
|
|
1161
|
+
|------|------|------|---------|
|
|
1162
|
+
| `--json` | JSON output | flag | |
|
|
1163
|
+
| `-q, --quiet` | One resource ID per line | flag | |
|
|
1164
|
+
| `--no-header` | Omit TSV header | flag | |
|
|
1165
|
+
|
|
1152
1166
|
## `rdc usage`
|
|
1153
1167
|
|
|
1154
1168
|
Show resource usage (which events read/write a resource).
|
|
@@ -58,6 +58,7 @@ from rdc.commands.shader_edit import (
|
|
|
58
58
|
from rdc.commands.snapshot import snapshot_cmd
|
|
59
59
|
from rdc.commands.tex_stats import tex_stats_cmd
|
|
60
60
|
from rdc.commands.unix_helpers import count_cmd, shader_map_cmd
|
|
61
|
+
from rdc.commands.unused_targets import unused_targets_cmd
|
|
61
62
|
from rdc.commands.usage import usage_cmd
|
|
62
63
|
from rdc.commands.vfs import cat_cmd, complete_cmd, ls_cmd, tree_cmd
|
|
63
64
|
from rdc.session_state import SESSION_NAME_RE
|
|
@@ -171,6 +172,7 @@ main.add_command(android_group, name="android")
|
|
|
171
172
|
main.add_command(serve_cmd, name="serve")
|
|
172
173
|
main.add_command(callstacks_cmd, name="callstacks")
|
|
173
174
|
main.add_command(setup_renderdoc_cmd, name="setup-renderdoc")
|
|
175
|
+
main.add_command(unused_targets_cmd, name="unused-targets")
|
|
174
176
|
|
|
175
177
|
|
|
176
178
|
if __name__ == "__main__":
|
|
@@ -37,12 +37,15 @@ def stats_cmd(use_json: bool, no_header: bool, use_jsonl: bool, quiet: bool) ->
|
|
|
37
37
|
|
|
38
38
|
per_pass = result.get("per_pass", [])
|
|
39
39
|
top_draws = result.get("top_draws", [])
|
|
40
|
+
largest_resources = result.get("largest_resources", [])
|
|
40
41
|
|
|
41
42
|
if use_jsonl:
|
|
42
43
|
for p in per_pass:
|
|
43
44
|
write_jsonl([p])
|
|
44
45
|
for d in top_draws:
|
|
45
46
|
write_jsonl([d])
|
|
47
|
+
for r in largest_resources:
|
|
48
|
+
write_jsonl([r])
|
|
46
49
|
return
|
|
47
50
|
|
|
48
51
|
if quiet:
|
|
@@ -73,6 +76,15 @@ def stats_cmd(use_json: bool, no_header: bool, use_jsonl: bool, quiet: bool) ->
|
|
|
73
76
|
header_d = ["EID", "MARKER", "TRIANGLES"]
|
|
74
77
|
rows_d = [[d["eid"], d.get("marker", "-"), d["triangles"]] for d in top_draws]
|
|
75
78
|
write_tsv(rows_d, header=header_d, no_header=no_header)
|
|
79
|
+
if largest_resources:
|
|
80
|
+
if not no_header:
|
|
81
|
+
sys.stderr.write(chr(10) + "Largest Resources:" + chr(10))
|
|
82
|
+
header_r = ["ID", "NAME", "TYPE", "SIZE", "FORMAT"]
|
|
83
|
+
rows_r = [
|
|
84
|
+
[r["id"], r["name"], r["type"], r["size"], r.get("format", "-")]
|
|
85
|
+
for r in largest_resources
|
|
86
|
+
]
|
|
87
|
+
write_tsv(rows_r, header=header_r, no_header=no_header)
|
|
76
88
|
|
|
77
89
|
|
|
78
90
|
@click.command("log")
|
|
@@ -167,26 +167,47 @@ def resource_cmd(resid: int, use_json: bool) -> None:
|
|
|
167
167
|
@click.option(
|
|
168
168
|
"--graph", is_flag=True, default=False, help="Human-readable graph (requires --deps)."
|
|
169
169
|
)
|
|
170
|
+
@click.option(
|
|
171
|
+
"--table",
|
|
172
|
+
is_flag=True,
|
|
173
|
+
default=False,
|
|
174
|
+
help="Per-pass I/O table (requires --deps).",
|
|
175
|
+
)
|
|
176
|
+
@click.option(
|
|
177
|
+
"--switches",
|
|
178
|
+
is_flag=True,
|
|
179
|
+
default=False,
|
|
180
|
+
help="Show RT switch count per pass (TBR flush risk).",
|
|
181
|
+
)
|
|
170
182
|
@list_output_options
|
|
171
|
-
def passes_cmd(
|
|
183
|
+
def passes_cmd( # noqa: PLR0913
|
|
172
184
|
use_json: bool,
|
|
173
185
|
deps: bool,
|
|
174
186
|
dot: bool,
|
|
175
187
|
graph: bool,
|
|
188
|
+
table: bool,
|
|
189
|
+
switches: bool,
|
|
176
190
|
no_header: bool,
|
|
177
191
|
use_jsonl: bool,
|
|
178
192
|
quiet: bool,
|
|
179
193
|
) -> None:
|
|
180
194
|
"""List render passes."""
|
|
181
|
-
if (dot or graph) and not deps:
|
|
182
|
-
raise click.UsageError("--dot/--graph requires --deps")
|
|
195
|
+
if (dot or graph or table) and not deps:
|
|
196
|
+
raise click.UsageError("--dot/--graph/--table requires --deps")
|
|
197
|
+
if table and dot:
|
|
198
|
+
raise click.UsageError("--table and --dot are mutually exclusive")
|
|
199
|
+
if table and graph:
|
|
200
|
+
raise click.UsageError("--table and --graph are mutually exclusive")
|
|
183
201
|
if deps and (no_header or use_jsonl or quiet):
|
|
184
|
-
raise click.UsageError("--deps only supports --json, --dot, and --
|
|
202
|
+
raise click.UsageError("--deps only supports --json, --dot, --graph, and --table")
|
|
185
203
|
if deps:
|
|
186
|
-
_passes_deps(use_json, dot, graph)
|
|
204
|
+
_passes_deps(use_json, dot, graph, table)
|
|
187
205
|
return
|
|
188
206
|
|
|
189
|
-
|
|
207
|
+
params: dict[str, Any] = {}
|
|
208
|
+
if switches:
|
|
209
|
+
params["switches"] = True
|
|
210
|
+
result = call("passes", params)
|
|
190
211
|
tree: dict[str, Any] = result.get("tree", {})
|
|
191
212
|
if use_json:
|
|
192
213
|
write_json(tree)
|
|
@@ -199,11 +220,25 @@ def passes_cmd(
|
|
|
199
220
|
for p in passes:
|
|
200
221
|
sys.stdout.write(str(p.get("name", "")) + "\n")
|
|
201
222
|
else:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
223
|
+
header = ["NAME", "DRAWS", "DISPATCHES", "TRIANGLES", "BEGIN_EID", "END_EID"]
|
|
224
|
+
if switches:
|
|
225
|
+
header.append("RT_SWITCHES")
|
|
226
|
+
tsv_rows = [
|
|
227
|
+
[
|
|
228
|
+
p.get("name", "-"),
|
|
229
|
+
p.get("draws", 0),
|
|
230
|
+
p.get("dispatches", 0),
|
|
231
|
+
p.get("triangles", 0),
|
|
232
|
+
p.get("begin_eid", "-"),
|
|
233
|
+
p.get("end_eid", "-"),
|
|
234
|
+
]
|
|
235
|
+
+ ([p.get("rt_switches", {}).get("count", 0)] if switches else [])
|
|
236
|
+
for p in passes
|
|
237
|
+
]
|
|
238
|
+
write_tsv(tsv_rows, header=header, no_header=no_header)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def _passes_deps(use_json: bool, dot: bool, graph: bool, table: bool) -> None:
|
|
207
242
|
result = call("pass_deps", {})
|
|
208
243
|
edges: list[dict[str, Any]] = result.get("edges", [])
|
|
209
244
|
if use_json:
|
|
@@ -215,6 +250,9 @@ def _passes_deps(use_json: bool, dot: bool, graph: bool) -> None:
|
|
|
215
250
|
if graph:
|
|
216
251
|
_format_graph(edges)
|
|
217
252
|
return
|
|
253
|
+
if table:
|
|
254
|
+
_format_io_table(result.get("per_pass", []))
|
|
255
|
+
return
|
|
218
256
|
click.echo(format_row(["SRC", "DST", "RESOURCES"]))
|
|
219
257
|
for e in edges:
|
|
220
258
|
rids = ",".join(str(r) for r in e["resources"])
|
|
@@ -280,6 +318,29 @@ def _format_graph(edges: list[dict[str, Any]]) -> None:
|
|
|
280
318
|
click.echo(f" {lbl[node]} (sink){from_part}")
|
|
281
319
|
|
|
282
320
|
|
|
321
|
+
def _format_ops(ops: list[Any]) -> str:
|
|
322
|
+
"""Format load/store ops list to a compact string."""
|
|
323
|
+
if not ops:
|
|
324
|
+
return "-"
|
|
325
|
+
return ",".join(f"{t}={o}" for t, o in ops)
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
def _format_io_table(per_pass: list[dict[str, Any]]) -> None:
|
|
329
|
+
write_tsv(
|
|
330
|
+
[
|
|
331
|
+
[
|
|
332
|
+
p.get("name", "-"),
|
|
333
|
+
",".join(str(r) for r in p.get("reads", [])) or "-",
|
|
334
|
+
",".join(str(r) for r in p.get("writes", [])) or "-",
|
|
335
|
+
_format_ops(p.get("load_ops", [])),
|
|
336
|
+
_format_ops(p.get("store_ops", [])),
|
|
337
|
+
]
|
|
338
|
+
for p in per_pass
|
|
339
|
+
],
|
|
340
|
+
header=["PASS", "READS", "WRITES", "LOAD", "STORE"],
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
|
|
283
344
|
@click.command("pass")
|
|
284
345
|
@click.argument("identifier", shell_complete=complete_pass_identifier)
|
|
285
346
|
@click.option("--json", "use_json", is_flag=True, default=False, help="Output JSON.")
|
|
@@ -298,16 +359,46 @@ def pass_cmd(identifier: str, use_json: bool) -> None:
|
|
|
298
359
|
|
|
299
360
|
|
|
300
361
|
def _format_pass_detail(data: dict[str, Any]) -> None:
|
|
301
|
-
|
|
362
|
+
color_targets = data.get("color_targets", [])
|
|
302
363
|
depth = data.get("depth_target")
|
|
303
|
-
kv = {
|
|
364
|
+
kv: dict[str, Any] = {
|
|
304
365
|
"Pass": data.get("name", "-"),
|
|
305
366
|
"Begin EID": data.get("begin_eid", "-"),
|
|
306
367
|
"End EID": data.get("end_eid", "-"),
|
|
307
368
|
"Draw Calls": data.get("draws", 0),
|
|
308
369
|
"Dispatches": data.get("dispatches", 0),
|
|
309
370
|
"Triangles": data.get("triangles", 0),
|
|
310
|
-
"Color Targets": ", ".join(
|
|
311
|
-
|
|
371
|
+
"Color Targets": ", ".join(_format_target(t) for t in color_targets)
|
|
372
|
+
if color_targets
|
|
373
|
+
else "-",
|
|
374
|
+
"Depth Target": _format_target(depth) if depth else "-",
|
|
312
375
|
}
|
|
376
|
+
load_ops = data.get("load_ops", [])
|
|
377
|
+
store_ops = data.get("store_ops", [])
|
|
378
|
+
if load_ops:
|
|
379
|
+
kv["Load Ops"] = _format_ops(load_ops)
|
|
380
|
+
if store_ops:
|
|
381
|
+
kv["Store Ops"] = _format_ops(store_ops)
|
|
313
382
|
click.echo(format_kv(kv))
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
def _format_target(target: Any) -> str:
|
|
386
|
+
"""Format an enriched attachment target dict for display."""
|
|
387
|
+
if isinstance(target, int):
|
|
388
|
+
return str(target)
|
|
389
|
+
if not isinstance(target, dict):
|
|
390
|
+
return str(target)
|
|
391
|
+
rid = str(target.get("id", "-"))
|
|
392
|
+
parts: list[str] = []
|
|
393
|
+
name = target.get("name")
|
|
394
|
+
if name:
|
|
395
|
+
parts.append(name)
|
|
396
|
+
fmt = target.get("format")
|
|
397
|
+
if fmt:
|
|
398
|
+
parts.append(fmt)
|
|
399
|
+
w, h = target.get("width"), target.get("height")
|
|
400
|
+
if w is not None and h is not None:
|
|
401
|
+
parts.append(f"{w}x{h}")
|
|
402
|
+
if parts:
|
|
403
|
+
return f"{rid} ({', '.join(parts)})"
|
|
404
|
+
return rid
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""rdc unused-targets command -- detect render targets never consumed by output."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
import click
|
|
9
|
+
|
|
10
|
+
from rdc.commands._helpers import call
|
|
11
|
+
from rdc.formatters.json_fmt import write_json
|
|
12
|
+
from rdc.formatters.tsv import write_tsv
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@click.command("unused-targets")
|
|
16
|
+
@click.option("--json", "use_json", is_flag=True, help="JSON output")
|
|
17
|
+
@click.option("-q", "--quiet", is_flag=True, help="One resource ID per line")
|
|
18
|
+
@click.option("--no-header", is_flag=True, help="Omit TSV header")
|
|
19
|
+
def unused_targets_cmd(
|
|
20
|
+
use_json: bool,
|
|
21
|
+
quiet: bool,
|
|
22
|
+
no_header: bool,
|
|
23
|
+
) -> None:
|
|
24
|
+
"""Detect render targets produced but never consumed by visible output."""
|
|
25
|
+
result: dict[str, Any] = call("unused_targets", {})
|
|
26
|
+
if use_json:
|
|
27
|
+
write_json(result)
|
|
28
|
+
return
|
|
29
|
+
unused = result.get("unused", [])
|
|
30
|
+
if quiet:
|
|
31
|
+
for entry in unused:
|
|
32
|
+
sys.stdout.write(str(entry["id"]) + "\n")
|
|
33
|
+
return
|
|
34
|
+
rows = [
|
|
35
|
+
[
|
|
36
|
+
entry["id"],
|
|
37
|
+
entry["name"],
|
|
38
|
+
",".join(entry["written_by"]) if entry["written_by"] else "-",
|
|
39
|
+
entry["wave"],
|
|
40
|
+
]
|
|
41
|
+
for entry in unused
|
|
42
|
+
]
|
|
43
|
+
write_tsv(rows, header=["ID", "NAME", "WRITTEN_BY", "WAVE"], no_header=no_header)
|
|
@@ -43,6 +43,7 @@ from rdc.handlers.script import HANDLERS as _SCRIPT_HANDLERS
|
|
|
43
43
|
from rdc.handlers.shader import HANDLERS as _SHADER_HANDLERS
|
|
44
44
|
from rdc.handlers.shader_edit import HANDLERS as _SHADER_EDIT_HANDLERS
|
|
45
45
|
from rdc.handlers.texture import HANDLERS as _TEXTURE_HANDLERS
|
|
46
|
+
from rdc.handlers.unused import HANDLERS as _UNUSED_HANDLERS
|
|
46
47
|
from rdc.handlers.vfs import HANDLERS as _VFS_HANDLERS
|
|
47
48
|
|
|
48
49
|
if TYPE_CHECKING:
|
|
@@ -90,6 +91,7 @@ _DISPATCH: dict[str, Handler] = {
|
|
|
90
91
|
**_SHADER_EDIT_HANDLERS,
|
|
91
92
|
**_CAPTURE_HANDLERS,
|
|
92
93
|
**_CAPTUREFILE_HANDLERS,
|
|
94
|
+
**_UNUSED_HANDLERS,
|
|
93
95
|
}
|
|
94
96
|
|
|
95
97
|
_NO_REPLAY_METHODS: frozenset[str] = frozenset(
|