docs: fix typo in zh readme - #1
Merged
Merged
Conversation
Signed-off-by: Yichen Yan <oraluben@outlook.com>
RealKai42
approved these changes
May 22, 2026
liruifengv
added a commit
that referenced
this pull request
May 27, 2026
* feat(tui): expand paste markers on second paste When the cursor sits on a folded paste marker (e.g. `[paste #1 +15 lines]`) and the user pastes again (Ctrl-V or bracketed paste), the marker is expanded back to its original content instead of inserting new clipboard data. * chore: add changeset for paste marker expansion * fix(tui): preserve paste content after marker expansion for undo Stop deleting the paste entry from the Map after expansion so that undo → re-expand still works. * fix(tui): buffer consumed paste data to handle split end sequences Accumulate chunks while consuming discarded paste data so a split ESC[201~ across chunks still resets consumingPaste.
wbxl2000
pushed a commit
that referenced
this pull request
May 29, 2026
Git permits ref characters that have special meaning in URLs — most notably `#`, which is a valid tag character (e.g. `release#1`) but the URL fragment delimiter. The resolver decoded the tag from GitHub's `/releases/latest` 302 redirect Location header and then interpolated the raw value into the codeload URL. The literal `#1` became a fragment and the HTTP request reached the server as `…/refs/tags/release` — a wrong or truncated ref, leading to install failure for a release whose URL was otherwise valid. Two symmetric changes: - The codeload URL builder now splits the ref on `/` (so multi-segment refs like `feat/foo` keep their path separators) and percent-encodes each segment. - The GitHub URL parser now percent-decodes each segment from the URL's pathname when extracting `/tree/<ref>`, `/releases/tag/<tag>`, and `/commit/<sha>`. Storage and display see the human-readable Git ref name; the resolver re-encodes on the way out. Malformed `%xx` sequences in user-typed URLs are tolerated: we keep the raw segment so the caller surfaces a normal "ref not found" error downstream instead of crashing during parse.
wbxl2000
added a commit
that referenced
this pull request
May 29, 2026
* feat(plugin): install plugins from a GitHub repository URL Allow `/plugins install <github-url>` (and marketplace `source` entries) to take a GitHub repo URL directly. A new `github` source kind joins the existing `local-path` and `zip-url` kinds. Recognized URL forms (parsing in source.ts): - `https://github.com/<o>/<r>` — bare; resolves to latest release tag, falling back to default branch HEAD. - `https://github.com/<o>/<r>/tree/<ref>` — branch / tag / SHA; value passed to codeload in its short form so the backend resolves either. - `https://github.com/<o>/<r>/releases/tag/<tag>` — explicit tag, uses refs/tags/<tag> to avoid same-named-branch ambiguity. - `https://github.com/<o>/<r>/commit/<sha>` — explicit commit SHA. The resolver deliberately avoids `api.github.com`: its 60/hour anonymous quota is shared with every other tool on the egress IP (browser, gh CLI, IDE integrations) and a first-time install failing because some other tool ate the budget is unacceptable UX. Instead we: - GET `github.com/<o>/<r>/releases/latest` with manual redirect and parse the `Location` header (302 → tag URL; 404 → no own release). - Fall back to `codeload.github.com/<o>/<r>/zip/HEAD` for repos with no releases (or for forks that inherit upstream tags but have no own release page, which redirect to bare `/releases`). - Only treat the explicit 404 from `/releases/latest` as "no release" — 5xx, 403, 429, and any other non-2xx status surface a hard error rather than silently installing the default branch, so the user knows when transient GitHub issues changed the install path. UI changes in the TUI: - `/plugins install` now shows a live Braille spinner while resolving and downloading, then flips to a final status that distinguishes Installed (fresh) vs Updated (same repo identity, new version) vs Migrated (source changed, e.g. CDN zip-url → GitHub). - `/plugins list`, the `/plugins` overview, and `/plugins info` show the install provenance inline. `zip-url` installs now display the URL host (e.g. `via code.kimi.com`, `via 127.0.0.1:port`) instead of the opaque `zip-url` literal. GitHub installs show `github <owner>/<repo>@<ref>`. - Three-tier trust badge driven by the marketplace context recorded at install time: `official` (green) for `tier: official`, `curated` (blue) for `tier: curated`, `third-party` (muted) for anything not installed through the marketplace selector. CLI `/plugins install <url>` always records as third-party; the marketplace selector passes the tier through. A re-install replaces the marketplace context: switching to a third-party source clears the badge, which matches the underlying trust change. `installed.json` gains optional `github` and `marketplace` fields (back-compatible). PluginSummary surfaces `source`, `originalSource`, `github`, and `marketplace` so the TUI can label installs without an extra round trip to PluginInfo. The SDK's `session.installPlugin(source)` gains an optional `{ marketplace }` second argument so the marketplace selector can forward `{ id, tier }` through RPC; the CLI install path omits it. Tests: 112 plugin-suite tests (URL parser, resolver, store round-trip, manager integration). The manager integration tests assert codeload URLs shape (short form for `/tree/<ref>`, explicit `refs/tags/` for `/releases/tag/`) and verify marketplace context is persisted across reloads and cleared on a third-party re-install. * chore(changeset): plugin install from GitHub * docs(plugins): document GitHub install URLs and trust badges * fix(plugin): preserve URL-encoded characters in GitHub ref names Git permits ref characters that have special meaning in URLs — most notably `#`, which is a valid tag character (e.g. `release#1`) but the URL fragment delimiter. The resolver decoded the tag from GitHub's `/releases/latest` 302 redirect Location header and then interpolated the raw value into the codeload URL. The literal `#1` became a fragment and the HTTP request reached the server as `…/refs/tags/release` — a wrong or truncated ref, leading to install failure for a release whose URL was otherwise valid. Two symmetric changes: - The codeload URL builder now splits the ref on `/` (so multi-segment refs like `feat/foo` keep their path separators) and percent-encodes each segment. - The GitHub URL parser now percent-decodes each segment from the URL's pathname when extracting `/tree/<ref>`, `/releases/tag/<tag>`, and `/commit/<sha>`. Storage and display see the human-readable Git ref name; the resolver re-encodes on the way out. Malformed `%xx` sequences in user-typed URLs are tolerated: we keep the raw segment so the caller surfaces a normal "ref not found" error downstream instead of crashing during parse. * fix: restrict plugin trust badges * chore: remove fetch when show plugin list --------- Co-authored-by: qer <Anna_Knapprfr@mail.com>
5 tasks
sailist
added a commit
that referenced
this pull request
Jun 5, 2026
…imentalDecorators (P2.1) Smoke test for Phase 2 @ifoo migration: switch `services.set(IConnectionRegistry, new ConnectionRegistry())` to `services.set(IConnectionRegistry, new SyncDescriptor(ConnectionRegistry))` so the container drives construction through `_createAndCacheServiceInstance` and the @ifoo auto-injection path. ConnectionRegistry has 0 service deps so the auto-inject step is a no-op — this is the minimum viable proof that the new path replaces ad-hoc `new C()` registrations cleanly. Logger stays as an externally-built `PinoLogger` instance (its ctor takes the pino DaemonLogger, not a DI dependency). Also enable `experimentalDecorators: true` in `packages/{daemon,services}/tsconfig.json` — required prerequisite for `@IFoo`-style parameter decorators landing in P2.2 onwards. The root tsconfig stays untouched; only the two packages migrating to @ifoo opt in. esbuild (vitest transpiler) and tsdown (rolldown bundler) both honor this flag for legacy parameter-decorator emit. Per phase-1 reviewer handoff #1: this is the smoke test confirming a single descriptor-based registration migrates cleanly before fan-out. agent-core/src/di/ untouched (sealed for Phase 2). Daemon test green (241 pass after one flake-rerun on fs-watch.e2e.test.ts AC #2 burst window — known flake per phase-1 reviewer handoff #5). VERDICT: PASS — start.ts:296 descriptor swap + tsconfig experimentalDecorators=true; 241/241 daemon tests green.
|
This is a test comment generated by the GitHub MCP tool during a comprehensive tool demonstration. |
wintrover
added a commit
to wintrover/kimy
that referenced
this pull request
Jun 29, 2026
- kimy wrapper: move hash writes after smoke test (MoonshotAI#1) - kimy wrapper: add public/ to web hash inputs (MoonshotAI#3) - kimy wrapper: widen vis hash to include config files (MoonshotAI#4) - kimy wrapper: move lockfile from /tmp to ~/.kimy/bin (MoonshotAI#5) - kimy wrapper: use explicit package list for native hash (MoonshotAI#7) - 01-bundle.mjs: skip vis-asset build when already done (MoonshotAI#2) - justfile: sync deploy with new wrapper, add deploy-full (MoonshotAI#9,MoonshotAI#10,MoonshotAI#11) - flake.nix: add unpin guidance to nixpkgs comment (MoonshotAI#12)
asdshuaishuai
pushed a commit
to d2rabbit/kimi-code
that referenced
this pull request
Jul 21, 2026
…, diff drawer, more rounded corners Five user-reported issues fixed in this batch: MoonshotAI#3 Font-size adjustment now actually works Root cause: App.svelte's :global(body) used the `font:` shorthand with a hardcoded 13px, which won over the global.css `body { font-size: var(--ui-font-size) }` rule (same specificity, later in cascade). The shorthand resets font-size and the slider had no effect. Fix: replace shorthand with individual properties (font-family/size/line-height), keep font-size: var(--ui-font-size). Verified via headless Chromium: default 14px, slider to 20px → 20px, back to 14px → 14px. MoonshotAI#8 Plugin enable/disable ACL error Root cause: PluginPanel called Command.sidecar('kimi', ['plugin', 'disable', id]) which needs shell:allow-execute permission that isn't (and shouldn't be) granted in tauri.conf.json. Fix: added Rust `toggle_plugin(plugin_id, enabled)` command that directly edits ~/.kimi-code/plugins/installed.json (atomic tmp+rename). PluginPanel now invoke()s the new command instead of spawning a sidecar. No ACL needed. MoonshotAI#11 Softer UI — bumped radius tokens --r-sm 6→8, --r-md 8→10, --r-lg 10→14, --r-xl 12→18. Legacy scale bumped in parallel (--radius-xs 6→8, etc.). All components using these tokens get the bump automatically. MoonshotAI#2 Sidebar workspace/session hierarchy Workspace headers are now visually bigger (30px tall, 12.5px bold, with a top border + subtle bg gradient) and the session rows are indented (margin-left: 20px, smaller 11.5px font-weight 400). Workspace count badge becomes a pill instead of plain text. The hierarchy reads cleanly now. MoonshotAI#1 Working-directory diff → second-level right drawer New DiffDrawer.svelte component (540px, slides in from right with spring animation). Clicking a file in the '工作区改动' section of RightPanel opens the drawer; inline expansion is gone. Commit- history diffs stay inline (only the working-directory section was changed per UX request). Esc / ✕ / mask click closes. MoonshotAI#9 Composer compact moved into the main control row '压缩' is now a pill button next to mode/model/thinking instead of a separate FAB below. Per UX request: 'mode / model / thinking / compact all in one row'. Verified: svelte-check 0 errors, cargo check 0 warnings.
asdshuaishuai
pushed a commit
to d2rabbit/kimi-code
that referenced
this pull request
Jul 21, 2026
Reduced svelte-check warnings from 24 → 0 by fixing each category:
· a11y label associations (9): wrapped inputs in <label>…<input>
pairs in McpPanel (7) and PluginPanel (2) so screen readers can
announce field names.
· dialog tabindex (3): GoalDialog, SwarmDialog, DiffDrawer,
ProviderModelDialog now carry tabindex='-1' on their role=dialog
containers so focus management works.
· click events on non-interactive divs (4): GoalDialog / SwarmDialog
mask divs get svelte-ignore a11y_click_events_have_key_events
(they already had onkeydown Esc handlers — the linter can't see
through role=presentation). TerminalDrawer resize handle switched
to a div with role=presentation + svelte-ignore.
· autofocus warnings (2): GoalDialog / SwarmDialog textareas get
svelte-ignore a11y_autofocus — autofocus is intentional for modal
input UX.
· unused CSS selectors (5): removed .fab-row / .fab / .fab:hover
from Composer (compact moved to ctrl row in MoonshotAI#9), .term-chevron
from TerminalDrawer (icon was removed), .wd-file.expanded
.wd-chevron from RightPanel (inline expansion replaced by
DiffDrawer in MoonshotAI#1).
· ToolCard reactive capture (1): the initial-value warning on
expanded = $state(tool.status === 'running') fixed by
initializing to false and letting the $effect do the work.
· ProviderModelDialog unused prop (1): removed the _mode prop
destructuring entirely — the dialog is always unified, the prop
type stays for backward compat but isn't read.
Result: svelte-check reports 0 errors, 0 warnings.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related Issue
Resolve #(issue_number)
Description
Checklist
gen-changesetsskill, or this PR needs no changeset.gen-docsskill, or this PR needs no doc update.