@vc-shell/vc-app-skill 2.6.3-rc.0-pr389.27c9cf3 → 2.7.0-pr392.2aea433

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/vc-app-skill",
3
- "version": "2.6.3-rc.0-pr389.27c9cf3",
3
+ "version": "2.7.0-pr392.2aea433",
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.6.3-rc.0
1
+ 2.7.0
@@ -1 +1 @@
1
- Synced from framework at commit 72121692c on 2026-10-01T14:42:34.334Z
1
+ Synced from framework at commit 0c25dd4eb on 2026-10-26T12:24:22.743Z
@@ -75,27 +75,27 @@ None.
75
75
 
76
76
  ### Returns
77
77
 
78
- | Property | Type | Description |
79
- | ---------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
80
- | `user` | `ComputedRef<UserDetail \| undefined>` | Current user details. |
81
- | `loading` | `ComputedRef<boolean>` | Whether any operation is in progress. |
82
- | `isAdministrator` | `ComputedRef<boolean \| undefined>` | Admin status of the current user. |
83
- | `isAuthenticated` | `ComputedRef<boolean>` | Whether user session is active. |
84
- | `signIn` | `(username: string, password: string) => Promise<SignInResult \| { succeeded: boolean; error?: any }>` | Authenticates with username/password. Performs cookie-based login, obtains an OAuth token with offline_access scope, and loads user details. Returns `{ succeeded: true }` on success or `{ succeeded: false, error: string }` on failure. |
85
- | `signOut` | `() => Promise<void>` | Clears session, auth data, and localStorage. Handles both standard and external SSO sign-out. |
86
- | `loadUser` | `() => Promise<UserDetail>` | Loads/reloads user info from the server. Deduplicates concurrent calls. |
87
- | `validateToken` | `(userId: string, token: string) => Promise<boolean>` | Validates a password-reset token. Returns `true` if valid. |
88
- | `validatePassword` | `(password: string) => Promise<IdentityResult>` | Validates a password against the platform's password policy (length, complexity, etc.). |
89
- | `resetPasswordByToken` | `(userId: string, password: string, token: string) => Promise<SecurityResult>` | Resets a user's password using a reset token. Returns `{ succeeded: true }` on success. |
90
- | `requestPasswordReset` | `(loginOrEmail: string) => Promise<RequestPasswordResult>` | Sends a password-reset email to the user. Returns `{ succeeded: true }` on success. |
91
- | `changeUserPassword` | `(oldPassword: string, newPassword: string) => Promise<SecurityResult \| undefined>` | Changes the current user's password. Requires the old password for verification. |
92
- | `getLoginType` | `() => Promise<LoginType[]>` | Returns available login types (password-based, external SSO providers, etc.). Used to render the appropriate sign-in UI. |
78
+ | Property | Type | Description |
79
+ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80
+ | `user` | `ComputedRef<UserDetail \| undefined>` | Current user details. |
81
+ | `loading` | `ComputedRef<boolean>` | Whether any operation is in progress. |
82
+ | `isAdministrator` | `ComputedRef<boolean \| undefined>` | Admin status of the current user. |
83
+ | `isAuthenticated` | `ComputedRef<boolean>` | Whether user session is active. |
84
+ | `signIn` | `(username: string, password: string, rememberMe?: boolean) => Promise<SignInResult \| { succeeded: boolean; error?: any }>` | Authenticates with username/password. `rememberMe` (default `false`) asks the platform for a persistent session cookie instead of a browser-session one. Performs cookie-based login, obtains an OAuth token with offline_access scope, and loads user details. Returns `{ succeeded: true }` on success or `{ succeeded: false, error: string }` on failure. |
85
+ | `signOut` | `() => Promise<void>` | Clears session, auth data, and localStorage. Handles both standard and external SSO sign-out. |
86
+ | `loadUser` | `() => Promise<UserDetail>` | Loads/reloads user info from the server. Deduplicates concurrent calls. |
87
+ | `validateToken` | `(userId: string, token: string) => Promise<boolean>` | Validates a password-reset token. Returns `true` if valid. |
88
+ | `validatePassword` | `(password: string) => Promise<IdentityResult>` | Validates a password against the platform's password policy (length, complexity, etc.). |
89
+ | `resetPasswordByToken` | `(userId: string, password: string, token: string) => Promise<SecurityResult>` | Resets a user's password using a reset token. Returns `{ succeeded: true }` on success. |
90
+ | `requestPasswordReset` | `(loginOrEmail: string) => Promise<RequestPasswordResult>` | Sends a password-reset email to the user. Returns `{ succeeded: true }` on success. |
91
+ | `changeUserPassword` | `(oldPassword: string, newPassword: string) => Promise<SecurityResult \| undefined>` | Changes the current user's password. Requires the old password for verification. |
92
+ | `getLoginType` | `() => Promise<LoginType[]>` | Returns available login types (password-based, external SSO providers, etc.). Used to render the appropriate sign-in UI. |
93
93
 
