Skip to content

feat: add experimental Shaw's CLI and packaging - #1

Draft
rianjs wants to merge 3 commits into
mainfrom
feat/initial-cli
Draft

rianjs wants to merge 3 commits into
mainfrom
feat/initial-cli

Conversation

@rianjs

@rianjs rianjs commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Adds an experimental shaws CLI for browser-assisted Shaw's login and bounded product/order reads. Password login uses a dedicated Edge profile, Google login uses Brave, and a captured session is saved through cli-common/credstore only after an authenticated API check. Product search and order history use pipe-delimited output, opaque pagination, exact decimal/identifier preservation, and separate original/replacement item rows.

The API contracts are derived from the public website source. Runtime bootstrap parsing has been checked against downloaded site assets, but authenticated replay is not yet verified. A CLI-owned Edge login reached Imperva Access denied / Error 15 after credential entry; the existing regular Edge session still loaded the signed-in homepage. Site testing is paused at the user's request. The CLI now detects the observed block page promptly; its exact embedded DOM expression passes an offline synthetic-page check. Cart reads exist at the HTTP-client layer; cart mutations, notes, substitution changes, and checkout handoff remain unfinished. This PR stays draft for that work and live acceptance.

Includes the shared CI/release conventions and package metadata for Homebrew, winget, Chocolatey, and Linux. Live releases remain gated by RELEASE_ENABLED=true and no packages have been published.

Validation: 115 tests pass; full race tests and vet pass; full lint reports zero issues; workflow syntax, package identity, GoReleaser configuration, and release preflight pass. A local snapshot produced all six Windows/macOS/Linux binaries, archives, .deb/.rpm packages, checksums, and the Homebrew cask. Native signing and installed-package acceptance remain unverified. Tests use synthetic API records and injected credential stores.

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