HSTR is an open-source project and contributions from the community are welcome! Whether you're fixing bugs, adding features, improving documentation, or helping other users, your contribution matters.

Report Bugs

Found a bug? Please report it on GitHub Issues. When reporting bugs, please include:

Bug Report Template

**System Information:**
- OS: Ubuntu 22.04
- HSTR Version: 3.x
- Shell: bash 5.1.16

**Description:**
[Clear description of the bug]

**Steps to Reproduce:**
1. Run hstr
2. Type search query
3. ...

**Expected Behavior:**
[What should happen]

**Actual Behavior:**
[What actually happens]

**Configuration:**
HSTR_CONFIG=hicolor,prompt-bottom

Feature Requests

Have an idea for a new feature? Open a GitHub Issue with the "enhancement" label. Please describe:

Code Contributions

Setting Up Development Environment

# Clone the repository
git clone https://github.com/dvorka/hstr.git
cd hstr

# Install build dependencies (Ubuntu/Debian)
sudo apt install automake gcc make libncursesw5-dev libreadline-dev

# Build from source
cd build/tarball
./tarball-automake.sh
cd ../..
./configure && make

# Run HSTR
./hstr

Making Changes

  1. Fork the repository on GitHub
  2. Create a new branch for your feature or bugfix
  3. Make your changes following the coding style
  4. Test your changes thoroughly
  5. Commit with clear, descriptive messages
  6. Push to your fork
  7. Create a Pull Request

Coding Guidelines:

  • Follow existing code style and conventions
  • Write clean, readable code with appropriate comments
  • Handle errors and edge cases properly
  • Avoid memory leaks and buffer overflows
  • Test with both bash and zsh if shell-related

Pull Request Process

# Create a feature branch
git checkout -b feature/my-awesome-feature

# Make your changes
# ... edit files ...

# Commit your changes
git add .
git commit -m "Add awesome feature: description of changes"

# Push to your fork
git push origin feature/my-awesome-feature

# Open a Pull Request on GitHub

Documentation

Documentation improvements are always welcome! You can help by:

Testing

Help ensure HSTR works correctly by:

# Test for memory leaks
valgrind --leak-check=full ./hstr

# Test with different configs
export HSTR_CONFIG=hicolor
./hstr

# Test with both bash and zsh
bash -c "source ~/.bashrc && hstr"
zsh -c "source ~/.zshrc && hstr"

Community Support

You can contribute without writing code by:

Good First Issues

New to the project? Look for issues labeled "good first issue" on GitHub. These are beginner-friendly tasks that will help you get familiar with the codebase.

Code of Conduct

When contributing to HSTR, please:

Get in Touch

Thank you for your interest in contributing to HSTR!
Every contribution, no matter how small, helps make HSTR better for everyone.