Skip to content

newdoc - #11

Merged
seokju-na merged 9 commits into
mainfrom
newdoc
Jul 5, 2026
Merged

seokju-na merged 9 commits into
mainfrom
newdoc

Conversation

@seokju-na

@seokju-na seokju-na commented Jul 4, 2026 •

Copy link
Copy Markdown
Member

Summary by cubic

Revamped the docs with clear “Getting Started”, core concepts, and practical frontend/native guides, and added an automated references workflow to keep API docs up to date.

  • New Features

    • Getting Started: new intro, prerequisites, examples, and platform support pages.
    • Core Concepts: added webview-bundle, bundle-source, protocol-handling, over-the-air, and native–webview communication pages (replacing old bundle format/sources).
    • Frontend: packing, development, upload, deploy guides; Bridges docs for @wvb/bridge (overview, checking sources, updating remote bundles, testing).
    • Native: setup/local-dev/builtin guides for Electron, Tauri, Android, iOS, and Deno; added Deno building; fixed Deno bundleProtocol('app') usage.
    • Automation: new GitHub Action references to generate references from webview-bundle (optional ref input); ignored .webview-bundle/ in .gitignore.
  • Migration

    • Fixed internal links (moved concept pages to /docs/guide/core-concepts/*, platform support to /docs/guide/getting-started/platform-and-framework-support, remote specs/providers under /docs/guide/remote/*).
    • Removed legacy pages (/docs/changelog, /docs/config) and obsolete commands index; aligned EN/KO structure, translated KO section headings, and removed all “Next steps” sections.

Written for commit aa3bbbd. Summary will update on new commits.

Review in cubic

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 4, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
webview-bundle-website aa3bbbd Commit Preview URL

Branch Preview URL
Jul 05 2026, 03:30 PM

seokju-na and others added 7 commits July 5, 2026 10:37
Fill the previously-stubbed practical guides under content/docs/guide,
in English and Korean:
- frontend: packing, development, upload, deploy, and bridges/{index,
  checking-sources, update-remote-bundles, testing}
- native: {electron,tauri,android,ios,deno}/{local-development,builtin},
  plus tauri/mobile and deno/building

Fix broken internal /docs links across the docs so none 404:
- concept short-forms -> /docs/guide/core-concepts/*
- getting-started/platform-support -> platform-and-framework-support
- /docs/guide/spec/* -> /docs/guide/remote/http-spec/*
- /docs/guide/providers/* -> /docs/guide/remote/providers/*
- /docs/guide/bundle-format -> /docs/guide/core-concepts/webview-bundle

Correct bundleProtocol('app') usage in the Deno setup pages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VSyTK87Kia293eVqtbeken
- Translate the remaining English section headings in the Korean docs to
  Korean, keeping code identifiers, @wvb/* package names, and proper nouns;
  fix in-page anchors that pointed at translated headings.
- Remove the "Next steps" / "다음 단계" navigation section from every guide
  and reference page (English and Korean), keeping the two locales in
  structural lockstep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VSyTK87Kia293eVqtbeken
@seokju-na
seokju-na marked this pull request as ready for review July 5, 2026 15:47
@seokju-na
seokju-na merged commit bce07d7 into main Jul 5, 2026
3 checks passed
@seokju-na
seokju-na deleted the newdoc branch July 5, 2026 15:47

@cubic-dev-ai cubic-dev-ai 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.

40 issues found across 555 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="content/docs/references/api/deno-desktop/register-bindings.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/register-bindings.mdx:12">
P1: The example code creates a `Deno.BrowserWindow` without a URL pointing to the bundle server, so the window won't load the webview bundle assets. The guide consistently shows `new Deno.BrowserWindow({ url: `http://localhost:${server.addr.port}` })` after creating the server. Consider updating the example to create the server first, capture its port, and pass it to the window.</violation>
</file>

<file name="content/docs/references/api/deno-desktop/http-response.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/http-response.mdx:11">
P2: `type HttpResponse = any` provides zero useful type information. The `deno` and `node` counterparts both have a full `<TypeTable>` with `body`, `headers`, and `status` properties — users of `deno-desktop` need the same details. Either the TypeScript source's JSDoc/type for `deno-desktop`'s `HttpResponse` needs to be concretely typed instead of `any`, or the generator needs a fallback to resolve the true shape.</violation>
</file>

<file name="content/docs/references/api/deno-desktop/remote-options.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/remote-options.mdx:10">
P2: The generated doc claims `RemoteOptions` extends `HttpResponse`, but the TypeScript source shows it extends `RemoteBindingOptions` (aliased from `@wvb/deno`'s `RemoteOptions`, which is `{ http?: HttpOptions }` with no extends clause). This will mislead users about the interface's shape.</violation>
</file>

<file name="content/docs/guide/native/ios/builtin.ko.mdx">

<violation number="1" location="content/docs/guide/native/ios/builtin.ko.mdx:26">
P2: The Korean iOS setup page has `## 소스` as its heading, which generates anchor `#소스`, not `#sources`. The link `/docs/guide/native/ios#sources` won't navigate to the Sources section in the Korean guide — update it to `/docs/guide/native/ios#소스` so readers land on the right section.</violation>
</file>

<file name="content/docs/references/api/cli/load-config-file.mdx">

<violation number="1" location="content/docs/references/api/cli/load-config-file.mdx:11">
P2: The `loadConfigFile` documentation shows `...` as the default value for the `cwd` parameter in both the signature (`cwd: string = ...`) and the parameter table (`default: '...'`). The actual default from the source is `process.cwd()`. This `...` is a TypeDoc placeholder for complex expressions and is unhelpful — it makes the docs appear incomplete or confusing. The auto-generation script should either resolve the actual default expression, fall back to the `@default` JSDoc tag, or suppress the `...` placeholder entirely so readers see the correct value.</violation>
</file>

<file name="content/docs/references/api/config/pack-config.mdx">

<violation number="1" location="content/docs/references/api/config/pack-config.mdx:52">
P2: The headers example shows `["cache-control", "max-age=0"]` as an array — but the type definition shows `HeadersInit` which accepts `[string, string][]` (tuples of header name and value). The example shows a flat 2-element array `["cache-control", "max-age=0"]` where it should be a tuple element `[["cache-control", "max-age=0"]]` for the array form. As written, this demonstrates an incorrect usage pattern that would not work as expected.</violation>

<violation number="2" location="content/docs/references/api/config/pack-config.mdx:54">
P2: Example code block for `headers` contains JSDoc-style `*` line prefixes that weren't stripped during auto-generation, making the TypeScript example invalid.</violation>
</file>

<file name="content/docs/guide/getting-started/platform-and-framework-support.mdx">

<violation number="1" location="content/docs/guide/getting-started/platform-and-framework-support.mdx:15">
P2: The Compatible versions column for iOS says "Swift 6" but the iOS setup doc states the requirement as "Swift tools 6.1, language mode 6". "Swift 6" is ambiguous — it could mean Swift 6.0 compiler, the Swift 6 language mode, or the 6.1 toolchain. The actual requirement is Swift tools 6.1, which is more specific. A developer who reads "Swift 6" and installs Swift 6.0 may run into build failures.</violation>
</file>

<file name="content/docs/guide/remote/providers/aws.mdx">

<violation number="1" location="content/docs/guide/remote/providers/aws.mdx:58">
P2: The Callout states "Lambda@Edge always runs in us-east-1," which is misleading. AWS explicitly documents that Lambda@Edge functions execute at CloudFront edge locations closest to the viewer — not in us-east-1. Only the function authoring/creation is restricted to us-east-1. A reader might incorrectly assume a performance penalty (round-tripping through a single region) when the functions actually run at the edge. Recommend clarifying the distinction between creation region and execution location.</violation>
</file>

<file name="content/docs/references/api/deno-desktop/app-data-dir.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/app-data-dir.mdx:3">
P2: The frontmatter description is truncated with a literal ellipsis character, cutting off the Linux fallback path before sharing it. This means page meta descriptions, search previews, and social cards will show incomplete text. The body text correctly has the full `(or ~/.local/share)` — the truncation is in the generation script that produces the frontmatter description.</violation>
</file>

<file name="content/docs/guide/getting-started/prerequisites.mdx">

<violation number="1" location="content/docs/guide/getting-started/prerequisites.mdx:29">
P2: The iOS section lists "Swift v5" as the minimum version, but the iOS setup guide requires Swift tools 6.1 / language mode 6 and the platform support page lists Swift 6. A developer with only Swift 5 installed would not be able to use the library. Update to "Swift 6" (or "Swift tools 6.1") to match the actual requirements.</violation>
</file>

<file name="content/docs/guide/native/deno/building.mdx">

<violation number="1" location="content/docs/guide/native/deno/building.mdx:34">
P2: When `deno desktop --include` embeds the `.dylib`, resolving it via `new URL('./vendor/wvb/libwvb_deno.dylib', import.meta.url)` may construct a filesystem path that doesn't exist at runtime (the file is inside the binary, not alongside it). If the tool extracts included files to a temp or working directory, the docs should mention that so readers understand the resolution mechanism. If it doesn't, the `lib` path won't be valid.</violation>
</file>

<file name="content/docs/guide/frontend/upload.ko.mdx">

<violation number="1" location="content/docs/guide/frontend/upload.ko.mdx:28">
P3: Particle mismatch: `**업로드**은` should be `**업로드**는` because `업로드` ends in a vowel (드 has no 받침). For Korean readers this reads as a noticeable grammar error.</violation>

<violation number="2" location="content/docs/guide/frontend/upload.ko.mdx:29">
P3: Particle mismatch: `**배포**은` should be `**배포**는` because `배포` ends in a vowel (포 has no 받침).</violation>
</file>

<file name="WORKS.md">

<violation number="1" location="WORKS.md:35">
P3: Typo: `업르도된` → `업로드된`. The verb is 업로드하다 (to upload), not 업르도하다.</violation>

<violation number="2" location="WORKS.md:38">
P3: File name mismatch: WORKS.md references `checkout-sources` but the actual bridge docs page is named `checking-sources` (confirmed by the file itself and the navigation meta.json). Update WORKS.md to match the actual file name so the plan stays useful as a reference.</violation>
</file>

<file name="content/docs/guide/remote/using-cli.ko.mdx">

<violation number="1" location="content/docs/guide/remote/using-cli.ko.mdx:10">
P3: Wrong Korean object particle. 'deployer' reads as '디플로이어' where '어' has no 받침 (final consonant), so it should take '를' instead of '을'. Fix: `uploader`/`deployer`를</violation>

<violation number="2" location="content/docs/guide/remote/using-cli.ko.mdx:25">
P3: Three wrong Korean particles on one line. 'endpoint' ('엔드포인트', '트' no 받침 → '는' not '은'), 'uploader' ('업로더', '더' no 받침 → '와' not '과'), 'deployer' ('디플로이어', '어' no 받침 → '는' not '은').</violation>
</file>

<file name="content/docs/guide/remote/providers/cloudflare.ko.mdx">

<violation number="1" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:10">
P3: Wrong Korean topic particle. 'pulumi' reads as '풀루미' where '미' has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `@wvb/remote-cloudflare-provider-pulumi는`</violation>

<violation number="2" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:27">
P3: Wrong Korean subject particle. 'remote-cloudflare-provider' reads as '프로바이더' ('더' no 받침 → takes '가' not '이'). Fix: `@wvb/remote-cloudflare-provider가`</violation>

<violation number="3" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:43">
P3: Wrong Korean topic particle. 'remote-cloudflare' reads as '클라우드플레어' ('어' no 받침 → takes '는' not '은'). Fix: `@wvb/remote-cloudflare는`</violation>

<violation number="4" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:43">
P3: Korean particle mismatch on English terms `uploader`과 and `deployer`을. Since `uploader` and `deployer` end in a vowel sound in Korean pronunciation (업로더, 디플로이어), they should take `와` and `를` respectively, not `과` and `을`.</violation>
</file>

<file name="content/docs/guide/remote/index.ko.mdx">

<violation number="1" location="content/docs/guide/remote/index.ko.mdx:11">
P3: Wrong Korean topic particle attached to '업로드'. The word '업로드' ends with '드' which has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `**업로드**는`</violation>

<violation number="2" location="content/docs/guide/remote/index.ko.mdx:12">
P3: Wrong Korean topic particle attached to '배포'. The word '배포' ends with '포' which has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `**배포**는`</violation>
</file>

<file name="content/docs/guide/remote/providers/local.ko.mdx">

<violation number="1" location="content/docs/guide/remote/providers/local.ko.mdx:18">
P3: Wrong Korean subject particle. The package name 'remote-local-provider' reads as '프로바이더' in Korean — '더' has no 받침 (final consonant), so it should take '가' instead of '이'. Fix: `@wvb/remote-local-provider가`</violation>

<violation number="2" location="content/docs/guide/remote/providers/local.ko.mdx:39">
P3: Wrong Korean particles attached to 'uploader' and 'deployer'. 'uploader' reads as '업로더' ('더' no 받침 → takes '와' not '과'). 'deployer' reads as '디플로이어' ('어' no 받침 → takes '를' not '을').</violation>

<violation number="3" location="content/docs/guide/remote/providers/local.ko.mdx:57">
P3: 해당 줄에 네 군데의 조사 오류가 있습니다. `localRemote`(로컬리모트)는 '트'가 받침 없으므로 `은`→`는`, `deployer`(디플로이어)는 `을`→`를`, `upload`(업로드)는 '드'가 받침 없으므로 `과`→`와`, `deploy`(디플로이)는 `이`→`가`로 각각 수정해야 맞습니다.</violation>
</file>

<file name="content/docs/guide/remote/providers/aws.ko.mdx">

<violation number="1" location="content/docs/guide/remote/providers/aws.ko.mdx:10">
P3: Wrong Korean topic particle. 'pulumi' reads as '풀루미' where '미' has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `@wvb/remote-aws-provider-pulumi는`</violation>

<violation number="2" location="content/docs/guide/remote/providers/aws.ko.mdx:31">
P3: Wrong Korean topic particle. 'AWS' reads as '에이더블유에스' where '스' has no 받침 (final consonant), so it should take '는' instead of '은' in Korean convention for acronyms.</violation>
</file>

<file name="content/docs/guide/core-concepts/glue-to-native.ko.mdx">

<violation number="1" location="content/docs/guide/core-concepts/glue-to-native.ko.mdx:24">
P3: The nested bullet points under `Node.js`, `Android/iOS`, and `Deno` are using flat `-` markers instead of indented `  -` markers. This flattens the visual hierarchy in the rendered output — the sub-items will appear as sibling top-level items rather than children of their platform headings. Adding 2-space indentation to the sub-items will match the English version's structure and make the list easier to scan.</violation>

<violation number="2" location="content/docs/guide/core-concepts/glue-to-native.ko.mdx:25">
P3: The phrase "N-API를 바인딩한" should be "N-API에 바인딩한" — the verb 'bind' takes the target with '에' (bind **to** something), not another '를'. This matches the English "binds the Rust code to N-API".</violation>

<violation number="3" location="content/docs/guide/core-concepts/glue-to-native.ko.mdx:26">
P3: The phrase "8으로" should be "8로" — '8' (팔) ends with the consonant 'ㄹ', so the correct particle is '로' (e.g., "8로 호환 가능한").</violation>
</file>

<file name="content/docs/references/api/config/builtin-local-target-config.mdx">

<violation number="1" location="content/docs/references/api/config/builtin-local-target-config.mdx:18">
P3: Grammatical error in the `packBeforeInstall` description: "when the workspace detected" should be "when a workspace is detected" (or "when the workspace is detected"). The description indicates the option applies when the tool auto-detects a workspace config. Originates from JSDoc in the source package — update the JSDoc so the next regeneration produces correct output.</violation>
</file>

<file name="content/docs/guide/remote/http-spec/errors.ko.mdx">

<violation number="1" location="content/docs/guide/remote/http-spec/errors.ko.mdx:14">
P3: Korean particle mismatch: `message` ends with vowel 'e', so `을` should be `를`. Standard Korean mixed-script convention uses `를` after vowel-final English words (`message`), matching the pronunciation `메시지를`.</violation>

<violation number="2" location="content/docs/guide/remote/http-spec/errors.ko.mdx:22">
P3: Korean particle mismatch: `404` (digit 4 → 사) ends without 받침, so `은` should be `는`. The full phrase `403과 404` ends with `404` (vowel-final), making `는` the correct topic particle.</violation>

<violation number="3" location="content/docs/guide/remote/http-spec/errors.ko.mdx:31">
P3: The object particle after `` `BundleAlreadyUploadedError` `` should be `를` instead of `을`. In Korean reading, the final syllable `러` has no batchim, so the standard particle is `를`.</violation>

<violation number="4" location="content/docs/guide/remote/http-spec/errors.ko.mdx:31">
P3: Korean particle mismatch: `true` ends with vowel 'e', so `을` should be `를`. The parenthetical group `(--force`(또는 `force: true`)` ends with vowel-final `true`, requiring `를`.</violation>
</file>

<file name="content/docs/references/api/config/bundle-name-resolver.mdx">

<violation number="1" location="content/docs/references/api/config/bundle-name-resolver.mdx:11">
P3: Grammar error in the description: 'will be throw error' should read 'will throw an error' or 'an error will be thrown'. Since this file is auto-generated from JSDoc, fix the source JSDoc in `packages/config/src/common.ts` (line ~48) and regenerate — editing the .mdx alone will be overwritten.</violation>
</file>

<file name="content/docs/guide/getting-started/index.ko.mdx">

<violation number="1" location="content/docs/guide/getting-started/index.ko.mdx:27">
P3: 재시작없이 → 재시작 없이: 명사 '재시작' 뒤에 조사 '없이'가 붙으므로 띄어 써야 합니다.</violation>

<violation number="2" location="content/docs/guide/getting-started/index.ko.mdx:31">
P3: 호환가능하게 → 호환 가능하게: '호환'과 '가능하게'는 각각 독립적인 단어이므로 띄어 써야 합니다.</violation>
</file>

Note: This PR contains a large number of files. cubic only reviews up to 200 files per PR, so some files may not have been reviewed. cubic prioritizes the most important files to review.

Re-trigger cubic

binding that dispatches to `wvb`. Call after creating the window and the app, e.g.

```ts
const win = new Deno.BrowserWindow();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1: The example code creates a Deno.BrowserWindow without a URL pointing to the bundle server, so the window won't load the webview bundle assets. The guide consistently shows new Deno.BrowserWindow({ url: http://localhost:${server.addr.port}` })` after creating the server. Consider updating the example to create the server first, capture its port, and pass it to the window.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/deno-desktop/register-bindings.mdx, line 12:

<comment>The example code creates a `Deno.BrowserWindow` without a URL pointing to the bundle server, so the window won't load the webview bundle assets. The guide consistently shows `new Deno.BrowserWindow({ url: `http://localhost:${server.addr.port}` })` after creating the server. Consider updating the example to create the server first, capture its port, and pass it to the window.</comment>

<file context>
@@ -0,0 +1,35 @@
+binding that dispatches to `wvb`. Call after creating the window and the app, e.g.
+
+```ts
+const win = new Deno.BrowserWindow();
+const app = webviewBundle({ source: { appName: 'myapp' }, protocols: [bundleProtocol('app')] });
+registerBindings(win, app);
</file context>

## Type

```ts
type HttpResponse = any;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: type HttpResponse = any provides zero useful type information. The deno and node counterparts both have a full <TypeTable> with body, headers, and status properties — users of deno-desktop need the same details. Either the TypeScript source's JSDoc/type for deno-desktop's HttpResponse needs to be concretely typed instead of any, or the generator needs a fallback to resolve the true shape.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/deno-desktop/http-response.mdx, line 11:

<comment>`type HttpResponse = any` provides zero useful type information. The `deno` and `node` counterparts both have a full `<TypeTable>` with `body`, `headers`, and `status` properties — users of `deno-desktop` need the same details. Either the TypeScript source's JSDoc/type for `deno-desktop`'s `HttpResponse` needs to be concretely typed instead of `any`, or the generator needs a fallback to resolve the true shape.</comment>

<file context>
@@ -0,0 +1,12 @@
+## Type
+
+```ts
+type HttpResponse = any;
+```
</file context>


[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/deno-desktop/lib/remote.ts#L4)

**Extends:** `HttpResponse`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: The generated doc claims RemoteOptions extends HttpResponse, but the TypeScript source shows it extends RemoteBindingOptions (aliased from @wvb/deno's RemoteOptions, which is { http?: HttpOptions } with no extends clause). This will mislead users about the interface's shape.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/deno-desktop/remote-options.mdx, line 10:

<comment>The generated doc claims `RemoteOptions` extends `HttpResponse`, but the TypeScript source shows it extends `RemoteBindingOptions` (aliased from `@wvb/deno`'s `RemoteOptions`, which is `{ http?: HttpOptions }` with no extends clause). This will mislead users about the interface's shape.</comment>

<file context>
@@ -0,0 +1,10 @@
+
+[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/deno-desktop/lib/remote.ts#L4)
+
+**Extends:** `HttpResponse`
</file context>
Suggested change
**Extends:** `HttpResponse`
**Extends:** `{ http?: HttpOptions }`


Source는 디렉터리를 있는 그대로 로드하므로, 앱 타깃에 **폴더 레퍼런스**(Xcode의 파란색 폴더)로 추가하세요. 그룹으로 추가하면 매니페스트가 가리키는 `<name>/<name>_<version>.wvb` 구조가 평탄화됩니다. `--ios` 프리셋은 `Project.swift`에 `folderReference`를 추가해 이를 대신 처리합니다(Tuist 프로젝트).

다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#sources)을 참고하세요.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: The Korean iOS setup page has ## 소스 as its heading, which generates anchor #소스, not #sources. The link /docs/guide/native/ios#sources won't navigate to the Sources section in the Korean guide — update it to /docs/guide/native/ios#소스 so readers land on the right section.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/native/ios/builtin.ko.mdx, line 26:

<comment>The Korean iOS setup page has `## 소스` as its heading, which generates anchor `#소스`, not `#sources`. The link `/docs/guide/native/ios#sources` won't navigate to the Sources section in the Korean guide — update it to `/docs/guide/native/ios#소스` so readers land on the right section.</comment>

<file context>
@@ -0,0 +1,30 @@
+
+Source는 디렉터리를 있는 그대로 로드하므로, 앱 타깃에 **폴더 레퍼런스**(Xcode의 파란색 폴더)로 추가하세요. 그룹으로 추가하면 매니페스트가 가리키는 `<name>/<name>_<version>.wvb` 구조가 평탄화됩니다. `--ios` 프리셋은 `Project.swift`에 `folderReference`를 추가해 이를 대신 처리합니다(Tuist 프로젝트).
+
+다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#sources)을 참고하세요.
+
+## 리모트 또는 로컬
</file context>
Suggested change
다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#sources)을 참고하세요.
다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#소스)을 참고하세요.

[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/cli/src/config.ts#L26)

```ts
function loadConfigFile(filePath?: string, cwd: string = ...): Promise<{ config: Config; configFile: string; configFileDependencies: string[] } | null>;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: The loadConfigFile documentation shows ... as the default value for the cwd parameter in both the signature (cwd: string = ...) and the parameter table (default: '...'). The actual default from the source is process.cwd(). This ... is a TypeDoc placeholder for complex expressions and is unhelpful — it makes the docs appear incomplete or confusing. The auto-generation script should either resolve the actual default expression, fall back to the @default JSDoc tag, or suppress the ... placeholder entirely so readers see the correct value.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/cli/load-config-file.mdx, line 11:

<comment>The `loadConfigFile` documentation shows `...` as the default value for the `cwd` parameter in both the signature (`cwd: string = ...`) and the parameter table (`default: '...'`). The actual default from the source is `process.cwd()`. This `...` is a TypeDoc placeholder for complex expressions and is unhelpful — it makes the docs appear incomplete or confusing. The auto-generation script should either resolve the actual default expression, fall back to the `@default` JSDoc tag, or suppress the `...` placeholder entirely so readers see the correct value.</comment>

<file context>
@@ -0,0 +1,25 @@
+[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/cli/src/config.ts#L26)
+
+```ts
+function loadConfigFile(filePath?: string, cwd: string = ...): Promise<{ config: Config; configFile: string; configFileDependencies: string[] } | null>;
+```
+
</file context>

여러 플랫폼 및 환경을 지원하기 위해 `wvb` 크레이트는 바인딩되어 제공됩니다. 바인딩은 코어 크레이트인 `wvb`의 API를 그대로 노출하여 서로 다른 플랫폼/환경에서도 동일한 API를 사용할 수 있습니다.

- **Node.js**
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: The phrase "N-API를 바인딩한" should be "N-API에 바인딩한" — the verb 'bind' takes the target with '에' (bind to something), not another '를'. This matches the English "binds the Rust code to N-API".

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/core-concepts/glue-to-native.ko.mdx, line 25:

<comment>The phrase "N-API를 바인딩한" should be "N-API에 바인딩한" — the verb 'bind' takes the target with '에' (bind **to** something), not another '를'. This matches the English "binds the Rust code to N-API".</comment>

<file context>
@@ -0,0 +1,51 @@
+여러 플랫폼 및 환경을 지원하기 위해 `wvb` 크레이트는 바인딩되어 제공됩니다. 바인딩은 코어 크레이트인 `wvb`의 API를 그대로 노출하여 서로 다른 플랫폼/환경에서도 동일한 API를 사용할 수 있습니다.
+
+- **Node.js**
+- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
+- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.
+- **Android/iOS**
</file context>
Suggested change
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)에 바인딩한 네이티브 애드온을 사용합니다.


- **Node.js**
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: The phrase "8으로" should be "8로" — '8' (팔) ends with the consonant 'ㄹ', so the correct particle is '로' (e.g., "8로 호환 가능한").

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/core-concepts/glue-to-native.ko.mdx, line 26:

<comment>The phrase "8으로" should be "8로" — '8' (팔) ends with the consonant 'ㄹ', so the correct particle is '로' (e.g., "8로 호환 가능한").</comment>

<file context>
@@ -0,0 +1,51 @@
+
+- **Node.js**
+- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
+- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.
+- **Android/iOS**
+- [uniffi](https://github.com/mozilla/uniffi-rs)를 이용해 Rust 코드를 Kotlin/Swift 바인딩을 만듭니다.
</file context>
Suggested change
- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.
- 사용하는 N-API 버전은 8로 호환 가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.


## 게시하기

`@wvb/remote-cloudflare`은 `uploader`과 `deployer`을 설정용으로 제공합니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: Korean particle mismatch on English terms uploader과 and deployer을. Since uploader and deployer end in a vowel sound in Korean pronunciation (업로더, 디플로이어), they should take 와 and 를 respectively, not 과 and 을.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/remote/providers/cloudflare.ko.mdx, line 43:

<comment>Korean particle mismatch on English terms `uploader`과 and `deployer`을. Since `uploader` and `deployer` end in a vowel sound in Korean pronunciation (업로더, 디플로이어), they should take `와` and `를` respectively, not `과` and `을`.</comment>

<file context>
@@ -0,0 +1,70 @@
+
+## 게시하기
+
+`@wvb/remote-cloudflare`은 `uploader`과 `deployer`을 설정용으로 제공합니다.
+
+```sh
</file context>
Suggested change
`@wvb/remote-cloudflare`은 `uploader`과 `deployer`을 설정용으로 제공합니다.
`@wvb/remote-cloudflare`은 `uploader`와 `deployer`를 설정용으로 제공합니다.


### 멀티 플랫폼 지원

웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환가능하게 빌드됩니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: 호환가능하게 → 호환 가능하게: '호환'과 '가능하게'는 각각 독립적인 단어이므로 띄어 써야 합니다.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/getting-started/index.ko.mdx, line 31:

<comment>호환가능하게 → 호환 가능하게: '호환'과 '가능하게'는 각각 독립적인 단어이므로 띄어 써야 합니다.</comment>

<file context>
@@ -0,0 +1,35 @@
+
+### 멀티 플랫폼 지원
+
+웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환가능하게 빌드됩니다.
+
+- Node.js : [napi.rs](https://napi.rs/)를 이용해 [네이티브 애드온](https://nodejs.org/api/n-api.html)을 만들어 사용합니다.
</file context>
Suggested change
웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환가능하게 빌드됩니다.
웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환 가능하게 빌드됩니다.


네이티브 앱 번들에 포함된 번들을 최신 상태로 업데이트하기 위해 웹뷰 번들 시스템은 원격 기술을 제공합니다. [리모트](/docs/guide/core-concepts/over-the-air) 제공자를 만들어 배포할 번들을 업로드할 수 있고, 프론트엔드 혹은 네이티브에서 원하는 타이밍에 신규 번들을 다운받아 최신 상태를 유지할 수 있습니다.

웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: 재시작없이 → 재시작 없이: 명사 '재시작' 뒤에 조사 '없이'가 붙으므로 띄어 써야 합니다.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/getting-started/index.ko.mdx, line 27:

<comment>재시작없이 → 재시작 없이: 명사 '재시작' 뒤에 조사 '없이'가 붙으므로 띄어 써야 합니다.</comment>

<file context>
@@ -0,0 +1,35 @@
+
+네이티브 앱 번들에 포함된 번들을 최신 상태로 업데이트하기 위해 웹뷰 번들 시스템은 원격 기술을 제공합니다. [리모트](/docs/guide/core-concepts/over-the-air) 제공자를 만들어 배포할 번들을 업로드할 수 있고, 프론트엔드 혹은 네이티브에서 원하는 타이밍에 신규 번들을 다운받아 최신 상태를 유지할 수 있습니다.
+
+웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.
+
+### 멀티 플랫폼 지원
</file context>
Suggested change
웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.
웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작 없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를 들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.

@cubic-dev-ai cubic-dev-ai 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.

40 issues found across 555 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="content/docs/references/api/deno-desktop/register-bindings.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/register-bindings.mdx:12">
P1: The example code creates a `Deno.BrowserWindow` without a URL pointing to the bundle server, so the window won't load the webview bundle assets. The guide consistently shows `new Deno.BrowserWindow({ url: `http://localhost:${server.addr.port}` })` after creating the server. Consider updating the example to create the server first, capture its port, and pass it to the window.</violation>
</file>

<file name="content/docs/references/api/deno-desktop/http-response.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/http-response.mdx:11">
P2: `type HttpResponse = any` provides zero useful type information. The `deno` and `node` counterparts both have a full `<TypeTable>` with `body`, `headers`, and `status` properties — users of `deno-desktop` need the same details. Either the TypeScript source's JSDoc/type for `deno-desktop`'s `HttpResponse` needs to be concretely typed instead of `any`, or the generator needs a fallback to resolve the true shape.</violation>
</file>

<file name="content/docs/references/api/deno-desktop/remote-options.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/remote-options.mdx:10">
P2: The generated doc claims `RemoteOptions` extends `HttpResponse`, but the TypeScript source shows it extends `RemoteBindingOptions` (aliased from `@wvb/deno`'s `RemoteOptions`, which is `{ http?: HttpOptions }` with no extends clause). This will mislead users about the interface's shape.</violation>
</file>

<file name="content/docs/guide/native/ios/builtin.ko.mdx">

<violation number="1" location="content/docs/guide/native/ios/builtin.ko.mdx:26">
P2: The Korean iOS setup page has `## 소스` as its heading, which generates anchor `#소스`, not `#sources`. The link `/docs/guide/native/ios#sources` won't navigate to the Sources section in the Korean guide — update it to `/docs/guide/native/ios#소스` so readers land on the right section.</violation>
</file>

<file name="content/docs/references/api/cli/load-config-file.mdx">

<violation number="1" location="content/docs/references/api/cli/load-config-file.mdx:11">
P2: The `loadConfigFile` documentation shows `...` as the default value for the `cwd` parameter in both the signature (`cwd: string = ...`) and the parameter table (`default: '...'`). The actual default from the source is `process.cwd()`. This `...` is a TypeDoc placeholder for complex expressions and is unhelpful — it makes the docs appear incomplete or confusing. The auto-generation script should either resolve the actual default expression, fall back to the `@default` JSDoc tag, or suppress the `...` placeholder entirely so readers see the correct value.</violation>
</file>

<file name="content/docs/references/api/config/pack-config.mdx">

<violation number="1" location="content/docs/references/api/config/pack-config.mdx:52">
P2: The headers example shows `["cache-control", "max-age=0"]` as an array — but the type definition shows `HeadersInit` which accepts `[string, string][]` (tuples of header name and value). The example shows a flat 2-element array `["cache-control", "max-age=0"]` where it should be a tuple element `[["cache-control", "max-age=0"]]` for the array form. As written, this demonstrates an incorrect usage pattern that would not work as expected.</violation>

<violation number="2" location="content/docs/references/api/config/pack-config.mdx:54">
P2: Example code block for `headers` contains JSDoc-style `*` line prefixes that weren't stripped during auto-generation, making the TypeScript example invalid.</violation>
</file>

<file name="content/docs/guide/getting-started/platform-and-framework-support.mdx">

<violation number="1" location="content/docs/guide/getting-started/platform-and-framework-support.mdx:15">
P2: The Compatible versions column for iOS says "Swift 6" but the iOS setup doc states the requirement as "Swift tools 6.1, language mode 6". "Swift 6" is ambiguous — it could mean Swift 6.0 compiler, the Swift 6 language mode, or the 6.1 toolchain. The actual requirement is Swift tools 6.1, which is more specific. A developer who reads "Swift 6" and installs Swift 6.0 may run into build failures.</violation>
</file>

<file name="content/docs/guide/remote/providers/aws.mdx">

<violation number="1" location="content/docs/guide/remote/providers/aws.mdx:58">
P2: The Callout states "Lambda@Edge always runs in us-east-1," which is misleading. AWS explicitly documents that Lambda@Edge functions execute at CloudFront edge locations closest to the viewer — not in us-east-1. Only the function authoring/creation is restricted to us-east-1. A reader might incorrectly assume a performance penalty (round-tripping through a single region) when the functions actually run at the edge. Recommend clarifying the distinction between creation region and execution location.</violation>
</file>

<file name="content/docs/references/api/deno-desktop/app-data-dir.mdx">

<violation number="1" location="content/docs/references/api/deno-desktop/app-data-dir.mdx:3">
P2: The frontmatter description is truncated with a literal ellipsis character, cutting off the Linux fallback path before sharing it. This means page meta descriptions, search previews, and social cards will show incomplete text. The body text correctly has the full `(or ~/.local/share)` — the truncation is in the generation script that produces the frontmatter description.</violation>
</file>

<file name="content/docs/guide/getting-started/prerequisites.mdx">

<violation number="1" location="content/docs/guide/getting-started/prerequisites.mdx:29">
P2: The iOS section lists "Swift v5" as the minimum version, but the iOS setup guide requires Swift tools 6.1 / language mode 6 and the platform support page lists Swift 6. A developer with only Swift 5 installed would not be able to use the library. Update to "Swift 6" (or "Swift tools 6.1") to match the actual requirements.</violation>
</file>

<file name="content/docs/guide/native/deno/building.mdx">

<violation number="1" location="content/docs/guide/native/deno/building.mdx:34">
P2: When `deno desktop --include` embeds the `.dylib`, resolving it via `new URL('./vendor/wvb/libwvb_deno.dylib', import.meta.url)` may construct a filesystem path that doesn't exist at runtime (the file is inside the binary, not alongside it). If the tool extracts included files to a temp or working directory, the docs should mention that so readers understand the resolution mechanism. If it doesn't, the `lib` path won't be valid.</violation>
</file>

<file name="content/docs/guide/frontend/upload.ko.mdx">

<violation number="1" location="content/docs/guide/frontend/upload.ko.mdx:28">
P3: Particle mismatch: `**업로드**은` should be `**업로드**는` because `업로드` ends in a vowel (드 has no 받침). For Korean readers this reads as a noticeable grammar error.</violation>

<violation number="2" location="content/docs/guide/frontend/upload.ko.mdx:29">
P3: Particle mismatch: `**배포**은` should be `**배포**는` because `배포` ends in a vowel (포 has no 받침).</violation>
</file>

<file name="WORKS.md">

<violation number="1" location="WORKS.md:35">
P3: Typo: `업르도된` → `업로드된`. The verb is 업로드하다 (to upload), not 업르도하다.</violation>

<violation number="2" location="WORKS.md:38">
P3: File name mismatch: WORKS.md references `checkout-sources` but the actual bridge docs page is named `checking-sources` (confirmed by the file itself and the navigation meta.json). Update WORKS.md to match the actual file name so the plan stays useful as a reference.</violation>
</file>

<file name="content/docs/guide/remote/using-cli.ko.mdx">

<violation number="1" location="content/docs/guide/remote/using-cli.ko.mdx:10">
P3: Wrong Korean object particle. 'deployer' reads as '디플로이어' where '어' has no 받침 (final consonant), so it should take '를' instead of '을'. Fix: `uploader`/`deployer`를</violation>

<violation number="2" location="content/docs/guide/remote/using-cli.ko.mdx:25">
P3: Three wrong Korean particles on one line. 'endpoint' ('엔드포인트', '트' no 받침 → '는' not '은'), 'uploader' ('업로더', '더' no 받침 → '와' not '과'), 'deployer' ('디플로이어', '어' no 받침 → '는' not '은').</violation>
</file>

<file name="content/docs/guide/remote/providers/cloudflare.ko.mdx">

<violation number="1" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:10">
P3: Wrong Korean topic particle. 'pulumi' reads as '풀루미' where '미' has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `@wvb/remote-cloudflare-provider-pulumi는`</violation>

<violation number="2" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:27">
P3: Wrong Korean subject particle. 'remote-cloudflare-provider' reads as '프로바이더' ('더' no 받침 → takes '가' not '이'). Fix: `@wvb/remote-cloudflare-provider가`</violation>

<violation number="3" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:43">
P3: Wrong Korean topic particle. 'remote-cloudflare' reads as '클라우드플레어' ('어' no 받침 → takes '는' not '은'). Fix: `@wvb/remote-cloudflare는`</violation>

<violation number="4" location="content/docs/guide/remote/providers/cloudflare.ko.mdx:43">
P3: Korean particle mismatch on English terms `uploader`과 and `deployer`을. Since `uploader` and `deployer` end in a vowel sound in Korean pronunciation (업로더, 디플로이어), they should take `와` and `를` respectively, not `과` and `을`.</violation>
</file>

<file name="content/docs/guide/remote/index.ko.mdx">

<violation number="1" location="content/docs/guide/remote/index.ko.mdx:11">
P3: Wrong Korean topic particle attached to '업로드'. The word '업로드' ends with '드' which has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `**업로드**는`</violation>

<violation number="2" location="content/docs/guide/remote/index.ko.mdx:12">
P3: Wrong Korean topic particle attached to '배포'. The word '배포' ends with '포' which has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `**배포**는`</violation>
</file>

<file name="content/docs/guide/remote/providers/local.ko.mdx">

<violation number="1" location="content/docs/guide/remote/providers/local.ko.mdx:18">
P3: Wrong Korean subject particle. The package name 'remote-local-provider' reads as '프로바이더' in Korean — '더' has no 받침 (final consonant), so it should take '가' instead of '이'. Fix: `@wvb/remote-local-provider가`</violation>

<violation number="2" location="content/docs/guide/remote/providers/local.ko.mdx:39">
P3: Wrong Korean particles attached to 'uploader' and 'deployer'. 'uploader' reads as '업로더' ('더' no 받침 → takes '와' not '과'). 'deployer' reads as '디플로이어' ('어' no 받침 → takes '를' not '을').</violation>

<violation number="3" location="content/docs/guide/remote/providers/local.ko.mdx:57">
P3: 해당 줄에 네 군데의 조사 오류가 있습니다. `localRemote`(로컬리모트)는 '트'가 받침 없으므로 `은`→`는`, `deployer`(디플로이어)는 `을`→`를`, `upload`(업로드)는 '드'가 받침 없으므로 `과`→`와`, `deploy`(디플로이)는 `이`→`가`로 각각 수정해야 맞습니다.</violation>
</file>

<file name="content/docs/guide/remote/providers/aws.ko.mdx">

<violation number="1" location="content/docs/guide/remote/providers/aws.ko.mdx:10">
P3: Wrong Korean topic particle. 'pulumi' reads as '풀루미' where '미' has no 받침 (final consonant), so it should take '는' instead of '은'. Fix: `@wvb/remote-aws-provider-pulumi는`</violation>

<violation number="2" location="content/docs/guide/remote/providers/aws.ko.mdx:31">
P3: Wrong Korean topic particle. 'AWS' reads as '에이더블유에스' where '스' has no 받침 (final consonant), so it should take '는' instead of '은' in Korean convention for acronyms.</violation>
</file>

<file name="content/docs/guide/core-concepts/glue-to-native.ko.mdx">

<violation number="1" location="content/docs/guide/core-concepts/glue-to-native.ko.mdx:24">
P3: The nested bullet points under `Node.js`, `Android/iOS`, and `Deno` are using flat `-` markers instead of indented `  -` markers. This flattens the visual hierarchy in the rendered output — the sub-items will appear as sibling top-level items rather than children of their platform headings. Adding 2-space indentation to the sub-items will match the English version's structure and make the list easier to scan.</violation>

<violation number="2" location="content/docs/guide/core-concepts/glue-to-native.ko.mdx:25">
P3: The phrase "N-API를 바인딩한" should be "N-API에 바인딩한" — the verb 'bind' takes the target with '에' (bind **to** something), not another '를'. This matches the English "binds the Rust code to N-API".</violation>

<violation number="3" location="content/docs/guide/core-concepts/glue-to-native.ko.mdx:26">
P3: The phrase "8으로" should be "8로" — '8' (팔) ends with the consonant 'ㄹ', so the correct particle is '로' (e.g., "8로 호환 가능한").</violation>
</file>

<file name="content/docs/references/api/config/builtin-local-target-config.mdx">

<violation number="1" location="content/docs/references/api/config/builtin-local-target-config.mdx:18">
P3: Grammatical error in the `packBeforeInstall` description: "when the workspace detected" should be "when a workspace is detected" (or "when the workspace is detected"). The description indicates the option applies when the tool auto-detects a workspace config. Originates from JSDoc in the source package — update the JSDoc so the next regeneration produces correct output.</violation>
</file>

<file name="content/docs/guide/remote/http-spec/errors.ko.mdx">

<violation number="1" location="content/docs/guide/remote/http-spec/errors.ko.mdx:14">
P3: Korean particle mismatch: `message` ends with vowel 'e', so `을` should be `를`. Standard Korean mixed-script convention uses `를` after vowel-final English words (`message`), matching the pronunciation `메시지를`.</violation>

<violation number="2" location="content/docs/guide/remote/http-spec/errors.ko.mdx:22">
P3: Korean particle mismatch: `404` (digit 4 → 사) ends without 받침, so `은` should be `는`. The full phrase `403과 404` ends with `404` (vowel-final), making `는` the correct topic particle.</violation>

<violation number="3" location="content/docs/guide/remote/http-spec/errors.ko.mdx:31">
P3: The object particle after `` `BundleAlreadyUploadedError` `` should be `를` instead of `을`. In Korean reading, the final syllable `러` has no batchim, so the standard particle is `를`.</violation>

<violation number="4" location="content/docs/guide/remote/http-spec/errors.ko.mdx:31">
P3: Korean particle mismatch: `true` ends with vowel 'e', so `을` should be `를`. The parenthetical group `(--force`(또는 `force: true`)` ends with vowel-final `true`, requiring `를`.</violation>
</file>

<file name="content/docs/references/api/config/bundle-name-resolver.mdx">

<violation number="1" location="content/docs/references/api/config/bundle-name-resolver.mdx:11">
P3: Grammar error in the description: 'will be throw error' should read 'will throw an error' or 'an error will be thrown'. Since this file is auto-generated from JSDoc, fix the source JSDoc in `packages/config/src/common.ts` (line ~48) and regenerate — editing the .mdx alone will be overwritten.</violation>
</file>

<file name="content/docs/guide/getting-started/index.ko.mdx">

<violation number="1" location="content/docs/guide/getting-started/index.ko.mdx:27">
P3: 재시작없이 → 재시작 없이: 명사 '재시작' 뒤에 조사 '없이'가 붙으므로 띄어 써야 합니다.</violation>

<violation number="2" location="content/docs/guide/getting-started/index.ko.mdx:31">
P3: 호환가능하게 → 호환 가능하게: '호환'과 '가능하게'는 각각 독립적인 단어이므로 띄어 써야 합니다.</violation>
</file>

Note: This PR contains a large number of files. cubic only reviews up to 200 files per PR, so some files may not have been reviewed. cubic prioritizes the most important files to review.

Re-trigger cubic

binding that dispatches to `wvb`. Call after creating the window and the app, e.g.

```ts
const win = new Deno.BrowserWindow();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1: The example code creates a Deno.BrowserWindow without a URL pointing to the bundle server, so the window won't load the webview bundle assets. The guide consistently shows new Deno.BrowserWindow({ url: http://localhost:${server.addr.port}` })` after creating the server. Consider updating the example to create the server first, capture its port, and pass it to the window.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/deno-desktop/register-bindings.mdx, line 12:

<comment>The example code creates a `Deno.BrowserWindow` without a URL pointing to the bundle server, so the window won't load the webview bundle assets. The guide consistently shows `new Deno.BrowserWindow({ url: `http://localhost:${server.addr.port}` })` after creating the server. Consider updating the example to create the server first, capture its port, and pass it to the window.</comment>

<file context>
@@ -0,0 +1,35 @@
+binding that dispatches to `wvb`. Call after creating the window and the app, e.g.
+
+```ts
+const win = new Deno.BrowserWindow();
+const app = webviewBundle({ source: { appName: 'myapp' }, protocols: [bundleProtocol('app')] });
+registerBindings(win, app);
</file context>

## Type

```ts
type HttpResponse = any;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: type HttpResponse = any provides zero useful type information. The deno and node counterparts both have a full <TypeTable> with body, headers, and status properties — users of deno-desktop need the same details. Either the TypeScript source's JSDoc/type for deno-desktop's HttpResponse needs to be concretely typed instead of any, or the generator needs a fallback to resolve the true shape.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/deno-desktop/http-response.mdx, line 11:

<comment>`type HttpResponse = any` provides zero useful type information. The `deno` and `node` counterparts both have a full `<TypeTable>` with `body`, `headers`, and `status` properties — users of `deno-desktop` need the same details. Either the TypeScript source's JSDoc/type for `deno-desktop`'s `HttpResponse` needs to be concretely typed instead of `any`, or the generator needs a fallback to resolve the true shape.</comment>

<file context>
@@ -0,0 +1,12 @@
+## Type
+
+```ts
+type HttpResponse = any;
+```
</file context>


[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/deno-desktop/lib/remote.ts#L4)

**Extends:** `HttpResponse`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: The generated doc claims RemoteOptions extends HttpResponse, but the TypeScript source shows it extends RemoteBindingOptions (aliased from @wvb/deno's RemoteOptions, which is { http?: HttpOptions } with no extends clause). This will mislead users about the interface's shape.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/deno-desktop/remote-options.mdx, line 10:

<comment>The generated doc claims `RemoteOptions` extends `HttpResponse`, but the TypeScript source shows it extends `RemoteBindingOptions` (aliased from `@wvb/deno`'s `RemoteOptions`, which is `{ http?: HttpOptions }` with no extends clause). This will mislead users about the interface's shape.</comment>

<file context>
@@ -0,0 +1,10 @@
+
+[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/deno-desktop/lib/remote.ts#L4)
+
+**Extends:** `HttpResponse`
</file context>
Suggested change
**Extends:** `HttpResponse`
**Extends:** `{ http?: HttpOptions }`


Source는 디렉터리를 있는 그대로 로드하므로, 앱 타깃에 **폴더 레퍼런스**(Xcode의 파란색 폴더)로 추가하세요. 그룹으로 추가하면 매니페스트가 가리키는 `<name>/<name>_<version>.wvb` 구조가 평탄화됩니다. `--ios` 프리셋은 `Project.swift`에 `folderReference`를 추가해 이를 대신 처리합니다(Tuist 프로젝트).

다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#sources)을 참고하세요.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: The Korean iOS setup page has ## 소스 as its heading, which generates anchor #소스, not #sources. The link /docs/guide/native/ios#sources won't navigate to the Sources section in the Korean guide — update it to /docs/guide/native/ios#소스 so readers land on the right section.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/native/ios/builtin.ko.mdx, line 26:

<comment>The Korean iOS setup page has `## 소스` as its heading, which generates anchor `#소스`, not `#sources`. The link `/docs/guide/native/ios#sources` won't navigate to the Sources section in the Korean guide — update it to `/docs/guide/native/ios#소스` so readers land on the right section.</comment>

<file context>
@@ -0,0 +1,30 @@
+
+Source는 디렉터리를 있는 그대로 로드하므로, 앱 타깃에 **폴더 레퍼런스**(Xcode의 파란색 폴더)로 추가하세요. 그룹으로 추가하면 매니페스트가 가리키는 `<name>/<name>_<version>.wvb` 구조가 평탄화됩니다. `--ios` 프리셋은 `Project.swift`에 `folderReference`를 추가해 이를 대신 처리합니다(Tuist 프로젝트).
+
+다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#sources)을 참고하세요.
+
+## 리모트 또는 로컬
</file context>
Suggested change
다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#sources)을 참고하세요.
다른 위치에서 읽으려면 `WebViewBundleConfig.source`에 `builtinDir`을 설정하세요. iOS 설정 가이드의 [Sources 섹션](/docs/guide/native/ios#소스)을 참고하세요.

[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/cli/src/config.ts#L26)

```ts
function loadConfigFile(filePath?: string, cwd: string = ...): Promise<{ config: Config; configFile: string; configFileDependencies: string[] } | null>;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: The loadConfigFile documentation shows ... as the default value for the cwd parameter in both the signature (cwd: string = ...) and the parameter table (default: '...'). The actual default from the source is process.cwd(). This ... is a TypeDoc placeholder for complex expressions and is unhelpful — it makes the docs appear incomplete or confusing. The auto-generation script should either resolve the actual default expression, fall back to the @default JSDoc tag, or suppress the ... placeholder entirely so readers see the correct value.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/references/api/cli/load-config-file.mdx, line 11:

<comment>The `loadConfigFile` documentation shows `...` as the default value for the `cwd` parameter in both the signature (`cwd: string = ...`) and the parameter table (`default: '...'`). The actual default from the source is `process.cwd()`. This `...` is a TypeDoc placeholder for complex expressions and is unhelpful — it makes the docs appear incomplete or confusing. The auto-generation script should either resolve the actual default expression, fall back to the `@default` JSDoc tag, or suppress the `...` placeholder entirely so readers see the correct value.</comment>

<file context>
@@ -0,0 +1,25 @@
+[View source ↗](https://github.com/webview-bundle/webview-bundle/blob/262b4d90c5f036ab9d52086913752b990875ac84/packages/cli/src/config.ts#L26)
+
+```ts
+function loadConfigFile(filePath?: string, cwd: string = ...): Promise<{ config: Config; configFile: string; configFileDependencies: string[] } | null>;
+```
+
</file context>

여러 플랫폼 및 환경을 지원하기 위해 `wvb` 크레이트는 바인딩되어 제공됩니다. 바인딩은 코어 크레이트인 `wvb`의 API를 그대로 노출하여 서로 다른 플랫폼/환경에서도 동일한 API를 사용할 수 있습니다.

- **Node.js**
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: The phrase "N-API를 바인딩한" should be "N-API에 바인딩한" — the verb 'bind' takes the target with '에' (bind to something), not another '를'. This matches the English "binds the Rust code to N-API".

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/core-concepts/glue-to-native.ko.mdx, line 25:

<comment>The phrase "N-API를 바인딩한" should be "N-API에 바인딩한" — the verb 'bind' takes the target with '에' (bind **to** something), not another '를'. This matches the English "binds the Rust code to N-API".</comment>

<file context>
@@ -0,0 +1,51 @@
+여러 플랫폼 및 환경을 지원하기 위해 `wvb` 크레이트는 바인딩되어 제공됩니다. 바인딩은 코어 크레이트인 `wvb`의 API를 그대로 노출하여 서로 다른 플랫폼/환경에서도 동일한 API를 사용할 수 있습니다.
+
+- **Node.js**
+- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
+- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.
+- **Android/iOS**
</file context>
Suggested change
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)에 바인딩한 네이티브 애드온을 사용합니다.


- **Node.js**
- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: The phrase "8으로" should be "8로" — '8' (팔) ends with the consonant 'ㄹ', so the correct particle is '로' (e.g., "8로 호환 가능한").

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/core-concepts/glue-to-native.ko.mdx, line 26:

<comment>The phrase "8으로" should be "8로" — '8' (팔) ends with the consonant 'ㄹ', so the correct particle is '로' (e.g., "8로 호환 가능한").</comment>

<file context>
@@ -0,0 +1,51 @@
+
+- **Node.js**
+- [napi.rs](https://napi.rs/)를 이용해 Rust 코드를 [N-API](https://nodejs.org/api/n-api.html)를 바인딩한 네이티브 에드온을 사용합니다.
+- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.
+- **Android/iOS**
+- [uniffi](https://github.com/mozilla/uniffi-rs)를 이용해 Rust 코드를 Kotlin/Swift 바인딩을 만듭니다.
</file context>
Suggested change
- 사용하는 N-API 버전은 8으로 호환가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.
- 사용하는 N-API 버전은 8로 호환 가능한 Node.js 버전은 [Node.js 문서](https://nodejs.org/api/n-api.html#node-api-version-matrix)를 참고해주세요.


## 게시하기

`@wvb/remote-cloudflare`은 `uploader`과 `deployer`을 설정용으로 제공합니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: Korean particle mismatch on English terms uploader과 and deployer을. Since uploader and deployer end in a vowel sound in Korean pronunciation (업로더, 디플로이어), they should take 와 and 를 respectively, not 과 and 을.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/remote/providers/cloudflare.ko.mdx, line 43:

<comment>Korean particle mismatch on English terms `uploader`과 and `deployer`을. Since `uploader` and `deployer` end in a vowel sound in Korean pronunciation (업로더, 디플로이어), they should take `와` and `를` respectively, not `과` and `을`.</comment>

<file context>
@@ -0,0 +1,70 @@
+
+## 게시하기
+
+`@wvb/remote-cloudflare`은 `uploader`과 `deployer`을 설정용으로 제공합니다.
+
+```sh
</file context>
Suggested change
`@wvb/remote-cloudflare`은 `uploader`과 `deployer`을 설정용으로 제공합니다.
`@wvb/remote-cloudflare`은 `uploader`와 `deployer`를 설정용으로 제공합니다.


### 멀티 플랫폼 지원

웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환가능하게 빌드됩니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: 호환가능하게 → 호환 가능하게: '호환'과 '가능하게'는 각각 독립적인 단어이므로 띄어 써야 합니다.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/getting-started/index.ko.mdx, line 31:

<comment>호환가능하게 → 호환 가능하게: '호환'과 '가능하게'는 각각 독립적인 단어이므로 띄어 써야 합니다.</comment>

<file context>
@@ -0,0 +1,35 @@
+
+### 멀티 플랫폼 지원
+
+웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환가능하게 빌드됩니다.
+
+- Node.js : [napi.rs](https://napi.rs/)를 이용해 [네이티브 애드온](https://nodejs.org/api/n-api.html)을 만들어 사용합니다.
</file context>
Suggested change
웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환가능하게 빌드됩니다.
웹뷰 번들 코어는 Rust로 작성되었으며 여러 플랫폼에 호환 가능하게 빌드됩니다.


네이티브 앱 번들에 포함된 번들을 최신 상태로 업데이트하기 위해 웹뷰 번들 시스템은 원격 기술을 제공합니다. [리모트](/docs/guide/core-concepts/over-the-air) 제공자를 만들어 배포할 번들을 업로드할 수 있고, 프론트엔드 혹은 네이티브에서 원하는 타이밍에 신규 번들을 다운받아 최신 상태를 유지할 수 있습니다.

웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: 재시작없이 → 재시작 없이: 명사 '재시작' 뒤에 조사 '없이'가 붙으므로 띄어 써야 합니다.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At content/docs/guide/getting-started/index.ko.mdx, line 27:

<comment>재시작없이 → 재시작 없이: 명사 '재시작' 뒤에 조사 '없이'가 붙으므로 띄어 써야 합니다.</comment>

<file context>
@@ -0,0 +1,35 @@
+
+네이티브 앱 번들에 포함된 번들을 최신 상태로 업데이트하기 위해 웹뷰 번들 시스템은 원격 기술을 제공합니다. [리모트](/docs/guide/core-concepts/over-the-air) 제공자를 만들어 배포할 번들을 업로드할 수 있고, 프론트엔드 혹은 네이티브에서 원하는 타이밍에 신규 번들을 다운받아 최신 상태를 유지할 수 있습니다.
+
+웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.
+
+### 멀티 플랫폼 지원
</file context>
Suggested change
웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.
웹뷰 번들을 원격으로 업데이트하는 과정은 네이티브 앱 배포 혹은 앱 재시작 없이 수행되기에 UX를 해치지 않고 최신 상태를 유지할 수 있습니다. 예를 들어, Electron은 업데이트 하려면 수십MB를 다운받고 앱을 재시작해야 업데이트가 반영되는데, 웹뷰 번들을 이용하면 이 과정을 생략할 수 있습니다.

seokju-na added a commit that referenced this pull request Jul 6, 2026
main advanced only via PR #11 (the same `newdoc` docs work this branch is built
on) plus a WORKS.md update — it made no code or content changes this branch
doesn't already contain. Resolved by keeping the migration (ours) for all code,
config, and docs content, dropping the old `src/` TanStack app, and taking
main's WORKS.md.

Verified: `next build` green, `yarn check:links`, lint, and format all pass;
`yarn install --immutable` in sync.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AFm8T7PNfkxNcN9yFTCe8J
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.

1 participant