DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A framework-agnostic WYSIWYG / Markdown editor, shipped as a
<km-editor>Web Component on ProseMirror.
@keenmate/web-editor is a custom element (<km-editor>) that gives you one
editable document with Markdown, HTML, and JSON as import/export formats at the
edges. It's built on ProseMirror and the shared
@keenmate/web-components-core runtime (shadow DOM, adopted styles) — the same
model as the rest of the KeenMate component line. Works in React, Vue, Svelte,
Blazor, or plain HTML.
Headline features:
edit, split (editor + live output), preview (read-only),
and inline (a floating card that can anchor to a page element).npm install @keenmate/web-editor
Declarative — just attributes:
<script type="module">
import '@keenmate/web-editor';
</script>
<link rel="stylesheet" href="@keenmate/web-editor/style.css" />
<km-editor value="# Hello" format="markdown" toolbar="top"></km-editor>
Programmatic — dynamic content + events:
import '@keenmate/web-editor';
const editor = document.querySelector('km-editor');
editor.addEventListener('ready', () => editor.focus());
editor.addEventListener('change', (e) => {
console.log(e.detail.value, e.detail.format);
});
editor.setValue('## New heading', 'markdown');
editor.getMarkdown(); // live content — getValue reads live edits, not the `value` attribute
Every attribute is also a property (e.g. el.mode = 'preview').
| Attribute | Values | Default | Description |
|---|---|---|---|
value | string | — | Initial content, interpreted per format. Reassigning replaces the document. Reading el.value returns the assigned value, not live edits — use getValue(). |
format | markdown | html | json | markdown | Serialization lens for content I/O (value, getValue(), the change detail). Switching re-reports the same document in the new format — it never rebuilds it. |
mode | edit | split | preview | inline | edit | Presentation. preview forces read-only. inline renders a floating card (see anchor). |
readonly | boolean | false | Make the editor read-only. mode="preview" also forces this on. |
toolbar | top | bottom | start | end | none | top | Which edge the command toolbar docks to (none hides it). The selection toolbar and context menu are always available while editing. |
statusbar | none | top | bottom | both | none | A dedicated strip of live indicators (word/char count, plugin items). both splits items across two strips. |
theme | string | — | Theme name, reflected to the host for CSS theming (:host([theme="…"])). |
anchor | CSS selector | — | For mode="inline" only: the page element the floating card tracks. |
Events:
| Event | detail | Fires when |
|---|---|---|
change | { value, format } | Content changes (serialized in the active format). |
ready | — | The engine has mounted and is ready. |
mode-change | { mode } | The mode changes. |
Methods & properties:
| Member | Returns | Description |
|---|---|---|
getValue(format?) | string | Live content in format (defaults to the active format). |
getMarkdown() / getHTML() | string | Live content in that format. |
getJSON() | unknown | Live content as the ProseMirror JSON document. |
setValue(value, format?) | void | Replace the document from value. |
focus() | void | Focus the editing surface. |
isReady | boolean | Whether the engine is mounted. |
plugins | EditorPlugin[] | The active plugin set — assign to compose with defaultPlugins() (rebuilds, preserving content). |
engine | EditorEngine | null | The headless engine, for advanced/programmatic use. |
destroy() | void | Tear down the element and its engine. |
The component is shadow-DOM scoped, so its styles don't leak and page styles don't bleed in. Ship the stylesheet once:
<link rel="stylesheet" href="@keenmate/web-editor/style.css" />
Set theme="…" to target a theme from your own CSS via :host([theme="…"]).
The editor assembles itself from a plugin set. Links, images, tables, and code
highlighting are first-party plugins used by default; you can add your own with
definePlugin(...) and compose them with defaultPlugins():
import { definePlugin, defaultPlugins } from '@keenmate/web-editor';
// …define a plugin, then:
document.querySelector('km-editor').plugins = [...defaultPlugins(), myPlugin];
Writing plugins (schema nodes/marks, commands, keybindings, toolbar/menu items,
the Markdown-serializer contract) and the content-pipeline layer are covered in
docs/ — see the Pipelines guide (with
diagrams) — plus PLAN.md and the PIPELINES.md
design note.
Modern evergreen browsers — anything with native customElements and Shadow DOM
(Chrome/Edge, Firefox, Safari 15.4+). No polyfills are shipped.
npm install # from the repo root (npm workspaces)
npm run dev -w @keenmate/web-editor # dev playground (Vite)
npm run build -w @keenmate/web-editor # library build
npm test -w @keenmate/web-editor # unit tests (Vitest)
The example site (hub + per-feature pages) is described in
EXAMPLES.md; npm run build:examples -w @keenmate/web-editor
produces the static dist-examples/ site.
MIT © Keenmate s.r.o. — see LICENSE.