browserctl 0.8.1 → 0.8.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e85e284d37a585d84857db9f02a93bc7d9aacbf5c026da8ab06559fdff121f16
4
- data.tar.gz: 76dbe3a44dee51d1c520dc0bd4d282790309efab1ecc5567fcee585b064660f1
3
+ metadata.gz: c5145a9c65fc1dc92bd238aecd15c672286dfa41005333dbaa1e6a613834c9fc
4
+ data.tar.gz: 0f1c56d87a58b41fbdea2e3ec1abf211bcf08a3677348d34565301f15bb76e96
5
5
  SHA512:
6
- metadata.gz: e66d36468423be0212176d8d40df94c5e10ba3d5f23663041b502c0d481580f94f12f308deaffac18b25fef1cc0bd644dac110e4d98ce365574ef6aa53dc4784
7
- data.tar.gz: b147ca301c15e728b9bf6e3682bcf975f7f105adadd77d62db9a6a68fa8a05cd73533562f198b0825abc99f45ee73c04cf50aa2205d840d0181f3b599e9f7093
6
+ metadata.gz: 162679d64a18bfb241ef1312a7ecfac12cc312407ccd598bc0741c2f985d1754dbdcbe00112ee2cc522a3987b88d8cd34dd4799b48651238efb548348123d58f
7
+ data.tar.gz: 710809a3eb707ad0f1f7300c77cb4b6cfdc4f631dc7f1e02b4b426262164b061d7008ba1901e501483e85a09ecb7be63fd60afa08dba9039b79670e711532fa4
data/CHANGELOG.md CHANGED
@@ -10,6 +10,13 @@ All notable changes to this project will be documented in this file.
10
10
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
11
11
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
12
12
 
13
+ ## [0.8.2](https://github.com/patrick204nqh/browserctl/compare/v0.8.1...v0.8.2) (2026-04-29)
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * v0.8.2 UX polish — describe secret_ref, fallback hint, cross-platform encrypt guidance ([#65](https://github.com/patrick204nqh/browserctl/issues/65)) ([2fe5ea4](https://github.com/patrick204nqh/browserctl/commit/2fe5ea4da0997dc2ab2c3a0696fc819e3fffca40))
19
+
13
20
  ## [0.8.1](https://github.com/patrick204nqh/browserctl/compare/v0.8.0...v0.8.1) (2026-04-29)
14
21
 
15
22
 
@@ -109,7 +109,11 @@ module Browserctl
109
109
  end
110
110
 
111
111
  def format_params(defn)
112
- defn.param_defs.transform_values { |p| { required: p.required, secret: p.secret, default: p.default } }
112
+ defn.param_defs.transform_values do |p|
113
+ entry = { required: p.required, secret: p.secret, default: p.default }
114
+ entry[:secret_ref] = p.secret_ref if p.secret_ref
115
+ entry
116
+ end
113
117
  end
114
118
  end
115
119
  end
@@ -16,9 +16,13 @@ module Browserctl
16
16
  scheme, reference = secret_ref.split("://", 2)
17
17
  resolver = @mutex.synchronize { @registry[scheme] }
18
18
  raise SecretResolverError, "unknown secret resolver scheme '#{scheme}'" unless resolver
19
+
19
20
  unless resolver.available?
20
- raise SecretResolverError,
21
- "'#{scheme}://' resolver is not available in this environment"
21
+ msg = "'#{scheme}://' resolver is not available in this environment"
22
+ if scheme == "keychain"
23
+ msg += "\n Use env://YOUR_VAR_NAME to source secrets from environment variables instead."
24
+ end
25
+ raise SecretResolverError, msg
22
26
  end
23
27
 
24
28
  resolver.resolve(reference)
@@ -39,7 +39,12 @@ module Browserctl
39
39
  def self.prepare_encryption(session_name, metadata, encrypt)
40
40
  return [nil, metadata] unless encrypt
41
41
 
42
- raise Browserctl::Error, "session encryption requires macOS Keychain (darwin only)" unless keychain_available?
42
+ unless keychain_available?
43
+ raise Browserctl::Error,
44
+ "session encryption requires macOS Keychain (darwin only)\n " \
45
+ "For Linux/CI, omit --encrypt and rely on 0o600 file permissions,\n " \
46
+ "or use BROWSERCTL_EXPORT_PASSPHRASE with session export --encrypt for portable archives."
47
+ end
43
48
 
44
49
  key = SecureRandom.bytes(32)
45
50
  keychain_store(session_name, key)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Browserctl
4
- VERSION = "0.8.1"
4
+ VERSION = "0.8.2"
5
5
  end
@@ -4,6 +4,7 @@ require "timeout"
4
4
  require_relative "client"
5
5
  require_relative "errors"
6
6
  require_relative "secret_resolvers"
7
+ require_relative "session"
7
8
 
8
9
  module Browserctl
9
10
  ParamDef = Struct.new(:name, :required, :secret, :default, :secret_ref, keyword_init: true)
@@ -76,8 +77,11 @@ module Browserctl
76
77
  invoke(fallback.to_s)
77
78
  res2 = @client.session_load(session_name)
78
79
  if res2[:error]
79
- raise WorkflowError,
80
- "session '#{session_name}' still unavailable after running fallback '#{fallback}'"
80
+ msg = "session '#{session_name}' still unavailable after running fallback '#{fallback}'"
81
+ unless Session.exist?(session_name)
82
+ msg += "\n Hint: '#{fallback}' did not call save_session(\"#{session_name}\") — add it as the last step."
83
+ end
84
+ raise WorkflowError, msg
81
85
  end
82
86
 
83
87
  res2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browserctl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick