Skip to content

Releases: melihcelenk/MyLinuxHelper

MyLinuxHelper v1.5.1 - Release Notes

09 Nov 20:04
4ef0f1b

Choose a tag to compare

Release Date: 09.11.2025
Previous Version: v1.5.0


🐛 Bug Fixes

Fixed Hierarchical Category Display in Interactive Menu

Issue: In the interactive bookmark menu (bookmark list -i), categories were displayed as flat strings (e.g., projects/bash, projects/mmm) instead of showing the hierarchical structure that was already working in the non-interactive list view.

Fix: The interactive menu now correctly displays hierarchical categories with proper indentation and nesting, matching the non-interactive list behavior.

Bookmark Demo

Before:

📂 projects/bash
  [mylinuxhelper]  /path/to/project
📂 projects/mmm
  [mesela]  /path/to/project

After:

📂 projects
  📂 bash
    [mylinuxhelper]  /path/to/project
  📂 mmm
    [mesela]  /path/to/project

Impact:

  • Better visual organization of bookmarks in interactive mode
  • Consistent behavior between interactive and non-interactive list views
  • Improved user experience when navigating bookmarks with hierarchical categories

Improved Docker Command Handling

Issue: The mlh docker in <pattern> command had several issues:

  • Required manual sudo usage: sudo mlh docker in <pattern> (which failed due to PATH issues)
  • Could not detect Docker Desktop socket vs system Docker daemon
  • Poor error messages when Docker daemon was not accessible

Fixes:

  1. Automatic Sudo Detection: The command now automatically detects if Docker requires sudo permissions and handles it internally. Users no longer need to run sudo mlh docker in <pattern>.
  2. Docker Socket Detection: Automatically detects and uses the correct Docker socket:
    • Prefers system Docker daemon at /var/run/docker.sock
    • Ignores Docker Desktop socket if Docker Desktop is not running
    • Provides clear error messages if Docker daemon is not accessible
  3. Better Error Messages: Improved error handling with clear, actionable messages:
    • Interactive vs non-interactive session detection
    • Specific guidance for permission issues
    • Helpful troubleshooting suggestions

Usage:

# Before (didn't work):
sudo mlh docker in port  # Command not found error

# After (works automatically):
mlh docker in port  # Automatically handles sudo if needed

Troubleshooting: If you encounter issues, the command now provides specific guidance:

  • Run in an interactive terminal for password prompts
  • Add user to docker group for passwordless access
  • Clear error messages for Docker daemon connection issues

Fixed Configuration File Handling

Issue: Fresh installations could fail if the configuration file (~/.mylinuxhelper/mlh.conf) was missing, causing bookmark alias setup to fail.

Fix: The setup script now automatically creates the configuration file from the example template if it doesn't exist, ensuring BOOKMARK_ALIAS=bm is set by default.

Impact:

  • Fresh installations work out of the box
  • Bookmark alias (bm) is available immediately after installation
  • No manual configuration required for basic usage

✨ New Features

Uninstall Functionality

New Command: mlh --version uninstall

Completely removes MyLinuxHelper from your system, including:

  • Configuration directory (~/.mylinuxhelper)
  • Symlinks in ~/.local/bin and /usr/local/bin
  • PATH exports from ~/.bashrc and ~/.profile
  • Wrapper functions from ~/.bashrc (mlh, bookmark, alias wrappers)
  • Auto-update hooks

Usage:

# Via interactive menu:
mlh
# Select: 0. App Settings & Updates
# Select: 4. Uninstall MyLinuxHelper

# Or directly:
mlh --version uninstall

Safety: The uninstall command requires explicit confirmation (type 'yes') before proceeding, preventing accidental removal.


🔧 Improvements

Installation Cleanup

Improvement: The installation process now automatically removes development files that are not needed by end users:

  • Test files and test directories
  • Development documentation (CLAUDE.md, TODO.md)
  • Release notes (except current version)
  • GitHub workflows and CI configuration
  • Development assets

Impact:

  • Cleaner installation directory
  • Faster installation (smaller download)
  • Only essential files are installed
  • Better separation between development and production files

Note: The .git directory is preserved to enable update functionality via git pull.

Enhanced Documentation

