@vc-shell/vc-app-skill 2.0.2 → 2.0.3-pr222.ba0d3c5
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 +4 -0
- package/package.json +1 -1
- package/runtime/VERSION +1 -1
- package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +0 -28
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/dashboard-widget-skeleton.docs.md +0 -26
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.0.3](https://github.com/VirtoCommerce/vc-shell/compare/v2.0.2...v2.0.3) (2026-04-30)
|
|
4
|
+
|
|
5
|
+
**Note:** Version bump only for package @vc-shell/vc-app-skill
|
|
6
|
+
|
|
3
7
|
## [2.0.2](https://github.com/VirtoCommerce/vc-shell/compare/v2.0.1...v2.0.2) (2026-04-27)
|
|
4
8
|
|
|
5
9
|
**Note:** Version bump only for package @vc-shell/vc-app-skill
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vc-shell/vc-app-skill",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3-pr222.ba0d3c5",
|
|
4
4
|
"description": "AI coding skill for scaffolding and generating VirtoCommerce Shell applications. Works with Claude Code, OpenCode, Gemini, Codex, Cursor.",
|
|
5
5
|
"bin": "./bin/install.cjs",
|
|
6
6
|
"files": [
|
package/runtime/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.0.
|
|
1
|
+
2.0.3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Synced from framework at commit
|
|
1
|
+
Synced from framework at commit d658f5b4c on 2026-04-30T07:59:28.391Z
|
|
@@ -196,6 +196,15 @@ For read-only display, `VcField` is lighter and cleaner than a disabled `VcInput
|
|
|
196
196
|
|
|
197
197
|
The `type` prop affects rendering, not validation. Setting `type="email"` does not validate the email format -- it only renders the value as a `mailto:` link. For input validation, use VcInput with validation rules.
|
|
198
198
|
|
|
199
|
+
## Horizontal Layout Without Label
|
|
200
|
+
|
|
201
|
+
In `orientation="horizontal"` the component reserves the `aspectRatio[0]` track even when `label` is omitted. This keeps a column of `VcField`s aligned with their labeled siblings in a form grid. Use vertical orientation if you do not want this reservation.
|
|
202
|
+
|
|
203
|
+
```vue
|
|
204
|
+
<!-- Reserves the label column to align with sibling fields -->
|
|
205
|
+
<VcField orientation="horizontal" :aspect-ratio="[1, 2]" model-value="No label" />
|
|
206
|
+
```
|
|
207
|
+
|
|
199
208
|
## Related Components
|
|
200
209
|
|
|
201
210
|
- [VcInput](../vc-input/) -- editable text field (use instead when user input is needed)
|
package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# usePlatformLocaleSync
|
|
2
|
-
|
|
3
|
-
One-way reactive bridge from the VirtoCommerce platform's locale storage key (`NG_TRANSLATE_LANG_KEY`, set by AngularJS + angular-translate) to the shell's language service.
|
|
4
|
-
|
|
5
|
-
Call this composable only when the shell runs embedded inside the platform — `useShellBootstrap` invokes it automatically when `options.isEmbedded === true`. In standalone mode the shell owns its own locale via `VC_LANGUAGE_SETTINGS`, and this composable should not be used.
|
|
6
|
-
|
|
7
|
-
## When to Use
|
|
8
|
-
|
|
9
|
-
- Never call directly from feature code. This is a framework-internal sync primitive.
|
|
10
|
-
- It is invoked once per `VcApp` mount from `useShellBootstrap`.
|
|
11
|
-
|
|
12
|
-
## Behaviour
|
|
13
|
-
|
|
14
|
-
- Reads `localStorage["NG_TRANSLATE_LANG_KEY"]` via VueUse's `useLocalStorage`, which subscribes to `storage` events for cross-tab reactivity.
|
|
15
|
-
- On setup, if the value is non-empty, calls `LanguageService.setLocale(value)`. `setLocale` normalises the value (e.g. `en-US` → `en-us`), falls back to `en` for unsupported locales, updates `vue-i18n`, reconfigures `vee-validate`, and persists to `VC_LANGUAGE_SETTINGS`.
|
|
16
|
-
- On subsequent changes of the platform key, re-applies the value.
|
|
17
|
-
- Skips empty strings (platform clearing the key does not blank the shell locale).
|
|
18
|
-
- Skips values equal to `currentLocale` to avoid redundant re-configuration.
|
|
19
|
-
|
|
20
|
-
## How It Works
|
|
21
|
-
|
|
22
|
-
`useLocalStorage("NG_TRANSLATE_LANG_KEY", "")` returns a `Ref<string>` that VueUse keeps in sync with `localStorage` and the DOM `storage` event (which fires in tabs other than the writer). The composable applies the current ref value once synchronously and then registers a `watch` on it; any cross-tab mutation flows through the ref into `setLocale`.
|
|
23
|
-
|
|
24
|
-
The watcher is bound to the active effect scope (typically `VcApp`'s setup). When `VcApp` unmounts, the watcher stops; `useLocalStorage` cleans up its own `storage` listener.
|
|
25
|
-
|
|
26
|
-
## Relationship to `VC_LANGUAGE_SETTINGS`
|
|
27
|
-
|
|
28
|
-
The sync is strictly one-directional. `setLocale` writes to `VC_LANGUAGE_SETTINGS` as a side effect, but this composable never writes to `NG_TRANSLATE_LANG_KEY`. In embedded mode the in-shell `LanguageSelector` is unreachable (it lives inside `UserDropdownButton`, which is hidden when `isEmbedded` is `true`), so there is no competing writer from the shell side.
|
package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/dashboard-widget-skeleton.docs.md
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# DashboardWidgetSkeleton
|
|
2
|
-
|
|
3
|
-
Internal placeholder card used by `GridstackDashboard` while remote modules are still loading. Mimics the shape of `DashboardWidgetCard` (header with icon + title, stats row, content lines) with a shimmer animation. Not exported from `@vc-shell/framework` — consumed only inside the dashboard organism.
|
|
4
|
-
|
|
5
|
-
## When to Use
|
|
6
|
-
|
|
7
|
-
- You won't use this directly. `GridstackDashboard` renders one per `SkeletonItem` while `ModulesReadyKey` resolves to `false`.
|
|
8
|
-
- If you build a custom dashboard layout and want the same loading aesthetic, copy this file rather than importing it — the component is intentionally internal so the dashboard team can change its markup at any time.
|
|
9
|
-
|
|
10
|
-
## Layout Contract
|
|
11
|
-
|
|
12
|
-
The skeleton has no props. Its parent positions it via inline `style` (`grid-column` / `grid-row`) inside a 12-column CSS grid. Card height/width is fully determined by the grid cell it occupies, so the skeleton stretches to fill its slot.
|
|
13
|
-
|
|
14
|
-
## Accessibility
|
|
15
|
-
|
|
16
|
-
- The wrapper has `aria-hidden="true"` so screen readers ignore the visual placeholders. The parent grid carries `role="status"` + `aria-busy="true"` to announce loading state once.
|
|
17
|
-
- Shimmer animation is disabled when the user prefers reduced motion.
|
|
18
|
-
|
|
19
|
-
## Design Tokens
|
|
20
|
-
|
|
21
|
-
Skeleton inherits dashboard card tokens where possible (`--dashboard-widget-card-background`, `--dashboard-widget-card-border-color`, `--dashboard-widget-card-border-radius`, `--dashboard-widget-card-shadow`) so its silhouette matches the real card. Shimmer colors are read from `--neutrals-100` / `--neutrals-200`.
|
|
22
|
-
|
|
23
|
-
## Related
|
|
24
|
-
|
|
25
|
-
- [DraggableDashboard](./draggable-dashboard.docs.md) — owns the skeleton grid and decides when to render placeholders.
|
|
26
|
-
- [DashboardWidgetCard](../dashboard-widget-card/dashboard-widget-card.docs.md) — the real card whose shape skeletons imitate.
|