Skip to content

Release v1.3.1#2

Merged
mvacoimbra merged 19 commits intomainfrom
release/1.3.0
Jan 28, 2026
Merged

Release v1.3.1#2
mvacoimbra merged 19 commits intomainfrom
release/1.3.0

Conversation

@mvacoimbra
Copy link
Owner

Summary

  • Firefox fix: Resolve "Permission denied" error on TypeScript Playground using cloneInto() for cross-context communication
  • CI/CD: Add GitHub Actions workflow for automated releases and store deployment
  • Formatter: Add local code formatter with Prettier/SQL support
  • Editor improvements: Indentation settings, Ace Editor support, better cursor handling
  • Version: Bump to 1.3.1

Changes

Bug Fixes

  • Fix Firefox permission error when setting editor text in Monaco editors
  • Fix cursor rendering on empty lines
  • Normalize line endings in vim engine
  • TypeScript Playground compatibility via external page script

Features

  • Add GitHub Actions workflow for automated releases
  • Add code formatter integration (Prettier, SQL)
  • Add indentation settings (tabs/spaces, size)
  • Add Ace Editor support (Udemy compatibility)
  • Improve cursor behavior and rendering

Chores

  • Add .env.example for store deployment secrets
  • Configure CI to use Google Cloud service account
  • Use prod environment for secrets

Test plan

  • Build passes for Chrome and Firefox
  • Test Firefox on TypeScript Playground
  • Test formatter functionality
  • Verify CI workflow triggers correctly

🤖 Generated with Claude Code

mvacoimbra and others added 19 commits January 26, 2026 17:34
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- enterToSaveAndExit now defaults to true
- confirmOnBackdropClick now defaults to false
- openOnClick no longer forces insert mode (opens in normal mode)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added bd (beads) for dependency-aware issue tracking.
Issues created for v1.3.0:
- vimput-2jf: Fix Enter in insert mode
- vimput-21l: Fix navigation in empty lines
- vimput-sp2: TypeScript Playground compatibility
- vimput-ztw: Udemy editor compatibility
- vimput-d8x: Cursor blink only on idle

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Handle Windows (\r\n) and old Mac (\r) line endings by normalizing
to Unix (\n) format. This fixes potential issues with Enter and
navigation when text comes from editors with different line endings.

Fixes: vimput-2jf, vimput-21l (partial)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add explicit height to cursor span for consistent rendering
- Add minHeight to line divs to ensure empty lines have height
- Cursor now properly visible when navigating to/through empty lines

Fixes: vimput-2jf, vimput-21l

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Cursor only blinks when idle (after ~500ms of inactivity)
- Cursor stays visible during typing and navigation
- Insert mode cursor now uses a 2px wide element instead of "|" character
- Better positioning control with adjustable offset

Closes: vimput-d8x

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Detect Ace Editor (.ace_editor) alongside Monaco
- Use Ace API (ace.edit) to get/set text when available
- Fallback to reading from .ace_text-layer (ignoring line numbers)
- Fixes text extraction including line numbers from gutter

Closes: vimput-ztw

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create external pageScript.js to bypass CSP restrictions
- Use Monaco's pushEditOperations for reliable text replacement
- Add web_accessible_resources to manifest
- Increase API timeout from 100ms to 500ms
- Remove problematic execCommand fallbacks that caused text duplication
- Bump version to 1.3.0
Add user-configurable indentation settings to the extension:
- New indentType setting (tabs or spaces)
- New indentSize setting (2, 4, or 8 spaces)
- Settings UI in Editor tab with conditional size selector
- Fixed vimEngine to handle multi-character insertions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Python-based formatter worker (public/vimput-formatter.py)
  - Runs as background daemon on localhost:7483
  - Auto-installs Flask dependency
  - Prompts to install formatters (prettier, black) on first run
  - Supports: JS/TS/JSX/TSX, Python, CSS, HTML, JSON, MD, YAML,
    GraphQL, Bash, SQL, Go, Rust, Java, C/C++
- Update formatter.ts to communicate with local worker
  - Falls back to built-in sql-formatter when worker unavailable
  - Language-specific error messages with install suggestions
- Add formatter worker UI in SettingsPanel
  - Shows worker connection status
  - Download script button
  - Lists available formatters when connected
  - OS-specific run instructions (Linux/macOS/Windows)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add formatter integration in VimputEditor
  - Status messages for format success/failure
  - Sparkle icon indicator for formatter-enabled languages
  - Handle pendingAction from vim engine for :fmt command
- Add :fmt and :format commands in vimEngine
- Add <Space>cf shortcut for formatting in normal mode
- Add formatterEnabled setting in configStore
- Add sql-formatter dependency
- Update beads issue tracking
- Add CHANGELOG-1.3.0.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update manifest version from 1.2.0 to 1.3.0
- Fix public path references (add leading /)
- Fix Lucide icon title prop (wrap in span)
- Apply Biome formatting
Use cloneInto() to properly pass CustomEvent detail data from content
script to page script context in Firefox. Chrome continues to work
as before since cloneInto doesn't exist there.

Also removes console.log statements and bumps version to 1.3.1.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Automatically bumps version (patch by default) on push to main
- Supports manual trigger with major/minor/patch selection
- Builds and zips extensions for Chrome and Firefox
- Creates GitHub Release with artifacts
- Optional: uploads to Chrome Web Store and Firefox Add-ons
  (requires secrets to be configured)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add service account JSON patterns to .gitignore
- Update workflow to authenticate with service account
- Update .env.example with service account instructions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@mvacoimbra mvacoimbra merged commit 499341b into main Jan 28, 2026
@mvacoimbra mvacoimbra deleted the release/1.3.0 branch January 28, 2026 13:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant