everydaymind31 downloadsOpen and edit HWP and HWPX documents locally with a bundled RHWP engine, and expose a versioned document API to other plugins.
Open and edit Hangul HWP and HWPX documents inside Obsidian Desktop. Documents are parsed, laid out and saved locally by a bundled RHWP WebAssembly engine; nothing leaves your computer.
The user interface is in Korean.
.hwp and .hwpx files from the file explorer or from links, and type directly into body text, table cells and form fields on the page.[[Plan.hwpx#page=3]] jumps to page 3, [Summary](Plan.hwp#Summary) jumps to the first paragraph with that text.![[Plan.hwpx]] or ![[Plan.hwpx#page=3]] show a sanitized read-only preview of one page, with a button to open the editor..hwp or .hwpx. A copy is refused if a re-parse check finds lost content, formatting or resources; the original stays untouched..index.md) of body text, nested table cells, fields, text boxes, headers, footers and notes, regenerated after saves. Editing the index never changes the HWP/HWPX original.Install HWP Hands from Community plugins. For a manual installation, copy main.js, manifest.json and styles.css from a release into .obsidian/plugins/hwp-hands/ and enable the plugin.
Open an HWP or HWPX file. Click on the page to type; edits apply to the document model immediately. Save with the save button or Ctrl+S.
Commands (command palette): open an HWP/HWPX document, create a new HWPX document, save the current document, generate the Markdown index, recover unapplied input, cancel the current engine task, and clean up stored backups and temporary files.
Settings: open HWP/HWPX by default (turn off if another plugin should handle these files), show editor tools, input preview, back up the original before saving, generate the search index automatically, maximum document size, and keeping a whole document private from AI tools.
const api = app.plugins.plugins['hwp-hands']?.api;
if (api?.version === 1) {
const lease = await api.documents.acquire('Docs/Report.hwpx');
try {
const tree = await api.query.tree('Docs/Report.hwpx');
const receipt = await api.edit.transaction('Docs/Report.hwpx', [
{ type: 'replaceText', query: 'draft', replacement: 'final' },
], { expectedRevision: tree.state.revision });
await api.documents.save('Docs/Report.hwpx', { expectedRevision: receipt.revision });
} finally {
await lease.release();
}
}
The API shares the editor's document session, so a person and another plugin see the same state. Writes must name the revision they expect; a stale revision is rejected instead of overwriting newer edits.
.index.md files when the search index is enabled. Backups, recovery journals and unsaved input drafts are stored in the plugin folder.main.js contains the RHWP WebAssembly engine and its worker. The engine is built from RHWP 0.9.0 with local patches; origin, patches and build instructions are in vendor/rhwp-core/UPSTREAM.md. The engine's SHA-256 is checked before it starts.MIT, see LICENSE. Third-party licenses are listed in THIRD_PARTY_NOTICES.md and at the top of main.js.
Verbex, an AI agent plugin for Obsidian that works together with this plugin, is planned for public release.