|
| 1 | +# HackBot — Release Guide |
| 2 | + |
| 3 | +Step-by-step instructions for creating a GitHub release for HackBot. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## Prerequisites |
| 8 | + |
| 9 | +- **GitHub CLI** (`gh`) installed and authenticated |
| 10 | +- Push access to `yashab-cyber/hackbot` |
| 11 | +- All changes committed and pushed to `main` |
| 12 | + |
| 13 | +```bash |
| 14 | +# Verify gh is authenticated |
| 15 | +gh auth status |
| 16 | + |
| 17 | +# Verify you're on main with no uncommitted changes |
| 18 | +git status |
| 19 | +``` |
| 20 | + |
| 21 | +--- |
| 22 | + |
| 23 | +## Step 1: Update the Version Number |
| 24 | + |
| 25 | +Edit the version in **two files**: |
| 26 | + |
| 27 | +| File | Field | |
| 28 | +|------|-------| |
| 29 | +| `hackbot/__init__.py` | `__version__ = "X.Y.Z"` | |
| 30 | +| `pyproject.toml` | `version = "X.Y.Z"` | |
| 31 | + |
| 32 | +**Versioning convention:** `MAJOR.MINOR.PATCH` |
| 33 | +- **MAJOR** — breaking changes (2.0.0) |
| 34 | +- **MINOR** — new features (1.1.0) |
| 35 | +- **PATCH** — bug fixes (1.0.1) |
| 36 | + |
| 37 | +```bash |
| 38 | +# Example: bump to 1.1.0 |
| 39 | +sed -i 's/__version__ = ".*"/__version__ = "1.1.0"/' hackbot/__init__.py |
| 40 | +sed -i 's/^version = ".*"/version = "1.1.0"/' pyproject.toml |
| 41 | +``` |
| 42 | + |
| 43 | +Commit the version bump: |
| 44 | + |
| 45 | +```bash |
| 46 | +git add hackbot/__init__.py pyproject.toml |
| 47 | +git commit -m "chore: bump version to 1.1.0" |
| 48 | +git push origin main |
| 49 | +``` |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +## Step 2: Create a Git Tag |
| 54 | + |
| 55 | +```bash |
| 56 | +# Create an annotated tag |
| 57 | +git tag -a v1.1.0 -m "Release v1.1.0" |
| 58 | + |
| 59 | +# Push the tag to GitHub |
| 60 | +git push origin v1.1.0 |
| 61 | +``` |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## Step 3: Create the GitHub Release |
| 66 | + |
| 67 | +### Option A: Using GitHub CLI (Recommended) |
| 68 | + |
| 69 | +```bash |
| 70 | +gh release create v1.1.0 \ |
| 71 | + --title "HackBot v1.1.0" \ |
| 72 | + --notes "## What's New |
| 73 | +
|
| 74 | +- Feature 1 description |
| 75 | +- Feature 2 description |
| 76 | +
|
| 77 | +## Bug Fixes |
| 78 | +
|
| 79 | +- Fix 1 description |
| 80 | +
|
| 81 | +## Full Changelog |
| 82 | +https://github.com/yashab-cyber/hackbot/compare/v1.0.0...v1.1.0" |
| 83 | +``` |
| 84 | + |
| 85 | +### Option B: With Release Notes from a File |
| 86 | + |
| 87 | +Create a temporary release notes file: |
| 88 | + |
| 89 | +```bash |
| 90 | +cat > /tmp/release-notes.md << 'EOF' |
| 91 | +## What's New |
| 92 | +
|
| 93 | +- Added TinyLlama support for low-end PCs |
| 94 | +- Added xploiter/pentester cybersecurity model |
| 95 | +- Added Ollama & Local model usage guides |
| 96 | +- Added screenshots to README |
| 97 | +
|
| 98 | +## Bug Fixes |
| 99 | +
|
| 100 | +- Fixed screenshot labels in README |
| 101 | +
|
| 102 | +## Full Changelog |
| 103 | +https://github.com/yashab-cyber/hackbot/compare/v1.0.0...v1.1.0 |
| 104 | +EOF |
| 105 | + |
| 106 | +gh release create v1.1.0 \ |
| 107 | + --title "HackBot v1.1.0" \ |
| 108 | + --notes-file /tmp/release-notes.md |
| 109 | +``` |
| 110 | + |
| 111 | +### Option C: Auto-Generate Notes from Commits |
| 112 | + |
| 113 | +```bash |
| 114 | +gh release create v1.1.0 \ |
| 115 | + --title "HackBot v1.1.0" \ |
| 116 | + --generate-notes |
| 117 | +``` |
| 118 | + |
| 119 | +This automatically generates release notes from commit messages and pull requests since the last release. |
| 120 | + |
| 121 | +### Option D: Upload Artifacts with the Release |
| 122 | + |
| 123 | +If you have build artifacts (wheels, archives, etc.): |
| 124 | + |
| 125 | +```bash |
| 126 | +# Build the package first |
| 127 | +pip install build |
| 128 | +python -m build # creates dist/hackbot-1.1.0.tar.gz and .whl |
| 129 | + |
| 130 | +# Create release with attachments |
| 131 | +gh release create v1.1.0 \ |
| 132 | + --title "HackBot v1.1.0" \ |
| 133 | + --generate-notes \ |
| 134 | + dist/hackbot-1.1.0.tar.gz \ |
| 135 | + dist/hackbot-1.1.0-py3-none-any.whl |
| 136 | +``` |
| 137 | + |
| 138 | +--- |
| 139 | + |
| 140 | +## Step 4: Verify the Release |
| 141 | + |
| 142 | +```bash |
| 143 | +# List releases |
| 144 | +gh release list |
| 145 | + |
| 146 | +# View the release |
| 147 | +gh release view v1.1.0 |
| 148 | + |
| 149 | +# Open in browser |
| 150 | +gh release view v1.1.0 --web |
| 151 | +``` |
| 152 | + |
| 153 | +--- |
| 154 | + |
| 155 | +## Quick One-Liner (All Steps Combined) |
| 156 | + |
| 157 | +For a fast release after everything is committed and pushed: |
| 158 | + |
| 159 | +```bash |
| 160 | +VERSION="1.1.0" && \ |
| 161 | +sed -i "s/__version__ = \".*\"/__version__ = \"$VERSION\"/" hackbot/__init__.py && \ |
| 162 | +sed -i "s/^version = \".*\"/version = \"$VERSION\"/" pyproject.toml && \ |
| 163 | +git add -A && \ |
| 164 | +git commit -m "chore: bump version to $VERSION" && \ |
| 165 | +git push origin main && \ |
| 166 | +git tag -a "v$VERSION" -m "Release v$VERSION" && \ |
| 167 | +git push origin "v$VERSION" && \ |
| 168 | +gh release create "v$VERSION" --title "HackBot v$VERSION" --generate-notes |
| 169 | +``` |
| 170 | + |
| 171 | +--- |
| 172 | + |
| 173 | +## Deleting a Release (If Needed) |
| 174 | + |
| 175 | +```bash |
| 176 | +# Delete the release (keeps the tag) |
| 177 | +gh release delete v1.1.0 --yes |
| 178 | + |
| 179 | +# Delete the tag too |
| 180 | +git tag -d v1.1.0 |
| 181 | +git push --delete origin v1.1.0 |
| 182 | +``` |
| 183 | + |
| 184 | +--- |
| 185 | + |
| 186 | +## Draft Releases (Review Before Publishing) |
| 187 | + |
| 188 | +Create as draft, review on GitHub, then publish: |
| 189 | + |
| 190 | +```bash |
| 191 | +gh release create v1.1.0 \ |
| 192 | + --title "HackBot v1.1.0" \ |
| 193 | + --generate-notes \ |
| 194 | + --draft |
| 195 | +``` |
| 196 | + |
| 197 | +Then go to **GitHub → Releases → Edit → Publish**. |
| 198 | + |
| 199 | +--- |
| 200 | + |
| 201 | +## Pre-release (Beta / RC) |
| 202 | + |
| 203 | +```bash |
| 204 | +gh release create v2.0.0-beta.1 \ |
| 205 | + --title "HackBot v2.0.0 Beta 1" \ |
| 206 | + --generate-notes \ |
| 207 | + --prerelease |
| 208 | +``` |
| 209 | + |
| 210 | +--- |
| 211 | + |
| 212 | +## Release Notes Template |
| 213 | + |
| 214 | +Use this template when writing manual release notes: |
| 215 | + |
| 216 | +```markdown |
| 217 | +## 🚀 What's New |
| 218 | +- **Feature Name** — Brief description (#PR) |
| 219 | + |
| 220 | +## 🐛 Bug Fixes |
| 221 | +- Fixed description (#PR) |
| 222 | + |
| 223 | +## 📖 Documentation |
| 224 | +- Updated docs for X |
| 225 | + |
| 226 | +## ⚠️ Breaking Changes |
| 227 | +- Description of breaking change (if any) |
| 228 | + |
| 229 | +## 📦 Installation |
| 230 | +\```bash |
| 231 | +pip install "hackbot @ git+https://github.com/yashab-cyber/hackbot.git" |
| 232 | +\``` |
| 233 | + |
| 234 | +## Full Changelog |
| 235 | +https://github.com/yashab-cyber/hackbot/compare/vOLD...vNEW |
| 236 | +``` |
| 237 | + |
| 238 | +--- |
| 239 | + |
| 240 | +## Creating Your First Release (v1.0.0) |
| 241 | + |
| 242 | +Since HackBot doesn't have any releases yet, run this to create the initial release: |
| 243 | + |
| 244 | +```bash |
| 245 | +cd /path/to/hackbot |
| 246 | + |
| 247 | +# Tag the current state as v1.0.0 |
| 248 | +git tag -a v1.0.0 -m "Release v1.0.0 — Initial production release" |
| 249 | +git push origin v1.0.0 |
| 250 | + |
| 251 | +# Create the GitHub release |
| 252 | +gh release create v1.0.0 \ |
| 253 | + --title "HackBot v1.0.0 — Initial Release" \ |
| 254 | + --notes "## 🎉 HackBot v1.0.0 — Initial Production Release |
| 255 | +
|
| 256 | +### Features |
| 257 | +- 🤖 **Agent Mode** — Autonomous penetration testing with real tools |
| 258 | +- 💬 **Chat Mode** — Interactive cybersecurity Q&A with memory |
| 259 | +- 📋 **Plan Mode** — 8 structured pentest plan templates |
| 260 | +- 🖥️ **Native Desktop GUI** — pywebview-powered dark theme interface |
| 261 | +- 🛡️ **CVE/Exploit Lookup** — Real-time NVD search + GitHub PoC discovery |
| 262 | +- 🌐 **OSINT Module** — Subdomains, DNS, WHOIS, tech stack, emails |
| 263 | +- 🗺️ **Network Topology** — Interactive D3.js network visualization |
| 264 | +- 📋 **Compliance Mapping** — PCI DSS, NIST 800-53, OWASP Top 10, ISO 27001 |
| 265 | +- 🔀 **Diff Reports** — Compare assessments (new/fixed/persistent findings) |
| 266 | +- 🎯 **Multi-Target Campaigns** — Coordinated multi-host assessments |
| 267 | +- 🧩 **Custom Plugins** — Python plugin system for custom tools |
| 268 | +- 🔧 **AI Remediation** — Auto-generate fix commands and config patches |
| 269 | +- 🔌 **HTTP Proxy** — Intercepting proxy with traffic capture and replay |
| 270 | +- 🧠 **Memory & Sessions** — Auto-save, session history, conversation summarization |
| 271 | +- 🌍 **10 AI Providers** — OpenAI, Anthropic, Gemini, Groq, Mistral, DeepSeek, Together, OpenRouter, Ollama, Local |
| 272 | +- 🔧 **30+ Tool Integrations** — nmap, nikto, sqlmap, nuclei, ffuf, hydra, and more |
| 273 | +- 📊 **Reports** — HTML, Markdown, JSON, and professional PDF reports |
| 274 | +- 💻 **Cross-Platform** — Linux, macOS, Windows |
| 275 | +
|
| 276 | +### Installation |
| 277 | +\`\`\`bash |
| 278 | +pip install \"hackbot @ git+https://github.com/yashab-cyber/hackbot.git\" |
| 279 | +\`\`\` |
| 280 | +
|
| 281 | +### Local Models (No API Key) |
| 282 | +\`\`\`bash |
| 283 | +ollama pull xploiter/pentester |
| 284 | +hackbot --provider ollama --model xploiter/pentester |
| 285 | +\`\`\` |
| 286 | +" |
| 287 | +``` |
| 288 | + |
| 289 | +--- |
| 290 | + |
| 291 | +**Author:** Yashab Alam |
| 292 | +**Repository:** [github.com/yashab-cyber/hackbot](https://github.com/yashab-cyber/hackbot) |
0 commit comments