@withbuddi/buddi 0.1.0-pre.52 → 0.1.0-pre.53

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.
Files changed (164) hide show
  1. package/extension/manifest.json +2 -2
  2. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  3. package/node_modules/@buddi/install/dist/app-layout.d.ts +24 -0
  4. package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
  5. package/node_modules/@buddi/install/dist/app-layout.js +64 -2
  6. package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
  7. package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
  8. package/node_modules/@buddi/install/dist/launcher.js +89 -10
  9. package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
  10. package/node_modules/@buddi/install/dist/linux-install.d.ts +41 -0
  11. package/node_modules/@buddi/install/dist/linux-install.d.ts.map +1 -0
  12. package/node_modules/@buddi/install/dist/linux-install.js +86 -0
  13. package/node_modules/@buddi/install/dist/linux-install.js.map +1 -0
  14. package/node_modules/@buddi/install/dist/runtime-info.d.ts +23 -0
  15. package/node_modules/@buddi/install/dist/runtime-info.d.ts.map +1 -0
  16. package/node_modules/@buddi/install/dist/runtime-info.js +69 -0
  17. package/node_modules/@buddi/install/dist/runtime-info.js.map +1 -0
  18. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  19. package/node_modules/@buddi/install/dist/supervisor.js +8 -6
  20. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  21. package/node_modules/@buddi/install/dist/uninstall.d.ts +20 -0
  22. package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
  23. package/node_modules/@buddi/install/dist/uninstall.js +50 -1
  24. package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
  25. package/node_modules/@buddi/install/dist/upgrade.d.ts +4 -1
  26. package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
  27. package/node_modules/@buddi/install/dist/upgrade.js +77 -51
  28. package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
  29. package/node_modules/@hono/node-server/package.json +2 -2
  30. package/node_modules/@types/node/README.md +1 -1
  31. package/node_modules/@types/node/package.json +2 -2
  32. package/node_modules/@types/node/util.d.ts +6 -3
  33. package/node_modules/content-disposition/README.md +105 -35
  34. package/node_modules/content-disposition/dist/index.d.ts +72 -0
  35. package/node_modules/content-disposition/dist/index.js +388 -0
  36. package/node_modules/content-disposition/dist/index.js.map +1 -0
  37. package/node_modules/content-disposition/package.json +31 -19
  38. package/node_modules/docx/dist/index.cjs +182 -80
  39. package/node_modules/docx/dist/index.d.cts +63 -6
  40. package/node_modules/docx/dist/index.d.ts +63 -6
  41. package/node_modules/docx/dist/index.iife.js +182 -80
  42. package/node_modules/docx/dist/index.mjs +182 -80
  43. package/node_modules/docx/dist/index.umd.cjs +182 -80
  44. package/node_modules/docx/dist/layout.cjs +1 -6
  45. package/node_modules/docx/dist/layout.iife.js +1 -6
  46. package/node_modules/docx/dist/layout.mjs +1 -6
  47. package/node_modules/docx/dist/layout.umd.cjs +1 -6
  48. package/node_modules/docx/package.json +4 -3
  49. package/node_modules/express/Readme.md +15 -9
  50. package/node_modules/express/lib/application.js +2 -2
  51. package/node_modules/express/lib/request.js +32 -19
  52. package/node_modules/express/lib/response.js +27 -30
  53. package/node_modules/express/node_modules/content-type/LICENSE +22 -0
  54. package/node_modules/express/node_modules/content-type/README.md +71 -0
  55. package/node_modules/express/node_modules/content-type/dist/index.d.ts +46 -0
  56. package/node_modules/express/node_modules/content-type/dist/index.js +176 -0
  57. package/node_modules/express/node_modules/content-type/dist/index.js.map +1 -0
  58. package/node_modules/express/node_modules/content-type/package.json +52 -0
  59. package/node_modules/express/package.json +10 -10
  60. package/node_modules/imapflow/CHANGELOG.md +33 -0
  61. package/node_modules/imapflow/dist/cjs/commands/append.d.ts +1 -1
  62. package/node_modules/imapflow/dist/cjs/commands/append.js +15 -4
  63. package/node_modules/imapflow/dist/cjs/commands/compress.js +2 -2
  64. package/node_modules/imapflow/dist/cjs/commands/id.js +5 -3
  65. package/node_modules/imapflow/dist/cjs/commands/idle.js +9 -9
  66. package/node_modules/imapflow/dist/cjs/commands/list.js +2 -2
  67. package/node_modules/imapflow/dist/cjs/commands/namespace.js +18 -14
  68. package/node_modules/imapflow/dist/cjs/commands/quota.js +2 -3
  69. package/node_modules/imapflow/dist/cjs/commands/status.js +2 -4
  70. package/node_modules/imapflow/dist/cjs/connection-deadline.d.ts +1 -1
  71. package/node_modules/imapflow/dist/cjs/connection-deadline.js +2 -4
  72. package/node_modules/imapflow/dist/cjs/download.js +66 -35
  73. package/node_modules/imapflow/dist/cjs/errors.d.ts +15 -0
  74. package/node_modules/imapflow/dist/cjs/errors.js +22 -0
  75. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.d.ts +4 -4
  76. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +18 -18
  77. package/node_modules/imapflow/dist/cjs/handler/imap-parser.js +28 -3
  78. package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +9 -8
  79. package/node_modules/imapflow/dist/cjs/handler/limits.d.ts +1 -1
  80. package/node_modules/imapflow/dist/cjs/handler/limits.js +5 -7
  81. package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +23 -38
  82. package/node_modules/imapflow/dist/cjs/handler/token-parser.d.ts +12 -0
  83. package/node_modules/imapflow/dist/cjs/handler/token-parser.js +44 -104
  84. package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +4 -3
  85. package/node_modules/imapflow/dist/cjs/imap-flow.js +98 -72
  86. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  87. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  88. package/node_modules/imapflow/dist/cjs/proxy-connection.js +2 -5
  89. package/node_modules/imapflow/dist/cjs/search-compiler.js +2 -3
  90. package/node_modules/imapflow/dist/cjs/tools.d.ts +14 -3
  91. package/node_modules/imapflow/dist/cjs/tools.js +30 -18
  92. package/node_modules/imapflow/dist/cjs/types.d.ts +11 -0
  93. package/node_modules/imapflow/dist/esm/commands/append.d.ts +1 -1
  94. package/node_modules/imapflow/dist/esm/commands/append.js +15 -4
  95. package/node_modules/imapflow/dist/esm/commands/compress.js +2 -2
  96. package/node_modules/imapflow/dist/esm/commands/id.js +6 -4
  97. package/node_modules/imapflow/dist/esm/commands/idle.js +9 -9
  98. package/node_modules/imapflow/dist/esm/commands/list.js +3 -3
  99. package/node_modules/imapflow/dist/esm/commands/namespace.js +19 -15
  100. package/node_modules/imapflow/dist/esm/commands/quota.js +3 -4
  101. package/node_modules/imapflow/dist/esm/commands/status.js +2 -4
  102. package/node_modules/imapflow/dist/esm/connection-deadline.d.ts +1 -1
  103. package/node_modules/imapflow/dist/esm/connection-deadline.js +2 -4
  104. package/node_modules/imapflow/dist/esm/download.js +66 -35
  105. package/node_modules/imapflow/dist/esm/errors.d.ts +15 -0
  106. package/node_modules/imapflow/dist/esm/errors.js +21 -0
  107. package/node_modules/imapflow/dist/esm/handler/imap-compiler.d.ts +4 -4
  108. package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +18 -18
  109. package/node_modules/imapflow/dist/esm/handler/imap-parser.js +28 -3
  110. package/node_modules/imapflow/dist/esm/handler/imap-stream.js +9 -8
  111. package/node_modules/imapflow/dist/esm/handler/limits.d.ts +1 -1
  112. package/node_modules/imapflow/dist/esm/handler/limits.js +5 -7
  113. package/node_modules/imapflow/dist/esm/handler/parser-instance.js +23 -38
  114. package/node_modules/imapflow/dist/esm/handler/token-parser.d.ts +12 -0
  115. package/node_modules/imapflow/dist/esm/handler/token-parser.js +44 -104
  116. package/node_modules/imapflow/dist/esm/imap-flow.d.ts +4 -3
  117. package/node_modules/imapflow/dist/esm/imap-flow.js +99 -73
  118. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  119. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  120. package/node_modules/imapflow/dist/esm/proxy-connection.js +2 -5
  121. package/node_modules/imapflow/dist/esm/search-compiler.js +2 -3
  122. package/node_modules/imapflow/dist/esm/tools.d.ts +14 -3
  123. package/node_modules/imapflow/dist/esm/tools.js +30 -19
  124. package/node_modules/imapflow/dist/esm/types.d.ts +11 -0
  125. package/node_modules/imapflow/package.json +6 -3
  126. package/node_modules/process-warning/.github/workflows/ci.yml +1 -1
  127. package/node_modules/process-warning/.github/workflows/lock-threads.yml +1 -1
  128. package/node_modules/process-warning/.github/workflows/release.yml +24 -0
  129. package/node_modules/process-warning/README.md +46 -46
  130. package/node_modules/process-warning/package.json +1 -1
  131. package/package.json +2 -2
  132. package/packages/install/dist/.tsbuildinfo +1 -1
  133. package/packages/install/dist/app-layout.d.ts +24 -0
  134. package/packages/install/dist/app-layout.d.ts.map +1 -1
  135. package/packages/install/dist/app-layout.js +64 -2
  136. package/packages/install/dist/app-layout.js.map +1 -1
  137. package/packages/install/dist/launcher.d.ts.map +1 -1
  138. package/packages/install/dist/launcher.js +89 -10
  139. package/packages/install/dist/launcher.js.map +1 -1
  140. package/packages/install/dist/linux-install.d.ts +41 -0
  141. package/packages/install/dist/linux-install.d.ts.map +1 -0
  142. package/packages/install/dist/linux-install.js +86 -0
  143. package/packages/install/dist/linux-install.js.map +1 -0
  144. package/packages/install/dist/runtime-info.d.ts +23 -0
  145. package/packages/install/dist/runtime-info.d.ts.map +1 -0
  146. package/packages/install/dist/runtime-info.js +69 -0
  147. package/packages/install/dist/runtime-info.js.map +1 -0
  148. package/packages/install/dist/supervisor.d.ts.map +1 -1
  149. package/packages/install/dist/supervisor.js +8 -6
  150. package/packages/install/dist/supervisor.js.map +1 -1
  151. package/packages/install/dist/uninstall.d.ts +20 -0
  152. package/packages/install/dist/uninstall.d.ts.map +1 -1
  153. package/packages/install/dist/uninstall.js +50 -1
  154. package/packages/install/dist/uninstall.js.map +1 -1
  155. package/packages/install/dist/upgrade.d.ts +4 -1
  156. package/packages/install/dist/upgrade.d.ts.map +1 -1
  157. package/packages/install/dist/upgrade.js +77 -51
  158. package/packages/install/dist/upgrade.js.map +1 -1
  159. package/packages/web/dist/assets/{index-oxmxR39o.js → index-DgpPl0TR.js} +57 -57
  160. package/packages/web/dist/assets/{lottie_light-DROBTM6Y.js → lottie_light-twPed1FM.js} +1 -1
  161. package/packages/web/dist/build.json +1 -1
  162. package/packages/web/dist/index.html +1 -1
  163. package/packages/web/dist/precache.json +3 -3
  164. package/node_modules/content-disposition/index.js +0 -536
@@ -16,4 +16,4 @@ jobs:
16
16
  permissions:
17
17
  issues: write
18
18
  pull-requests: write
19
- uses: fastify/workflows/.github/workflows/lock-threads.yml@2073dc8e1f9e172bf42daa3843c9dbd31af1e8cb # v6.0.0
19
+ uses: fastify/workflows/.github/workflows/lock-threads.yml@ef591e2186785d5ab36b9fe6a79c7ce2f1d94e57 # v7.0.0
@@ -0,0 +1,24 @@
1
+ name: Release the package
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ semver:
7
+ description: 'Release bump type'
8
+ required: true
9
+ type: choice
10
+ options:
11
+ - patch
12
+ - minor
13
+ - major
14
+
15
+ permissions: {}
16
+
17
+ jobs:
18
+ release:
19
+ permissions:
20
+ id-token: write # required for npm provenance via OIDC
21
+ contents: write # required to push the release commit and the tag
22
+ uses: fastify/workflows/.github/workflows/reusable-release.yml@b1a11bce713bc857e52b2231fec3c89071ad3135
23
+ with:
24
+ semver: ${{ inputs.semver }}
@@ -4,18 +4,18 @@
4
4
  [![NPM version](https://img.shields.io/npm/v/process-warning.svg?style=flat)](https://www.npmjs.com/package/process-warning)
5
5
  [![neostandard javascript style](https://img.shields.io/badge/code_style-neostandard-brightgreen?style=flat)](https://github.com/neostandard/neostandard)
6
6
 
7
- A small utility for generating consistent [warning objects](https://nodejs.org/api/process.html#event-warning) across your codebase.
7
+ A small utility for generating consistent [warning objects](https://nodejs.org/api/process.html#event-warning) across a codebase.
8
8
  It also exposes a utility for emitting those warnings, guaranteeing that they are issued only once (unless configured otherwise).
9
9
 
10
- _This module is used by the [Fastify](https://fastify.dev) framework and it was called `fastify-warning` prior to version 1.0.0._
10
+ _This module is used by the [Fastify](https://fastify.dev) framework, and it was called `fastify-warning` prior to version 1.0.0._
11
11
 
12
- ### Install
12
+ ## Install
13
13
 
14
14
  ```
15
15
  npm i process-warning
16
16
  ```
17
17
 
18
- ### Usage
18
+ ## Usage
19
19
 
20
20
  The module exports two builder functions for creating warnings.
21
21
 
@@ -34,35 +34,34 @@ const warning = createWarning({
34
34
  const emitted = warning('world')
35
35
  ```
36
36
 
37
- #### Methods
37
+ ### Methods
38
38
 
39
- ##### `createWarning({ name, code, message[, unlimited] })`
39
+ #### `createWarning({name, code, message[, unlimited]})`
40
40
 
41
- - `name` (`string`, required) - The error name, you can access it later with
42
- `error.name`. For consistency, we recommend prefixing module error names
43
- with `{YourModule}Warning`
44
- - `code` (`string`, required) - The warning code, you can access it later with
45
- `error.code`. For consistency, we recommend prefixing plugin error codes with
46
- `{ThreeLetterModuleName}_`, e.g. `FST_`. NOTE: codes should be all uppercase.
47
- - `message` (`string`, required) - The warning message. You can also use
48
- interpolated strings for formatting the message.
41
+ - `name` (`string`, required) - The error name, accessible through
42
+ `error.name`. For consistency, prefix module error names with
43
+ `{ModuleName}Warning`.
44
+ - `code` (`string`, required) - The warning code, accessible through
45
+ `error.code`. For consistency, prefix plugin error codes with
46
+ `{ThreeLetterModuleName}_`, e.g. `FST_`. Note: Codes should be all uppercase.
47
+ - `message` (`string`, required) - The warning message. Interpolated strings
48
+ can also be used to format the message.
49
49
  - `options` (`object`, optional) - Optional options with the following
50
50
  properties:
51
51
  + `unlimited` (`boolean`, optional) - Should the warning be emitted more than
52
52
  once? Defaults to `false`.
53
53
 
54
-
55
- ##### `createDeprecation({code, message[, options]})`
54
+ #### `createDeprecation({ code, message[, options] })`
56
55
 
57
56
  This is a wrapper for `createWarning`. It is equivalent to invoking
58
- `createWarning` with the `name` parameter set to "DeprecationWarning".
57
+ `createWarning` with the `name` parameter set to `"DeprecationWarning"`.
59
58
 
60
59
  Deprecation warnings have extended support for the Node.js CLI options:
61
60
  `--throw-deprecation`, `--no-deprecation`, and `--trace-deprecation`.
62
61
 
63
- ##### `warning([, a [, b [, c]]])`
62
+ #### `warning([, a [, b [, c]]])`
64
63
 
65
- The returned `warning` function can used for emitting warnings.
64
+ The returned `warning` function can be used to emit warnings.
66
65
  A warning is guaranteed to be emitted at least once.
67
66
 
68
67
  - `[, a [, b [, c]]]` (`any`, optional) - Parameters for string interpolation.
@@ -73,14 +72,16 @@ const FST_ERROR_CODE = createWarning({ name: 'MyAppWarning', code: 'FST_ERROR_CO
73
72
  FST_ERROR_CODE()
74
73
  ```
75
74
 
76
- How to use an interpolated string:
75
+ Using an interpolated string:
76
+
77
77
  ```js
78
78
  const { createWarning } = require('process-warning')
79
79
  const FST_ERROR_CODE = createWarning({ name: 'MyAppWarning', code: 'FST_ERROR_CODE', message: 'Hello %s'})
80
80
  FST_ERROR_CODE('world')
81
81
  ```
82
82
 
83
- The `warning` object has methods and properties for managing the warning's state. Useful for testing.
83
+ The `warning` object has methods and properties for managing the warning's state. These are useful for testing.
84
+
84
85
  ```js
85
86
  const { createWarning } = require('process-warning')
86
87
  const FST_ERROR_CODE = createWarning({ name: 'MyAppWarning', code: 'FST_ERROR_CODE', message: 'Hello %s'})
@@ -90,20 +91,21 @@ console.log(FST_ERROR_CODE.emitted) // true
90
91
 
91
92
  const FST_ERROR_CODE_2 = createWarning('MyAppWarning', 'FST_ERROR_CODE_2', 'Hello %s')
92
93
  FST_ERROR_CODE_2.emitted = true
93
- FST_ERROR_CODE_2('world') // will not be emitted because it is not unlimited
94
+ FST_ERROR_CODE_2('world') // Will not be emitted because it is not unlimited
94
95
  ```
95
96
 
96
- How to use an unlimited warning:
97
+ Using an unlimited warning:
98
+
97
99
  ```js
98
100
  const { createWarning } = require('process-warning')
99
101
  const FST_ERROR_CODE = createWarning({ name: 'MyAppWarning', code: 'FST_ERROR_CODE', message: 'Hello %s', unlimited: true })
100
- FST_ERROR_CODE('world') // will be emitted
101
- FST_ERROR_CODE('world') // will be emitted again
102
+ FST_ERROR_CODE('world') // Will be emitted
103
+ FST_ERROR_CODE('world') // Will be emitted again
102
104
  ```
103
105
 
104
106
  #### `spyWarning(warning)`
105
107
 
106
- Spy the created warning function for testing purpose.
108
+ Spy on the created warning function for testing purposes.
107
109
 
108
110
  ```js
109
111
  const { test } = require('node:test')
@@ -113,45 +115,43 @@ const FST_ERROR_CODE = createWarning({ name: 'MyAppWarning', code: 'FST_ERROR_CO
113
115
  test('spy warning', t => {
114
116
  const spyData = spyWarning(FST_ERROR_CODE)
115
117
 
116
- // call after spy
118
+ // Call after spying
117
119
  const emitted = FST_ERROR_CODE('world')
118
120
  t.assert.strictEqual(emitted, true)
119
121
 
120
- // restore the warning function
121
- // it must be called when you do not need to spy anymore
122
- // otherwise, the calls data will accumulates.
122
+ // Restore the warning function
123
+ // This must be called when spying is no longer required
124
+ // Otherwise, the call data will accumulate
123
125
  t.after(() => spyData.restore())
124
126
 
125
127
  t.assert.strictEqual(FST_ERROR_CODE.emitted, true)
126
- // calls return the arguments and result.
127
- // result indicate whether warning is emitted through process.emitWarning
128
+ // `calls` contains the arguments and results
129
+ // `result` indicates whether the warning was emitted through `process.emitWarning`
128
130
  console.log(spyData.calls) // [{ arguments: ['world'], result: true }]
129
131
  t.assert.deepStrictEqual(spyData.calls[0].arguments, ['world'])
130
- t.assert.strictEqual(spyData.calls[0].result, true)
131
- // number of times called the function
132
+ t.assert.strictEqual(spyData.calls[0].result, true)
133
+ // Number of times the function was called
132
134
  console.log(spyData.callCount()) // 1
133
- t.assert.strictEqual(spyData.callCount(), 1)
135
+ t.assert.strictEqual(spyData.callCount(), 1)
134
136
 
135
- // reset the spy stat and warning state
137
+ // Reset the spy statistics and warning state
136
138
  spyData.reset()
137
139
  t.assert.strictEqual(FST_ERROR_CODE.emitted, false)
138
140
  t.assert.deepStrictEqual(spyData.calls, [])
139
- t.assert.strictEqual(spyData.callCount(), 0)
141
+ t.assert.strictEqual(spyData.callCount(), 0)
140
142
  })
141
143
  ```
142
144
 
143
- #### Suppressing warnings
144
-
145
- It is possible to suppress warnings by utilizing one of node's built-in warning suppression mechanisms.
145
+ ### Suppressing warnings
146
146
 
147
- Warnings can be suppressed:
147
+ Warnings can be suppressed by using one of Node.js's built-in warning suppression mechanisms:
148
148
 
149
- - by setting the `NODE_NO_WARNINGS` environment variable to `1`
150
- - by passing the `--no-warnings` flag to the node process
151
- - by setting '--no-warnings' in the `NODE_OPTIONS` environment variable
149
+ - Setting the `NODE_NO_WARNINGS` environment variable to `1`
150
+ - Passing the `--no-warnings` flag to the Node.js process
151
+ - Setting `--no-warnings` in the `NODE_OPTIONS` environment variable
152
152
 
153
- For more information see [node's documentation](https://nodejs.org/api/cli.html).
153
+ For more information, see the [Node.js documentation](https://nodejs.org/api/cli.html).
154
154
 
155
155
  ## License
156
156
 
157
- Licensed under [MIT](./LICENSE).
157
+ Licensed under [MIT](./LICENSE).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "process-warning",
3
- "version": "5.1.0",
3
+ "version": "5.1.1",
4
4
  "description": "A small utility for creating warnings and emitting them.",
5
5
  "main": "index.js",
6
6
  "type": "commonjs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@withbuddi/buddi",
3
- "version": "0.1.0-pre.52",
3
+ "version": "0.1.0-pre.53",
4
4
  "type": "module",
5
5
  "description": "Your personal agents, on your computer",
6
6
  "repository": {
@@ -17,7 +17,7 @@
17
17
  "buddi": "packages/install/dist/launcher.js"
18
18
  },
19
19
  "buddi": {
20
- "notes": "### Added\n\n- Secrets in the sign-in flow, in place: an agent on a sign-in form with nothing saved for the site calls `secret.request` and a card in the chat asks for the fields it saw (username, password), with the site as a chip. Save and fill saves them for that site and fills the form at once, one approval for the set; Save only saves and hands you the page; I'll sign in myself hands it over; More options opens a sheet beside the page with a code field and more fields. The agent hears only the names saved and whether the form was filled. The thread says \"Filled username and password on wikipedia.org\", and Keys and secrets links each saved secret back to its conversation. On Telegram the card says to open the dashboard, with Decline. `POST /api/secrets` saves a set for one site in one call; `POST /api/secrets/request/decline`.\n- Capture on the Page tab's window bar: a full-resolution PNG of the page as it is now (password fields masked), whoever holds it, saved to Files under the page's title and the time, with Open in Files. `POST /api/browser/capture`.\n- A page in your Chrome is live on the Canvas: the extension paints the agent's background tab (focus emulated, so a hidden tab paints) two frames a second while the agent works, and Take over is the remote hand there as in buddi's own browser, from your phone or any other device: the picture at the link's quality (sharp, normal, fast), clicks, wheel, keys, paste, copy (never a password field) and the window's back, forward, reload and address. **Bring the tab to the front** is the secondary action in the bar for when you are at the computer (`POST /api/browser/front`), and Capture works there too. Chrome's \"buddi started debugging this browser\" bar shows while a page is open; it goes when the page closes or you close the tab. Frames cross the extension socket as binary messages.\n- One extension, several buddis: the popup lists every buddi this Chrome works for, each with its name (from its handshake: `buddi`, `buddi-dev`), address, colour, state and a switch, plus **Add a buddi** and **Remove** per row. Each buddi has its own socket, pairing code and tab groups, named after it in its colour, and a tab belongs to exactly one of them. An existing pairing becomes the first buddi, switched on. A buddi that answers and turns this browser away (paired with another copy of the extension) says so instead of *did not answer*, and is not retried until you press Try again; a token it no longer takes is dropped for a fresh code; retries back off to 30 seconds and the popup no longer flickers; a buddi from before this release connects and says *older buddi: live view off*. Settings → Browser & apps says *paired with this buddi and 1 other* instead of asking to re-point the extension, and *off in Chrome* for a buddi switched off there.\n\n### Changed\n\n- A `secret.fill` for a site with nothing saved now tells the agent to ask with the sign-in card (`secret.request`) instead of asking you in chat where the password is; a set of secrets saved together asks once for the set the first time an agent fills it there, not once per field.\n- The Canvas no longer takes the screen from a live page. While an agent has a page open in the conversation the Page tab stays in front: results open behind it with a quiet dot that clears when you open them, and only the agent's own `canvas.show` brings something forward (on a phone the sheet behaves as before). Only results with a view open a tab at all (tables, lists, charts, stories, documents, diffs, pictures, audio, previews, terminal output, a structured result with real content); a browser step, a `secret.*` fill or list, a `mission.*` report and `owner.notify` stay in their chat row, which still opens them on the canvas. When you start a new turn, the previous turn's tabs fold into the **N more** menu unless you opened them yourself.\n- The live picture of a page you hold gets sharp on a link that keeps up: after a few seconds of frames going out promptly it grows to the page's own size (up to 1440×900) at JPEG quality 70, and steps back down on lag, waiting longer each time before trying again. The window bar says *sharp* or *fast*.\n\n### Fixed\n\n- Save and fill no longer types a password into the wrong element: fields are filled by their label on the latest page (Wikipedia's login redraws after the first fill and its refs land on the Appearance radios), a ref that names a radio, checkbox or button is refused before anything is entered, and the agent is told to observe once and fill again by label before asking you; afterwards it presses the form's sign-in button itself.\n- A login wall in buddi's browser now raises the sign-in card (the fields in the card, Save and fill, with Use my Chrome beside it when that route exists) instead of the old card whose \"Save a login for next time\" sent you to Settings; a code page's card opens the sign-in card in place. A tool call the turn never ran because it stopped on a card first reads \"not run\" instead of failed.\n- Give it back starts a turn only when an agent was waiting on the page (its card was answered with Take over, the take-over interrupted it, or it tried to act while you held the page). A page taken from an idle conversation is given back with the \"Gave the page back\" stamp and no model call.\n- Take over and Give it back no longer flash or take the page back by themselves: the Page tab ignores a status still in flight for a page it just gave back or stopped, keeps its buttons asleep until the status after the action has arrived, and keeps showing the last picture the hand drew instead of an empty frame.\n- Scrolling a page you hold no longer shakes: the wheel goes to the host once per animation frame with its deltas summed, frames are drawn in the order they came (an older one finishing its decode late is dropped), a frame that only scrolls back against your gesture waits until the gesture ends, and the dashboard no longer scrolls under the picture.\n- Cmd/Ctrl+C and Cmd/Ctrl+V work on a page you hold. Copy puts the host page's selection (or the focused field's, never a password field's) on your own clipboard instead of the headless browser's; paste fires again on macOS Chrome, where the shortcut's keydown was being cancelled before the browser could paste.\n- A question can always be answered from the chat: it now stands above any approval waiting there instead of behind it, and an approval decided elsewhere, expired, or an owner secret's use that went through (`secret.fill`) leaves the dock instead of hiding the question and the composer behind a card that drew nothing."
20
+ "notes": "### Added\n\n- Linux installs with one command and nothing from the host: `curl -fsSL https://withbuddi.com/install.sh | sh` (or `wget -qO-`) downloads `buddi-<version>-linux-<x64|arm64>.tar.gz` from the GitHub release (the Node buddi.app pins with npm beside it, the npm release, its embedded Postgres), checks its sha256, and installs it under `~/.local/share/buddi` with `buddi` in `~/.local/bin`, no sudo: a systemd user unit, lingering turned on when the system allows it (else the one sudo line), the dashboard link at the end. Running it again upgrades with a backup first and goes back if the new release does not start; updates from the dashboard or `buddi upgrade` go into `releases/` as in buddi.app; `buddi uninstall` removes the runtime, the releases, the command and the lingering too, keeping the last backup and its passphrase. An npm install in the same folder moves over with its data. The release workflow builds, smoke-installs and attaches both tarballs.\n- A desktop app for Linux, `buddi-desktop` (a .deb and an AppImage per architecture on the GitHub release; Tauri on WebKitGTK): the dashboard in its own window and a tray icon whose menu is buddi.app's (Open buddi, New Conversation, Settings…, Update to / Check for Updates…, Restart, Stop/Start, Lock, Start at Login, Advanced ▸ Open in Browser, Show Logs, Restart with the Previous Version…, Help, About, Uninstall buddi…, Quit), with New Conversation, Check for Updates and Lock on the launcher's right-click too, around the buddi `install.sh` installed, starting in the tray at login. It signs in with `buddi`'s link, shows \"Starting buddi…\" while the gateway restarts and comes back on the same page, gets a fresh link when the session expired, and shows the install line when `buddi` is missing. The microphone, notifications and the app's own calls are for the dashboard's exact origin only (another local port, such as a preview, opens in the browser); links leave for the browser on a click, http(s) only and rate-limited; downloads go to ~/Downloads. `install.sh` adds buddi to the app grid (the desktop app when it is installed, else the dashboard in the browser) and, with the desktop app installed, to autostart; `buddi uninstall` removes both.\n- `buddi doctor` says which Node runs buddi and which npm plugin installs use: the bundled runtime (buddi.app, the Linux install) or the machine's own.\n\n### Fixed\n\n- Settings → System and the owner menu say \"this computer\" instead of \"this Mac\" when buddi runs on Linux: \"Remove buddi from this computer?\", and the passphrase leaves \"buddi’s secret store\" rather than \"this Mac’s keychain\"."
21
21
  },
22
22
  "files": [
23
23
  "packages",