@colixsystems/widget-sdk 0.45.0 → 0.45.1

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/README.md CHANGED
@@ -49,7 +49,11 @@ See the design reference for the full architecture: [`docs/architecture/widget-m
49
49
 
50
50
  ## Status
51
51
 
52
- `v0.45.0` — pre-publish. The package surface (types, function names, export paths) is the v1 contract; runtime behaviour for some hooks is stubbed (each hook documents what's wired and what isn't). It is **not yet published to npm**.
52
+ `v0.45.1` — pre-publish. The package surface (types, function names, export paths) is the v1 contract; runtime behaviour for some hooks is stubbed (each hook documents what's wired and what isn't). It is **not yet published to npm**.
53
+
54
+ ### What's new in 0.45.1
55
+
56
+ **Fix `lucide-unknown-icon` false positive across adjacent imports (sc-1373).** The rule's import regex matched the brace block lazily (`[\s\S]*?`), so when another braced import preceded the lucide one — e.g. `import { View, Text, Pressable } from "react-native"` then `import { Sparkles } from "lucide-react-native"` — the capture spanned both and validated the `react-native` names (`Pressable`, …) as lucide icons, blocking a near-universal widget pattern. The capture is now `[^}]*`, which cannot cross a `}` into a neighbouring import. Fix-only; the rule's intent and the committed name set are unchanged.
53
57
 
54
58
  ### What's new in 0.45.0
55
59
 
package/dist/linter.cjs CHANGED
@@ -523,8 +523,11 @@ function _manifestActionRules(manifest) {
523
523
  // so the agent's repair loop fixes them. The valid set is committed data
524
524
  // (lucideIconNames.cjs) because the linter runs where lucide is not installed.
525
525
  const LUCIDE_NAME_SET = new Set(LUCIDE_ICON_NAMES);
526
+ // `[^}]*` (not `[\s\S]*?`) so the brace capture can never cross a `}` into a
527
+ // neighbouring import — otherwise a preceding `import { View, Pressable } from
528
+ // "react-native"` is swallowed and its names get validated as lucide icons.
526
529
  const LUCIDE_IMPORT_RE =
527
- /import\s+(?:[A-Za-z0-9_$]+\s*,\s*)?\{([\s\S]*?)\}\s*from\s*["']lucide-react-native["']/g;
530
+ /import\s+(?:[A-Za-z0-9_$]+\s*,\s*)?\{([^}]*)\}\s*from\s*["']lucide-react-native["']/g;
528
531
 
529
532
  // lucide re-exports each base icon as `<Name>`, `<Name>Icon`, and `Lucide<Name>`;
530
533
  // the committed set holds only the base names, so normalise the alias forms
package/dist/linter.js CHANGED
@@ -611,8 +611,11 @@ function _manifestActionRules(manifest) {
611
611
  // so the agent's repair loop fixes them. The valid set is committed data
612
612
  // (lucideIconNames.js) because the linter runs where lucide is not installed.
613
613
  const LUCIDE_NAME_SET = new Set(LUCIDE_ICON_NAMES);
614
+ // `[^}]*` (not `[\s\S]*?`) so the brace capture can never cross a `}` into a
615
+ // neighbouring import — otherwise a preceding `import { View, Pressable } from
616
+ // "react-native"` is swallowed and its names get validated as lucide icons.
614
617
  const LUCIDE_IMPORT_RE =
615
- /import\s+(?:[A-Za-z0-9_$]+\s*,\s*)?\{([\s\S]*?)\}\s*from\s*["']lucide-react-native["']/g;
618
+ /import\s+(?:[A-Za-z0-9_$]+\s*,\s*)?\{([^}]*)\}\s*from\s*["']lucide-react-native["']/g;
616
619
 
617
620
  // lucide re-exports each base icon as `<Name>`, `<Name>Icon`, and `Lucide<Name>`;
618
621
  // the committed set holds only the base names, so normalise the alias forms
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colixsystems/widget-sdk",
3
- "version": "0.45.0",
3
+ "version": "0.45.1",
4
4
  "description": "Common widget interface for AppStudio. Implements WidgetManifest, WidgetContext, property schema, and helper hooks.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",