Improvements:

  • Added demo animations for bookmark functionality
  • Added demo animation for Linux/Docker container management
  • Updated README with troubleshooting section for Docker commands
  • Improved examples and usage patterns

📊 Test Results

All existing tests continue to pass. The test suite has been improved to handle edge cases and provide better error reporting.

Total tests:  293+
Passed:       293+ (100%)
Skipped:       5 (shellcheck tests when shellcheck not available)
Failed:        0

🔄 Migration Guide

Upgrading from v1.5.0

  1. Run Update:

    mlh update
    # Or manually:
    bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"
  2. No Configuration Changes Required:

    • No changes to config files needed
    • Existing bookmarks remain unchanged
    • All features work as before, with improvements
  3. Docker Command Changes:

    • You no longer need to use sudo mlh docker in <pattern>
    • Simply run mlh docker in <pattern> - it will handle sudo automatically
    • If you encounter issues, the command now provides clear error messages and troubleshooting steps

No Breaking Changes

  • All existing bookmark commands continue to work exactly as before
  • Interactive menu now correctly displays hierarchical categories
  • No changes to bookmark storage format or behavior
  • Docker commands are backward compatible with improved error handling

📦 Installation

New Installation

bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"

Update Existing Installation

mlh update

🎯 Summary of Changes

This release focuses on bug fixes and usability improvements:

  • Fixed: Hierarchical category display in interactive bookmark menu
  • Fixed: Docker command sudo handling and error messages
  • Fixed: Configuration file creation for fresh installations
  • Added: Uninstall functionality via mlh --version uninstall
  • Improved: Installation process with automatic cleanup of development files
  • Improved: Documentation with demo animations and troubleshooting guides

📞 Support & Feedback


🙏 Acknowledgments

Thank you to all users who reported issues and provided feedback to help improve MyLinuxHelper!


Full Changelog: v1.5.0...v1.5.1

MyLinuxHelper v1.5.0 - Release Notes

09 Nov 00:10
2e7da2d

Choose a tag to compare

Release Date: 2025-11-09
Previous Version: v1.4.1


🎉 What's New in v1.5.0

⭐ Major Feature: Configurable Bookmark Shortcuts (Phase 4)

We've added a highly requested usability feature - configurable shortcut aliases for the bookmark command!

Key Highlights:

  • Custom Shortcuts: Create your own shortcut/alias for the bookmark command (e.g., bm, fav, goto)
  • Simple Setup: Just add BOOKMARK_ALIAS=bm to ~/.mylinuxhelper/mlh.conf and run ./setup.sh
  • Smart Conflict Detection: Setup warns if your chosen alias conflicts with existing commands
  • Dynamic Help: Help text automatically shows examples using your configured shortcut
  • Full Feature Support: All bookmark features work with the alias - it's just a convenient shortcut

Example Usage:

# After setup, if you chose 'bm':
bm .                    # Save current directory
bm list                 # Interactive list (NEW: default behavior)
bm myproject            # Jump to named bookmark
bm --help               # Help shows 'bm' in examples

Configuration:

  • Config file: ~/.mylinuxhelper/mlh.conf (new centralized config for all MLH settings)
  • Format: BOOKMARK_ALIAS=bm
  • Example: See docs/config/mlh.conf.example in repository
  • Change anytime by editing the config file and re-running ./setup.sh
  • Set to empty string to disable the shortcut

🚀 Improved Default Behavior

Interactive List by Default

  • bookmark list now shows interactive TUI by default (was non-interactive)
  • Faster workflow: No need to add -i flag anymore
  • New flag: Use bookmark list -n for non-interactive simple output
  • Filter support: bookmark list <category> opens interactive list filtered by category

Before:

bookmark list           # Non-interactive output
bookmark list -i        # Interactive TUI (had to specify)

Now:

bookmark list           # Interactive TUI (default - faster!)
bookmark list -n        # Non-interactive output (when needed)

✨ Enhancements

Unified Configuration System

  • New: Centralized mlh.conf for all MLH configuration
  • Better organized: Clear sections for different features
  • Future-ready: All future MLH settings will use this file
  • Example provided: See docs/config/mlh.conf.example

