Skip to content

Add win32-x64 platform support #64

Description

@cidrblock

Problem

Abbenay is published only for linux-x64, linux-arm64, and darwin-arm64. There is no win32-x64 VSIX on the Marketplace.

Making Abbenay a hard extensionDependency of vscode-ansible fails Windows CI because VS Code cannot install redhat.abbenay-provider on Windows 64-bit. The same gap blocks Windows end users.

Related Jira

Approach

IPC on Windows: TCP 127.0.0.1 + address file — not named pipes. @grpc/grpc-js already binds TCP (used for containers via --grpc-port); pipe path stubs exist in the code but the daemon always binds unix://… and named-pipe gRPC is unproven in-tree.

Bootstrap: Extend bootstrap.sh for win32 (lean CI forbids actions/setup-node).

Out of scope (this issue)

  • Authenticode / SmartScreen signing
  • darwin-x64
  • Python client Windows paths
  • Named-pipe gRPC (later optimization if proven)

Implementation checklist

1. Windows local transport

  • Fix getRuntimeDir() on win32 → path.join(os.tmpdir(), 'abbenay') (PID + address file)
  • On win32, bind gRPC on 127.0.0.1 with an ephemeral port; write host:port to <runtimeDir>/daemon.addr
  • Reuse existing TCP bind path in startDaemon (grpcPort / grpcHost)
  • VS Code client: on win32 read daemon.addr and connect via host:port (not unix://)
  • Liveness: PID file + TCP connect probe (not fs.existsSync on a pipe path)
  • Keep Unix socket behavior unchanged on Linux/macOS

2. Packaging / discovery

  • SEA discovery in VS Code client: append .exe on win32
  • Root build.js createDistribution(): copy abbenay-daemon-win32-x64.exe into the .zip archive
  • Confirm keytar.node builds on windows-latest (Credential Manager); ship as sidecar next to SEA

3. Bootstrap + CI/release

  • Extend bootstrap.sh: detect Windows, download node-v*-win-x64.zip, unpack node.exe layout, SEA fuse check, GITHUB_PATH
  • Add matrix row windows-latest / win32 / x64 to CI and release workflows
  • Upload dist/*.zip + abbenay-vsix-win32-x64; update release notes table
  • Update DR-010 / docs/DEVELOPMENT.md platform tables (3 → 4)

4. Acceptance / smoke

  • CI builds and uploads a win32-x64 VSIX
  • Daemon starts and a client can connect over TCP and get a health/status response on Windows
  • redhat.abbenay-provider is installable on VS Code for Windows 64-bit (Marketplace publish)
  • Unblocks vscode-ansible hard-dependency work on Windows (AAP-82840)

Notes

Runtime stubs already exist (pipe path strings, SEA .exe naming in packages/daemon/build.js), but end-to-end Windows IPC and CI/publish are missing. Sequencing: land this issue → publish win32 VSIX → then land the vscode-ansible hard dependency.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions