Skip to content

feat: add renderer web component build config#53

Open
gimmyhehe wants to merge 17 commits into
devfrom
cgm/build-web-component
Open

feat: add renderer web component build config#53
gimmyhehe wants to merge 17 commits into
devfrom
cgm/build-web-component

Conversation

@gimmyhehe

@gimmyhehe gimmyhehe commented Feb 11, 2026

Copy link
Copy Markdown
Member

新增renderer构建成web component的配置

Summary by CodeRabbit

  • New Features

    • Web component support: SchemaCardRenderer available as a standalone custom element with automatic registration and robust JSON-string / boolean property handling.
  • Build

    • Dedicated web-component build producing an optimized ES bundle.
    • New build scripts and a post-build style transform to adjust generated CSS variables.
  • Utilities

    • Attribute parsing helpers for JSON and boolean props.
  • Bug Fixes

    • Action invocation now returns the action result when present.

Review Change Stack

@coderabbitai

coderabbitai Bot commented Feb 11, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a Vue custom element for SchemaCardRenderer: a no-shadow wrapper that parses string attributes into typed props, registration utilities and re-exports, parsing helpers, a dedicated Vite build, npm scripts, and a post-build CSS-variable rename script.

Changes

Web Component for SchemaCardRenderer

Layer / File(s) Summary
Attribute parsing helpers
packages/frameworks/vue/src/web-component/parse-attribute.ts
Adds parseJsonAttribute and parseBooleanAttribute to safely parse JSON-encoded attributes and normalize boolean-like attribute values.
Web Component adapter component
packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue
New CE wrapper SFC (shadowRoot disabled) that accepts string/boolean attributes and JSON strings, uses parsing helpers to compute typed props, and forwards them to SchemaCardRenderer.
Custom element export and registration
packages/frameworks/vue/src/web-component/index.ts
Exports SchemaCardRendererElement via defineCustomElement, provides registerSchemaCardRenderer(tagName = 'genui-renderer') for idempotent registration, and auto-registers on client when window is defined.
Build configuration and scripts
packages/frameworks/vue/vite.config.web-component.ts, packages/frameworks/vue/scripts/transform-style.ts, packages/frameworks/vue/package.json
Adds Vite config to build an ES-module web-component bundle to ./output/web-component, registers plugins (Vue, CSS-injected-by-js, visualizer), adds npm scripts for build and postbuild, and a post-build script that replaces --ti with --tio in the generated JS.
Renderer small fix
packages/frameworks/vue/src/renderer/SchemaCardRenderer.vue
callAction now returns the result of the executed custom action (or undefined) instead of discarding the return value.
Submodule update
projects/tiny-schema-renderer
Updates the tracked submodule commit to a new revision.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • rhlin
  • yy-wow

Poem

🐰 I parsed the strings and hopped with delight,
Props turned to objects in the soft daylight,
A custom tag wakes on the client-side shore,
Bundled and styled, then patched once more,
Hooray — the renderer leaps and explores!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add renderer web component build config' accurately summarizes the main changes: adding build configuration files and npm scripts for building the Vue renderer as a web component.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cgm/build-web-component

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment thread packages/core/src/gen.ts Outdated
Comment thread sites/homepage/web/package.json
@gimmyhehe
gimmyhehe changed the base branch from main to dev May 21, 2026 03:09

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (5)
packages/frameworks/vue/vite.config.web-component.ts (2)

11-17: 💤 Low value

Consider adding a comment to clarify isCustomElement configuration.

The isCustomElement: () => false configuration is correct for this use case (Vue compiles everything as Vue components before defineCustomElement wraps them), but it's counter-intuitive for a web component build. A comment would help future maintainers understand the intent.

📝 Proposed clarification
     vue({
       template: {
         compilerOptions: {
+          // During compilation, treat all elements as Vue components.
+          // defineCustomElement will wrap the compiled output as a custom element at runtime.
           isCustomElement: () => false,
         },
       },
     }),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/frameworks/vue/vite.config.web-component.ts` around lines 11 - 17,
Add a brief inline comment above the vue template.compilerOptions
isCustomElement configuration explaining why it returns false for the
web-component build (Vue compiles everything as Vue components before
defineCustomElement wraps them), so future maintainers understand the
counter‑intuitive choice; update the block around vue({ template: {
compilerOptions: { isCustomElement: () => false } } }) to include that comment
referencing isCustomElement and defineCustomElement semantics.

10-10: ⚡ Quick win

Make bundle visualizer opt-in for CI/CD compatibility.

visualizer({ open: true }) automatically opens the bundle analysis in a browser, which will fail or cause issues in CI/CD environments. Consider making it conditional on the environment or removing open: true.

♻️ Proposed fix
-    visualizer({ open: true }),
+    visualizer({ open: process.env.CI !== 'true' }),

Or simply:

-    visualizer({ open: true }),
+    visualizer(),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/frameworks/vue/vite.config.web-component.ts` at line 10, The
visualizer plugin is currently opening a browser unconditionally via
visualizer({ open: true }), which breaks CI; change it to be opt-in by guarding
either the plugin inclusion or the open flag with an environment check (e.g.,
use process.env.VISUALIZE or process.env.CI/NODE_ENV) so visualizer is only
enabled or open when that env flag is set; update the visualizer invocation (the
visualizer(...) call) to remove or conditionally set open: true and/or
conditionally include the visualizer plugin in the exported Vite plugins array.
packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue (2)

19-54: ⚡ Quick win

Consider logging parse errors and extracting the parser logic.

The four computed properties share identical parsing logic. Parse errors are silently ignored, which may make debugging difficult for consumers passing malformed JSON.

Consider:

  1. Logging warnings when JSON parsing fails (use console.warn to preserve fallback behavior)
  2. Extracting a shared helper function to reduce duplication
♻️ Proposed refactor with logging and DRY
+// 解析字符串属性为对象,适配 Web Component 的属性传递
+function parseJsonProp(value: string | undefined, propName: string): any {
+  if (!value) return undefined;
+  try {
+    return JSON.parse(value);
+  } catch (error) {
+    console.warn(`[SchemaCardRenderer] Failed to parse ${propName}:`, error);
+    return undefined;
+  }
+}
+
-// 解析字符串属性为对象,适配 Web Component 的属性传递
 const parsedCustomComponents = computed(() => {
-  if (!props.customComponents) return undefined;
-  try {
-    return JSON.parse(props.customComponents);
-  } catch {
-    return undefined;
-  }
+  return parseJsonProp(props.customComponents, 'customComponents');
 });

 const parsedCustomActions = computed(() => {
-  if (!props.customActions) return undefined;
-  try {
-    return JSON.parse(props.customActions);
-  } catch {
-    return undefined;
-  }
+  return parseJsonProp(props.customActions, 'customActions');
 });

 const parsedRequiredCompleteFieldSelectors = computed(() => {
-  if (!props.requiredCompleteFieldSelectors) return undefined;
-  try {
-    return JSON.parse(props.requiredCompleteFieldSelectors);
-  } catch {
-    return undefined;
-  }
+  return parseJsonProp(props.requiredCompleteFieldSelectors, 'requiredCompleteFieldSelectors');
 });

 const parsedState = computed(() => {
-  if (!props.state) return undefined;
-  try {
-    return JSON.parse(props.state);
-  } catch {
-    return undefined;
-  }
+  return parseJsonProp(props.state, 'state');
 });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue` around lines
19 - 54, The four computed props parsedCustomComponents, parsedCustomActions,
parsedRequiredCompleteFieldSelectors, and parsedState all duplicate JSON.parse
logic and silently swallow errors; extract a shared helper (e.g.,
parseJsonProp(value, propName)) and use it inside each computed to remove
duplication, and on parse failure call console.warn with the propName and the
caught error while still returning undefined to preserve fallback behavior.

56-61: ⚡ Quick win

Clarify string-to-boolean conversion behavior.

The current logic treats only the string "true" as boolean true; all other string values (including "false", "1", "yes") become false. While this may be intentional for HTML attribute behavior, it could surprise consumers who pass string "false" expecting it to be truthy.

Consider adding a comment documenting this behavior, or explicitly handle string "false":

📝 Proposed clarification
+// Convert string attributes to boolean: only "true" string becomes true, all others become false
 const isGenerating = computed(() => {
   if (typeof props.generating === 'string') {
     return props.generating === 'true';
   }
   return props.generating || false;
 });

Or, if you want to be more explicit:

 const isGenerating = computed(() => {
   if (typeof props.generating === 'string') {
-    return props.generating === 'true';
+    // HTML attributes: "true" → true, "false" or any other string → false
+    return props.generating.toLowerCase() === 'true';
   }
   return props.generating || false;
 });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue` around lines
56 - 61, The computed isGenerating currently treats only the literal string
"true" as true, which can surprise callers passing "false" or other values;
update the isGenerating logic to explicitly handle both "true" and "false"
string values (e.g., map "true" => true, "false" => false, otherwise fall back
to Boolean(props.generating)) and add a short inline comment above the
isGenerating computed property explaining this string-to-boolean conversion and
why it's implemented that way; reference the isGenerating computed and
props.generating identifiers when making the change.
packages/frameworks/vue/src/web-component/index.ts (1)

12-14: 💤 Low value

Consider making auto-registration opt-in rather than automatic.

The current implementation registers the custom element as a side effect when the module is imported. While the typeof window check prevents SSR crashes, automatic registration can cause issues in testing environments or when multiple package versions are loaded.

Consider documenting that consumers should explicitly call registerSchemaCardRenderer() rather than relying on auto-registration, or provide a build-time flag to disable it.

📝 Alternative: Document the behavior
+/**
+ * Registers the SchemaCardRenderer custom element.
+ * Auto-registers with default tag name 'genui-renderer' when imported in browser environments.
+ * `@param` tagName - Custom element tag name (must contain a hyphen)
+ */
 export function registerSchemaCardRenderer(tagName: string = 'genui-renderer') {
   if (!customElements.get(tagName)) {
     customElements.define(tagName, SchemaCardRendererElement);
   }
 }

