Skip to content

fix(install): add missing vibe platform to install.ps1 + cross-script parity test - #548

Closed
KumamuKuma wants to merge 1 commit into
Egonex-AI:mainfrom
KumamuKuma:fix/install-ps1-vibe-platform-parity
Closed

fix(install): add missing vibe platform to install.ps1 + cross-script parity test#548
KumamuKuma wants to merge 1 commit into
Egonex-AI:mainfrom
KumamuKuma:fix/install-ps1-vibe-platform-parity

Conversation

@KumamuKuma

Copy link
Copy Markdown
Contributor

Summary

install.sh supports the vibe platform (vibe|$HOME/.vibe/skills|per-skill, line 37), README documents vibe as a supported <platform> value (line 218) and lists Vibe CLI as ✅ Supported in the Platform Compatibility table (line 266) — but install.ps1's $Platforms table skips straight from antigravity to vscode. On Windows, install.ps1 vibe dies in Resolve-Platform with Unknown platform: vibe ($ErrorActionPreference = 'Stop'), and the interactive Prompt-Platform menu never offers it either — so the documented Vibe CLI support is 100% unavailable on Windows, including via the README's one-line iwr -useb … | iex install.

This PR (1) adds the missing vibe entry to install.ps1, inserted between antigravity and vscode to mirror install.sh's row order so the interactive menu numbering stays identical across both installers, and (2) adds a regression test that keeps the two platform tables — and the README — from drifting apart again.

Why the test is the interesting part

This repo adds new install platforms at a steady clip, and there are several platform-addition PRs open right now#425 (oh-my-pi), #420 (codeflicker), #470 (Qoder), #478/#404/#386/#281 (CodeBuddy) — each of which has to remember to update install.sh, install.ps1, and two places in README.md by hand. The vibe gap this PR fixes is exactly what happens when one of the four spots gets missed.

tests/install/platform-table-consistency.test.mjs (picked up by the root vitest.config.ts tests/** include, so it runs in plain pnpm test/CI) parses the platforms_table() heredoc in install.sh and the $Platforms ordered hashtable in install.ps1 and asserts:

  • Same platform ids in the same order — order matters because both scripts number their interactive menus from table order; "3) opencode" must mean the same thing on macOS/Linux and Windows.
  • Same link style (per-skill vs folder) per platform.
  • Same normalized skills-target dir per platform (strips the $HOME/ prefix, unifies \ vs /).
  • README stays in sync: the "Supported <platform> values" line matches the installer table exactly, and every install.sh <id> referenced in the Platform Compatibility table is a real platform id (subset check, since some table rows legitimately use other install methods, e.g. vscode → auto-discovery).
  • Loud parser failure: both parsers must yield ≥ 10 entries, so a future formatting change in either script makes the test fail with an obvious signal instead of vacuously passing on two empty lists.

So if any of the queued platform PRs updates only one script (or forgets the README line), pnpm test fails with a diff naming the exact platform id — that's the intended behavior, and rebasing those PRs on this one gives them a free four-way consistency check.

Linked issue(s)

None — found while auditing installer/README consistency. (Related context: #417 touches install.ps1 error handling but not the platform table; no open PR addresses the missing vibe entry.)

How I tested this

  • pnpm lint — clean

  • pnpm --filter @understand-anything/core test — 809 passed

  • pnpm test — 216 passed, 1 skipped (17 files, includes the new test)

  • Red/green check: on main (before the install.ps1 fix), the new test fails on exactly the two assertions the bug violates:

    × install.sh and install.ps1 define the same platform ids in the same order
        - Expected  [ …, 'antigravity', 'vibe', 'vscode', … ]   (14 ids, from install.sh)
        + Received  [ …, 'antigravity', 'vscode', … ]           (13 ids, from install.ps1)
    × each platform has the same link style in both scripts
        → style for "vibe": expected undefined to be 'per-skill'
    ✓ parses a plausible number of platforms from both scripts
    ✓ each platform has the same skills target dir in both scripts
    ✓ README "Supported <platform> values" line matches the installer table
    ✓ README Platform Compatibility table only references real installer platforms
    

    After the one-line install.ps1 fix, all 6 pass.

  • Manual check: the inserted line mirrors install.sh's vibe|$HOME/.vibe/skills|per-skillper-skill style, ~\.vibe\skills target — and preserves the table's column alignment. (No Windows/pwsh available in my environment for a live install.ps1 vibe run; the entry is structurally identical to the thirteen existing ones, and the parity test now pins it against install.sh.)

Versioning

  • N/A — installer script + tests only; install.sh/install.ps1 are fetched raw from main by the one-line installers and are not part of the versioned plugin payload shipped through the five manifests.

🤖 Generated with Claude Code

… parity test

install.sh supports `vibe` (line 37: `vibe|$HOME/.vibe/skills|per-skill`),
README documents it as a supported <platform> value and lists Vibe CLI as
"Supported" in the compatibility table — but install.ps1's $Platforms table
skips straight from `antigravity` to `vscode`. On Windows,
`install.ps1 vibe` dies in Resolve-Platform with "Unknown platform: vibe"
and the interactive menu never offers it, so the documented Vibe CLI
support is entirely unavailable on Windows.

Fix: insert the `vibe` entry between antigravity and vscode, mirroring
install.sh's row order so the interactive menu numbering stays identical
across both installers.

Regression guard: tests/install/platform-table-consistency.test.mjs parses
the platforms_table() heredoc in install.sh and the $Platforms hashtable in
install.ps1 and asserts identical platform ids (same order — menu numbering),
identical link styles, and identical normalized target dirs, plus that
README's supported-values line matches the installer table and the
compatibility table only references real platform ids. Parsers are guarded
against silent regex mismatch (>= 10 entries required on each side). On
main before this fix, the id and style assertions fail with exactly the
missing `vibe` entry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@KumamuKuma KumamuKuma closed this Jul 6, 2026
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