{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/package.json",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/CHANGELOG.md",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/CONTRIBUTING.md",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/Dockerfile",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/LICENSE",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/src/components/basic/FirmwareUpdater.svelte",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/.gitea/workflows/deploy-to-server.yml",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/.gitea/workflows/build-android-app.yml",
    "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/.gitea/workflows/build-tauri-app.yml",
    "https://github.com/MultiMote/niimblue/releases/tag/v2026.9.0",
    "https://github.com/MultiMote/niimbluelib/blob/a9bc3f5c20c95e3a31ea3f5f2302ce7b27c34abe/README.md",
    "https://printers.niim.blue/interfacing/proto/"
  ],
  "category": "reconstruction-cases",
  "description_en": "Replaces NIIMBOT's own label app with a browser client that designs labels and prints them over Web Bluetooth or Web Serial, with Android (Capacitor) and Windows (Tauri) builds of the same interface. Printer communication comes from the same author's NiimBlueLib, which the README calls the most complete implementation of the NIIMBOT protocol; the protocol is documented on the NIIMBOT Community Wiki, and owners of models that do not print are asked for a packet capture of a print made with the official app. The README says the client runs entirely in the browser and keeps label data there.",
  "description_zh": "以浏览器客户端替代 NIIMBOT 官方标签应用，可设计标签并通过 Web Bluetooth 或 Web Serial 打印，同一界面另有 Android（Capacitor）和 Windows（Tauri）版本。与打印机的通信由同一作者的 NiimBlueLib 实现，README 称其为最完整的 NIIMBOT 协议实现；协议记录在 NIIMBOT Community Wiki 上，打印失败机型的用户会被请求提供用官方应用打印时的数据包抓包。README 称客户端完全在浏览器中运行，标签数据也保存在浏览器里。",
  "entry_url": "https://awesomerea.org/resources/niimblue-niimbot-printer-client-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/niimblue-niimbot-printer-client-case/",
  "evidence_url": "https://github.com/MultiMote/niimblue/blob/82c5605780818299422a6acdf3180d87c569578d/README.md",
  "group": "cases",
  "id": "niimblue-niimbot-printer-client-case",
  "json_url": "https://awesomerea.org/resources/niimblue-niimbot-printer-client-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/niimblue-niimbot-printer-client-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/niimblue-niimbot-printer-client-case/index.md",
  "name": "NiimBlue: an independent web client for NIIMBOT label printers",
  "name_zh": "NiimBlue：NIIMBOT 标签打印机的独立网页客户端",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "The reviewed main commit is the v2026.9.0 release of 2026-09-27; newer work lands on the dev branch, which CONTRIBUTING names as the base for pull requests. The README keeps no list of supported models and points to a NiimBlueLib issue that collects tested models; it suggests trying a different print-task version in the preview dialog when printing fails.",
    "Needs the user's own NIIMBOT printer over Bluetooth or USB serial and a browser with the Web Bluetooth or Web Serial API, usually Chrome-based; some systems need Chrome flags enabled, Safari needs a third-party extension, and deployments other than localhost need HTTPS. No vendor app or firmware is needed to print. The optional firmware updater only flashes a .bin file the user selects.",
    "Built with Node.js and npm from Svelte 5, Vite and Fabric.js, with @mmote/niimbluelib pinned at 0.47.0; npm run build writes static files, and the Dockerfile serves them with nginx. Releases attach the static site as niimblue-dist.zip plus an Android APK and a Windows executable, built by the repository's Gitea workflows.",
    "The repository has no automated test suite: the Dockerfile and deployment workflow run svelte-check before building, and the Gitea workflows build and publish the site and apps. The protocol code and its tests live in the separate NiimBlueLib repository. Model support rests on user reports.",
    "MIT (LICENSE, 2024 MultiMote); NiimBlueLib is also MIT, and its README says the work is for informational and educational purposes, is not affiliated with or endorsed by the vendor and is not meant for commercial use without the vendor's consent. CONTRIBUTING says AI-generated code is not appreciated and must be reviewed if used."
  ],
  "requirements_zh": [
    "所审阅的 main 提交即 2026-09-27 发布的 v2026.9.0；更新的开发在 dev 分支进行，CONTRIBUTING 要求以该分支作为拉取请求的基础。README 不维护支持机型列表，而是指向 NiimBlueLib 中汇总已测试机型的 issue；打印失败时，建议在预览对话框中尝试其他打印任务版本。",
    "需要使用者自己的 NIIMBOT 打印机（蓝牙或 USB 串口连接），以及支持 Web Bluetooth 或 Web Serial API 的浏览器，通常为 Chrome 系浏览器；部分系统需开启 Chrome 实验选项，Safari 需要第三方扩展，localhost 以外的部署需要 HTTPS。打印不需要厂商应用或固件。可选的固件更新功能只会刷写使用者自选的 .bin 文件。",
    "使用 Node.js 和 npm 构建，基于 Svelte 5、Vite 和 Fabric.js，并固定 @mmote/niimbluelib 0.47.0；npm run build 生成静态文件，Dockerfile 用 nginx 提供这些文件。发布版本附带静态站点包 niimblue-dist.zip、Android APK 和 Windows 可执行文件，均由仓库中的 Gitea 工作流构建。",
    "仓库没有自动化测试：Dockerfile 和部署工作流在构建前运行 svelte-check，Gitea 工作流负责构建和发布站点与应用。协议代码及其测试位于独立的 NiimBlueLib 仓库。机型支持依据用户报告。",
    "采用 MIT 许可证（LICENSE，2024 MultiMote）；NiimBlueLib 同样采用 MIT，其 README 称项目仅供信息和教育用途，与厂商无关联、未获厂商认可，未经厂商同意不应用于商业用途。CONTRIBUTING 表示不欢迎 AI 生成的代码，如有使用须经审查。"
  ],
  "targets": [
    "app",
    "protocol"
  ],
  "url": "https://github.com/MultiMote/niimblue",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