Bookmark System

  • Improved: Hierarchical category display in list view
    • Categories now display with proper indentation: 📂 projects/linux
    • Subcategories are shown nested under parent categories
  • Improved: Path validation warnings with better visual indicators (⚠ symbol)
  • Improved: Better handling of command name conflicts during bookmark creation

Testing & Quality

  • Reorganized: Bookmark tests moved to tests/bookmark/ subdirectory
  • Added: Comprehensive test suite for bookmark alias feature (41 new tests)
    • Config file handling (28 tests)
    • Dynamic help display
    • Alias validation and conflict detection
    • Integration tests (13 tests)
  • Added: Automated ShellCheck validation test suite
    • Validates all shell scripts for code quality
    • Integrated into main test runner
  • Total Test Count: Now 293 tests (was 246)
    • bookmark/mlh-bookmark: 80 tests
    • bookmark/bookmark-alias: 28 tests
    • bookmark/bookmark-alias-integration: 13 tests
    • shellcheck: 6 tests (validates code quality)
    • All other test suites: stable
  • Code Quality: All scripts pass ShellCheck validation
  • Formatting: All scripts formatted with shfmt for consistency

📚 Documentation Updates

New Documentation

  • docs/config/mlh.conf.example: Template configuration file with all options documented
  • docs/BOOKMARK_ALIAS_GUIDE.md: Comprehensive alias setup and troubleshooting guide (moved from old location)

Updated Documentation

  • CLAUDE.md:
    • Updated with centralized config system architecture
    • New test structure documentation
    • Bookmark alias implementation details
  • README.md:
    • Updated bookmark examples to show new default behavior
    • Config system reference

📊 Test Results

Total tests:  293
Passed:       288 (98.3%)
Skipped:       5 (shellcheck tests when shellcheck not available)
Failed:        0

Test Coverage by Component:
✅ bookmark/bookmark-alias-integration: 13/13 passed
✅ bookmark/bookmark-alias:             28/28 passed
✅ bookmark/mlh-bookmark:               80/80 passed
✅ current-session:                     1/1 passed
✅ isjsonvalid:                         18/18 passed
✅ linux:                               15/15 passed
✅ ll:                                  10/10 passed
✅ mlh-about:                           12/12 passed
✅ mlh-docker:                          18/18 passed
✅ mlh-history:                         34/34 passed
✅ mlh-json:                            18/18 passed
✅ mlh:                                 20/20 passed
✅ search:                              16/16 passed
✅ shellcheck:                           6/6 passed (when shellcheck available)
✅ time-debug:                          4/4 passed

Note: All tests pass when required tools (shellcheck, tmux) are available. Test suite now includes automated ShellCheck validation.


🔄 Migration Guide

Upgrading from v1.4 or v1.4.1

  1. Run Update:

    mlh update
    # Or manually:
    bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"
  2. Configure Alias (Optional):

    # Create/edit config file
    mkdir -p ~/.mylinuxhelper
    nano ~/.mylinuxhelper/mlh.conf
    
    # Add your preferred alias
    BOOKMARK_ALIAS=bm
    
    # Re-run setup to apply changes
    cd ~/.mylinuxhelper
    ./setup.sh
    
    # Reload shell
    source ~/.bashrc

No Breaking Changes

  • All existing bookmark commands continue to work exactly as before
  • New default: bookmark list now shows interactive menu (faster workflow!)
  • Existing bookmarks in ~/.mylinuxhelper/bookmarks.json are fully compatible
  • Shortcut/alias feature is completely optional

📦 Installation

New Installation

bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"

Update Existing Installation

mlh update

🎯 Roadmap for v1.6

Based on the TODO.md and GitHub issues, future enhancements being considered:

  • Centralized config system expansion - Additional settings for history, docker, etc.
  • fzf integration for fuzzy finding bookmarks
  • Tab completion for bookmark names and categories
  • Git repo detection - automatically bookmark git repository roots
  • Frecency-based sorting - most frequently/recently used bookmarks first
  • Bookmark export/import for sharing across machines
  • Bookmark sync via Git for multi-device workflows

