DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
Translation pending
Edit documents in a WYSIWYG or Markdown editor and import or export them as HTML or JSON
Translation pending
AI summary · website content
ProductivityTypeScript · HTMLGitHub @KeenmateOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.