yunsi-toolbox-vue/components/esp-flasher
kerms 577b845afc
fix(esp-flasher): enforce imageOptions.value uniqueness via prop validator
Replace comment-only contract with a Vue prop validator that catches duplicate
.value keys at dev time. Validator is stripped from production builds.
Add inline comment to demo/tsconfig.json documenting the 8 node_modules type
errors (vueuse Bluetooth API, element-plus JSX/slots/icons) that require
skipLibCheck: true until those packages are updated.
2026-02-22 16:08:04 +01:00
..
assets chore(esp-flasher): relocate esptools-js files into components directory 2026-02-20 18:32:20 +01:00
lib_esptools-js chore(esp-flasher): relocate esptools-js files into components directory 2026-02-20 18:32:20 +01:00
EspFlasher.vue fix(esp-flasher): enforce imageOptions.value uniqueness via prop validator 2026-02-22 16:08:04 +01:00
README.md chore(esp-flasher): relocate esptools-js files into components directory 2026-02-20 18:32:20 +01:00
web-serial.d.ts fix(esp-flasher): enforce imageOptions.value uniqueness via prop validator 2026-02-22 16:08:04 +01:00

README.md

ESP Flasher Component

A Vue 3 component for flashing ESP32 series microcontrollers directly from the browser using the Web Serial API. This component is based on esptools-js.

Demo

Live Demo - Wireless UART DIY Guide

ESP Flasher Screenshot

Features

  • Supports ESP32, ESP32-C3, ESP32-S3, and more.
  • Built-in Xterm.js terminal for progress and logging.
  • Support for multiple firmware image options.
  • Dark mode support via prop.

Usage

Props

Prop Type Description
imageOptions ImageOption[] An array of firmware images available for flashing.
isDark boolean (Optional) Toggle dark mode for the terminal.

ImageOption Object

type ImageOption = {
  value: string;  // Display name of the firmware
  link: string;   // Path/URL to the .bin file
  target: string; // Target chip (e.g., 'ESP32-C3', 'ESP32', 'ESP32-S3')
};

Example

<script setup lang="ts">
import EspFlasher from './path/to/yunsi-toolbox/esp-flasher/EspFlasher.vue';
import { ref } from 'vue';

const isDark = ref(false);

const imageOptions = [
  {
    value: 'MyFirmware_v1.0_esp32c3.bin',
    link: '/downloads/firmware_c3.bin',
    target: 'ESP32-C3',
  },
  {
    value: 'MyFirmware_v1.0_esp32s3.bin',
    link: '/downloads/firmware_s3.bin',
    target: 'ESP32-S3',
  }
];
</script>

<template>
  <EspFlasher :imageOptions="imageOptions" :isDark="isDark" />
</template>

Dependencies

  • vue
  • xterm
  • xterm-addon-fit
  • crypto-js

Credits

This tool uses a modified version of esptools-js.