🐛 Known Issues

  1. ShellCheck Tests: ShellCheck validation tests are skipped if shellcheck is not installed. Install with sudo apt-get install shellcheck (or use Docker) to run these tests.
  2. WSL Compatibility: Interactive mode works but may require /dev/tty fallback in some WSL configurations. This is automatically handled by the code.

📞 Support & Feedback


🙏 Acknowledgments

Special thanks to all contributors and users who provided feedback on the bookmark system and requested the alias feature!


Full Changelog: 1.4.1...v1.5.0


📝 Note on v1.4.1

v1.4.1 was an internal release with code quality improvements (ShellCheck fixes, formatting). This release (v1.5.0) includes all user-facing features and enhancements since v1.4.1.

v1.4.1 - Comprehensive Test Suite & Code Quality

20 Oct 20:01
dfae7a5

Choose a tag to compare

🎉 MyLinuxHelper v1.4.1 - Comprehensive Test Suite & Code Quality

This release introduces a complete test framework with 161 tests achieving 100% success rate, enhanced mlh history command with powerful time-based filtering, and significant code quality improvements.

✨ What's New

🆕 Enhanced Command History (mlh history)

Major improvements to command history management:

  • Time-based filtering: Show commands from last 3 days (-t 3d), 20 minutes (-t 20m), or 2 hours (-t 2h)
  • Before offset: Specify time offset with -b flag (e.g., -t 20m -b 1h)
  • Context view: Show commands around a specific line number with -g flag
  • Find with limit: Search and limit results (e.g., mlh history 10 -f docker)
  • Improved goto command: Better navigation to specific command numbers
  • Line numbers: Added for easier command reference
mlh history -t 3d           # Last 3 days
mlh history -t 20m -b 1h    # 20 minutes starting from 1 hour ago
mlh history -g 1790         # Show context around command #1790
mlh history 10 -f git       # Last 10 git commands

🔧 linux.sh Improvements

  • Fixed examples: Updated documentation with correct usage examples
  • Better error messages and help text

🔒 Security & CI/CD

  • Added ShellCheck workflow: Automated code quality checks on every commit
  • CodeQL analysis: Enhanced security scanning
  • GitHub Actions permissions: Fixed workflow permissions for better security

✨ Highlights

📊 New: Comprehensive Test Suite

Added 161 tests across 9 plugins with full coverage:

./tests/test              # Run all 161 tests
./tests/test mlh-history  # Run specific plugin tests

Test Coverage:

  • mlh-history (34 tests) - Command history & time parsing
  • mlh.sh (20 tests) - Main dispatcher & routing
  • mlh-docker (18 tests) - Container access & patterns
  • mlh-json (18 tests) - JSON search & validation
  • isjsonvalid (18 tests) - Validation engine
  • search (16 tests) - File search
  • linux (15 tests) - Container management
  • mlh-about (12 tests) - Project info
  • ll (10 tests) - Directory listing

Results: ✅ 161 passing, 0 failing (8 tests gracefully skip if jq is not installed)

🔧 Test Framework Features

  • SKIP Support: Gracefully handles missing dependencies (e.g., jq)
  • Syntax Detection: Pre-validates test files for CRLF/syntax errors
  • Color Output: Green (PASS) / Yellow (SKIP) / Red (FAIL)
  • Auto-fix Hints: Provides commands to fix detected issues

🐛 Bug Fixes

  • mlh-history: Fixed pattern matching after code formatting
  • Test Runner: Now properly catches and reports syntax errors
  • CRLF Detection: Added pre-validation with helpful fix commands

🧹 Code Quality

ShellCheck Clean:

  • ✅ Fixed 17 SC2155 warnings (separate declare/assign)
  • ✅ Removed unused variables
  • ✅ All scripts pass ShellCheck validation
  • ✅ Compatible with shfmt formatter

Before:

local var=$(command)  # Masks return value

After:

local var
var=$(command)  # Proper error handling

📚 Documentation

New/Updated:

  • Complete test coverage documentation
  • Development guide (formatting, testing, contributing)
  • Code quality standards
  • Troubleshooting (CRLF fixes)

🚀 Upgrade

mlh update
# Or: cd ~/.mylinuxhelper && git pull && ./setup.sh

📊 Stats

