Skip to content

docs: fix typo in zh readme - #1

Merged
RealKai42 merged 1 commit into
MoonshotAI:mainfrom
oraluben:patch-1
May 22, 2026
Merged

docs: fix typo in zh readme#1
RealKai42 merged 1 commit into
MoonshotAI:mainfrom
oraluben:patch-1

Conversation

@oraluben

Copy link
Copy Markdown
Contributor

Related Issue

Resolve #(issue_number)

Description

Checklist

  • I have read the CONTRIBUTING document.
  • I have linked the related issue, if any.
  • I have added tests that prove my fix is effective or that my feature works.
  • Ran gen-changesets skill, or this PR needs no changeset.
  • Ran gen-docs skill, or this PR needs no doc update.

Signed-off-by: Yichen Yan <oraluben@outlook.com>
@RealKai42
RealKai42 merged commit 154e5a7 into MoonshotAI:main May 22, 2026
4 of 5 checks passed
@oraluben oraluben changed the title Fix typo in zh readme docs: fix typo in zh readme May 22, 2026
@oraluben
oraluben deleted the patch-1 branch May 22, 2026 10:54
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>
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.
@lc-235

lc-235 commented Jun 16, 2026

Copy link
Copy Markdown

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.
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.

3 participants