ucu-mcp 0.3.2 → 0.3.4
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 +30 -0
- package/dist/src/platform/macos.js +24 -32
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.4] - 2026-06-06
|
|
9
|
+
|
|
10
|
+
### Re-publish of 0.3.3
|
|
11
|
+
|
|
12
|
+
0.3.3 was published with a syntax error in the source test file
|
|
13
|
+
(`tests/unit/tools-layer.test.ts:355` was a continuation of a `//`
|
|
14
|
+
comment block that lost its `//` prefix on a hard line break, so
|
|
15
|
+
tsc parsed the second line as a bare identifier). The published
|
|
16
|
+
npm tarball was functionally correct (`dist/` was unaffected), but
|
|
17
|
+
the broken test file would fail to compile for any consumer
|
|
18
|
+
running `npm test` against the source. The fix (a single-character
|
|
19
|
+
comment prefix) was applied, but npm disallows re-publishing the
|
|
20
|
+
same version, so the fixed source ships as 0.3.4 with the same
|
|
21
|
+
contents and CHANGELOG entry as 0.3.3 plus this note.
|
|
22
|
+
|
|
23
|
+
### Yanked
|
|
24
|
+
|
|
25
|
+
`ucu-mcp@0.3.3` was unpublished (yanked) shortly after release due to
|
|
26
|
+
the test file compile error. Users on `@latest` are now on 0.3.4.
|
|
27
|
+
|
|
28
|
+
## [0.3.3] - 2026-06-06
|
|
29
|
+
|
|
30
|
+
### Tests
|
|
31
|
+
|
|
32
|
+
- `tools-layer`: three new test cases cover `wait_for_element` value+textMode combinations (contains, exact, regex). They confirm the response surfaces the matched value unchanged so the model can branch on it. (Completes Singer Item 4)
|
|
33
|
+
|
|
34
|
+
### Refactor
|
|
35
|
+
|
|
36
|
+
- JXA `textMatches` and `valueMatches` consolidated through a shared `matchesValue(filter, value, mode)` helper. No behavior change; the three branches (contains / exact / regex) now live in one place. (Completes Singer Item 8)
|
|
37
|
+
|
|
8
38
|
## [0.3.2] - 2026-06-06
|
|
9
39
|
|
|
10
40
|
### Bug fixes
|
|
@@ -863,45 +863,37 @@ export class MacOSPlatform {
|
|
|
863
863
|
}
|
|
864
864
|
}
|
|
865
865
|
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
866
|
+
// Shared filter helper. textMatches and valueMatches used to be near
|
|
867
|
+
// copies of the same three-branch dispatch (contains / exact / regex);
|
|
868
|
+
// this consolidates the logic so the two callers only differ in which
|
|
869
|
+
// sources they iterate. Declared before textMatches/valueMatches
|
|
870
|
+
// because JXA function declarations are order-sensitive within a
|
|
871
|
+
// script. (Singer Nit)
|
|
872
|
+
function matchesValue(filter, value, mode) {
|
|
873
|
+
if (filter === null) return true;
|
|
874
|
+
if (mode === "exact") {
|
|
875
|
+
return value.toLowerCase() === filter.toLowerCase();
|
|
876
|
+
} else if (mode === "regex") {
|
|
876
877
|
try {
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
if (re.test(sources[i])) return true;
|
|
880
|
-
}
|
|
881
|
-
} catch(e) {}
|
|
882
|
-
return false;
|
|
878
|
+
return new RegExp(filter, "i").test(value);
|
|
879
|
+
} catch(e) { return false; }
|
|
883
880
|
} else {
|
|
884
881
|
// contains (default)
|
|
885
|
-
|
|
886
|
-
for (var i = 0; i < sources.length; i++) {
|
|
887
|
-
if (sources[i].toLowerCase().indexOf(t) !== -1) return true;
|
|
888
|
-
}
|
|
889
|
-
return false;
|
|
882
|
+
return value.toLowerCase().indexOf(filter.toLowerCase()) !== -1;
|
|
890
883
|
}
|
|
891
884
|
}
|
|
892
885
|
|
|
893
|
-
function
|
|
894
|
-
if (
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
try {
|
|
899
|
-
return new RegExp(valueFilter, "i").test(elemValue);
|
|
900
|
-
} catch(e) { return false; }
|
|
901
|
-
} else {
|
|
902
|
-
// contains (default)
|
|
903
|
-
return elemValue.toLowerCase().indexOf(valueFilter.toLowerCase()) !== -1;
|
|
886
|
+
function textMatches(elemName, elemValue, elemDesc) {
|
|
887
|
+
if (textFilter === null) return true;
|
|
888
|
+
var sources = [elemName, elemValue, elemDesc];
|
|
889
|
+
for (var i = 0; i < sources.length; i++) {
|
|
890
|
+
if (matchesValue(textFilter, sources[i], textMode)) return true;
|
|
904
891
|
}
|
|
892
|
+
return false;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
function valueMatches(elemValue) {
|
|
896
|
+
return matchesValue(valueFilter, elemValue, textMode);
|
|
905
897
|
}
|
|
906
898
|
|
|
907
899
|
function matches(elem) {
|