Commit Graph

1272 Commits

Author SHA1 Message Date
AJ ONeal
7f217a6265 test: add comprehensive cache compatibility tests (82 cases)
Tests cover:
- Cache completeness (29 binary + gittag packages)
- Format selection (11 platform/format combos)
- Edge-case platforms (8: FreeBSD, ARM, musl, Windows aarch64)
- Script generation smoke tests (15 packages)
- API vocabulary via transform-releases (6 checks)
- Version format after normalization (10 packages)
- Channel detection (3 packages)
2026-03-11 19:05:19 -06:00
AJ ONeal
fa389e9a9b docs: ALL DONE — 0 warnings, all tests green, cache-only migration complete 2026-03-11 18:53:56 -06:00
AJ ONeal
0b80afcfde test: add cache value validation for solaris/illumos/universal2
Prevents regressions where someone translates solaris→sunos or uses
arch=universal2. The Node classifier already knows solaris, illumos, and
sunos as distinct OS values. It does NOT know universal2 — use x86_64.

Cache validation checks:
- terraform/syncthing: solaris filenames must have os=solaris (not sunos)
- syncthing: illumos filenames must have os=illumos (not sunos)
- node: sunos filenames must have os=sunos (baseline)
- cmake/hugo: universal filenames must have arch=x86_64 (not universal2)
2026-03-11 16:50:12 -06:00
AJ ONeal
bf08f1b1e1 test: add universal2 tests for cmake/hugo macOS resolution
cmake resolves to v3.19.1 (stable is v4.2.3) and hugo to v0.101.0
(stable is v0.157.0) because universal2 entries are dropped by the
classifier. Marked as known failures until GOER fixes legacy export.
2026-03-11 16:44:55 -06:00
AJ ONeal
5b9ffe65e7 docs: update status — all blocking issues resolved, respond to researcher 2026-03-11 16:24:33 -06:00
AJ ONeal
76ba00dc57 docs: update PROD_NOTES for cache libc fix and 101 packages 2026-03-11 16:24:33 -06:00
AJ ONeal
47d9323356 docs: update status after cache libc fix confirmed
Issue 5 (musl→none) confirmed fixed in latest Go cache.
All tests pass. Condensed QUESTIONS.md resolved issues.
2026-03-11 16:24:33 -06:00
AJ ONeal
9c2f1de5bd docs: respond to researcher agent, update Go agent with hard-musl list
The Go cache classifies musl builds as libc='musl' but production
(normalize.js) defaults musl → 'none' (static). Only 7 packages
have "hard musl" (actual runtime dependency): node, bun, julia,
pwsh, pg/postgres/psql, atomicparsley, cmake.
2026-03-11 16:24:33 -06:00
AJ ONeal
386ac1c6e0 test: add broad package resolution sweep (192/198 match production)
Tests all 99 cached packages x 2 platforms (macOS arm64, Linux amd64).
192/198 pass. 6 failures all match production behavior (git, gpg, iterm2,
mariadb — packages without downloadable binaries for these platforms).
2026-03-11 16:24:33 -06:00
AJ ONeal
b2820c4e6e docs: update PROD_NOTES with resolved issues and hugo classifier gap 2026-03-11 16:24:33 -06:00
AJ ONeal
0b9ea25fbe fix: resolve triplet/version/libc issues in builds-cacher
Three fixes to the installer resolution path:

1. Triplet enumeration order: put specific OS before ANYOS and specific
   arch before ANYARCH. This prevents .git source URLs (ANYOS/ANYARCH)
   from shadowing platform-specific binaries (jq, caddy).

2. WATERFALL libc→gnu+musl: glibc hosts ('libc' in UA) now try
   ['none', 'gnu', 'musl', 'libc'] instead of ['none', 'libc']. This
   lets packages with gnu-linked builds (bat, rg, node) and static musl
   builds (rg v15+) match for glibc hosts.

3. Version-first iteration: findMatchingPackages now iterates versions
   newest-first then tries each triplet, matching the Go resolver's
   approach. Prevents picking an ancient version from a low-priority
   triplet when a newer version exists in another triplet (e.g. rg
   v0.1.6 gnu vs v15.1.0 musl).

Tests updated: all 15 installer-resolve cases pass (was 9+6 known),
30/32 live-diff cases pass (2 known: node Linux amd64 where our code
is better than live, hugo macOS arm64 classifier limitation).
2026-03-11 16:24:33 -06:00
AJ ONeal
09311da214 test: add live-vs-local installer script diff test
Direct behavioral equivalence: fetches live installer from webinstall.dev
with same UA, compares WEBI_* variables against local serveInstaller().
Tests alias resolution (golang→go, ripgrep→rg). Marks jq as known
(.git regression in Go cache).
2026-03-11 16:24:33 -06:00
AJ ONeal
f1c5d483fd test: add comprehensive live-vs-local comparison test
Three test layers against live webinstall.dev APIs:
1. Unfiltered release API — OS/ext vocabulary, version format
2. Filtered release API — correct package for specific OS/arch
3. Installer script rendering — WEBI_* vars, download URLs