Metric Value
Total Tests 161
Passing Tests 161 (or 153 without jq)
Success Rate 100%
Test Suites 9
ShellCheck Issues 0

📦 What's Changed Since v1.3

New Features:

  • Complete test suite (161 tests across 9 plugins)
  • Enhanced mlh history command with time filtering
  • Test framework with SKIP support and syntax validation
  • ShellCheck and CodeQL workflows

Improvements:

  • Fixed all ShellCheck warnings (17 instances)
  • Code formatting with shfmt
  • Comprehensive documentation updates
  • Better error messages and help text

Bug Fixes:

  • Fixed test runner syntax error detection
  • Fixed pattern matching after formatting
  • Removed unused variables

🔗 Resources


Test Summary:

Total tests:  161
Passed:       161 (or 153 with 8 skipped if jq is not installed)
Failed:       0

All tests passed! ✅

v1.3 – Version Management & JSON Search

17 Oct 06:55
0024863

Choose a tag to compare

Release Date: 17.10.2025

Overview

This release focuses on version management, automatic updates, and project information features. Major refactoring has been done to improve code maintainability and user experience.


New Features

1. Version Management System (mlh-version.sh)

  • New standalone version management module separated from main dispatcher
  • Version information with detailed metadata:
    • Current version with release date
    • First release date tracking
    • Semantic versioning support
  • Command support:
    • mlh --version - Display current version
    • mlh -v - Short version display
    • mlh --version --help - Version command help

2. Automatic Update System

  • Smart update functionality that downloads and installs latest version from GitHub
  • Multiple command variants:
    • mlh update - Update to latest version
    • mlh --version update - Update via version command
    • mlh -v update - Update via short flag
  • Periodic update scheduling with configuration menu:
    • Daily updates
    • Weekly updates
    • Monthly updates
    • Disable option
  • Configuration stored in ~/.mylinuxhelper/.update-config
  • Automatic bashrc hook installation for background update checking
  • Smart time-based update logic using epoch timestamps
  • Command: mlh update -p - Configure periodic updates

3. About Page (mlh-about.sh)

  • Comprehensive project information page
  • Displays:
    • Project description and features
    • Author information (Melih Çelenk)
    • GitHub repository link
    • License information (MIT License)
    • Version history:
      • First release date
      • Current version with date
      • Latest GitHub release with date
  • GitHub Releases API integration:
    • Fetches latest release version from GitHub
    • Retrieves and formats release date (ISO 8601 → DD.MM.YYYY)
    • Graceful fallback if API unavailable
    • Cross-platform date parsing (GNU/BSD compatibility)
  • Command: mlh about - Show project information

4. App Settings & Updates Menu

  • New submenu for application-level settings
  • Organized structure:
    1. Show current version
    2. Update to latest version
    3. Configure periodic updates
    4. Back to main menu
  • Accessible from main interactive menu (option 8)
  • Better organization of version/update related features

5. JSON Helper (mlh-json.sh and isjsonvalid.sh)

  • Advanced JSON operations with fuzzy search and validation
  • Centralized validation architecture:
    • isjsonvalid.sh is the single source of truth for JSON validation
    • Both isjsonvalid and mlh json --isvalid use the same validation engine
    • Flexible output modes: quick (Yes/No) or detailed (with colors)
  • Validation commands:
    • isjsonvalid <file> - Quick validation (Yes/No output)
    • isjsonvalid -d <file> - Detailed validation with colors
    • mlh json --isvalid <file> - Detailed validation (default)
    • mlh json --isvalid -d <file> - Detailed validation with colors
  • Search commands:
    • mlh json get <field> from <file> - Search fields in JSON
  • Comprehensive search capabilities:
    • Searches ALL JSON keys (arrays, objects, and scalar values)
    • Fuzzy field name matching (case-insensitive)
    • Partial key matching (e.g., req finds "RequestedTags")
    • Path hint support for targeted search (e.g., q.studydQuery.StudyDate)
    • Interactive menu for multiple matches
    • Full JSON path display with quoted segments
    • Duplicate prevention for unique results
  • Intelligent output formatting:
    • Object fields: "Path"."Key": "value"
    • Array values: "ArrayPath": ["value"]
    • Compact JSON format for complex structures
  • Auto-installation of dependencies:
    • Automatically installs jq if not present
    • Uses system package manager detection
  • Command: mlh json --help - Show JSON helper help

