Commit graph

365 commits

Author SHA1 Message Date
84d012dcfe Remove localStorage fallback - vault only for credentials 2026-01-23 09:52:56 -05:00
638f6c01f4 fix: add JVM exception patterns for groovy flakiness 2026-01-23 09:52:19 -05:00
GitLab CI
297858f0bb perf - Add performance report for 4.2.14 [ci skip] 2026-01-23 09:48:38 -05:00
0b618bd94e Add UnsandboxVault to sync SDK with external vault support
- 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
2026-01-23 09:46:20 -05:00
e0bb0cb6bb chore: bump version to 4.2.14 2026-01-23 09:26:25 -05:00
47db8c101a feat: add per-pool metrics tracking (ai vs cammy)
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
2026-01-23 09:26:15 -05:00
GitLab CI
55d0251e78 perf - Add performance report for 4.2.13 [ci skip] 2026-01-23 09:19:54 -05:00
f7ad5d4d25 chore: bump version to 4.2.13 2026-01-23 08:57:51 -05:00
8434928878 feat: add pool metrics collection during CI tests
Collects CPU, memory, and API latency from /cluster endpoint every 5s
during test execution. Results saved to reports/{TAG}/pool-metrics.json
2026-01-23 08:57:42 -05:00
2e44723e8e Make async JS SDK isomorphic (Node.js + Browser)
- 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.
2026-01-23 08:53:00 -05:00
5c14ccc3af perf: regenerate aggregate with just 4.2.11 and 4.2.12 baseline 2026-01-23 08:52:34 -05:00
GitLab CI
4087339356 perf: Update aggregated performance analysis [ci skip] 2026-01-23 08:30:52 -05:00
GitLab CI
7f5b0551be perf - Add performance report for 4.2.12 [ci skip] 2026-01-23 08:30:32 -05:00
310cbc84b2 feat: add --versions filter to aggregate script
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.
2026-01-23 08:22:53 -05:00
66d5cd0818 chore: bump version to 4.2.12 2026-01-23 08:20:47 -05:00
c5510100da chore: remove old aggregated report for fresh baseline 2026-01-23 08:20:38 -05:00
GitLab CI
d87401905b perf: Update aggregated performance analysis [ci skip] 2026-01-23 07:14:31 -05:00
GitLab CI
03969b43b5 perf - Add performance report for 4.2.11 [ci skip] 2026-01-23 07:14:13 -05:00
GitLab CI
06cd70d1ed perf: Update aggregated performance analysis [ci skip] 2026-01-23 06:46:38 -05:00
GitLab CI
988aa721b6 perf - Add performance report for 4.2.10 [ci skip] 2026-01-23 06:46:22 -05:00
3b843c5099 chore: bump version to 4.2.10 2026-01-23 06:35:46 -05:00
2add5f5eee feat: add pool metrics collector for CPU, memory, and latency
Collects from /cluster and /pools endpoints during test runs:
- Load average (1m, 5m, 15m)
- Memory (used_gb, available_gb, used_percent)
- Container availability (available, allocated, spawning)
- API latency (ms)
- Per-pool breakdown

Usage:
  scripts/collect-pool-metrics.sh start   # Start background collector
  scripts/collect-pool-metrics.sh stop    # Stop collector
  scripts/collect-pool-metrics.sh report  # Generate JSON report
  scripts/collect-pool-metrics.sh snapshot # One-shot current state
2026-01-23 06:35:39 -05:00
d17f326f34 fix: resolve merge conflict markers in aggregated performance report 2026-01-23 05:51:41 -05:00
GitLab CI
d3e2c99111 perf: Update aggregated performance analysis [ci skip] 2026-01-23 05:05:55 -05:00
GitLab CI
ad6923aae8 perf - Add performance report for 4.2.9 [ci skip] 2026-01-23 05:05:38 -05:00
GitLab CI
1e6f06845c perf: Update aggregated performance analysis [ci skip] 2026-01-23 05:01:59 -05:00
GitLab CI
d593a671aa perf - Add performance report for 4.2.8 [ci skip] 2026-01-23 05:01:41 -05:00
0251e66249 chore: bump version to 4.2.9 2026-01-23 04:52:39 -05:00
1150796500 fix: separate csharp and dotnet hello code
csharp (Mono) needs classic class syntax while dotnet (.NET 10) uses
top-level statements
2026-01-23 04:52:34 -05:00
bc80b16e82 chore: bump version to 4.2.8 2026-01-23 04:51:56 -05:00
8e6f6534a5 fix: add dotnet SDK mapping to test script
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
2026-01-23 04:51:47 -05:00
GitLab CI
646d980f08 perf: Update aggregated performance analysis [ci skip] 2026-01-23 04:36:41 -05:00
GitLab CI
7751529896 perf - Add performance report for 4.2.7 [ci skip] 2026-01-23 04:36:23 -05:00
3360422575 chore: bump version to 4.2.7 2026-01-23 04:27:31 -05:00
8e6b3e58a3 fix: add retry logic with exponential backoff for HTTP 429 errors in CI tests
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.
2026-01-22 17:07:52 -05:00
7e56327056 feat: add unfreeze_on_demand to remaining 35 SDKs
Updated awk, bash, clojure, cobol, cpp, crystal, csharp, dart, dotnet,
d, elixir, erlang, fortran, fsharp, groovy, haskell, julia, kotlin,
lisp, lua, nim, objective-c, ocaml, perl, php (sync+async), powershell,
prolog, raku, r, scheme, swift, tcl, v, and zig SDKs:

- Add set_unfreeze_on_demand function (PATCH /services/:id)
- Add --unfreeze-on-demand flag for service creation
- Add --set-unfreeze-on-demand command for existing services
2026-01-22 17:01:19 -05:00
e58adcd5fe feat: add unfreeze_on_demand support to all SDKs
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
2026-01-22 16:40:36 -05:00
04060aa4da feat: add .NET 10 CLI implementation
- Single-file Un.cs using modern C# features
- Top-level statements, HttpClient, System.Text.Json
- Full feature parity with Mono version (648 lines vs 1260)
- Supports execute, session, service, service env, key commands
2026-01-22 16:36:38 -05:00
a6aad7ec7b feat: add unfreeze_on_demand support to un CLI
- Add --auto-unfreeze / --no-auto-unfreeze commands to toggle setting
- Add --unfreeze-on-demand flag for service create
- Display Auto-Unfreeze status in service --info output
- Add field to unsandbox_service_t struct and API function in un.h
2026-01-22 16:27:14 -05:00
63b41b571e feat: add modern .NET 10 implementation alongside Mono
- Add dotnet/ directory with modern .NET 10 implementation
- Use HttpClient, async/await, and System.Text.Json
- Update Makefile to build both Mono and .NET versions
- Add comprehensive README documenting differences
- Both versions now supported in unsandbox-ubuntu container
2026-01-20 14:05:58 -05:00
fbd9273c3d feat: update all clients to use api.unsandbox.com/keys/validate
Change key validation endpoint from portal to API across all clients:
- C: Update PORTAL_BASE to API_BASE in validate_api_key()
- Python (sync/async): Change PORTAL_BASE to API_BASE
- Perl: Change $PORTAL_BASE to $API_BASE
- Rust (sync/async): Change hardcoded URL to api.unsandbox.com

All other languages (Go, Java, Kotlin, C#, Ruby, PHP, JavaScript) already
use their makeRequest() function with API_BASE, so no changes needed.

The key subcommand already exists and continues to work with the new endpoint.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-20 03:51:38 -05:00
63ed81e5da Revert "Reapply "chore: Remove reports directory""
This reverts commit 9cf253fb19.
2026-01-19 15:27:04 -05:00
9cf253fb19 Reapply "chore: Remove reports directory"
This reverts commit 7319c005d6.
2026-01-19 15:26:25 -05:00
7319c005d6 Revert "chore: Remove reports directory"
This reverts commit f775c86fb2.
2026-01-19 15:26:09 -05:00
f775c86fb2 chore: Remove reports directory 2026-01-19 15:25:28 -05:00
b37ce346d2 Update aggregated performance analysis with 4.2.6 release
Now analyzing 5 releases: 4.2.0, 4.2.3, 4.2.4, 4.2.5, 4.2.6

Key findings with 4.2.6 included:
- Haskell now shows 509.5% variance (21s → 128s)
- V shows 418.2% variance (22s → 114s)
- Elixir remains highly variable at 425.0% (20s → 105s)
- Average duration for 4.2.6: 54s (improvement from 4.2.5's 67s)
- Still shows non-deterministic scheduling patterns

Updated charts reflect 5-release trend analysis.
2026-01-19 15:24:52 -05:00
GitLab CI
12ea3f77f6 perf: Update aggregated performance analysis [ci skip] 2026-01-19 15:22:43 -05:00
GitLab CI
208e552927 perf - Add performance report for 4.2.6 [ci skip] 2026-01-19 15:22:27 -05:00
f68a78684b chore: Bump version to 4.2.6 2026-01-19 15:17:01 -05:00
824a555974 fix(ci): Use git stash to preserve artifacts before checking out main
Fixed perf-aggregate-report job failure caused by artifact files
conflicting with git checkout.

The issue:
- Job downloads artifacts from perf-report (reports/4.2.5/*)
- Tries to checkout main with 'git checkout -B main origin/main'
- Fails because artifact files would be overwritten

The solution:
1. Stash all artifact files and generated content
2. Checkout main branch cleanly
3. Pull latest changes from origin/main
4. Pop stash to restore artifacts
5. Add and commit aggregated report

This preserves the artifact files while properly syncing with remote main.
2026-01-19 14:15:18 -05:00