@quicktvui/ai 1.1.13 → 1.1.16
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 +1 -0
- package/USAGE.md +1 -0
- package/package.json +1 -1
- package/rules/.claude/commands/create-component.md +1 -1
- package/rules/.claude/commands/create-page.md +1 -1
- package/rules/.claude/commands/create-project.md +1 -1
- package/rules/.claude/commands/lookup-api.md +1 -1
- package/rules/.claude/commands/lookup-css.md +1 -1
- package/rules/.clinerules +23 -1
- package/rules/.cursorrules +23 -1
- package/rules/.docs/zh-CN/guide/ai/ai-assistant.md +1 -0
- package/rules/.docs/zh-CN/guide/faq/layout-style-faq.md +2 -2
- package/rules/.github/copilot-instructions.md +24 -2
- package/rules/.windsurfrules +23 -1
- package/rules/AGENTS.md +30 -1
- package/rules/AI_HANDOFF.md +27 -1
- package/rules/CLAUDE.md +31 -1
- package/rules/GEMINI.md +28 -1
package/README.md
CHANGED
|
@@ -107,6 +107,7 @@ quicktvui-ai prompt --lang zh
|
|
|
107
107
|
### 2. 严格的 CSS 子集
|
|
108
108
|
- 必须使用 `px` 单位,严禁使用 `%`, `auto`, `rem`, `vh` 等。
|
|
109
109
|
- 严禁 CSS 属性简写(如 `margin` 必须拆分为 `margin-top` 等)。
|
|
110
|
+
- 所有标签和组件都必须显式设置 `width` 和 `height`,不能依赖文本内容、父容器或自动撑开。
|
|
110
111
|
- 必须显式声明 `display: flex` 且默认方向为 `column`。
|
|
111
112
|
|
|
112
113
|
### 3. TV 特有的焦点系统
|
package/USAGE.md
CHANGED
|
@@ -61,6 +61,7 @@ quicktvui-ai doctor
|
|
|
61
61
|
当 AI 为你生成代码后,请务必核对以下关键点:
|
|
62
62
|
|
|
63
63
|
- [ ] **标签检查**:是否误用了 `p`, `img`, `h1`?(必须是 `qt-text`, `qt-image`)
|
|
64
|
+
- [ ] **尺寸检查**:所有标签和组件是否都显式设置了 `width` 和 `height`?(尤其 `div`、`span`、`qt-text`、`qt-image`、`qt-view`)
|
|
64
65
|
- [ ] **生命周期**:入口函数是否叫 `onESCreate(params)`?
|
|
65
66
|
- [ ] **返回键**:处理函数是否叫 `onBackPressed()` 且已 `return`?
|
|
66
67
|
- [ ] **焦点系统**:页面是否至少有一个元素设置了 `:autofocus="true"`?
|
package/package.json
CHANGED
package/rules/.clinerules
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: .clinerules
|
|
3
|
-
version:
|
|
3
|
+
version: 1.1.14
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# .clinerules - QuickTVUI AI Development Guide
|
|
@@ -35,6 +35,7 @@ version: 0.6.1
|
|
|
35
35
|
**STRICT RULES:**
|
|
36
36
|
- **VERIFY CAPABILITIES FIRST**: Before implementing features like "video playback," search the `node_modules/@quicktvui/ai/rules/.docs/` directory to verify component capabilities. DO NOT assume web behavior. **For example, `qt-web-view` does NOT support video playback; you MUST use the native `es-video-player` and `es-player-manager` components.**
|
|
37
37
|
- **NOT A BROWSER & NO HTML**: **This framework does NOT support HTML. Standard HTML tags (like `p`, `img`, `a`, `ul`, `li`, `h1`) are STRICTLY PROHIBITED. It does NOT support `window`, `document` (DOM), or DOM APIs. You must exclusively use framework tags (like `qt-text`, `qt-image`) and Vue `ref`s.**
|
|
38
|
+
- **EXPLICIT SIZE IS MANDATORY FOR ALL TAGS AND COMPONENTS**: Every tag and component, including `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all `qt-*` components, MUST declare explicit `width` and `height` in px. Do NOT rely on content, parent layout, or auto sizing.
|
|
38
39
|
- **NO HALLUCINATED TAGS**: e.g. `qt-web` is wrong, it is `qt-web-view`.
|
|
39
40
|
- **NO HALLUCINATED APIs**: e.g. `onBack` is wrong, it must be `onBackPressed`.
|
|
40
41
|
- **REFERENCE FIRST**: Search for component usages in the linked repositories if unsure.
|
|
@@ -82,6 +83,25 @@ Hard requirements:
|
|
|
82
83
|
- If user asks to launch a specific ES app/version/source, run:
|
|
83
84
|
`quicktvui-ai run-esapp --project <project-path> --pkg <es-package> [options]`
|
|
84
85
|
|
|
86
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
87
|
+
|
|
88
|
+
When the user asks AI to inspect runtime logs, native logs, screenshots, or target state:
|
|
89
|
+
|
|
90
|
+
1. Prefer connected `@quicktvui/ai-debug-mcp`
|
|
91
|
+
2. Otherwise use `quicktvui-ai debug-*`
|
|
92
|
+
3. Only ask the user to paste logs manually when neither path is available
|
|
93
|
+
|
|
94
|
+
Required CLI order:
|
|
95
|
+
|
|
96
|
+
1. `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
97
|
+
2. resolve `clientId`
|
|
98
|
+
3. `quicktvui-ai debug-context --client-id <clientId>`
|
|
99
|
+
4. `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
100
|
+
5. `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
101
|
+
6. `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
102
|
+
|
|
103
|
+
AI MUST NOT claim it inspected runtime data unless MCP or `quicktvui-ai debug-*` actually returned it.
|
|
104
|
+
|
|
85
105
|
|
|
86
106
|
## Game Loop & Timer Constraints (CRITICAL)
|
|
87
107
|
|
|
@@ -146,6 +166,7 @@ QuickTVUI is a Vue 3 UI framework for Android TV / large-screen devices. Runs on
|
|
|
146
166
|
### Component Names (Must be exact — no HTML tag substitutes)
|
|
147
167
|
- Image component is `qt-image` — NOT `qt-img`, NOT `<img>`
|
|
148
168
|
- Text MUST use `<qt-text>` or `<span>` — NOT `<p>`, `<h1>`~`<h6>`, `<label>`
|
|
169
|
+
- All tags and components, including `<div>`, `<span>`, `<qt-text>`, `<qt-image>`, `<qt-view>`, and all `qt-*` tags, MUST declare explicit `width` and `height` (px).
|
|
149
170
|
- Containers: `<div>`, `<qt-view>`, `<qt-row>`, `<qt-column>` — NOT `<section>`, `<main>`, `<article>`
|
|
150
171
|
- Buttons: `<qt-button>` or focusable `<div>` — NOT `<button>`
|
|
151
172
|
|
|
@@ -192,6 +213,7 @@ CORRECT — `<template>` tag attributes use camelCase:
|
|
|
192
213
|
Other CSS rules:
|
|
193
214
|
|
|
194
215
|
- **CRITICAL: NO `auto` sizing**. All elements MUST have explicit `px` values.
|
|
216
|
+
- **CRITICAL: Every tag and component MUST set explicit `width` and `height` in px.** This includes `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all other `qt-*` components.
|
|
195
217
|
- **CRITICAL: NO `alert()`**. Use `useESToast().showToast()` instead.
|
|
196
218
|
- **CRITICAL: NO `e.preventDefault()`** or `e.stopPropagation()`. These do not exist in the native event system.
|
|
197
219
|
- **CRITICAL: NO `window` or `document` (DOM) objects**. The runtime is not a browser.
|
package/rules/.cursorrules
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: .cursorrules
|
|
3
|
-
version:
|
|
3
|
+
version: 1.1.14
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# .cursorrules - QuickTVUI AI Development Guide
|
|
@@ -35,6 +35,7 @@ version: 0.6.1
|
|
|
35
35
|
**STRICT RULES:**
|
|
36
36
|
- **VERIFY CAPABILITIES FIRST**: Before implementing features like "video playback," search the `node_modules/@quicktvui/ai/rules/.docs/` directory to verify component capabilities. DO NOT assume web behavior. **For example, `qt-web-view` does NOT support video playback; you MUST use the native `es-video-player` and `es-player-manager` components.**
|
|
37
37
|
- **NOT A BROWSER & NO HTML**: **This framework does NOT support HTML. Standard HTML tags (like `p`, `img`, `a`, `ul`, `li`, `h1`) are STRICTLY PROHIBITED. It does NOT support `window`, `document` (DOM), or DOM APIs. You must exclusively use framework tags (like `qt-text`, `qt-image`) and Vue `ref`s.**
|
|
38
|
+
- **EXPLICIT SIZE IS MANDATORY FOR ALL TAGS AND COMPONENTS**: Every tag and component, including `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all `qt-*` components, MUST declare explicit `width` and `height` in px. Do NOT rely on content, parent layout, or auto sizing.
|
|
38
39
|
- **NO HALLUCINATED TAGS**: e.g. `qt-web` is wrong, it is `qt-web-view`.
|
|
39
40
|
- **NO HALLUCINATED APIs**: e.g. `onBack` is wrong, it must be `onBackPressed`.
|
|
40
41
|
- **REFERENCE FIRST**: Search for component usages in the linked repositories if unsure.
|
|
@@ -82,6 +83,25 @@ Hard requirements:
|
|
|
82
83
|
- If user asks to launch a specific ES app/version/source, run:
|
|
83
84
|
`quicktvui-ai run-esapp --project <project-path> --pkg <es-package> [options]`
|
|
84
85
|
|
|
86
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
87
|
+
|
|
88
|
+
When the user asks AI to inspect runtime logs, native logs, screenshots, or target state:
|
|
89
|
+
|
|
90
|
+
1. Prefer connected `@quicktvui/ai-debug-mcp`
|
|
91
|
+
2. Otherwise use `quicktvui-ai debug-*`
|
|
92
|
+
3. Only ask the user to paste logs manually when neither path is available
|
|
93
|
+
|
|
94
|
+
Required CLI order:
|
|
95
|
+
|
|
96
|
+
1. `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
97
|
+
2. resolve `clientId`
|
|
98
|
+
3. `quicktvui-ai debug-context --client-id <clientId>`
|
|
99
|
+
4. `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
100
|
+
5. `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
101
|
+
6. `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
102
|
+
|
|
103
|
+
AI MUST NOT claim it inspected runtime data unless MCP or `quicktvui-ai debug-*` actually returned it.
|
|
104
|
+
|
|
85
105
|
|
|
86
106
|
## Game Loop & Timer Constraints (CRITICAL)
|
|
87
107
|
|
|
@@ -147,6 +167,7 @@ QuickTVUI is a Vue 3 UI framework for Android TV / large-screen devices. Runs on
|
|
|
147
167
|
### Component Names (Must be exact — no HTML tag substitutes)
|
|
148
168
|
- Image component is `qt-image` — NOT `qt-img`, NOT `<img>`
|
|
149
169
|
- Text MUST use `<qt-text>` or `<span>` — NOT `<p>`, `<h1>`~`<h6>`, `<label>`
|
|
170
|
+
- All tags and components, including `<div>`, `<span>`, `<qt-text>`, `<qt-image>`, `<qt-view>`, and all `qt-*` tags, MUST declare explicit `width` and `height` (px).
|
|
150
171
|
- Containers: `<div>`, `<qt-view>`, `<qt-row>`, `<qt-column>` — NOT `<section>`, `<main>`, `<article>`
|
|
151
172
|
- Buttons: `<qt-button>` or focusable `<div>` — NOT `<button>`
|
|
152
173
|
|
|
@@ -193,6 +214,7 @@ CORRECT — `<template>` tag attributes use camelCase:
|
|
|
193
214
|
Other CSS rules:
|
|
194
215
|
|
|
195
216
|
- **CRITICAL: NO `auto` sizing**. All elements MUST have explicit `px` values.
|
|
217
|
+
- **CRITICAL: Every tag and component MUST set explicit `width` and `height` in px.** This includes `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all other `qt-*` components.
|
|
196
218
|
- **CRITICAL: NO `alert()`**. Use `useESToast().showToast()` instead.
|
|
197
219
|
- **CRITICAL: NO `e.preventDefault()`** or `e.stopPropagation()`. These do not exist in the native event system.
|
|
198
220
|
- **CRITICAL: NO `window` or `document` (DOM) objects**. The runtime is not a browser.
|
|
@@ -56,6 +56,7 @@ quicktvui-ai doctor
|
|
|
56
56
|
当 AI 为你生成代码后,请务必核对以下关键点:
|
|
57
57
|
|
|
58
58
|
- **标签检查**:是否误用了 `p`, `img`, `h1`?(必须是 `qt-text`, `qt-image`)
|
|
59
|
+
- **尺寸检查**:所有标签和组件是否都显式设置了 `width` 和 `height`?(尤其 `div`、`span`、`qt-text`、`qt-image`、`qt-view`)
|
|
59
60
|
- **生命周期**:入口函数是否叫 `onESCreate(params)`?
|
|
60
61
|
- **返回键**:处理函数是否叫 `onBackPressed()` 且已 `return`?
|
|
61
62
|
- **焦点系统**:页面是否至少有一个元素设置了 `:autofocus="true"`?
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: copilot-instructions.md
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.16
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# copilot-instructions.md - QuickTVUI AI Development Guide
|
|
@@ -35,6 +35,7 @@ version: 1.1.13
|
|
|
35
35
|
**STRICT RULES:**
|
|
36
36
|
- **VERIFY CAPABILITIES FIRST**: Before implementing features like "video playback," search the `node_modules/@quicktvui/ai/rules/.docs/` directory to verify component capabilities. DO NOT assume web behavior. **For example, `qt-web-view` does NOT support video playback; you MUST use the native `es-video-player` and `es-player-manager` components.**
|
|
37
37
|
- **NOT A BROWSER & NO HTML**: **This framework does NOT support HTML. Standard HTML tags (like `p`, `img`, `a`, `ul`, `li`, `h1`) are STRICTLY PROHIBITED. It does NOT support `window`, `document` (DOM), or DOM APIs. You must exclusively use framework tags (like `qt-text`, `qt-image`) and Vue `ref`s.**
|
|
38
|
+
- **EXPLICIT SIZE IS MANDATORY FOR ALL TAGS AND COMPONENTS**: Every tag and component, including `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all `qt-*` components, MUST declare explicit `width` and `height` in px. Do NOT rely on content, parent layout, or auto sizing.
|
|
38
39
|
- **NO HALLUCINATED TAGS**: e.g. `qt-web` is wrong, it is `qt-web-view`.
|
|
39
40
|
- **NO HALLUCINATED APIs**: e.g. `onBack` is wrong, it must be `onBackPressed`.
|
|
40
41
|
- **REFERENCE FIRST**: Search for component usages in the linked repositories if unsure.
|
|
@@ -48,6 +49,25 @@ When asked to create a new QuickTVUI project, you MUST NOT generate a generic Vu
|
|
|
48
49
|
4. **Install Deps**: `yarn install`
|
|
49
50
|
5. **Setup Reminder**: Remind the user to run `npm install -g @quicktvui/cli@latest` and `qui setup` if they haven't configured the environment (see https://quicktvui.com/zh-CN/guide/basic/quick-start.html).
|
|
50
51
|
|
|
52
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
53
|
+
|
|
54
|
+
When the task is to inspect a running QuickTVUI app, AI MUST use this priority:
|
|
55
|
+
|
|
56
|
+
1. MCP first, if `@quicktvui/ai-debug-mcp` is connected.
|
|
57
|
+
2. Otherwise use `quicktvui-ai debug-*` commands against `ESDebugServer`.
|
|
58
|
+
3. Only ask the user to paste logs manually if neither tool path is available.
|
|
59
|
+
|
|
60
|
+
Required CLI sequence:
|
|
61
|
+
|
|
62
|
+
- `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
63
|
+
- select `clientId`
|
|
64
|
+
- `quicktvui-ai debug-context --client-id <clientId>`
|
|
65
|
+
- `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
66
|
+
- `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
67
|
+
- `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
68
|
+
|
|
69
|
+
AI MUST NOT say it has checked logs/screenshots unless one of those MCP/CLI reads actually succeeded.
|
|
70
|
+
|
|
51
71
|
|
|
52
72
|
## Game Loop & Timer Constraints (CRITICAL)
|
|
53
73
|
|
|
@@ -115,6 +135,7 @@ QuickTVUI is a Vue 3 UI framework for Android TV / large-screen devices. Runs on
|
|
|
115
135
|
|
|
116
136
|
- Image component is `qt-image` — NOT `qt-img`, NOT `<img>`
|
|
117
137
|
- Text MUST use `<qt-text>` or `<span>` — NOT `<p>`, `<h1>`~`<h6>`, `<label>`
|
|
138
|
+
- All tags and components, including `<div>`, `<span>`, `<qt-text>`, `<qt-image>`, `<qt-view>`, and all `qt-*` tags, MUST declare explicit `width` and `height` (px).
|
|
118
139
|
- Containers: `<div>`, `<qt-view>`, `<qt-row>`, `<qt-column>` — NOT `<section>`, `<main>`, `<article>`
|
|
119
140
|
- Buttons: `<qt-button>` or focusable `<div>` — NOT `<button>`
|
|
120
141
|
|
|
@@ -165,6 +186,7 @@ CORRECT — `<template>` tag attributes use camelCase:
|
|
|
165
186
|
Other CSS rules:
|
|
166
187
|
|
|
167
188
|
- **CRITICAL: NO `auto` sizing**. All elements MUST have explicit `px` values.
|
|
189
|
+
- **CRITICAL: Every tag and component MUST set explicit `width` and `height` in px.** This includes `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all other `qt-*` components.
|
|
168
190
|
- **CRITICAL: NO `alert()`**. Use `useESToast().showToast()` instead.
|
|
169
191
|
- **CRITICAL: NO `e.preventDefault()`** or `e.stopPropagation()`. These do not exist in the native event system.
|
|
170
192
|
- **CRITICAL: NO `window` or `document` (DOM) objects**. The runtime is not a browser.
|
|
@@ -511,4 +533,4 @@ AI MUST understand the mapping between Vue components and Java Native controller
|
|
|
511
533
|
| **(Deprecated)** | `Text` | `com.tencent.mtt.hippy.views.text.HippyTextViewController` | **DEPRECATED** |
|
|
512
534
|
| **(Deprecated)** | `ListView` | `com.tencent.mtt.hippy.views.list.HippyListViewController` | **DEPRECATED** |
|
|
513
535
|
|
|
514
|
-
**Rule**: Always prefer source code in `.source/hippy/extend_views/`. Use `.source/hippy/hippy_views/` only as a secondary fallback.
|
|
536
|
+
**Rule**: Always prefer source code in `.source/hippy/extend_views/`. Use `.source/hippy/hippy_views/` only as a secondary fallback.
|
package/rules/.windsurfrules
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: .windsurfrules
|
|
3
|
-
version:
|
|
3
|
+
version: 1.1.14
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# .windsurfrules - QuickTVUI AI Development Guide
|
|
@@ -35,6 +35,7 @@ version: 0.6.1
|
|
|
35
35
|
**STRICT RULES:**
|
|
36
36
|
- **VERIFY CAPABILITIES FIRST**: Before implementing features like "video playback," search the `node_modules/@quicktvui/ai/rules/.docs/` directory to verify component capabilities. DO NOT assume web behavior. **For example, `qt-web-view` does NOT support video playback; you MUST use the native `es-video-player` and `es-player-manager` components.**
|
|
37
37
|
- **NOT A BROWSER & NO HTML**: **This framework does NOT support HTML. Standard HTML tags (like `p`, `img`, `a`, `ul`, `li`, `h1`) are STRICTLY PROHIBITED. It does NOT support `window`, `document` (DOM), or DOM APIs. You must exclusively use framework tags (like `qt-text`, `qt-image`) and Vue `ref`s.**
|
|
38
|
+
- **EXPLICIT SIZE IS MANDATORY FOR ALL TAGS AND COMPONENTS**: Every tag and component, including `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all `qt-*` components, MUST declare explicit `width` and `height` in px. Do NOT rely on content, parent layout, or auto sizing.
|
|
38
39
|
- **NO HALLUCINATED TAGS**: e.g. `qt-web` is wrong, it is `qt-web-view`.
|
|
39
40
|
- **NO HALLUCINATED APIs**: e.g. `onBack` is wrong, it must be `onBackPressed`.
|
|
40
41
|
- **REFERENCE FIRST**: Search for component usages in the linked repositories if unsure.
|
|
@@ -82,6 +83,25 @@ Hard requirements:
|
|
|
82
83
|
- If user asks to launch a specific ES app/version/source, run:
|
|
83
84
|
`quicktvui-ai run-esapp --project <project-path> --pkg <es-package> [options]`
|
|
84
85
|
|
|
86
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
87
|
+
|
|
88
|
+
When the user asks AI to inspect runtime logs, native logs, screenshots, or target state:
|
|
89
|
+
|
|
90
|
+
1. Prefer connected `@quicktvui/ai-debug-mcp`
|
|
91
|
+
2. Otherwise use `quicktvui-ai debug-*`
|
|
92
|
+
3. Only ask the user to paste logs manually when neither path is available
|
|
93
|
+
|
|
94
|
+
Required CLI order:
|
|
95
|
+
|
|
96
|
+
1. `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
97
|
+
2. resolve `clientId`
|
|
98
|
+
3. `quicktvui-ai debug-context --client-id <clientId>`
|
|
99
|
+
4. `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
100
|
+
5. `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
101
|
+
6. `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
102
|
+
|
|
103
|
+
AI MUST NOT claim it inspected runtime data unless MCP or `quicktvui-ai debug-*` actually returned it.
|
|
104
|
+
|
|
85
105
|
|
|
86
106
|
## Game Loop & Timer Constraints (CRITICAL)
|
|
87
107
|
|
|
@@ -146,6 +166,7 @@ QuickTVUI is a Vue 3 UI framework for Android TV / large-screen devices. Runs on
|
|
|
146
166
|
### Component Names (Must be exact — no HTML tag substitutes)
|
|
147
167
|
- Image component is `qt-image` — NOT `qt-img`, NOT `<img>`
|
|
148
168
|
- Text MUST use `<qt-text>` or `<span>` — NOT `<p>`, `<h1>`~`<h6>`, `<label>`
|
|
169
|
+
- All tags and components, including `<div>`, `<span>`, `<qt-text>`, `<qt-image>`, `<qt-view>`, and all `qt-*` tags, MUST declare explicit `width` and `height` (px).
|
|
149
170
|
- Containers: `<div>`, `<qt-view>`, `<qt-row>`, `<qt-column>` — NOT `<section>`, `<main>`, `<article>`
|
|
150
171
|
- Buttons: `<qt-button>` or focusable `<div>` — NOT `<button>`
|
|
151
172
|
|
|
@@ -192,6 +213,7 @@ CORRECT — `<template>` tag attributes use camelCase:
|
|
|
192
213
|
Other CSS rules:
|
|
193
214
|
|
|
194
215
|
- **CRITICAL: NO `auto` sizing**. All elements MUST have explicit `px` values.
|
|
216
|
+
- **CRITICAL: Every tag and component MUST set explicit `width` and `height` in px.** This includes `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all other `qt-*` components.
|
|
195
217
|
- **CRITICAL: NO `alert()`**. Use `useESToast().showToast()` instead.
|
|
196
218
|
- **CRITICAL: NO `e.preventDefault()`** or `e.stopPropagation()`. These do not exist in the native event system.
|
|
197
219
|
- **CRITICAL: NO `window` or `document` (DOM) objects**. The runtime is not a browser.
|
package/rules/AGENTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: AGENTS.md
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.16
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# AGENTS.md - QuickTVUI AI Development Guide
|
|
@@ -35,6 +35,7 @@ version: 1.1.13
|
|
|
35
35
|
**STRICT RULES:**
|
|
36
36
|
- **VERIFY CAPABILITIES FIRST**: Before implementing features like "video playback," search the `node_modules/@quicktvui/ai/rules/.docs/` directory to verify component capabilities. DO NOT assume web behavior. **For example, `qt-web-view` does NOT support video playback; you MUST use the native `es-video-player` and `es-player-manager` components.**
|
|
37
37
|
- **NOT A BROWSER & NO HTML**: **This framework does NOT support HTML. Standard HTML tags (like `p`, `img`, `a`, `ul`, `li`, `h1`) are STRICTLY PROHIBITED. It does NOT support `window`, `document` (DOM), or DOM APIs. You must exclusively use framework tags (like `qt-text`, `qt-image`) and Vue `ref`s.**
|
|
38
|
+
- **EXPLICIT SIZE IS MANDATORY FOR ALL TAGS AND COMPONENTS**: Every tag and component, including `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all `qt-*` components, MUST declare explicit `width` and `height` in px. Do NOT rely on content, parent layout, or auto sizing.
|
|
38
39
|
- **NO HALLUCINATED TAGS**: e.g. `qt-web` is wrong, it is `qt-web-view`.
|
|
39
40
|
- **NO HALLUCINATED APIs**: e.g. `onBack` is wrong, it must be `onBackPressed`.
|
|
40
41
|
- **REFERENCE FIRST**: Search for component usages in the linked repositories if unsure.
|
|
@@ -114,6 +115,32 @@ Hard requirements:
|
|
|
114
115
|
- If user asks to launch a specific ES app/version/source, run:
|
|
115
116
|
`quicktvui-ai run-esapp --project <project-path> --pkg <es-package> [options]`
|
|
116
117
|
|
|
118
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
119
|
+
|
|
120
|
+
When the user asks AI to inspect runtime logs, native logs, screenshots, recent errors, or current target state for a running QuickTVUI app, AI MUST use this priority:
|
|
121
|
+
|
|
122
|
+
1. Prefer MCP resources/tools when `@quicktvui/ai-debug-mcp` is connected.
|
|
123
|
+
2. If MCP is unavailable but shell/CLI execution is available, AI MUST use `quicktvui-ai debug-*` commands against the running `ESDebugServer`.
|
|
124
|
+
3. Only if neither MCP nor CLI execution is available may AI ask the user to paste logs manually.
|
|
125
|
+
|
|
126
|
+
Required non-MCP command order:
|
|
127
|
+
|
|
128
|
+
1. `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
129
|
+
2. Choose `clientId`
|
|
130
|
+
- If only one target exists, AI MAY use it directly.
|
|
131
|
+
- If multiple targets exist, AI MUST ask user to confirm the right `clientId`.
|
|
132
|
+
3. `quicktvui-ai debug-context --client-id <clientId>`
|
|
133
|
+
4. `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
134
|
+
5. `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
135
|
+
6. `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
136
|
+
|
|
137
|
+
Hard requirements:
|
|
138
|
+
|
|
139
|
+
- AI MUST NOT claim it has inspected Chrome logs, Android native logs, target context, or screenshots unless MCP or `quicktvui-ai debug-*` actually returned data.
|
|
140
|
+
- If `debug-targets` returns an empty list, AI MUST clearly state that no active `ESDebugServer /ai/targets` are available yet.
|
|
141
|
+
- If `debug-native-logs` or `debug-screenshot` fails, AI MUST report the concrete command/error instead of fabricating fallback observations.
|
|
142
|
+
- When user asks for a screenshot and CLI mode is used, AI SHOULD prefer the file path returned by `quicktvui-ai debug-screenshot` rather than asking the user to locate the image manually.
|
|
143
|
+
|
|
117
144
|
## 🔥 ARCHITECTURAL GOTCHAS (CRITICAL)
|
|
118
145
|
|
|
119
146
|
AI assistants frequently fail by applying traditional Web paradigms to QuickTVUI. **You MUST memorize these constraints**:
|
|
@@ -172,6 +199,7 @@ QuickTVUI is a Vue 3 UI framework for Android TV / large-screen devices. Runs on
|
|
|
172
199
|
|
|
173
200
|
- Image component is `qt-image` — NOT `qt-img`, NOT `<img>`
|
|
174
201
|
- Text MUST use `<qt-text>` or `<span>` — NOT `<p>`, `<h1>`~`<h6>`, `<label>`
|
|
202
|
+
- All tags and components, including `<div>`, `<span>`, `<qt-text>`, `<qt-image>`, `<qt-view>`, and all `qt-*` tags, MUST declare explicit `width` and `height` (px).
|
|
175
203
|
- Containers: `<div>`, `<qt-view>`, `<qt-row>`, `<qt-column>` — NOT `<section>`, `<main>`, `<article>`
|
|
176
204
|
- Buttons: `<qt-button>` or focusable `<div>` — NOT `<button>`
|
|
177
205
|
|
|
@@ -228,6 +256,7 @@ CORRECT — `<template>` tag attributes use camelCase:
|
|
|
228
256
|
|
|
229
257
|
Other CSS rules:
|
|
230
258
|
|
|
259
|
+
- **CRITICAL: Every tag and component MUST set explicit `width` and `height` in px.** This includes `div`, `span`, `qt-text`, `qt-image`, `qt-view`, and all other `qt-*` components.
|
|
231
260
|
- **CRITICAL: MANDATORY `display: flex;`**. QuickTVUI exclusively supports Flexbox layout. Every styled element MUST explicitly include `display: flex;`. The default orientation is `flex-direction: column;`.
|
|
232
261
|
- Only use properties listed in "Supported Style Properties" section below
|
|
233
262
|
- Do NOT use `<style scoped>` (unreliable in native rendering)
|
package/rules/AI_HANDOFF.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: AI_HANDOFF.md
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.16
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# QuickTVUI AI 集成 - 工作交接文档
|
|
@@ -20,6 +20,7 @@ version: 1.1.13
|
|
|
20
20
|
**要求:**
|
|
21
21
|
- **检索与能力验证优先**:在实现任何功能(如“视频播放”)前,必须先在 `node_modules/@quicktvui/ai/rules/.docs/` 目录中检索相关文档,验证组件是否支持该功能。切勿想当然!**例如:`qt-web-view` 绝对不支持视频播放,视频播放必须使用框架提供的专用视频组件和管理器(如 `es-video-player` 和 `es-player-manager`)。**
|
|
22
22
|
- **非浏览器与无 HTML 环境**:**本框架绝对不支持标准 HTML 标签(如 `p`, `img`, `a`, `ul`, `li`, `h1` 等),严禁在模板中使用!绝对不支持 `window`、`document` (DOM) 对象或任何 DOM 操作 API。必须使用框架专属标签(如 `qt-text`, `qt-image`)和 Vue `ref`。**
|
|
23
|
+
- **标签与组件尺寸强约束**:所有标签和组件都必须显式设置 `width` 和 `height`(px),包括 `div`、`span`、`qt-text`、`qt-image`、`qt-view` 以及所有 `qt-*` 组件。不能依赖内容、父容器或自动撑开。
|
|
23
24
|
- **严禁自造标签**:如 `qt-web` 是错的,官方示例中是 `qt-web-view`。
|
|
24
25
|
- **严禁自造 API**:如 `onBack` 是错的,必须是 `onBackPressed`。
|
|
25
26
|
- **参考优先**:遇到不确定的组件用法,必须先在上述仓库中搜索同名组件的实际用法。
|
|
@@ -41,6 +42,7 @@ AI 在编写业务逻辑时,极易带入传统 Web 开发习惯导致严重报
|
|
|
41
42
|
4. **CSS 严格子集**:
|
|
42
43
|
* 不支持任何 CSS 简写(例如 `margin: 10px` 必崩,必须写 `margin-top: 10px; margin-left: 10px;`)。
|
|
43
44
|
* 不支持 `auto`,不支持 `%`。所有组件**必须显式定义宽高**(`width` / `height` 赋明确的 px 值)。
|
|
45
|
+
* 所有标签和组件都要遵守这个硬约束:生成代码时必须显式声明 `width` 和 `height`,不能依赖文案长度、父容器或 `autoWidth` / `autoHeight` 自动撑开。
|
|
44
46
|
|
|
45
47
|
## 快速创建项目 (Scaffolding)
|
|
46
48
|
|
|
@@ -59,6 +61,30 @@ AI 在编写业务逻辑时,极易带入传统 Web 开发习惯导致严重报
|
|
|
59
61
|
- 不得在未检查 CLI 能力前直接进入 `yarn dev` / 手写 `adb` 流程。
|
|
60
62
|
- 若某一步骤在 `quicktvui-ai-cli` 中不存在对应命令,AI 必须先明确说明“CLI 暂不支持该步骤”,再走手工兜底流程。
|
|
61
63
|
|
|
64
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
65
|
+
|
|
66
|
+
对于“读取运行中应用调试数据”的任务,后续 AI 必须统一遵循以下优先级:
|
|
67
|
+
|
|
68
|
+
1. 优先使用 `@quicktvui/ai-debug-mcp`
|
|
69
|
+
2. 没有 MCP 时,使用 `quicktvui-ai debug-*`
|
|
70
|
+
3. 两者都不可用时,才要求用户手工提供日志或截图
|
|
71
|
+
|
|
72
|
+
当前约定的非 MCP 命令链路:
|
|
73
|
+
|
|
74
|
+
1. `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
75
|
+
2. 选择或确认 `clientId`
|
|
76
|
+
3. `quicktvui-ai debug-context --client-id <clientId>`
|
|
77
|
+
4. `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
78
|
+
5. `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
79
|
+
6. `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
80
|
+
|
|
81
|
+
接手注意事项:
|
|
82
|
+
|
|
83
|
+
- 未通过 MCP 或 `quicktvui-ai debug-*` 真正读取到数据前,不得宣称“已检查运行时日志/截图”
|
|
84
|
+
- `debug-targets` 返回空数组时,应先回到 run/dev 链路,确认 `ESDebugServer /ai/targets` 已建立
|
|
85
|
+
- `debug-screenshot` 默认会把图片写到 `<project>/.quicktvui-ai/debug-screenshots/`,后续 AI 应优先使用命令返回的 `savedTo` 路径
|
|
86
|
+
- `debug-native-logs` 与 `debug-screenshot` 的失败信息应直接向用户透明披露,不要二次包装成模糊描述
|
|
87
|
+
|
|
62
88
|
---
|
|
63
89
|
|
|
64
90
|
## 一、项目背景
|
package/rules/CLAUDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: CLAUDE.md
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.16
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# QuickTVUI - AI 开发指南
|
|
@@ -35,6 +35,7 @@ version: 1.1.13
|
|
|
35
35
|
**要求:**
|
|
36
36
|
- **检索与能力验证优先**:在实现任何功能(如“视频播放”)前,必须先在 `node_modules/@quicktvui/ai/rules/.docs/` 目录中检索相关文档,验证组件是否支持该功能。切勿想当然!**例如:`qt-web-view` 绝对不支持视频播放,视频播放必须使用框架提供的专用视频组件和管理器(如 `es-video-player` 和 `es-player-manager`)。**
|
|
37
37
|
- **非浏览器与无 HTML 环境**:**本框架绝对不支持标准 HTML 标签(如 `p`, `img`, `a`, `ul`, `li`, `h1` 等),严禁在模板中使用!绝对不支持 `window`、`document` (DOM) 对象或任何 DOM 操作 API。必须使用框架专属标签(如 `qt-text`, `qt-image`)和 Vue `ref`。**
|
|
38
|
+
- **标签与组件尺寸强约束**:所有标签和组件都必须显式设置 `width` 和 `height`(px),包括 `div`、`span`、`qt-text`、`qt-image`、`qt-view` 以及所有 `qt-*` 组件。不能依赖内容、父容器或自动撑开。
|
|
38
39
|
- **严禁自造标签**:如 `qt-web` 是错的,官方示例中是 `qt-web-view`。
|
|
39
40
|
- **严禁自造 API**:如 `onBack` 是错的,必须是 `onBackPressed`。
|
|
40
41
|
- **参考优先**:遇到不确定的组件用法,必须先在上述仓库或 `node_modules/@quicktvui/ai/rules/.docs/` 中搜索同名组件的实际用法。
|
|
@@ -114,6 +115,31 @@ Hard requirements:
|
|
|
114
115
|
- If user asks to launch a specific ES app/version/source, run:
|
|
115
116
|
`quicktvui-ai run-esapp --project <project-path> --pkg <es-package> [options]`
|
|
116
117
|
|
|
118
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
119
|
+
|
|
120
|
+
当用户要求 AI 检查运行中应用的 console/network/exception、Android native logs、截图或当前 target 状态时,AI 必须使用以下优先级:
|
|
121
|
+
|
|
122
|
+
1. 优先使用已连接的 `@quicktvui/ai-debug-mcp`
|
|
123
|
+
2. 如果没有 MCP,但具备 shell/CLI 能力,则必须使用 `quicktvui-ai debug-*`
|
|
124
|
+
3. 只有 MCP 和 CLI 都不可用时,才允许要求用户手工粘贴日志
|
|
125
|
+
|
|
126
|
+
非 MCP 场景下,必须按以下顺序执行:
|
|
127
|
+
|
|
128
|
+
1. `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
129
|
+
2. 选择 `clientId`
|
|
130
|
+
- 仅有一个 target 时可直接使用
|
|
131
|
+
- 多个 target 时必须让用户确认正确的 `clientId`
|
|
132
|
+
3. `quicktvui-ai debug-context --client-id <clientId>`
|
|
133
|
+
4. `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
134
|
+
5. `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
135
|
+
6. `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
136
|
+
|
|
137
|
+
硬约束:
|
|
138
|
+
|
|
139
|
+
- AI 未通过 MCP 或 `quicktvui-ai debug-*` 实际读取到数据前,不得声称自己已经检查过运行时日志、native logs 或截图
|
|
140
|
+
- `debug-targets` 为空时,必须明确说明当前 `ESDebugServer /ai/targets` 还没有可读 target
|
|
141
|
+
- `debug-native-logs` 或 `debug-screenshot` 失败时,必须原样报告命令和错误,不得编造兜底结论
|
|
142
|
+
|
|
117
143
|
## 🔥 核心架构避坑指南 (ARCHITECTURAL GOTCHAS)
|
|
118
144
|
|
|
119
145
|
AI 在编写业务逻辑时,极易带入传统 Web 开发习惯导致严重报错,**必须牢记以下框架特性**:
|
|
@@ -187,6 +213,7 @@ https://quicktvui.com
|
|
|
187
213
|
|
|
188
214
|
- 图片组件是 `qt-image`,不是 `qt-img`、`<img>`
|
|
189
215
|
- 文字必须用 `<qt-text>` 或 `<span>`,不能用 `<p>`、`<h1>`~`<h6>`、`<label>` 等 HTML 标签
|
|
216
|
+
- 所有标签和组件都必须显式声明 `width` 和 `height`(px),包括 `<div>`、`<span>`、`<qt-text>`、`<qt-image>`、`<qt-view>` 以及所有 `qt-*` 标签
|
|
190
217
|
- 容器用 `<div>`、`<qt-view>`、`<qt-row>`、`<qt-column>`,不能用 `<section>`、`<main>`、`<article>` 等语义标签
|
|
191
218
|
- 按钮用 `<qt-button>` 或可获焦的 `<div>`,不能用 `<button>`
|
|
192
219
|
|
|
@@ -240,6 +267,7 @@ https://quicktvui.com
|
|
|
240
267
|
其他 CSS 规则:
|
|
241
268
|
|
|
242
269
|
- **CRITICAL: NO `auto` sizing**. All elements MUST have explicit `px` values.
|
|
270
|
+
- **CRITICAL: 所有标签和组件都必须显式设置 `width` 和 `height`(px)**。包括 `div`、`span`、`qt-text`、`qt-image`、`qt-view` 以及所有其他 `qt-*` 组件,不能依赖内容自适应或父容器撑开。
|
|
243
271
|
- **CRITICAL: NO `alert()`**. Use `useESToast().showToast()` instead.
|
|
244
272
|
- **CRITICAL: NO `e.preventDefault()`** or `e.stopPropagation()`. These do not exist in the native event system.
|
|
245
273
|
- **CRITICAL: NO `window` or `document` (DOM) objects**. The runtime is not a browser.
|
|
@@ -581,6 +609,8 @@ Events: `focus(isFocused: boolean)`, `click()`
|
|
|
581
609
|
|
|
582
610
|
### qt-text
|
|
583
611
|
|
|
612
|
+
**强制规则**:生成代码时,所有标签和组件都必须显式声明 `width` 和 `height`,`qt-text` 只是最常见的易错项,不要依赖 `autoWidth` / `autoHeight`、文案内容或父容器自动撑开。
|
|
613
|
+
|
|
584
614
|
```vue
|
|
585
615
|
<qt-text
|
|
586
616
|
text="标题"
|
package/rules/GEMINI.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: GEMINI.md
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.16
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# GEMINI.md - QuickTVUI AI 开发指南
|
|
@@ -106,6 +106,31 @@ Hard requirements:
|
|
|
106
106
|
- If user asks to launch a specific ES app/version/source, run:
|
|
107
107
|
`quicktvui-ai run-esapp --project <project-path> --pkg <es-package> [options]`
|
|
108
108
|
|
|
109
|
+
## Runtime Debug Data Workflow (CRITICAL)
|
|
110
|
+
|
|
111
|
+
When the user asks AI to inspect runtime console logs, network/exception events, Android native logs, screenshots, or current target state, AI MUST use this priority:
|
|
112
|
+
|
|
113
|
+
1. Prefer connected `@quicktvui/ai-debug-mcp`
|
|
114
|
+
2. If MCP is unavailable but shell/CLI is available, use `quicktvui-ai debug-*`
|
|
115
|
+
3. Only ask the user to paste logs manually when both MCP and CLI paths are unavailable
|
|
116
|
+
|
|
117
|
+
Required non-MCP order:
|
|
118
|
+
|
|
119
|
+
1. `quicktvui-ai debug-targets --base-url http://127.0.0.1:38989`
|
|
120
|
+
2. Resolve `clientId`
|
|
121
|
+
- use directly when only one target exists
|
|
122
|
+
- ask the user to confirm when multiple targets exist
|
|
123
|
+
3. `quicktvui-ai debug-context --client-id <clientId>`
|
|
124
|
+
4. `quicktvui-ai debug-events --client-id <clientId> --limit 100`
|
|
125
|
+
5. `quicktvui-ai debug-native-logs --client-id <clientId> --limit 100`
|
|
126
|
+
6. `quicktvui-ai debug-screenshot --client-id <clientId> --project <project-path>`
|
|
127
|
+
|
|
128
|
+
Hard requirements:
|
|
129
|
+
|
|
130
|
+
- AI MUST NOT claim it inspected runtime data unless MCP or `quicktvui-ai debug-*` actually returned that data
|
|
131
|
+
- If `debug-targets` is empty, AI MUST say that `ESDebugServer /ai/targets` is still empty
|
|
132
|
+
- If `debug-native-logs` or `debug-screenshot` fails, AI MUST report the real command/error instead of inventing fallback observations
|
|
133
|
+
|
|
109
134
|
---
|
|
110
135
|
|
|
111
136
|
## 🔥 核心架构避坑指南 (ARCHITECTURAL GOTCHAS)
|
|
@@ -138,6 +163,7 @@ AI 在编写业务逻辑时,必须牢记以下框架特性,防止套用 Web
|
|
|
138
163
|
* **强制 Flex**:每个有样式的元素必须显式写 `display: flex;`。默认方向为 `flex-direction: column;`。
|
|
139
164
|
* **禁止简写**:不支持 `margin: 10px`,必须写 `margin-top: 10px;` 等。
|
|
140
165
|
* **禁止相对单位**:只允许 `px`,不支持 `%`, `auto`, `vh/vw`, `rem`。
|
|
166
|
+
* **所有标签和组件强制宽高**:所有标签和组件都必须显式声明 `width` 和 `height`(px),包括 `div`、`span`、`qt-text`、`qt-image`、`qt-view` 以及所有 `qt-*` 组件,不能依赖文字内容、父容器或自动撑开。
|
|
141
167
|
|
|
142
168
|
---
|
|
143
169
|
|
|
@@ -168,4 +194,5 @@ AI 必须了解 Vue 组件与 Java Native 层的对应关系,避免查阅已
|
|
|
168
194
|
* **Back 键**:必须命名为 `onBackPressed`。
|
|
169
195
|
* **生命周期**:必须命名为 `onESCreate`, `onESResume`, `onESDestroy` 等。
|
|
170
196
|
* **焦点**:页面必须有元素设置 `:autofocus="true"`,且容器需设置 `:clipChildren="false"`。
|
|
197
|
+
* **尺寸**:所有标签和组件都必须显式设置 `width` 和 `height`,`qt-text` 只是高频易错例子。
|
|
171
198
|
* **路由**:使用 `useESRouter()`。
|