Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e2ebff7
Implement hierarchical category display in interactive bookmark navig…
melihcelenk Nov 9, 2025
fdfcdb7
Add demo animations and update container management documentation
melihcelenk Nov 9, 2025
42aa8a8
Update `get-mlh.sh` to use `release/test` branch for tarball URL gene…
melihcelenk Nov 9, 2025
b24848b
Fix type mismatch in conditional check for hierarchical category logi…
melihcelenk Nov 9, 2025
4affe78
Merge pull request #32 from melihcelenk/bug/bookmark-list-category-hi…
melihcelenk Nov 9, 2025
d22570b
Add fallback logic for missing configuration file and fix `jq` instal…
melihcelenk Nov 9, 2025
f3cef20
Merge pull request #33 from melihcelenk/bug/bookmark-list-category-hi…
melihcelenk Nov 9, 2025
1b6e17e
- Add cleanup function to remove unnecessary files during installatio…
melihcelenk Nov 9, 2025
a013ee9
Update `test-mlh-docker.sh` with improved `ROOT_DIR` handling and fle…
melihcelenk Nov 9, 2025
7998a1b
Clarify `.git` exclusion in `cleanup_unnecessary_files` and align for…
melihcelenk Nov 9, 2025
a84a2db
Add uninstall functionality for MyLinuxHelper in `mlh.sh` and `mlh-ve…
melihcelenk Nov 9, 2025
f3d0f68
Merge pull request #34 from melihcelenk/bug/bookmark-list-category-hi…
melihcelenk Nov 9, 2025
746bf0b
Refactor `mlh-docker` to enhance `sudo` handling and update documenta…
melihcelenk Nov 9, 2025
f844ae6
Merge pull request #35 from melihcelenk/bug/bookmark-list-category-hi…
melihcelenk Nov 9, 2025
d96b705
Refactor `mlh-docker.sh` to improve Docker access checks and error ha…
melihcelenk Nov 9, 2025
8a8cbce
Merge pull request #36 from melihcelenk/bug/bookmark-list-category-hi…
melihcelenk Nov 9, 2025
79f6d3a
Fix: Improve Docker sudo detection and error handling in mlh docker i…
melihcelenk Nov 9, 2025
c3b4f1c
Fix: Improve sudo handling for non-interactive sessions in mlh docker…
melihcelenk Nov 9, 2025
75e6412
Fix: Improve sudo handling and add troubleshooting for sudo mlh docke…
melihcelenk Nov 9, 2025
a025652
Update `get-mlh.sh` to switch branch reference to `bug/bookmark-list-…
melihcelenk Nov 9, 2025
fcf9de6
Fix: Unset DOCKER_HOST if it points to Docker Desktop socket
melihcelenk Nov 9, 2025
cc4ac4e
Fix: Explicitly use system Docker socket at /var/run/docker.sock
melihcelenk Nov 9, 2025
60bdfcd
Fix: Handle branch names with slashes in get-mlh.sh (git checkout and…
melihcelenk Nov 9, 2025
5326a6d
Fix: Simplify get-mlh.sh to use bookmark-list-category-hierarchy bran…
melihcelenk Nov 9, 2025
dc0763e
Fix: Improve git branch handling - re-clone if branch not found
melihcelenk Nov 9, 2025
8da2b69
Merge pull request #37 from melihcelenk/bookmark-list-category-hierarchy
melihcelenk Nov 9, 2025
ebdf514
Fix: Remove DOCKER_TEST_CMD variable to fix ShellCheck warning (SC2016)
melihcelenk Nov 9, 2025
f641513
Fix: Update `get-mlh.sh` to use `main` branch and simplify tarball UR…
melihcelenk Nov 9, 2025
aa727c4
Remove TODO.md and update .gitignore for cleanup and exclusion
melihcelenk Nov 9, 2025
734017b
Remove RELEASE_NOTES_v1.5.0.md for documentation cleanup
melihcelenk Nov 9, 2025
4c0afa7
Fix: Simplify fallback logic for git clone in `get-mlh.sh`
melihcelenk Nov 9, 2025
0db74b4
Fix: Adjust indentation for readability in `get-mlh.sh` git operations
melihcelenk Nov 9, 2025
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ build/
NOTES.md
DRAFT*.md
SCRATCH*.md
TODO.md
notes/
drafts/

Expand Down
49 changes: 41 additions & 8 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -358,18 +358,42 @@ When releasing a new version:

**Important:** Release notes should focus on **user-facing changes** since the last release tag, not internal bug fixes or refactoring.

#### What to Include:
- ✅ **New features** that users can see or use
- ✅ **Behavior changes** that affect user workflow
- ✅ **UI/UX improvements** (interactive modes, better output formatting)
- ✅ **Configuration changes** (new config options, migration requirements)
- ✅ **Breaking changes** (if any)
#### Release Notes Standards

**General Principles:**
- Each release note document focuses **only on changes in that specific version**
- Previous versions' content is **not included** (except for reference like "Previous Version: v1.5.0")
- Users can read individual release notes to see what changed in each version
- This allows quick understanding of changes without reading through cumulative lists

**Version Types:**
- **Bug fix releases (patch versions like 1.5.1):** Document only the bug fixes
- Focus on what was broken and how it's fixed
- Include impact and migration notes if needed
- Example: `RELEASE_NOTES_v1.5.1.md` (hierarchical category display fix)
- **Feature releases (minor versions like 1.6.0):** Document new features and enhancements
- New features, improvements, and user-visible changes
- Include migration guides if behavior changes
- Example: `RELEASE_NOTES_v1.5.0.md` (configurable bookmark shortcuts)
- **Major releases (2.0.0):** Document breaking changes and major updates
- Breaking changes, major architecture changes
- Migration guides required
- Deprecation notices

**What to Include:**
- ✅ **User-facing changes** that affect behavior or features
- ✅ **Bug fixes** that users might notice or benefit from
- ✅ **Breaking changes** and migration guides
- ✅ **New features** and enhancements
- ✅ **Documentation updates** (new guides, improved examples)

#### What to Exclude:
**What to Exclude:**
- ❌ **Internal refactoring** without functional changes
- ❌ **Code quality improvements** (unless they fix user-reported issues)
- ❌ **Test improvements** (unless they fix user-visible bugs)
- ❌ **Previous version content** (users can read older release notes separately)
- ❌ **Internal bug fixes** that don't change user-visible behavior
- ❌ **Code refactoring** without functional changes
- ❌ **Test improvements** (unless they fix user-reported issues)
- ❌ **ShellCheck/formatting fixes** (code quality improvements)
- ❌ **Internal tooling changes** (CI/CD, development workflow)

Expand Down Expand Up @@ -421,6 +445,15 @@ git log v1.4.1..HEAD --oneline
│ ├── search.sh # File search using find
│ ├── isjsonvalid.sh # Centralized JSON validation engine
│ └── ll.sh # ls -la shortcut
├── docs/
│ ├── BOOKMARK_ALIAS_GUIDE.md # Comprehensive alias setup guide
│ ├── BOOKMARK_QUICK_REFERENCE.md # Quick reference for bookmark commands
│ ├── RELEASE_NOTES_v1.5.1.md # Release notes for v1.5.1
│ ├── RELEASE_NOTES_v1.5.0.md # Release notes for v1.5.0
│ ├── assets/
│ │ └── MLH-Bookmark.gif # Bookmark demo animation
│ └── config/
│ └── mlh.conf.example # Example configuration file
└── tests/
├── test # Main test runner framework (285+ tests total)
├── bookmark/
Expand Down
86 changes: 38 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelpe
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"
```

After installation, you can configure a custom shortcut for the `bookmark` command (e.g., `bm`) by editing `~/.mylinuxhelper/mlh.conf` and running `./setup.sh` again. See the [Bookmark Alias Guide](docs/BOOKMARK_ALIAS_GUIDE.md) for details.
After installation, you can configure a custom shortcut for the `bookmark` command (e.g., `bm`) by editing `~/.mylinuxhelper/mlh.conf` and setting `BOOKMARK_ALIAS=bm`, then running `setup.sh` in the installation directory to apply changes.

## 🚀 Usage

Expand Down Expand Up @@ -76,12 +76,49 @@ mlh docker in web
# Select container [1-3]: 1
```

> **💡 Note:** `mlh docker in` automatically detects if Docker requires sudo permissions and uses `sudo docker` when needed. You don't need to run `sudo mlh docker in` - just run `mlh docker in <pattern>` and it will handle sudo automatically if required.
>
> **⚠️ Troubleshooting:** If you get `mlh: command not found` when running `sudo mlh docker in`, it's because `sudo` resets the PATH. Solutions:
> - **Recommended:** Run without sudo: `mlh docker in <pattern>` (script handles sudo internally)
> - **Alternative:** Use `sudo -E env PATH=$PATH mlh docker in <pattern>` to preserve PATH
> - **Best long-term:** Add your user to the docker group: `sudo usermod -aG docker $USER` (then logout/login)

---

### 📦 `linux` - Container Management

Launch and manage isolated Linux containers quickly:

![Linux & Docker Demo](docs/assets/MLH-Linux-Docker.gif)

```bash
# Create ephemeral container (auto-removed on exit)
linux mycontainer

# Create permanent container
linux -p mycontainer

# Stop container
linux -s mycontainer

# Delete container
linux -d mycontainer

# Use different base image
linux -i debian:12 mycontainer

# Bind mount directory
linux -m "$PWD:/workspace" -p mycontainer
```

---

### 🔖 `bookmark` - Quick Directory Bookmarks

Save and jump to frequently used directories instantly:

![Bookmark Demo](docs/assets/MLH-Bookmark.gif)

> **💡 Configurable Shortcut:** Configure your preferred alias (e.g., `bm`, `fav`, `goto`) in `~/.mylinuxhelper/mlh.conf`:
> ```bash
> BOOKMARK_ALIAS=bm
Expand Down Expand Up @@ -159,30 +196,6 @@ bookmark --help # or: bm --help

---

### 📦 `linux` - Container Management
Launch and manage isolated Linux containers quickly:
```bash
# Create ephemeral container (auto-removed on exit)
linux mycontainer

# Create permanent container
linux -p mycontainer

# Stop container
linux -s mycontainer

# Delete container
linux -d mycontainer

# Use different base image
linux -i debian:12 mycontainer

# Bind mount directory
linux -m "$PWD:/workspace" -p mycontainer
```

---

### 📜 `mlh history` - Enhanced Command History
View command history with dates, search, and filtering:
```bash
Expand Down Expand Up @@ -335,8 +348,6 @@ search "*.conf" /etc
├── setup.sh # Main setup script (creates symlinks, configures PATH)
├── install.sh # Universal package installer (provides 'i' command)
├── README.md # User documentation with usage examples
├── CLAUDE.md # Development documentation
├── TODO.md # Feature roadmap and implementation checklist
├── LICENSE # Project license
├── plugins/
│ ├── mlh.sh # Interactive menu and command dispatcher
Expand All @@ -352,29 +363,8 @@ search "*.conf" /etc
│ ├── bookmark-alias.sh # Bookmark alias proxy (delegates to mlh-bookmark.sh)
│ └── ll.sh # Shortcut for "ls -la"
├── docs/
│ ├── BOOKMARK_ALIAS_GUIDE.md # Comprehensive alias setup guide
│ ├── BOOKMARK_QUICK_REFERENCE.md # Quick reference for bookmark commands
│ ├── RELEASE_NOTES_v1.5.0.md # Release notes for v1.5.0
│ └── config/
│ └── mlh.conf.example # Example configuration file
└── tests/
├── test # Main test runner (293 tests)
├── bookmark/
│ ├── test-mlh-bookmark.sh # 80 tests - Bookmark functionality
│ ├── test-bookmark-alias.sh # 28 tests - Alias configuration
│ └── test-bookmark-alias-integration.sh # 13 tests - Alias integration
├── test-mlh-history.sh # 34 tests - Command history
├── test-linux.sh # 15 tests - Container management
├── test-mlh-json.sh # 18 tests - JSON operations
├── test-mlh-docker.sh # 18 tests - Docker shortcuts
├── test-mlh.sh # 20 tests - Main dispatcher
├── test-search.sh # 16 tests - File search
├── test-isjsonvalid.sh # 18 tests - JSON validation
├── test-ll.sh # 10 tests - Directory listing
├── test-mlh-about.sh # 12 tests - About page
├── test-shellcheck.sh # 6 tests - Code quality validation
├── test-current-session.sh # 1 test - Session history
└── test-time-debug.sh # 4 tests - Time parsing
```

## 🧪 Testing
Expand Down
Loading