runcloud 0.1.112 → 0.1.114

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -736,6 +736,9 @@ async function createSimulatorSession(platform, opts) {
736
736
  function registerSimulatorCommands(program, platform) {
737
737
  const label = platform === 'android' ? 'Android emulator' : 'iOS simulator';
738
738
  const article = platform === 'android' ? 'an' : 'an';
739
+ const orientationHelp = platform === 'ios'
740
+ ? 'portrait, landscape_left, or landscape_right; portrait_upside_down returns unsupported_action on iPhone Simulator sessions'
741
+ : 'portrait, portrait_upside_down, landscape_left, or landscape_right';
739
742
  const simulator = program
740
743
  .command(platform)
741
744
  .description(`Create, inspect, interact with, capture, and release ${label} sessions`);
@@ -864,7 +867,7 @@ function registerSimulatorCommands(program, platform) {
864
867
  .command('rotate')
865
868
  .description(`Set the absolute display orientation for ${article} ${label} session`)
866
869
  .argument('<id>', 'session id')
867
- .argument('<orientation>', 'portrait, portrait_upside_down, landscape_left, or landscape_right')).action((id, rawOrientation, opts) => action(() => runSimulatorInteraction(platform, id, {
870
+ .argument('<orientation>', orientationHelp)).action((id, rawOrientation, opts) => action(() => runSimulatorInteraction(platform, id, {
868
871
  action: 'rotate',
869
872
  orientation: simulatorOrientation(rawOrientation),
870
873
  }, opts), opts));
@@ -320,6 +320,7 @@ export function registerSandbox(program) {
320
320
  .option('--secret <group/name>', 'attach one secret out of a group; repeatable, same ordering', collectRepeatable, [])
321
321
  .option('--env <NAME=VALUE>', 'literal value for this sandbox; applied last, so it wins; repeatable', collectRepeatable, [])
322
322
  .option('--no-secrets', 'state explicitly that the sandbox holds no secrets')
323
+ .option('--tag <key=value>', 'tag the sandbox at create; repeatable. Tag it with whatever id you will have in hand later: that is how you find it again, and tags outlive the sandbox', collectRepeatable, [])
323
324
  .option('--no-wait', 'return before the sandbox finishes building and starting')).action((opts) => run(async () => {
324
325
  const exposed = opts.expose !== undefined;
325
326
  if (exposed && !opts.name) {
@@ -351,6 +352,9 @@ export function registerSandbox(program) {
351
352
  body.idlePauseSeconds = 0;
352
353
  else if (opts.idlePause !== undefined)
353
354
  body.idlePauseSeconds = opts.idlePause;
355
+ const tags = Object.fromEntries(parseTagPairs(opts.tag ?? []));
356
+ if (Object.keys(tags).length > 0)
357
+ body.tags = tags;
354
358
  Object.assign(body, secretSelector({ ...opts, noSecrets: opts.secrets === false }));
355
359
  const api = runCloudApi();
356
360
  let created = (await api.post('/run-cloud/sandboxes', body));
@@ -36,6 +36,7 @@ export function renderSandbox(record, verb = 'details') {
36
36
  { label: 'ID', value: record.id },
37
37
  { label: 'Name', value: record.name },
38
38
  { label: 'State', value: formatState(record.state) },
39
+ { label: 'Last error', value: record.last_error ?? undefined },
39
40
  { label: 'Image', value: record.image },
40
41
  { label: 'Resources', value: resources(record) },
41
42
  { label: 'Idle pause', value: formatSeconds(record.idle_pause_seconds) },
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const CLI_VERSION = '0.1.112';
1
+ export const CLI_VERSION = '0.1.114';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runcloud",
3
- "version": "0.1.112",
3
+ "version": "0.1.114",
4
4
  "description": "Create and control run.cloud remote mobile simulators and cloud sandboxes",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
Binary file
@@ -76,6 +76,10 @@ not support Digital Crown input, and Android does not support iOS render-debug
76
76
  controls or the `capsLock`, `numLock`, and `scrollLock` keys. Handle structured
77
77
  `unsupported_action` errors instead of retrying them.
78
78
 
79
+ Current iPhone Simulator sessions support `portrait`, `landscape_left`, and
80
+ `landscape_right`. The shared `portrait_upside_down` value is supported on
81
+ Android and returns a non-retryable `unsupported_action` on iOS.
82
+
79
83
  An acknowledgement means input dispatch completed. Confirm visible app effects
80
84
  with a screenshot or the signed viewer when the outcome matters.
81
85
 
Binary file