94
94
  ## How It Works
95
95
 
96
96
  The composable reads from the singleton internal user logic (instantiated lazily on first call to `useUser()` or `useUserManagement()`). The `signIn` flow has three phases:
97
97
 
98
- 1. **Cookie login**: Calls `securityClient.login()` to establish a server-side session cookie.
98
+ 1. **Cookie login**: Calls `securityClient.login()` to establish a server-side session cookie. With `rememberMe: true` the platform issues a persistent cookie that survives closing the browser (its "Remember me"); otherwise the cookie ends with the browser session. The login page's "Remember me" checkbox sets it.
99
99
  2. **OAuth token**: Fetches an OAuth token via `POST /connect/token` with `grant_type: password` and `scope: offline_access`. The refresh token enables automatic token renewal.
100
100
  3. **User load**: Calls `securityClient.getCurrentUser()` to populate the `user` ref.
101
101
 
@@ -314,6 +314,7 @@ By default, `padded` is `true`, which adds compact padding and rounded item back
314
314
  | `emptyText` | `string` | `""` | Text shown when items array is empty |
315
315
  | `itemText` | `(item: T) => string` | -- | Maps an item to display text (default renderer only) |
316
316
  | `isItemActive` | `(item: T) => boolean` | -- | Marks the currently active item (highlighted state) |
317
+ | `isItemDisabled` | `(item: T) => boolean` | -- | Marks an item `aria-disabled`: focusable, cannot be chosen |
317
318
  | `itemKey` | `(item: T, index: number) => string \| number` | index | Unique key function for items |
318
319
  | `floating` | `boolean` | `false` | Enable floating positioning via `@floating-ui` |
319
320
  | `teleport` | `boolean` | -- | Force teleport to body (defaults to match `floating`) |
@@ -693,7 +693,7 @@ VcInput blocks the minus key for both `number` and `integer` types. If you need
693
693
  | `errorMessage` | `string` | -- | Error text shown below the field; also activates error styling when truthy |
694
694
  | `debounce` | `string \| number` | -- | Delay in ms before emitting model updates |
695
695
  | `maxlength` | `string \| number` | `"1024"` | Maximum character length |
696
- | `step` | `string` | `"1"` | Step granularity for number inputs |
696
+ | `step` | `string` | — | Step granularity, set on the native input only when given |
697
697
  | `size` | `"default" \| "small"` | `"default"` | Field height variant (36px / 32px) |
698
698
  | `multilanguage` | `boolean` | `false` | Shows a language indicator badge on the label |
699
699
  | `currentLanguage` | `string` | -- | Language code to display in the multilanguage badge |
@@ -122,6 +122,8 @@ When `expanded` is `false`, the menu shows only icons and letter abbreviations.
122
122
  - When the menu is collapsed to icons the visible title is hidden, so the button carries `aria-label` with the item title; expanded items rely on their visible text instead and set no `aria-label`
123
123
  - Icons and letter abbreviations are `aria-hidden="true"` — they are decorative next to the accessible name
124
124
  - `VcMenuGroup` with `variant="section"` renders a native button that reports `aria-expanded` and points `aria-controls` at the children wrapper it toggles
125
+ - The default `VcMenuGroup` variant reports the same state: its `VcMenuItem` header button carries `aria-expanded="true|false"` and `aria-controls`, so a collapsed group is announced as collapsed rather than as items with no state. `VcMenuItem` takes these as the `aria-expanded` / `aria-controls` props and renders them on the button itself; an item that omits them stays silent about expansion
126
+ - `VcMenuGroup` renders `data-group-id` with the `group-id` it was given, so a group can be addressed unambiguously even when it and one of its children share a `data-test-id`
125
127
  - Collapsed mode shows tooltips for discoverability (in addition to, not instead of, the accessible name)
126
128
 
127
129
  ## Related Components
@@ -284,6 +284,8 @@ The `#selected-item` slot lets you change how chips look in multiple mode:
284
284
 
285
285
  VcSelect **does not contain built-in validation**. For validation, use the `Field` wrapper from vee-validate, which manages the error state and passes it to VcSelect through the `error` and `error-message` props.
286
286
 
287
+ The hint and the error message sit in the flow below the field, as in VcInput, so a message of several lines pushes the content below it down instead of overlapping it. Earlier versions laid them over the space under the field, so a layout that reserved that space with a bottom margin can drop it now.
288
+
287
289
  ### Basic Pattern — Field + VcSelect
288
290
 
289
291
  ```vue