47 pass, 2 known format-preference diffs (node .pkg/.7z vs .tar.gz/.zip),
5 known Go-cache improvements (excluding .deb/.pem non-installable formats).
2026-03-11 16:24:33 -06:00
AJ ONeal
1fff212d0b docs: document libc taxonomy (none/musl/gnu/libc semantics)
none = static (no runtime dep, works everywhere)
musl = requires musl runtime (e.g. node-musl)
gnu  = requires glibc (crashes on Alpine)
libc = host UA value meaning "I have glibc"
2026-03-11 16:24:33 -06:00
AJ ONeal
dcb092fa63 ref(test): remove releases.js from expected package files
releases.js files have been deleted — packages now use Go cache files
instead of per-package upstream fetchers.
2026-03-11 16:24:33 -06:00
AJ ONeal
31600d659d fix(test): use correct default formats and document .git regression
The webinstall.dev server passes formats=['tar','exe','zip','xz','dmg']
by default — not empty. Fixed Windows UA to use 'Windows' (not
'Windows_NT'). Identified .git source URLs in Go cache as a regression
vs production (not just a priority issue). Updated PROD_NOTES.md with
webinstall.dev serve-releases.js libc bug finding.
2026-03-11 16:24:33 -06:00
AJ ONeal
94bc9b0c07 test: add installer resolution test for serve-installer.js path
Exercises the helper() function that `curl webi.sh/bat` actually hits.
9 passing, 6 known issues documented:
- WATERFALL libc->gnu gap (build-classifier submodule)
- ANYOS/ANYARCH .git source URLs matched before platform binaries
2026-03-11 16:24:33 -06:00
AJ ONeal
77a965bcba test: add API compatibility test against live webinstall.dev
Compares local cache-only output against golden data fetched from
the live API. Tests OS/arch/ext vocabulary, version format, and
filtered query results for bat, go, node, rg, jq, caddy.
2026-03-11 16:24:33 -06:00
AJ ONeal
fc7cf7b055 docs: update PROD_NOTES.md after dead code removal 2026-03-11 16:24:33 -06:00
AJ ONeal
13ea83f963 ref: remove all releases.js files and _common/ fetchers
These files are no longer loaded at runtime. All release data now comes
from _cache/YYYY-MM/{pkg}.json files generated by the Go webicached daemon.

Deleted:
- 94 {pkg}/releases.js files (per-package upstream fetchers)
- 8 _common/*.js files (github.js, gitea.js, git-tag.js, fetcher.js, etc.)

Updated:
- _webi/classify-one.js: reads from cache instead of require(releases.js)
- Fixed hardcoded triplet key to use dynamic lookup
2026-03-11 16:24:28 -06:00
AJ ONeal
073d7458e2 docs: update PROD_NOTES.md with completed migration status 2026-03-11 16:23:45 -06:00
AJ ONeal
c572bbe4ca ref(transform-releases): read from cache files instead of upstream APIs
The legacy release API endpoint now reads from _cache/YYYY-MM/{pkg}.json
instead of require()ing {pkg}/releases.js and fetching upstream.

Cache data is re-normalized through normalize.js (with pre-classified
fields cleared first) to preserve the legacy API format where darwin
is reported as 'macos', versions lack 'v' prefix, etc.

Removed: Releases.get(), stale/expired age timers, background renewal,
promise chaining, sleep/timeout workarounds.
2026-03-11 16:23:45 -06:00
AJ ONeal
0f78339725 ref(builds): replace releases.js type check with cache file check
Project type detection no longer require()s {pkg}/releases.js to
determine if a package is valid. Instead it checks for a cache file
at _cache/YYYY-MM/{pkg}.json. This means:

- Packages with Go-generated cache but no releases.js (vim plugins,
  pg-essentials, etc.) are now correctly detected as 'valid'
- The 'not_found' type (broken npm deps) is removed — no longer relevant
- releases.js files are no longer loaded at runtime for type detection
2026-03-11 16:23:45 -06:00
AJ ONeal
81c3d67a4f ref(builds): remove upstream fetching, make Node server cache-only
The Go webicached daemon now handles all upstream API fetching and cache
generation. The Node server reads only from _cache/YYYY-MM/{pkg}.json
files and never fetches from upstream APIs itself.

Removed:
- getLatestBuilds() and getLatestBuildsInner() — upstream fetch functions
- freshenRandomPackage() — background refresh timer
- Stale cache re-fetch in getPackages() process.nextTick block
- _staleAge config (no longer relevant)

When a package has no cache file, getPackages() returns empty metadata
instead of falling through to fetch.
2026-03-11 16:23:45 -06:00
AJ ONeal
910ea23cf1 docs: add HANDOFF.md for Node.js cache-only migration
Detailed instructions for the next step: making the Node.js server
read only from Go-generated _cache/ files, removing all upstream
API fetching from the Node.js code path.
2026-03-11 16:23:45 -06:00
AJ ONeal
b11bc93486 docs: update GO_WEBI.md to reflect current state
- releases.conf format updated (source inferred from key)
- Phase 1 checklist complete except resolver
- All release fetchers listed (18 source packages)
- Per-package releases packages documented
- Legacy export filtering description corrected (Variants not Extra)
- Resolved questions updated (rate limiting, config format, normalization)
- Stale open question removed (rate limiting solved via round-robin)
2026-03-11 16:23:42 -06:00
AJ ONeal
d739ca89ba fix(bun): drop .txt/.asc assets and strip .zip from release names 2026-03-09 13:23:57 -06:00
AJ ONeal
012661c935 fix(bun): only select baseline builds rather than relying on sort order 2026-03-09 13:23:57 -06:00
Tori0419
303417d513 fix(bun): prefer baseline linux releases (fix #879) 2026-03-08 22:59:30 -06:00
AJ ONeal
3e2e7f2f65 feat(monorel): add installer for monorepo release tool
Adds releases.js, install.sh, install.ps1, and README.md for monorel,
a Go monorepo release tool from therootcompany/golib. Filters monorepo
releases by tools/monorel/ prefix and auto-installs prerequisites
(git, gh, goreleaser).
2026-03-08 22:50:34 -06:00
AJ ONeal
ca81127b93 fix(docs): fix typos in goreleaser, ssh-authorize, and node READMEs
- goreleaser: "you should the git tag" → "you should see the git tag"
- ssh-authorize: "will to do" → "will be able to do"
- node: "jhint" → "jshint"
2026-03-08 19:53:26 -06:00
AJ ONeal
3c8b66be55 docs: add AGENTS.md with conventions and design principles 2026-03-08 19:53:26 -06:00
AJ ONeal
8f9b9da4a3 chore: npm run fmt 2026-03-08 19:38:49 -06:00
bry-val
81ffcf3182 doc(deno): update Hello World example to use deno.com URL
Signed-off-by: bry-val <94031627+bry-val@users.noreply.github.com>
2025-03-06 20:48:54 +00:00
AJ ONeal
3d1a75102f ref(koji): keep backwards-compat 2025-02-20 10:56:41 +00:00
Finley Thomalla
e6b3aec8c0 docs(koji): fix mistakes, improve 2025-02-20 10:48:52 +00:00
Finley Thomalla
ed8058deb8 fix(koji): update binary path
The release process of koji has been updated a while ago, resulting in the binary not being nested in the archive anymore.

Fixes cococonscious/koji#137
2025-02-20 10:48:51 +00:00
AJ ONeal
480169beac fix(terramate): link both terramate and terramate-ls 2025-02-03 21:18:43 +00:00
AJ ONeal
625168156f fix(terramate): don't exclude package files 2025-02-03 21:18:43 +00:00
Michael Dubner
75e39c54a2 fix: add '386' and 'i386' to tab regexp (fixes GH-941) 2025-01-29 22:59:56 +00:00
AJ ONeal
cac2e62da8 feat(mariadb): add mysql and mariadb-server aliases 2025-01-26 00:35:51 +00:00
AJ ONeal
b6ab62c13f feat: add MariaDB 2025-01-26 00:35:50 +00:00
AJ ONeal
d666a860d1 chore(serviceman): remove junk debug log 2025-01-25 00:18:04 +00:00
AJ ONeal
7ff40e175f ref(ssh-pubkey): switch to ed25519 as the primary algorithm 2025-01-23 22:00:30 +00:00
AJ ONeal
45e7dc314b fix(sass): manually match arches { arm: armv7, ia32: x86, x64: amd64 } 2025-01-23 06:51:45 +00:00
AJ ONeal
976602236b chore: npm run fmt 2024-12-18 22:08:20 +00:00
AJ ONeal
83a214a032 ref(terramate): mostly style updates 2024-12-18 22:08:19 +00:00
OG
cc66f930b0 feat: add terramate 2024-12-18 21:19:09 +00:00
AJ ONeal
afe35f9198 feat(node): ask to install libstdc++ on Alpine 2024-12-18 18:08:52 +00:00
AJ ONeal
910fa48278 doc(node): list node dependencies 2024-12-18 18:08:51 +00:00