Improvements

Code Quality

  • Clean code refactoring:
    • Removed duplicate VERSION constant across files
    • Single source of truth for version information
    • Removed duplicate GITHUB_REPO references
    • Better separation of concerns with modular scripts
    • Centralized JSON validation: Removed duplicate validation code from mlh-json.sh, delegated to isjsonvalid.sh
    • Single source of truth for JSON validation logic

User Experience

  • Enhanced interactive menu:
    • Reorganized menu items (1-8)
    • Merged JSON-related commands into single option (4)
    • Added "About MyLinuxHelper" option (7)
    • Added "App Settings & Updates" submenu (8)
    • Better navigation with back option in submenu
    • Smart menu flow: Help messages exit to shell (not loop back to menu)
    • Users can read help and immediately use commands without re-navigating
  • Improved help system:
    • Fixed mlh update --help not showing help
    • Fixed mlh --version -h showing version instead of help
    • Proper help flag checking in all commands
    • Consistent help documentation

Architecture

  • Modular design:
    • Separated version management to mlh-version.sh
    • Separated about page to mlh-about.sh
    • Clean delegation pattern using exec
    • Single responsibility functions
  • Robust error handling:
    • Strict error handling with set -euo pipefail
    • Graceful degradation for network failures
    • Cross-platform compatibility (curl/wget, date commands)

Technical Details

New Files

  • plugins/mlh-version.sh - Version management and update system
  • plugins/mlh-about.sh - About page with project information
  • plugins/mlh-json.sh - JSON operations helper with fuzzy search

Modified Files

  • plugins/mlh.sh:
    • Removed VERSION constant
    • Added show_app_settings_menu() function
    • Updated show_interactive_menu() to 8 options
    • Merged JSON operations (isjsonvalid + mlh json) into single menu option
    • Changed menu flow: Help displays now exit instead of looping back
    • Added about, update, and json command handlers
    • Added json category to help documentation
    • Improved help documentation
  • plugins/isjsonvalid.sh:
    • Added -d / --detail flag support for flexible output modes
    • Centralized JSON validation logic (single source of truth)
    • Enhanced help documentation with examples
    • Color-coded output in detailed mode
    • Better error messages
  • plugins/mlh-json.sh:
    • Delegates validation to isjsonvalid.sh (removed duplicate code)
    • Updated --isvalid command to forward to isjsonvalid.sh
    • Defaults to detailed output for mlh json --isvalid
    • Updated help to show both isjsonvalid and mlh json commands
    • Combined usage examples for all JSON operations

Configuration Files

  • ~/.mylinuxhelper/.update-config - Stores periodic update settings
    • SCHEDULE - Update frequency (daily/weekly/monthly/disabled)
    • LAST_UPDATE - Epoch timestamp of last update check

API Integration

  • GitHub Releases API endpoint: https://api.github.com/repos/melihcelenk/MyLinuxHelper/releases/latest
  • Fetched data: tag_name, published_at
  • Date format conversion: ISO 8601 → DD.MM.YYYY

Usage Examples

Version Information

# Show current version
mlh --version
mlh -v

# Show version help
mlh --version --help

Update Commands

# Update to latest version
mlh update
mlh --version update
mlh -v update

# Configure periodic updates
mlh update -p

# Show update help
mlh update --help

About Page

# Show project information
mlh about

# Access via interactive menu
mlh
# Then select option 7

Settings Menu

# Open interactive menu
mlh
# Then select option 8 for "App Settings & Updates"

Interactive Menu

# Open interactive menu
mlh

# Menu structure:
# 1. linux - Linux container management
# 2. search - Fast file search
# 3. i - Package installer
# 4. JSON operations - Validate and search JSON files
# 5. ll - Enhanced directory listing
# 6. mlh docker - Docker shortcuts
# 7. About - Project information
# 8. Settings - Version and updates

JSON Helper

# Quick JSON validation (Yes/No)
isjsonvalid users.json
# Output: Yes

# Detailed JSON validation
mlh json --isvalid users.json
# Output: ✓ Valid JSON

