Skip to content

feat: PWA with light/dark manifests and kimi web --pwa /web pwa#1929

Open
ceritium wants to merge 1 commit into
MoonshotAI:mainfrom
ceritium:pwa-app-window
Open

feat: PWA with light/dark manifests and kimi web --pwa /web pwa#1929
ceritium wants to merge 1 commit into
MoonshotAI:mainfrom
ceritium:pwa-app-window

Conversation

@ceritium

Copy link
Copy Markdown

Related Issue

No prior issue — this is a contribution to make the Kimi web UI installable as a PWA.

Problem

The web UI did not ship as an installable PWA, so users could not open it as a standalone app window. There was also no CLI/TUI flag to indicate the PWA preference.

What changed

  • Added PWA assets: light/dark manifests, icons, and Apple touch icon.
  • Integrated vite-plugin-pwa with workbox-window in apps/kimi-web.
  • Added theme-aware manifest switching in boot.js and useAppearance.ts.
  • Added kimi web --pwa and /web pwa flags. These are opt-in so the current default browser behavior is unchanged; they can become the default later if desired.

Checklist

  • I have read the CONTRIBUTING document.
  • I have explained the problem above.
  • I have added tests that prove my feature works.
  • This PR includes a changeset.
  • I have updated the relevant documentation.

@changeset-bot

changeset-bot Bot commented Jul 19, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 602b945

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@moonshot-ai/kimi-code Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@ceritium
ceritium marked this pull request as ready for review July 19, 2026 22:03

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 602b945b30

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

)
.option('--no-open', 'Do not open the web UI in the default browser.', true)
.option(
'--pwa',

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 Badge Wire --pwa before documenting it

When kimi web --pwa is passed, Commander records opts.pwa, but handleWebCommand never reads it and still calls deps.openUrl(...) with the same URL as the default path. In the advertised Chromium/app-window scenario, the flag is therefore a no-op and users get an ordinary browser tab despite the new help text promising otherwise.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

My first iteration did that; actually, I was doing --app instead of --pwa, but the PR was bigger, and I am not really interested in an "app for desktop", only making the web app more comfortable for phones.

export async function handleWebCommand(host: SlashCommandHost): Promise<void> {
export async function handleWebCommand(
host: SlashCommandHost,
args = '',

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 Badge Handle the /web pwa argument

/web pwa now reaches this handler, but the new args parameter is never inspected, so both the existing-server path and the start-new-server path behave exactly like /web; even unknown arguments are silently ignored. This makes the documented slash-command variant unable to request the PWA/app-window behavior.

Useful? React with 👍 / 👎.

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