@qvac/harness 0.8.8 → 0.8.9

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.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,23 @@ While the major version is `0`, a breaking change bumps the minor version.
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.8.9] - 2026-10-15
12
+
13
+ ### Changed
14
+
15
+ - A skill with a `display_name` answers only to that handle; a skill without
16
+ one still answers to its folder name. `@documents` resolves the word skill
17
+ and `@word` no longer does, which replaces the 0.8.8 note that both resolve.
18
+ Implicit preload skips a leading `@name`, so a handle that resolves to no
19
+ skill loads nothing, while a plain "make an excel sheet" still preloads
20
+ Spreadsheets. A paired device on an older app build still sends `@word` and
21
+ `@excel`; once the skills package declares `display_name`, a host on this
22
+ version answers those requests without the skill. (#505)
23
+ - `@qvac/skills` 0.1.15: the Word and Excel skills declare `display_name`, so
24
+ their handles are `@documents` and `@spreadsheets`. The browser skill hands a
25
+ CAPTCHA, interstitial or login page to the user instead of clicking through
26
+ or waiting, and keeps its Chrome cookies and logins across chats. (#513)
27
+
11
28
  ## [0.8.8] - 2026-10-15
12
29
 
13
30
  ### Added
@@ -1991,7 +2008,8 @@ Install 0.2.12 or later to get them.
1991
2008
  - Every dependency installs from the public npm registry: GPU stats are read
1992
2009
  through `bare-gpu-info`. (#12)
1993
2010
 
1994
- [Unreleased]: https://github.com/tetherto/qvac-harness/compare/v0.8.8...HEAD
2011
+ [Unreleased]: https://github.com/tetherto/qvac-harness/compare/v0.8.9...HEAD
2012
+ [0.8.9]: https://github.com/tetherto/qvac-harness/compare/v0.8.8...v0.8.9
1995
2013
  [0.8.8]: https://github.com/tetherto/qvac-harness/compare/v0.8.7...v0.8.8
1996
2014
  [0.8.7]: https://github.com/tetherto/qvac-harness/compare/v0.8.6...v0.8.7
1997
2015
  [0.8.6]: https://github.com/tetherto/qvac-harness/compare/v0.8.5...v0.8.6
@@ -7,7 +7,7 @@ export function resolveSkillMention(text, catalog) {
7
7
  return null;
8
8
  }
9
9
  return (catalog.find((skill) => skill.displayName?.toLowerCase() === name) ??
10
- catalog.find((skill) => skill.name.toLowerCase() === name) ??
10
+ catalog.find((skill) => !skill.displayName && skill.name.toLowerCase() === name) ??
11
11
  null);
12
12
  }
13
13
  const MIN_IMPLICIT_NAME_LENGTH = 4;
@@ -18,7 +18,12 @@ function matchesName(text, candidate) {
18
18
  }
19
19
  return true;
20
20
  }
21
+ function withoutMention(text) {
22
+ const name = skillMentionName(text);
23
+ return name ? text.trimStart().slice(name.length + 1) : text;
24
+ }
21
25
  export function resolveImplicitSkill(text, activeSkills) {
26
+ const prose = withoutMention(text);
22
27
  let best = null;
23
28
  let bestLength = 0;
24
29
  for (const skill of activeSkills) {
@@ -28,7 +33,7 @@ export function resolveImplicitSkill(text, activeSkills) {
28
33
  if (candidate.length < MIN_IMPLICIT_NAME_LENGTH) {
29
34
  continue;
30
35
  }
31
- if (!matchesName(text, candidate)) {
36
+ if (!matchesName(prose, candidate)) {
32
37
  continue;
33
38
  }
34
39
  const weight = candidate.replace(/\+/g, '').length;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qvac/harness",
3
- "version": "0.8.8",
3
+ "version": "0.8.9",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "bare": ">=1.34.0"
@@ -747,7 +747,7 @@
747
747
  "@qvac/inference": "0.21.0",
748
748
  "@qvac/langdetect-text": "0.1.2",
749
749
  "@qvac/sdk": "0.21.0",
750
- "@qvac/skills": "0.1.14",
750
+ "@qvac/skills": "0.1.15",
751
751
  "@xmldom/xmldom": "^0.9.12",
752
752
  "asenion": "^0.1.0",
753
753
  "b4a": "^1.9.0",