pumuki 6.3.241 → 6.3.243
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
|
@@ -6,6 +6,18 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [6.3.243] - 2026-05-14
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **SwiftUI relative-layout parity:** `skills.ios.guideline.ios-swiftui-expert.use-relative-layout-over-hard-coded-constants` now maps to the existing AUTO layout magic-number heuristic, turning the relative-layout guideline into runtime evidence without broad numeric-literal enforcement.
|
|
14
|
+
|
|
15
|
+
## [6.3.242] - 2026-05-14
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **SwiftUI Observable shared-state parity:** `skills.ios.guideline.ios-swiftui-expert.use-observable-for-shared-state-with-mainactor-if-not-using-default-ac` now maps to the existing AUTO `ObservableObject` heuristic, converting the shared-state migration guideline into runtime evidence without introducing actor-isolation false positives.
|
|
20
|
+
|
|
9
21
|
## [6.3.241] - 2026-05-14
|
|
10
22
|
|
|
11
23
|
### Added
|
|
@@ -90,6 +90,10 @@ const registryByRuleId: Record<string, SkillsDetectorBinding> = {
|
|
|
90
90
|
'ios.maintainability.magic-number-layout',
|
|
91
91
|
['heuristics.ios.maintainability.magic-number-layout.ast']
|
|
92
92
|
),
|
|
93
|
+
'skills.ios.guideline.ios-swiftui-expert.use-relative-layout-over-hard-coded-constants':
|
|
94
|
+
heuristicDetector('ios.maintainability.magic-number-layout', [
|
|
95
|
+
'heuristics.ios.maintainability.magic-number-layout.ast',
|
|
96
|
+
]),
|
|
93
97
|
'skills.ios.guideline.ios.prohibido-print-y-logs-ad-hoc': heuristicDetector(
|
|
94
98
|
'ios.logging.adhoc-print',
|
|
95
99
|
['heuristics.ios.logging.adhoc-print.ast']
|
|
@@ -201,6 +205,8 @@ const registryByRuleId: Record<string, SkillsDetectorBinding> = {
|
|
|
201
205
|
'skills.ios.no-observable-object': heuristicDetector('ios.observable-object', [
|
|
202
206
|
'heuristics.ios.observable-object.ast',
|
|
203
207
|
]),
|
|
208
|
+
'skills.ios.guideline.ios-swiftui-expert.use-observable-for-shared-state-with-mainactor-if-not-using-default-ac':
|
|
209
|
+
heuristicDetector('ios.observable-object', ['heuristics.ios.observable-object.ast']),
|
|
204
210
|
'skills.ios.no-legacy-swiftui-observable-wrapper': heuristicDetector(
|
|
205
211
|
'ios.legacy-swiftui-observable-wrapper',
|
|
206
212
|
['heuristics.ios.legacy-swiftui-observable-wrapper.ast']
|
|
@@ -253,6 +253,13 @@ const normalizeKnownRuleTarget = (
|
|
|
253
253
|
if (includes('observableobject') || includes('observable object')) {
|
|
254
254
|
return 'skills.ios.no-observable-object';
|
|
255
255
|
}
|
|
256
|
+
if (
|
|
257
|
+
(includes('@observable') || includes('observable')) &&
|
|
258
|
+
includes('shared state') &&
|
|
259
|
+
includes('mainactor')
|
|
260
|
+
) {
|
|
261
|
+
return 'skills.ios.guideline.ios-swiftui-expert.use-observable-for-shared-state-with-mainactor-if-not-using-default-ac';
|
|
262
|
+
}
|
|
256
263
|
if (
|
|
257
264
|
includes('observedobject') ||
|
|
258
265
|
(includes('legacy') && includes('stateobject')) ||
|
|
@@ -309,6 +316,14 @@ const normalizeKnownRuleTarget = (
|
|
|
309
316
|
if (includes('string format') || includes('string(format')) {
|
|
310
317
|
return 'skills.ios.no-string-format';
|
|
311
318
|
}
|
|
319
|
+
if (
|
|
320
|
+
includes('relative layout over hard-coded constants') ||
|
|
321
|
+
includes('relative layout over hard coded constants') ||
|
|
322
|
+
includes('hard-coded constants') ||
|
|
323
|
+
includes('hard coded constants')
|
|
324
|
+
) {
|
|
325
|
+
return 'skills.ios.guideline.ios-swiftui-expert.use-relative-layout-over-hard-coded-constants';
|
|
326
|
+
}
|
|
312
327
|
if (
|
|
313
328
|
(includes('foreach') && includes('indices')) ||
|
|
314
329
|
includes('stable identity for foreach') ||
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.243",
|
|
4
4
|
"description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
package/skills.lock.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.0",
|
|
3
3
|
"compilerVersion": "1.0.0",
|
|
4
|
-
"generatedAt": "2026-05-
|
|
4
|
+
"generatedAt": "2026-05-14T07:06:26.545Z",
|
|
5
5
|
"bundles": [
|
|
6
6
|
{
|
|
7
7
|
"name": "android-guidelines",
|
|
@@ -8620,7 +8620,7 @@
|
|
|
8620
8620
|
"name": "ios-swiftui-expert-guidelines",
|
|
8621
8621
|
"version": "1.0.0",
|
|
8622
8622
|
"source": "file:vendor/skills/swiftui-expert-skill/SKILL.md",
|
|
8623
|
-
"hash": "
|
|
8623
|
+
"hash": "32ec48aa279031b02895c91667250123eedc5c3a4ff91672316862ea2fae57c7",
|
|
8624
8624
|
"rules": [
|
|
8625
8625
|
{
|
|
8626
8626
|
"id": "skills.ios.guideline.ios-swiftui-expert.action-handlers-should-reference-methods-not-contain-inline-logic",
|
|
@@ -8895,7 +8895,7 @@
|
|
|
8895
8895
|
"sourcePath": "vendor/skills/swiftui-expert-skill/SKILL.md",
|
|
8896
8896
|
"confidence": "MEDIUM",
|
|
8897
8897
|
"locked": true,
|
|
8898
|
-
"evaluationMode": "
|
|
8898
|
+
"evaluationMode": "AUTO",
|
|
8899
8899
|
"origin": "core"
|
|
8900
8900
|
},
|
|
8901
8901
|
{
|
|
@@ -8907,7 +8907,7 @@
|
|
|
8907
8907
|
"sourcePath": "vendor/skills/swiftui-expert-skill/SKILL.md",
|
|
8908
8908
|
"confidence": "MEDIUM",
|
|
8909
8909
|
"locked": true,
|
|
8910
|
-
"evaluationMode": "
|
|
8910
|
+
"evaluationMode": "AUTO",
|
|
8911
8911
|
"origin": "core"
|
|
8912
8912
|
},
|
|
8913
8913
|
{
|