Thank you for your interest in contributing to hybar! We welcome contributions from the community, whether it's reporting bugs, suggesting features, improving documentation, or submitting code changes.
This guide will help you get started with contributing to this World of Warcraft TBC Classic Anniversary addon project.
This project adheres to a Code of Conduct that all contributors are expected to follow. Please read CODE_OF_CONDUCT.md before contributing.
If you encounter a bug, please help us fix it by providing detailed information:
- Check existing issues to see if the bug has already been reported
- Open a new issue using the Bug Report template
- Include the following information:
- WoW Version: TBC Classic Anniversary version (e.g., 2.5.5)
- Addon Version: hybar version (found in
/hybarconfig panel or .toc file) - Other Addons: List other addons you have installed (conflicts can occur)
- Steps to Reproduce: Clear, numbered steps to recreate the bug
- Expected Behavior: What should happen
- Actual Behavior: What actually happens
- Error Messages: Lua errors (enable with
/console scriptErrors 1in-game) - Screenshots: Visual evidence if applicable
Tip: To capture Lua errors in WoW TBC Classic Anniversary, type /console scriptErrors 1 in chat, then /reload. This will display error popups when they occur.
We love hearing new ideas! Before suggesting a feature:
- Check existing issues to see if it's already been suggested
- Consider WoW API limitations - some features may not be possible due to Blizzard's addon API restrictions
- Open a new issue using the Feature Request template
- Describe:
- The problem you're trying to solve
- Your proposed solution
- Alternative approaches you've considered
- Any WoW API limitations that might affect implementation
We welcome pull requests! Here's how to contribute code changes:
Prerequisites:
- World of Warcraft TBC Classic Anniversary installed
- A text editor or IDE (VS Code, IntelliJ IDEA, etc.)
- Git installed
- Basic knowledge of Lua programming
Setup Steps:
- Fork the repository on GitHub
- Clone your fork to your local machine:
git clone https://github.com/YOUR_USERNAME/hybar.git
- Create a symbolic link from your WoW addons folder to your local repository:
- Windows:
mklink /D "C:\Program Files (x86)\World of Warcraft\_anniversary_\Interface\AddOns\hybar" "C:\path\to\your\hybar"
- macOS/Linux:
ln -s /path/to/your/hybar "/Applications/World of Warcraft/_anniversary_/Interface/AddOns/hybar"
- Windows:
Important: This is a WoW addon project, not a Node.js/build-tool project. There are no npm scripts, build tools, or automated test runners.
Making Changes:
- Create a feature branch:
git checkout -b feature/your-feature-name
- Edit
.luafiles directly in your text editor - Test in-game:
- Launch WoW TBC Classic Anniversary
- Type
/reloadto reload the UI - Test your changes using
/hybar,/hellyeahbar, or/hyb
- Iterate - edit code,
/reload, test, repeat
No Build System:
- WoW loads Lua files directly from the addon directory
- Changes take effect immediately after
/reload - No compilation or build step required
Lua Conventions:
- Indentation: Use tabs (4-space equivalent)
- Namespace: All modules share the
_hybnamespace table - Naming: Use camelCase for functions, snake_case for variables
- Comments: Document complex logic and WoW API usage
Namespace Pattern:
local _, _hyb = ...
-- Add to existing namespace modules
_hyb.util.MyFunction = function()
-- Your code
endLocalization:
- All UI strings must go in
locales/hybar-enUS.lua - Use namespace prefix
"HYBAR_"for all string keys - Never hardcode strings in code files
Example:
-- In locales/hybar-enUS.lua
_hyb.locales["HYBAR_MY_STRING"] = "Hello World"
-- In your code
local text = _hyb.locales["HYBAR_MY_STRING"]Critical: Files must be loaded in dependency order, defined in hybar.toc.
Current order:
locales/hybar-enUS.lua- Localization (must load first)definitions.lua- LuaLS type annotationsutil/util.lua- Utility functionsconf/conf.lua- Configuration data managementconf/frame_conf.lua- Configuration UI framebar/bar.lua- Action bar creationcore/core.lua- Event handlers & initializationfunctions/slash.lua- Slash command registration
When adding new files: Update hybar.toc with the correct loading position based on dependencies.
Manual Testing Checklist:
-
/reloadloads the addon without errors - Slash commands work:
/hybar,/hellyeahbar,/hyb - Configuration panel opens and displays correctly
- All checkboxes function properly
- Action bar buttons execute correct macros
- Dragging works when unlocked
- Position persists after
/reload - Settings persist after logout/login
- No Lua errors (enable with
/console scriptErrors 1)
Test Different Scenarios:
- Fresh character (first load)
- Existing character (saved settings)
- Enable/disable the addon
- Lock/unlock position
- Different screen resolutions
Before Submitting:
- Test your changes thoroughly in-game
- Update
CHANGELOG.mdif your changes are user-facing - Update version in
hybar.tocif appropriate (discuss with maintainers) - Ensure all new UI strings are in
locales/hybar-enUS.lua
Submitting a PR:
- Commit your changes with clear, descriptive messages:
git add . git commit -m "feat: add new feature description"
- Push to your fork:
git push origin feature/your-feature-name
- Open a Pull Request on GitHub
- Fill out the PR template with:
- Description of changes
- Related issue numbers
- Testing checklist
- WoW version tested
- Screenshots/GIFs if UI changes
Commit Message Format:
feat:- New featurefix:- Bug fixdocs:- Documentation changesrefactor:- Code refactoringperf:- Performance improvementstest:- Testing updateschore:- Maintenance tasks
PR Review Process:
- Maintainers will review your PR
- You may be asked to make changes
- Once approved, your PR will be merged
- Your contribution will be included in the next release
Welcome! We're excited to have you contribute to hybar.
Good First Issues:
- Look for issues labeled
good first issue - These are beginner-friendly tasks that don't require deep knowledge of the codebase
- Don't hesitate to ask questions in the issue comments
Learning Resources:
Tips:
- Start small - fix a typo, improve documentation, or tackle a small bug
- Read existing code to understand patterns and conventions
- Test thoroughly in-game before submitting
- Ask questions if you're stuck - we're here to help!
If you have questions about contributing:
- Open a GitHub Discussion for general questions
- Comment on an issue if you need clarification
- Email us at hyb.devs@gmail.com
Thank you for contributing to hybar and supporting the WoW TBC Classic Anniversary community!