+// Auto-register in browser environments
 if (typeof window !== 'undefined') {
   registerSchemaCardRenderer();
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/frameworks/vue/src/web-component/index.ts` around lines 12 - 14,
Currently the module side-effects by calling registerSchemaCardRenderer() on
import; remove that automatic invocation so consumers opt-in. Delete the if
(typeof window !== 'undefined') { registerSchemaCardRenderer(); } block (or
change it to a guarded global toggle) and ensure registerSchemaCardRenderer
remains exported; optionally implement a single, explicit opt-in mechanism if
you want to preserve convenience (e.g. check
window.__AUTO_REGISTER_SCHEMA_CARD_RENDERER__ === true before calling) and add a
short note in docs explaining consumers must call registerSchemaCardRenderer()
themselves.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/frameworks/vue/scripts/transform-style.ts`:
- Around line 8-11: The script currently reads and writes outputPath using
readFileSync/writeFileSync and does a blind replaceAll('--ti','--tio'); wrap the
file operations in a try/catch (and optionally check existsSync(outputPath)
before reading) to avoid crashing on missing/unreadable files, and replace
replaceAll with a regex-based replace that only targets CSS variable prefixes
(e.g. use a pattern like /--ti-([A-Za-z0-9-_]+)/g and replace with '--tio-$1')
so only variables of the form --ti-... are changed; keep references to
outputPath, content, readFileSync, writeFileSync, and the replace logic when
applying the fix.

In `@packages/frameworks/vue/src/web-component/index.ts`:
- Around line 6-10: registerSchemaCardRenderer currently calls
customElements.define(tagName, SchemaCardRendererElement) without handling
DOMExceptions; wrap the define call in a try-catch and handle registration
errors (e.g., invalid tag names or already-defined names) so consumer apps won't
crash. In the catch, log a clear error including tagName and the caught error
(e.g., via console.error or your project logger) and ensure the function exits
gracefully — optionally change the function to return a boolean success flag
(true on successful define, false on error) so callers can react.

---

Nitpick comments:
In `@packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue`:
- Around line 19-54: The four computed props parsedCustomComponents,
parsedCustomActions, parsedRequiredCompleteFieldSelectors, and parsedState all
duplicate JSON.parse logic and silently swallow errors; extract a shared helper
(e.g., parseJsonProp(value, propName)) and use it inside each computed to remove
duplication, and on parse failure call console.warn with the propName and the
caught error while still returning undefined to preserve fallback behavior.
- Around line 56-61: The computed isGenerating currently treats only the literal
string "true" as true, which can surprise callers passing "false" or other
values; update the isGenerating logic to explicitly handle both "true" and
"false" string values (e.g., map "true" => true, "false" => false, otherwise
fall back to Boolean(props.generating)) and add a short inline comment above the
isGenerating computed property explaining this string-to-boolean conversion and
why it's implemented that way; reference the isGenerating computed and
props.generating identifiers when making the change.

In `@packages/frameworks/vue/src/web-component/index.ts`:
- Around line 12-14: Currently the module side-effects by calling
registerSchemaCardRenderer() on import; remove that automatic invocation so
consumers opt-in. Delete the if (typeof window !== 'undefined') {
registerSchemaCardRenderer(); } block (or change it to a guarded global toggle)
and ensure registerSchemaCardRenderer remains exported; optionally implement a
single, explicit opt-in mechanism if you want to preserve convenience (e.g.
check window.__AUTO_REGISTER_SCHEMA_CARD_RENDERER__ === true before calling) and
add a short note in docs explaining consumers must call
registerSchemaCardRenderer() themselves.

In `@packages/frameworks/vue/vite.config.web-component.ts`:
- Around line 11-17: Add a brief inline comment above the vue
template.compilerOptions isCustomElement configuration explaining why it returns
false for the web-component build (Vue compiles everything as Vue components
before defineCustomElement wraps them), so future maintainers understand the
counter‑intuitive choice; update the block around vue({ template: {
compilerOptions: { isCustomElement: () => false } } }) to include that comment
referencing isCustomElement and defineCustomElement semantics.
- Line 10: The visualizer plugin is currently opening a browser unconditionally
via visualizer({ open: true }), which breaks CI; change it to be opt-in by
guarding either the plugin inclusion or the open flag with an environment check
(e.g., use process.env.VISUALIZE or process.env.CI/NODE_ENV) so visualizer is
only enabled or open when that env flag is set; update the visualizer invocation
(the visualizer(...) call) to remove or conditionally set open: true and/or
conditionally include the visualizer plugin in the exported Vite plugins array.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c427509d-d032-404c-b865-2865786c894d

📥 Commits

Reviewing files that changed from the base of the PR and between 12949d3 and 855ce59.

📒 Files selected for processing (5)
  • packages/frameworks/vue/package.json
  • packages/frameworks/vue/scripts/transform-style.ts
  • packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue
  • packages/frameworks/vue/src/web-component/index.ts
  • packages/frameworks/vue/vite.config.web-component.ts

Comment thread packages/frameworks/vue/scripts/transform-style.ts Outdated
Comment thread packages/frameworks/vue/src/web-component/index.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue`:
- Line 42: The current binding in SchemaCardRenderer.ce.vue forwards an empty
string because "content ?? '{}'" treats "" as defined; change the expression to
treat empty/whitespace strings as missing—e.g., replace the binding on the
content prop with a conditional that checks for a non-empty trimmed string (use
content && content.trim() or content?.trim()) and fall back to '{}' when it's
falsy; update the :content binding so the component (SchemaCardRenderer) always
receives either a non-empty payload or the '{}' default.

In `@packages/frameworks/vue/src/web-component/index.ts`:
- Around line 8-10: The exported function registerSchemaCardRenderer currently
calls customElements directly which will throw in non-browser runtimes
(SSR/tests); update registerSchemaCardRenderer to first check for a browser
environment and the existence of customElements (e.g., typeof window !==
'undefined' && typeof customElements !== 'undefined') before calling
customElements.get/define for SchemaCardRendererElement and use tagName as
before so callers in SSR won't error.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c6f00d50-2b60-442a-8b92-9fe35145f284

📥 Commits

Reviewing files that changed from the base of the PR and between 855ce59 and 41146c5.

📒 Files selected for processing (4)
  • packages/frameworks/vue/scripts/transform-style.ts
  • packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue
  • packages/frameworks/vue/src/web-component/index.ts
  • packages/frameworks/vue/src/web-component/parse-attribute.ts

Comment thread packages/frameworks/vue/src/renderer/SchemaCardRenderer.ce.vue
Comment thread packages/frameworks/vue/src/web-component/index.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/frameworks/vue/src/web-component/parse-attribute.ts`:
- Line 3: parseJsonAttribute currently fast-paths any typeof value === 'object',
which also accepts null, arrays, and non-plain objects; update the guard in
parseJsonAttribute to only accept plain non-null objects (e.g., value !== null
&& !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype)
before returning value as T so arrays/null/class instances fall through to the
string/json parse logic and avoid type mismatches for props like
customComponents/customActions/requiredCompleteFieldSelectors/state.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bf62dd73-eb2e-4e7d-b0d3-4d127ee0dd90

📥 Commits

Reviewing files that changed from the base of the PR and between 41146c5 and 4afb8f3.

📒 Files selected for processing (1)
  • packages/frameworks/vue/src/web-component/parse-attribute.ts

Comment thread packages/frameworks/vue/src/web-component/parse-attribute.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
packages/frameworks/vue/src/web-component/index.ts (1)

8-13: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add error handling for custom element registration.

The open past review comment remains valid: customElements.define() on line 11 can throw DOMException for invalid tag names (e.g., missing hyphen, reserved names) or other registration issues. While line 10 prevents duplicate registration, it doesn't guard against invalid input.

🛡️ Recommended fix
 export function registerSchemaCardRenderer(tagName = 'genui-renderer') {
   if (typeof customElements === 'undefined') return;
   if (!customElements.get(tagName)) {
-    customElements.define(tagName, SchemaCardRendererElement);
+    try {
+      customElements.define(tagName, SchemaCardRendererElement);
+    } catch (error) {
+      console.error(`[genui-renderer] Failed to register custom element "${tagName}":`, error);
+    }
   }
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/frameworks/vue/src/web-component/index.ts` around lines 8 - 13, The
registerSchemaCardRenderer function should guard against invalid tag names and
registration exceptions by validating tagName (ensure it contains a hyphen and
meets custom element naming rules) and wrapping the
customElements.define(tagName, SchemaCardRendererElement) call in a try/catch;
on failure catch DOMException (or any Error) and log a clear error (e.g., via
console.error) including the tagName and exception message, and then either
return false or rethrow as appropriate so callers can detect the failure.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@packages/frameworks/vue/src/web-component/index.ts`:
- Around line 8-13: The registerSchemaCardRenderer function should guard against
invalid tag names and registration exceptions by validating tagName (ensure it
contains a hyphen and meets custom element naming rules) and wrapping the
customElements.define(tagName, SchemaCardRendererElement) call in a try/catch;
on failure catch DOMException (or any Error) and log a clear error (e.g., via
console.error) including the tagName and exception message, and then either
return false or rethrow as appropriate so callers can detect the failure.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b9f7c542-7f4b-4485-84a4-4490bb4c6f22

📥 Commits

Reviewing files that changed from the base of the PR and between 4afb8f3 and 0b8ed95.

📒 Files selected for processing (2)
  • packages/frameworks/vue/scripts/transform-style.ts
  • packages/frameworks/vue/src/web-component/index.ts

@gimmyhehe gimmyhehe changed the title [wip]build: build renderer web component feat: add renderer web component build config May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants