Releases: tolgamorf/env2op-cli
Releases · tolgamorf/env2op-cli
v0.2.5
What's New
feat: Add Windows support
- Add Windows x64 build workflow (build-windows.yml)
- Add Scoop and Winget manifest templates
- Update release script to handle Windows manifest updates
- Add scoop/winget detection to package-manager.ts
- Add build:windows script to package.json
docs: Update README.md
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-cliPackage Managers (macOS/Linux/Windows)
# Using bun
bun add -g @tolgamorf/env2op-cli
# Using npm
npm install -g @tolgamorf/env2op-cli
# Using pnpm
pnpm add -g @tolgamorf/env2op-cliv0.2.4
What's New
fix: Improve update notification UX
- Fix update command hint to use --update flag
- Check for updates when showing help or missing args
- Add vertical lines to package manager info for visual continuity
docs: Move bundle size badge to comments, clean up whitespace
fix: Generate correct Homebrew formula class names
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-cliPackage Managers (macOS/Linux/Windows)
# Using bun
bun add -g @tolgamorf/env2op-cli
# Using npm
npm install -g @tolgamorf/env2op-cli
# Using pnpm
pnpm add -g @tolgamorf/env2op-cliv0.2.3
What's New
style: Improve LICENSE formatting and fix badge link
- Reformat LICENSE for better readability
- Fix GitHub License badge link to use absolute URL
fix: Add quotes around vault placeholder in env header
refactor: Apply DRY principles across codebase
- Extract shared argument parsing to src/utils/args.ts
- Create 1Password auth helper in src/core/auth.ts
- Add shared constants in src/core/constants.ts
- Create error handler utility in src/utils/error-handler.ts
- Add confirmation prompt helper in src/utils/prompts.ts
- Refactor shell.ts with collectOutput helper
- Add error factories: opSigninFailed, templateNotFound, injectFailed
- Add maybeShowUpdateNotification helper in update.ts
- Update README badges
chore: Update CI trigger and refresh README badges
- CI now triggers on push to main (enables CI badge)
- New title with emoji and bidirectional arrow
- Add tagline with 1Password link
- Add Release Date badge, reorder badges
- Remove redundant Publish badge
refactor: Consolidate version reads using getCliVersion()
- Apply DRY principle by using getCliVersion() from lib/update.ts
- instead of importing package.json in multiple files.
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-cliPackage Managers (macOS/Linux/Windows)
# Using bun
bun add -g @tolgamorf/env2op-cli
# Using npm
npm install -g @tolgamorf/env2op-cli
# Using pnpm
pnpm add -g @tolgamorf/env2op-cliv0.2.2
What's New
docs: Update installation instructions consistency
- Change "All Operating Systems" to "macOS/Linux/Windows"
- Update release notes to include all package managers (bun, npm, pnpm)
feat: Add auto-update mechanism with --update option
- Add automatic update checking and installation support:
- New --update option to check for and install updates
- Periodic update check after command execution (24-hour cache)
- Package manager detection (Homebrew, npm, bun, pnpm)
- Non-blocking update notifications when new version available
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-cliPackage Managers (macOS/Linux/Windows)
# Using bun
bun add -g @tolgamorf/env2op-cli
# Using npm
npm install -g @tolgamorf/env2op-cli
# Using pnpm
pnpm add -g @tolgamorf/env2op-cliv0.2.1
What's New
refactor: Address code review issues
- Add ITEM_EDIT_FAILED error code for edit operations
- Capture error messages in shell exec error handlers
- Fix signal termination to return exit code 1 (not 0)
- Add BOM (Byte Order Mark) handling for Windows files
- Extract withMinTime to shared utils/timing.ts
- Remove unused execJson function
- Use array-based string building for stdout/stderr
- Make parseEnvFile async using fs/promises
- Fix inconsistent error handling in convert.ts
- Add Buffer.isBuffer() check in event handlers
fix: Wait for npm publish workflow before updating Homebrew tap
- Release script now waits for publish workflow to complete
- Remove duplicate GitHub release creation from publish.yml
- Add standalone script for manual Homebrew tap updates
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-clinpm / bun
bun add -g @tolgamorf/env2op-cli
# or
npm install -g @tolgamorf/env2op-cliv0.2.0
What's New
chore: Add .test to gitignore
feat: Migrate op CLI to JSON piping for cross-platform support
- Replace field argument syntax (KEY[type]=value) with JSON stdin piping
- Add execWithStdin() for async command execution with stdin content
- Change itemExists() to return item ID instead of boolean
- Add EditItemOptions interface with itemId for reliable item lookup
- Remove hasFieldArgs special case and spawnSync dependency
- Benefits:
- Async execution allows spinners to animate during op CLI operations
- Cross-platform: no bash dependency, works on Windows
- Full stdout/stderr capture with structured JSON responses
- Simpler code: automatic field deletion via JSON replacement
- UX improvements:
- Add spinner for "Pushing environment variables" step
- Show variable count in op2env output
- Remove empty line from usage instructions box
feat: Improve 1Password authentication flow
- Use
op whoamiinstead ofop account getfor faster sign-in check - Auto sign-in with
op signinwhen not authenticated - Show spinner during sign-in with system auth dialog
- Export signIn function for programmatic use
feat: Add spinner feedback to op2env command
- Add incremental spinner feedback to match env2op patterns:
- Add authSpinner for 1Password CLI validation
- Add withMinTime helper for minimum spinner display time
- Wrap inject operation with withMinTime
fix: Release notes now preserve bullet points on separate lines
style: Fix lint errors
feat: Delete removed fields when editing 1Password item
- When editing an existing item, fields that exist in the item but are
- no longer in the .env file are now deleted. This ensures the 1Password
- item stays in sync with the .env file.
feat: Improve CLI feedback with spinners and cleaner messages
- Add spinners for vault/item checks that animate during async operations
- Combine parsed file and variable count into single line
- Add 1Password CLI validation step with spinner
- Use async spawn for non-field-arg commands to allow spinner animation
- Use op vault list instead of op vault get to avoid error messages
- Add minimum display time for spinners
- Update dry run messages to match new flow
fix: Resolve op CLI hanging and terminal corruption issues
- Use two-step approach for create/edit: run command with stdio inherit,
- then fetch item info with separate op item get
- Commands with field args (KEY[type]=value) must use stdio inherit
- to avoid op CLI hanging or corrupting terminal
- Other commands use temp file redirect to capture stdout silently
- Properly quote args containing special characters for shell execution
fix: Suppress op CLI output in non-verbose mode
- Detect commands with field arguments (KEY[type]=value) and only use
- stdio inherit for those (which cannot be redirected without hanging).
- All other commands redirect stdout to temp file and only display in
- verbose mode.
feat: Add --verbose flag to show op CLI commands and output
- Add --verbose flag to both env2op and op2env CLIs
- Show all op commands being executed in verbose mode
- Use spawnSync with stdio inherit for reliable op CLI interaction
- Separate create/edit from JSON output capture to avoid hanging
- Use op item list for checking item existence
- Add explicit return types to error factory functions
- Update tests and snapshots
build: Replace tsup with bunup for faster builds
- bunup uses Bun's native bundler with zero overhead, providing ~9x faster
- build times while maintaining tsup-like zero-config DX.
- Build time: ~3-5s (tsup) → ~15ms (bunup)
- Same Node.js compatibility (target: "node")
- Same output structure (single ESM file with shebang)
- Removed tsup.config.ts, added bunup.config.ts
fix: Release notes now join wrapped lines correctly
- Split commit bodies on paragraph breaks instead of newlines, then join wrapped lines within each paragraph before adding bullet prefix.
Increase npm package availability retry timeout
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-clinpm / bun
bun add -g @tolgamorf/env2op-cli
# or
npm install -g @tolgamorf/env2op-cliFull Changelog: v0.1.5...v0.2.0
v0.1.5
What's New
Fix gitignore for homebrew-tap symlink
Add Node.js support via tsup build step
- Users no longer need Bun installed to run the CLI. The package now bundles to single ESM files with a Node.js shebang, requiring only Node.js 18+.
- Replace Bun's shell API ($) with Node.js child_process
- Add tsup config for bundling both CLI entry points
- Update package.json to point to dist/ output
- Add build step to publish workflow
Add retry logic for npm package availability check
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-clinpm / bun
bun add -g @tolgamorf/env2op-cli
# or
npm install -g @tolgamorf/env2op-cliFull Changelog: v0.1.4...v0.1.5
v0.1.4
What's New
Add Homebrew to release notes installation section
Add confirmation and flexible versioning to release script
- Show release summary before confirming (version, changes, notes)
- Add confirmation prompt before proceeding
- Support version bump types: patch, minor, major
- Support exact version: bun run release 0.2.0
Add timestamps to .env and .env.tpl headers
- Show "Pushed: " in .env.tpl headers
- Show "Pulled: " in .env headers
- Use UTC format for consistency across timezones
- Mock system time in snapshot tests for deterministic output
Update README and gitignore
- Improve Homebrew installation instructions with two-step option
- Add homebrew-tap to gitignore (separate repo)
- Minor README formatting improvements
Extend release script to update Homebrew tap automatically
- Add generateFormula helper to create formula content
- Add fetchSha256 helper to compute hash from npm tarball
- Add updateHomebrewTap helper to write and push formulae
- Create versioned formula (env2op-cli@x.y.z.rb) alongside main formula
- Use underscores in versioned class names to avoid collisions
- Fix double-bullet issue in release notes
- Add "What's New" header to release notes
Include Linux in Homebrew installation section
Add Homebrew installation instructions to README
Installation
Homebrew (macOS/Linux)
brew install tolgamorf/tap/env2op-clinpm / bun
bun add -g @tolgamorf/env2op-cli
# or
npm install -g @tolgamorf/env2op-cliFull Changelog: v0.1.3...v0.1.4
v0.1.3
What's New
Update demo to use op2env command and --force flag
Improve release script with detailed GitHub release notes
- Show commit summary in terminal before releasing
- Generate detailed release notes from commit messages with body text
- Add installation instructions section to release notes
- Use gh release create instead of manual git tag
Add informative headers to generated .env and .env.tpl files
- Add distinct headers for template files (.env.tpl) and env files (.env)
- Headers include usage instructions with derived filenames
- Strip existing headers when parsing to prevent header multiplication
- Improve error handling in op2env to show actual op CLI errors
- Update tests and snapshots for new header format
Add comprehensive test suite
- Set up Bun test runner with preload and coverage config
- Add test fixtures for .env file parsing scenarios
- Add mock factories for filesystem, prompts, and 1Password CLI
- Add unit tests for env-parser (25 tests, 93.75% coverage)
- Add unit tests for template-generator (12 tests, 96.88% coverage)
- Add unit tests for errors module (14 tests, 100% coverage)
- Add integration tests for onepassword module
- Add snapshot tests for CLI output
- Add test:watch and test:coverage npm scripts
Add op2env command and improve CLI flags
- Add op2env command to pull secrets from 1Password using templates
- Change -y/--yes flag to -f/--force for both CLIs
- Add -o/--output flag for custom output paths
- Update template headers to show op2env usage
- Update README with documentation for both commands
Update README to show UUID-based references
Add demo GIF to README
Installation
# Install globally
bun install -g env2op
# Or run directly with bunx
bunx env2op .env <vault> "<item_name>"
bunx op2env .env.tplFull Changelog: v0.1.2...v0.1.3
v0.1.2
Full Changelog: v0.1.1...v0.1.2