---
title: "Donghao Li (@donghao-tools) | Hashnode"
description: "I build small web tools and share practical notes on data cleanup, debugging, and reliable interfaces. Read the latest articles by Donghao Li on Hashnode."
url: "https://hashnode.com/@donghao-tools"
---

@donghao-tools

# Donghao Li

@donghao-tools · Joined September 2026

I build small web tools and share practical notes on data cleanup, debugging, and reliable interfaces.

### [Keep one ground point when exporting eight-direction Blender sprites](https://donghao-tools.hashnode.dev/keep-one-ground-point-when-exporting-eight-direction-blender-sprites?utm_source=hashnode&utm_medium=feed)

Export eight-direction sprites with a fixed ground anchor. A Blender example covering orthographic framing, pixel coordinates and PNG checks.

3 min read · [donghao-tools.hashnode.dev](https://donghao-tools.hashnode.dev/keep-one-ground-point-when-exporting-eight-direction-blender-sprites?utm_source=hashnode&utm_medium=feed)

[Sep 21](https://hashnode.com/posts/keep-one-ground-point-when-exporting-eight-direction-blender-sprites/6ab0f9f353ae7bc7884dedf2)

### [My H5P quiz worked locally. The import still failed.](https://donghao-tools.hashnode.dev/my-h5p-quiz-worked-locally-the-import-still-failed?utm_source=hashnode&utm_medium=feed)

A real H5P quiz import fix, with host-version checks, scoring tests and a free mobile-friendly Mandarin sample.

2 min read · [donghao-tools.hashnode.dev](https://donghao-tools.hashnode.dev/my-h5p-quiz-worked-locally-the-import-still-failed?utm_source=hashnode&utm_medium=feed)

[Sep 20](https://hashnode.com/posts/my-h5p-quiz-worked-locally-the-import-still-failed/6aafe7a2d517fda7be619825)

### [What happens to permissions when an editor switches maps?](https://donghao-tools.hashnode.dev/what-happens-to-permissions-when-an-editor-switches-maps?utm_source=hashnode&utm_medium=feed)

A practical OpenAO case: scoped access, protected-map confirmation, audit records, and browser tests that caught a hidden publish dialog.

3 min read · [donghao-tools.hashnode.dev](https://donghao-tools.hashnode.dev/what-happens-to-permissions-when-an-editor-switches-maps?utm_source=hashnode&utm_medium=feed)

[Sep 19](https://hashnode.com/posts/what-happens-to-permissions-when-an-editor-switches-maps/6aae9f3573efc565542d2640)

### [A quote can be exact and still belong to the wrong person](https://donghao-tools.hashnode.dev/a-quote-can-be-exact-and-still-belong-to-the-wrong-person?utm_source=hashnode&utm_medium=feed)

Use source IDs, sender direction and nine Python tests to catch misattributed quotes in model-assisted inbox workflows.

4 min read · [donghao-tools.hashnode.dev](https://donghao-tools.hashnode.dev/a-quote-can-be-exact-and-still-belong-to-the-wrong-person?utm_source=hashnode&utm_medium=feed)

[Sep 12](https://hashnode.com/posts/a-quote-can-be-exact-and-still-belong-to-the-wrong-person/6aa59ccb4d24442054c7508e)

### [How I tested a WordPress inquiry form beyond the success message](https://donghao-tools.hashnode.dev/how-i-tested-a-wordpress-inquiry-form-beyond-the-success-message?utm_source=hashnode&utm_medium=feed)

A working WordPress demo: trace a form submission into a private admin inbox, test invalid requests, and verify the stored result.

4 min read · [donghao-tools.hashnode.dev](https://donghao-tools.hashnode.dev/how-i-tested-a-wordpress-inquiry-form-beyond-the-success-message?utm_source=hashnode&utm_medium=feed)

[Sep 12](https://hashnode.com/posts/how-i-tested-a-wordpress-inquiry-form-beyond-the-success-message/6aa573e643f3f8c55a9e7d9c)