# Search for a field (fuzzy match, case-insensitive)
mlh json get name from users.json
# Output: "users"."name": "John"

# Partial/fuzzy matching
mlh json get mail from users.json
# Finds "email": "users"."email": "john@example.com"

# Path hint for targeted search (no menu)
mlh json get settings.lang from config.json
# Output: "settings"."language": "en"

# Multiple matches - shows interactive menu
mlh json get user from users.json
# Output:
#   Found 2 matches for 'user':
#   1. "users": ["John"]
#   2. "users": ["Jane"]
#   Select a number (1-2) or press Enter to show all:

# Show help
mlh json --help

Breaking Changes

None. All existing commands remain fully compatible.


Bug Fixes

  • Fixed mlh update --help executing update instead of showing help
  • Fixed mlh --version -h showing version instead of help
  • Improved error handling in menu navigation
  • Better user feedback for invalid menu selections

Future Enhancements

  • Release notes display in about page
  • Update notifications on new release
  • Rollback functionality
  • Version comparison utilities
  • Plugin version management
  • JSON Manipulating utilities

Contributors

License

MIT License - See LICENSE file for details


Full Changelog: v1.2...v1.3

v1.2 – Fast File Search & Version Display

13 Oct 21:33
4879e32

Choose a tag to compare

🔍 MyLinuxHelper v1.2

This release adds a powerful file search command and version display functionality, making it easier to find files and track your MyLinuxHelper version.

✨ New Features

  • Fast file search (search)

    • Quickly search for files in current directory and subdirectories.
    • Smart search: Case-insensitive when no wildcards are used.
    • Wildcard support: Use patterns like *.json, test*, config.?.
    • Optional path parameter: Search in specific directories.
    • Built on find command for reliability and speed.
    • Examples:
      search myfile              # Search in current directory
      search "*.json"            # Find all JSON files
      search config.js ./src     # Search in specific directory
      search "*.conf" /etc       # Search configuration files
  • Version display (mlh -v)

    • Check your MyLinuxHelper version with mlh -v or mlh --version.
    • Version info also shown in mlh --help.
    • Current version: v1.2.0
    • Example:
      $ mlh -v
      MyLinuxHelper v1.2.0

🔧 Improvements

  • Enhanced interactive menu

    • Added search command to the mlh interactive menu (option 2).
    • Menu now shows 6 commands instead of 5.
    • Better organization with search placed prominently.
  • Updated help documentation

    • search --help: Comprehensive examples for file searching.
    • All search patterns and use cases documented.
  • Consistent command naming

    • Fixed example in setup.sh: mlh docker in asdmlh docker in mycontainer.
    • More intuitive examples throughout documentation.

📦 New Files

  • plugins/search.sh - Fast file search using find command

📝 Updated Files

  • plugins/mlh.sh - Added version display and updated interactive menu
  • setup.sh - Registered search command and updated examples
  • README.md - Added search command documentation and version info

🚀 Installation

Install or upgrade to v1.2:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"

Or if you already have it cloned:

cd MyLinuxHelper
git pull origin main
./setup.sh

💡 Usage Examples

Search for files:

search myfile                    # Find files by name
search "*.json"                  # Find all JSON files recursively
search nginx.conf /etc           # Search in a specific directory
search "test*" ./src             # Find test files in src directory

Check version:

mlh -v                           # Short form
mlh --version                    # Long form

🎯 What's Next

Planned for future releases:

  • Content search within files (grep integration)
  • Search result filtering and sorting options
  • More mlh categories (git, network, system)

Full Changelog: https://github.com/melihcelenk/MyLinuxHelper/compare/v1.1.0...v1.2.0

v1.1 – MLH Interactive Menu & Docker Container Shortcuts

13 Oct 15:06
a1b9d37

Choose a tag to compare

🎯 MyLinuxHelper v1.1

This release introduces an interactive command menu system and smart Docker container management, making MyLinuxHelper even more user-friendly and powerful.

