- Add UnsandboxVault for encrypted credential storage (browser only)
- Update loadCredentialsFromStorage() with 3-tier priority:
1. UnsandboxVault (own encrypted vault)
2. External vaults (window.UncloseVault for uncloseai.com)
3. Plain localStorage (legacy fallback)
- Export UnsandboxVault in both named and default exports
- Makes window.UnsandboxVault available globally in browser
Now collects separate time series for each pool:
- ai-foxhop-net: load1/5/15, available, total
- cammy-foxhop-net: load1/5/15, available, total
Saves to raw-pools.csv and includes per-pool stats in pool-metrics.json
- Add environment detection (IS_BROWSER, IS_NODE)
- Use top-level await for conditional Node.js imports
- Make signRequest async/isomorphic (Node crypto vs Web Crypto API)
- Add loadCredentialsFromStorage() for browser localStorage support
- Update resolveCredentials() with 5-tier priority including localStorage
- Add IS_NODE guards to file-system dependent functions
- Guard CLI entry point to prevent browser errors
- Update header docs with browser usage instructions
All 71 existing tests pass.
Usage: scripts/aggregate-performance-reports.py reports -v 4.2.11 4.2.12
This allows generating an aggregate report from just specific versions
instead of all reports in the directory.
The dotnet language was missing from get_sdk_file() causing tests to skip
in 5 seconds instead of running the actual SDK at clients/dotnet/sync/src/Un.cs
When fanning out SDK tests in CI, concurrent executions can hit the API's
concurrency limit (HTTP 429). Instead of immediately failing, the test
runner now retries up to 42 times with exponential backoff (2s, 4s, 8s...
capped at 30s) until the execution completes.
Updated Python, JavaScript, Go, Rust, Ruby, Java, and TypeScript SDKs:
- Add unfreeze_on_demand field to Service struct/class
- Add setUnfreezeOnDemand function to toggle setting via PATCH /services/:id
- Add unfreeze_on_demand parameter to createService function