- Add _load_milestones() call after _load_todos() in _on_todo_deleted and _on_todo_edited to refresh milestone widgets showing linked todos - Replace boolean _ignoring_file_change flag with timestamp-based ignore window (0.5s) to handle multiple file system events from a single save - Add _is_within_save_window() helper method for cleaner event filtering Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| bin | ||
| diagrams | ||
| discussions | ||
| src | ||
| templates | ||
| tests | ||
| .gitignore | ||
| CLAUDE.md | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.yml | ||
| pyproject.toml | ||
README.md
Development Hub
Central orchestration project for managing Rob's multi-project development ecosystem.
Overview
Development Hub provides:
- GUI Application - PyQt6 workspace with project list, splittable terminal panes, and session persistence
- CLI Tools - Scripts to create and manage projects with consistent patterns
- Centralized Documentation - Docusaurus-based docs with Gitea Pages deployment
Quick Start
Run the GUI
cd ~/PycharmProjects/development-hub
source .venv/bin/activate
python -m development_hub
Install Dependencies (first time)
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Create a New Project (CLI)
# Add to PATH (one-time)
export PATH="$PATH:$HOME/PycharmProjects/development-hub/bin"
# Create a new project
new-project my-awesome-tool --title "My Awesome Tool" --tagline "Does awesome things"
This will:
- Create a Gitea repository at
gitea.brrd.tech/rob/my-awesome-tool - Set up local project at
~/PycharmProjects/my-awesome-tool/ - Generate starter files (CLAUDE.md, README.md, pyproject.toml, .gitignore)
- Configure documentation symlink and build scripts
- Create initial commit and push
View Full Options
new-project --help
What Gets Created
For each new project:
~/PycharmProjects/my-project/
├── src/my_project/ # (you create this)
├── tests/ # (you create this)
├── docs/ # Symlink to centralized docs
├── CLAUDE.md # AI assistant context
├── README.md # Project readme
├── pyproject.toml # Python packaging
└── .gitignore # Standard Python ignores
Documentation System
All projects use centralized documentation:
- Private hub:
~/PycharmProjects/project-docs/(view withnpm start) - Public sites:
https://pages.brrd.tech/rob/{project}/
The docs/ symlink in each project points to its section in project-docs.
Configuration
Gitea Token
The script needs a Gitea API token. It will prompt you the first time and save it to ~/.config/development-hub/gitea-token.
To create manually:
- Go to https://gitea.brrd.tech/user/settings/applications
- Generate token with 'repo' scope
- Set
GITEA_TOKENenv var or let the script save it
GUI Features
Project List (Left Panel)
- Auto-discovers projects from build configuration
- Filter box to quickly find projects
- Double-click to open project dashboard
- Right-click context menu (items shown based on configuration):
- Open Dashboard / Terminal / Editor
- View on Git Host / Documentation
- Update / Deploy Docs
Workspace (Right Panel)
- Splittable panes (horizontal/vertical)
- Each pane has its own tab bar
- Full PTY terminals with TUI support (vim, htop, etc.)
- Drag & drop files/folders to inject paths
- Session persistence - remembers layout on restart
- Auto-accept prompts for AI CLI tools
First-Run Setup
On first launch, a setup wizard helps configure:
- Simple Mode: Just a projects directory, local data storage
- Documentation Mode: Full Docusaurus integration with git hosting
- Import Workspace: Load settings from a YAML file
Workspace Files
Export your configuration to share with others:
- File → Export Workspace... (creates
.devhub-workspace.yaml) - File → Import Workspace... (loads settings from file)
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+Shift+T |
New terminal tab |
Ctrl+Shift+W |
Close current tab |
Ctrl+Shift+D |
Split horizontal |
Ctrl+Shift+E |
Split vertical |
Ctrl+Alt+Left/Right |
Switch panes |
Ctrl+B |
Toggle project panel |
Ctrl+N |
New project dialog |
Ctrl+G |
Global Dashboard |
Ctrl+R |
Weekly progress report |