✨ New Features

  • Interactive menu system (mlh)

    • Run mlh without arguments to browse all available commands interactively.
    • Select commands by number to view detailed help and examples.
    • Dynamic help loading from each command's --help implementation.
    • Example menu:
      MyLinuxHelper - Available Commands
      ===================================
      
      1. linux <name>              - Create and manage Linux containers
      2. i <package>               - Install packages (auto-detects package manager)
      3. isjsonvalid <file.json>   - Validate JSON files
      4. ll [path]                 - Enhanced directory listing (ls -la)
      5. mlh docker in <pattern>   - Enter running Docker container
      
      Select [1-5, q]:
      
  • Smart Docker container access (mlh docker in)

    • Enter running containers by name pattern with mlh docker in <pattern>.
    • Single match: Automatically enters the container.
    • Multiple matches: Displays an interactive selection menu with container details.
    • Example with multiple matches:
      $ mlh docker in mycontainer
      
      Multiple containers found matching 'mycontainer':
      
        1. mycontainer-web (nginx:latest | Up 2 hours)
        2. mycontainer-api (node:18 | Up 2 hours)
        3. mycontainer-db (postgres:14 | Up 2 hours)
      
      Select container [1-3]: 1
      
      Entering container: mycontainer-web
    • Case-insensitive search for easier container discovery.

🔧 Improvements

  • Enhanced help documentation

    • All commands now include comprehensive --help output with examples.
    • linux --help: Container creation, management, and deletion examples.
    • i --help: Package installation with all supported package managers listed.
    • isjsonvalid --help: JSON validation examples for single and multiple files.
    • ll --help: Directory listing usage patterns.
    • mlh docker --help: Interactive menu demonstration with sample output.
  • Modular architecture

    • New dispatcher system (mlh.sh) for organizing shortcut commands.
    • Category-based organization (currently: docker, easily extensible).
    • Each category in its own file (mlh-docker.sh) for maintainability.

📦 New Files

  • plugins/mlh.sh - Main dispatcher for MyLinuxHelper shortcut commands
  • plugins/mlh-docker.sh - Docker-specific shortcuts and utilities

📝 Updated Files

  • plugins/ll.sh - Enhanced help with detailed examples
  • plugins/isjsonvalid.sh - Enhanced help with validation examples
  • install.sh - Improved help showing all supported package managers
  • setup.sh - Registered mlh command and updated examples
  • README.md - Comprehensive documentation for all features

🚀 Installation

Install or upgrade to v1.1:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"

Or if you already have it cloned:
cd MyLinuxHelper
git pull origin main
./setup.sh

v1.0 – Core Shell Utilities & Docker Integration

11 Oct 01:25

Choose a tag to compare

🚀 MyLinuxHelper v1.0

This is the first public release of MyLinuxHelper, a lightweight shell toolkit that brings quality-of-life improvements to Linux and WSL environments.

✨ Included Features

  • Setup system (setup.sh)

    • Automatically registers helper scripts into your PATH.
    • No need for manual chmod or alias configuration.
  • Package installer command (i)

    • Detects your package manager automatically (apt, dnf, yum, zypper, apk, pacman).
    • Supports safe installation across distributions.
  • JSON validation (isjsonvalid)

    • Quickly validates JSON files with jq.
    • Returns Yes, No, or detailed error messages.
  • Directory listing (ll)

    • Shortcut for ls -la with consistent formatting.
  • Ephemeral Docker environments (linux)

    • Create quick disposable Linux containers using:
      linux mycontainer
    • Supports:
      • -t, --tmp: Temporary container (auto-deletes on exit)
      • -p, --permanent: Persistent container
      • -s, --stop: Stop running container
      • -d, --delete: Stop + delete container
    • Displays an interactive menu if Docker is not installed:
      ⚠️  This command requires Docker.
      1. Install Docker and run (i docker.io)
      2. Install Docker only
      3. Exit
      

🧪 Tested Environments

  • Ubuntu 22.04 / 24.04 (local & WSL2)
  • Killercoda Ubuntu 24.04 Playground (no Docker preinstalled)
  • Google Cloud Shell (Docker restricted)

🔮 Upcoming Features

  • Interactive menu system for command selection
  • Auto-update mechanism
  • Optional plugin manager

📄 License

Licensed under the MIT License — free for all personal and commercial use, with attribution.


💡 Tip: You can bootstrap any Linux machine instantly using:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"