Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build_extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
run: npm install

- name: Run build script
run: npx tsc
run: npm run build
# run: npm run avr-utils

# - name: Rename application entry file
Expand Down
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"outFiles": [
"${workspaceFolder}/out/**/*.js"
],
"preLaunchTask": "npm: tsc"
"preLaunchTask": "npm: build"
}
]
}
2 changes: 2 additions & 0 deletions .vscodeignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ node_modules/**
# out/storage/data.json
#storage/data.json
**/*.vsix
esbuild.js
assets/readme/**
65 changes: 65 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,71 @@

All notable changes to the "avr-utils" extension will be documented in this file.

### 0.3.1
- Disabled serial monitor functionality since it causes the extension to crash
- Updated vscode dependency to ^1.75.0
- Reduced extension package size by moving GIFs and images to GitHub-hosted links in README
- Updated the icon for the extension.
- Moved all recent updates to `CHANGELOG.md` (this file)
- Moved esbuild config into esbuild.js


### 0.3.0
- Full extension code refactor for a more robust developer and consumer experience.
- Refactored upload logic: separated upload with saved settings from user prompt flow for programmer/port
- Improved storage handling: switched to VSCode globalState/workspaceState for settings persistence
- Fixed circular dependency issues in storage and toolchain modules
- Improved error handling and messaging throughout the extension
- Introduced typescript into the extension
- Improved the upload settings UI:
1. Select your preferred settings once and use the upload (↑) button in the menu to upload to microcontroller using avrdude.
2. If you wish to change settings, you can press the upload (↑) button while pressing Alt, which changes it into a gear icon (⚙️) which will allow you to change the settings.

### 0.2.1
- ✅ Added Serial Monitor feature:
- Displays as a Webview panel beside the active editor.
- Supports serial port selection and baud rate configuration.
- Includes a modern UI with line ending selection, start/stop monitoring, clear output, autoscroll, and data rate indicator.
- Throttles updates (100ms) and limits output (500 lines) for performance.
- Handles errors for serial port operations with user-friendly messages.
- Improved archive extraction

### 0.2.0

- ✅ Fixed false "Upload failed" errors by improving success detection:
- Checks exit code, "avrdude done" message, and "bytes of flash verified"
- Captures full output for better diagnostics
- 📋 Enhanced error reporting with detailed messages
- 🔧 Maintained USBasp no-port support and fuse configurability
- 📜 Added detailed console logging for upload results
- 📘 Updated README with new features and improvements


### 0.1.9

- 🧩 Added cross-platform avrdude auto-download support (Windows, Linux, macOS)
- 📦 Archive format detection with platform-specific handling (zip/tar.gz)
- 📤 Extract logic using `decompress` or `tar.x` based on format
- 🔐 Applied `chmod` to Unix binaries post-extraction
- 🛠️ Fallback to system-installed `avrdude` if download skipped
- 💾 Saved upload settings (programmer, MCU, port) with "Use Saved" prompt
- 🔽 Expanded programmer dropdown: 13+ common types + "Custom..." option
- 🔁 Redirect-safe download via `followRedirects()`
- ✅ Ensures avrdude binary exists before proceeding with upload
- 🧪 Console logs added throughout for debugging and transparency
- 🧼 Refactored helper structure for readability and maintainability
- 📘 README updated with full feature documentation and checklist


### 0.1.8

- 🎯 Added automatic avrdude download feature:
- Downloads avrdude v8.0 from GitHub (Windows/Linux/macOS)
- Handles HTTP 302 redirects
- Displays download and extraction progress
- Grants executable permissions where needed
- Confirms binary presence before upload continues

### [0.1.5]
- The previous error had persisted but i have fixed it this time for good!
- A certain function was making the extension fail to start, but it has been fixed too.
Expand Down
82 changes: 12 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@ New Features:
- **Create or Import**
Easily create a new AVR project or import an existing one from Microchip/Atmel Studio.

![IMAGE](assets/readme/1a-create-or-import.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/1a-create-or-import.mp4.gif)

- Automatically prompts for folder and project name
- Supports importing `.atsln` or `.cproj` projects
- Fully offline toolchain support (recommended)

![IMAGE](assets/readme/1b-project-name.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/1b-project-name.mp4.gif)

- **No Toolchain? No Problem**
You’ll be prompted to either locate an existing toolchain (e.g., from Microchip Studio) or download one directly.

![folders](assets/readme/1c-toolchain-directory.png)
![IMAGE](assets/readme/1c-no-toolchain.mp4.gif)
![folders](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/1c-toolchain-directory.png)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/1c-no-toolchain.mp4.gif)

- **Select a Device First**
Pick your microcontroller before building — ensures proper header files are used.

![IMAGE](assets/readme/1d-select-first-prompt.mp4.gif)
![IMAGE](assets/readme/1e-select-and-build.mp4.gif)
![IMAGE](assets/readme/1f-build-outputs.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/1d-select-first-prompt.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/1e-select-and-build.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/1f-build-outputs.mp4.gif)

---

Expand Down Expand Up @@ -147,18 +147,18 @@ The extension now includes a Serial Monitor to communicate with your AVR microco
- **Toolchain Headers**
Autocompletion works for all `avr/io.h` and other standard headers.

![IMAGE](assets/readme/2a-completions.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/2a-completions.mp4.gif)

- **Header Links**
Clickable includes to quickly navigate your project files.

![IMAGE](assets/readme/2b-header-links.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/2b-header-links.mp4.gif)

- **Register & Symbol Definitions**
Works for both MCU-defined symbols like `PORTB` and user-defined functions.

![IMAGE](assets/readme/3a-definitions-from-device-headers.mp4.gif)
![IMAGE](assets/readme/3b-definitions-from-own-headers.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/3a-definitions-from-device-headers.mp4.gif)
![IMAGE](https://github.com/StrongTheDev/avr-utils/raw/main/assets/readme/3b-definitions-from-own-headers.mp4.gif)

---

Expand Down Expand Up @@ -192,62 +192,4 @@ Search for **AVR Utils** in VSCode settings:
---

## 📦 Release Notes

### 0.3.0

- ✅ Added Serial Monitor feature:
- Displays as a Webview panel beside the active editor.
- Supports serial port selection and baud rate configuration.
- Includes a modern UI with line ending selection, start/stop monitoring, clear output, autoscroll, and data rate indicator.
- Throttles updates (100ms) and limits output (500 lines) for performance.
- Handles errors for serial port operations with user-friendly messages.

### 0.2.0

- ✅ Fixed false "Upload failed" errors by improving success detection:
- Checks exit code, "avrdude done" message, and "bytes of flash verified"
- Captures full output for better diagnostics
- 📋 Enhanced error reporting with detailed messages
- 🔧 Maintained USBasp no-port support and fuse configurability
- 📜 Added detailed console logging for upload results
- 📘 Updated README with new features and improvements


### 0.1.9

- 🧩 Added cross-platform avrdude auto-download support (Windows, Linux, macOS)
- 📦 Archive format detection with platform-specific handling (zip/tar.gz)
- 📤 Extract logic using `decompress` or `tar.x` based on format
- 🔐 Applied `chmod` to Unix binaries post-extraction
- 🛠️ Fallback to system-installed `avrdude` if download skipped
- 💾 Saved upload settings (programmer, MCU, port) with "Use Saved" prompt
- 🔽 Expanded programmer dropdown: 13+ common types + "Custom..." option
- 🔁 Redirect-safe download via `followRedirects()`
- ✅ Ensures avrdude binary exists before proceeding with upload
- 🧪 Console logs added throughout for debugging and transparency
- 🧼 Refactored helper structure for readability and maintainability
- 📘 README updated with full feature documentation and checklist


### 0.1.8

- 🎯 Added automatic avrdude download feature:
- Downloads avrdude v8.0 from GitHub (Windows/Linux/macOS)
- Handles HTTP 302 redirects
- Displays download and extraction progress
- Grants executable permissions where needed
- Confirms binary presence before upload continues

### 0.0.3

- Changed README to use GIFs
- Video assets converted to smaller GIFs

### 0.0.2

- Assembly support improved
- Custom grammar and syntax highlighting

### 0.0.1

- Initial release of `avr-utils`
Check the [changelog](CHANGELOG.md) for details on updates and fixes.
Binary file modified assets/icons/extension-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions esbuild.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require("esbuild")
.build({
entryPoints: ["src/extension.js"],
bundle: true,
platform: "node",
target: "node18",
outdir: "dist",
external: ["vscode"],
})
.catch(() => process.exit(1));
Loading
Loading