Commit Graph

36 Commits

Author SHA1 Message Date
rob de024965a0 Add dev setup script and restructure dependencies for editable installs
- Add scripts/dev-setup.sh for setting up development environment with
  editable installs of interdependent projects (cmdforge, ramble,
  artifact-editor, orchestrated-discussions)
- Restructure pyproject.toml dependencies: top-level app specifies git URLs,
  libraries use name-only deps for compatibility with editable installs
- Add artifact-editor as explicit dependency (transitive through discussions)
- Various model, parser, and widget enhancements

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 00:40:52 -04:00
rob 20818956b3 Fix todo deletion not refreshing milestone widgets and file watcher race condition
- 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>
2026-01-26 00:38:35 -04:00
rob b60af09922 Add tests for M4 workspace files and wizard
- test_settings.py: Add TestDocsModeSettings and TestWorkspaceExportImport
- test_paths.py: Comprehensive PathResolver tests with proper isolation
- test_wizard.py: Wizard structure and settings integration tests

All 71 tests pass.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 05:57:59 -04:00
rob 5742b7088b Update documentation for workspace files feature
- Update CLAUDE.md with new architecture, classes, features
- Add workspace files and configuration sections
- Update README.md with first-run setup and workspace files

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 05:48:47 -04:00
rob 14885fb567 Add workspace files and enhanced first-run wizard
- Add PathResolver module for centralized path resolution from settings
- Add workspace export/import (YAML) for shareable configuration
- Replace SetupWizardDialog with multi-page wizard (Simple/Docs/Import modes)
- Add documentation mode settings (auto/standalone/project-docs)
- Implement graceful degradation (hide features when not configured)
- Add Export/Import Workspace menu items
- Update Settings dialog with documentation mode section
- Replace hardcoded paths with paths resolver throughout codebase
- Add pyyaml dependency for workspace file parsing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 05:40:02 -04:00
rob 43f7deb5a6 Add auto-accept prompts and Ctrl+Shift+V paste for terminal
- Add auto-accept feature to automatically handle Y/yes prompts from CLI tools
  like Claude Code, triggered via action menu with configurable duration
- Shows countdown toast (5s) with Skip/Accept buttons before confirming
- Tab badge displays remaining time (e.g., ⏱4:32)
- Detects prompts by reading pyte screen buffer (works with TUI apps)
- Uses marker-based parsing to avoid re-triggering on same prompt
- Add Ctrl+Shift+V paste support in terminal display
- Update CLAUDE.md with feature documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 21:50:18 -04:00
rob 10d7baff81 Add terminal search, project filter, and refactor dashboard
Terminal improvements:
- Add Ctrl+Shift+F search with match highlighting and navigation
- Add 10,000 line scrollback buffer with Shift+PageUp/Down
- Add graceful error handling for PTY failures and shell crashes
- Press Enter to restart shell after exit

Workspace improvements:
- Add cross-pane tab dragging support
- Empty panes now get welcome tab when splitting
- Add project filter box at top of project list

Dashboard refactoring:
- Extract UndoManager for undo/redo functionality
- Extract DashboardDataStore for data persistence
- Add file watching for external changes (auto-reload)
- Fix file watching to monitor all parent directories
- Use dynamic date instead of hardcoded value in ideas

New test coverage:
- test_data_store.py - file watching and date handling
- test_draggable_tabs.py - cross-pane tab operations
- test_parser_edge_cases.py - parser robustness
- test_project_discovery.py - project discovery logic
- test_settings.py - settings persistence
- test_terminal_error_handling.py - terminal robustness
- test_terminal_search.py - search and project filter
- test_undo_manager.py - undo/redo operations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 16:48:08 -04:00
rob d943cc5e6e Fix audit-goals to pass project key instead of file content
The CmdForge audit-goals tool expects a project name (e.g.,
"development-hub" or "global") via stdin, not the goals file content.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 01:46:17 -04:00
rob ce608957e5 Add weekly progress report and fix terminal Tab key
- Add Reports menu with Weekly Progress Report dialog (Ctrl+R)
- Report aggregates daily standups into summary with completed items,
  in-progress work, blockers, and focus areas
- Support 7/14/30 day ranges with copy-to-clipboard
- Fix Tab key in terminal widget by intercepting in event() before
  Qt's focus navigation consumes it
- Add Shift+Tab (backtab) support for reverse completion
- Improve AI output parsing in dashboard to handle extended thinking

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 01:24:57 -04:00
rob a6937463d0 Add deliverables-to-todos sync feature
Dashboard now automatically syncs milestone deliverables to todos:
- On load, checks each milestone's deliverables table
- If a deliverable doesn't exist as a todo (matched by text + milestone), adds it
- Maps deliverable status to todo priority (Done=completed, In Progress=high, Not Started=medium)
- Saves updated todos.md if any items were added

Also updated CLAUDE.md to document the sync behavior.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:14:38 -04:00
rob e885ccc409 Add procps to Docker for pkill command
Fixes error on window close when stopping docs server.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 22:35:43 -04:00
rob 46c487cf1b Add setup wizard and configurable git hosting
- First-run setup wizard prompts for projects dir and git hosting
- Git Hosting section in Settings dialog (provider, URL, owner, token)
- Supports GitHub, GitLab, and Gitea
- new-project script reads from ~/.config/development-hub/settings.json
- Environment variables still work as fallback (GITEA_URL, GITEA_TOKEN, etc.)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 22:26:00 -04:00
rob 095e185364 Fix new-project script path for Docker
Search multiple locations for the script:
1. Relative to module (editable install)
2. ~/PycharmProjects/development-hub (default)
3. /workspace/development-hub (Docker)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 22:06:55 -04:00
rob fbc20b3f7d Add X11 forwarding support to Docker
Users can now run the full GUI from Docker:
  xhost +local:docker
  docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix development-hub

Or with docker-compose:
  docker compose up gui

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 22:02:39 -04:00
rob 39a85b6748 Remove Docker sed patches - repos now have PySide6
All ecosystem repos have been updated with PySide6 changes,
so the build-time patches are no longer needed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 10:59:36 -04:00
rob a2b2de457d Use git+ URLs for ecosystem dependencies
Changed from file:// to git+ URLs so standalone installs work.
File paths only work for local development.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 10:57:51 -04:00
rob 3ecadb5e16 Convert to PySide6, add ecosystem installer and Docker testing
PySide6 Migration:
- Convert all Qt imports from PyQt6 to PySide6 (LGPL license)
- Replace pyqtSignal with Signal throughout codebase
- Unifies Qt library across ecosystem (ramble, artifact-editor)

New Features:
- Add Re-align Goals button to dashboard (launches Ramble for interview)
- ReAlignGoalsDialog now directly launches Ramble with questions as fields

Ecosystem Tools:
- Add bin/install-ecosystem script for unified installation
- Add Dockerfile for testing ecosystem installation
- Add docker-compose.yml for easy testing
- Add ramble and cmdforge as tracked dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-09 10:54:53 -04:00
rob 45f059647a Enable adding todos and milestones in global dashboard
Previously blocked with "Cannot add X in global view" messages.
Now uses appropriate paths:
- Global todos: docs/todos.md
- Global milestones: docs/goals/milestones.md

This allows:
- Adding new todos from the global dashboard
- Adding todos linked to milestones via @M1 tags
- Adding new milestones
- Full sync between milestones and linked todos

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 02:33:25 -04:00
rob 93a2c7673e Fix global dashboard goals progress and todos count
Goals progress:
- Now includes partial goals at 0.5 weight (completed=1.0, partial=0.5)
- A goal marked [~] contributes 50% to progress bar
- Previously showed 0% when all goals were partial

Todos stat:
- Global dashboard now shows count from docs/todos.md
- Previously showed ecosystem.total_active_todos (sum of all projects)
- This matches what the todos section actually displays

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 02:11:16 -04:00
rob b084e9e30a Fix goals audit to preserve prose and support partial goals
GoalsSaver changes:
- Now preserves prose content (Vision, Principles, etc.) before goal sections
- Only rewrites ## Active, ## Future, ## Non-Goals sections
- Extracts and reinserts prose content between frontmatter and goals

Audit handler changes:
- Supports new status field: "met", "partial", "not_met"
- Maintains backward compatibility with old "checked" boolean format
- Sets Goal.partial=True for partially achieved goals
- Report shows partial count in summary

This fixes a bug where the audit button would delete all prose content
from goals.md files that had philosophy/context sections.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 01:55:35 -04:00
rob 69ec7df308 fix: Dashboard bug fixes and improvements
Critical bug fixes:
- Fix edit undo crash (5-tuple vs 4-tuple handling)
- Fix milestone tag lost on undo (store todo.milestone in undo data)
- Fix global mode null safety (guards for 8 functions)
- Fix ideas priority not saved/loaded
- Fix goal deletion for all sections (active/future/non_goals)
- Fix goal partial-state undo/redo (widget now emits previous state)
- Fix non-goals without checkboxes being dropped on save

New features:
- Add undo/redo support for goals and ideas (toggle, delete, edit)
- Add atomic_write() for non-destructive file saves
- Add round-trip tests for parsers

Improvements:
- Consolidate duplicated milestone todo handlers (delegate to main handlers)
- Milestones now save with Active/Completed sections
- Global dashboard shows milestone completion ratio

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 20:13:59 -04:00
rob 5c45f7e3f0 Update before docs deploy 2026-01-07 21:53:44 -04:00
rob ac24c56534 feat: Add preview dialog for documentation updates
- New DocsPreviewDialog shows side-by-side comparison before applying changes
- Tabs for each doc file (overview, goals, milestones, todos)
- "Show Differences" toggle marks changed lines with +/- prefixes
- Stats show count of new/modified/unchanged files
- Accept saves changes, Cancel restores original files from backup
- Deployment is now a separate step after accepting changes

This makes update-docs much safer - you can review all AI-generated
content before it overwrites your carefully formatted documentation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 19:33:34 -04:00
rob fe6a4d4429 fix: Connect start_discussion signal for todos in milestone widgets
Right-clicking on todos within milestone sections now properly opens
the discussion dialog.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 19:04:19 -04:00
rob 4c72d1fddc feat: Integrate orchestrated-discussions for launching discussions
- Add File > New Discussion menu item (Ctrl+D) for global discussions
- Replace pane menu "New Feature" with "Launch Discussion"
- Add right-click context menu on todos with "Start Discussion" option
- Auto-fill discussion title, template, participants, context from todo
- Add orchestrated-discussions[gui] as dependency

Also includes:
- Auto-start/stop docs server with application
- Graceful Ctrl+C handling
- Fix todo sync between milestone and combined views
- Async deploy/rebuild docs operations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 17:27:14 -04:00
rob 8a5bd8db03 Project auto-discovery, dashboard improvements, progress bar percentages
Features:
- Auto-discover projects from configurable search paths (Settings UI)
- Projects detected by .git folder presence
- Ignore patterns for trash, project-docs, etc.
- Progress bars now show percentages on all sections
- Individual milestone progress bars also show percentages

Files:
- settings.py: New project_search_paths and project_ignore_folders settings
- project_discovery.py: Rewritten for auto-discovery with metadata merge
- dialogs.py: Settings dialog with search path management
- views/dashboard.py: Progress bars with percentage text
- widgets/collapsible_section.py: Milestone progress bars with percentages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:00:19 -04:00
rob 8575c30c76 Add Update Documentation context menu option
Adds AI-powered documentation update feature using CmdForge update-docs tool.
Right-click a project and select "Update Documentation..." to:
- Analyze project code and current docs
- Generate updated overview.md via AI
- Optionally deploy to Gitea Pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 03:18:19 -04:00
rob 1fd92e19c9 Improve CLAUDE.md template to reference updating-documentation.md
Added bold instruction to read docs/updating-documentation.md before
updating docs. This ensures AI assistants read the full visibility
rules and procedures.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 02:51:55 -04:00
rob ec08f878f7 Update documentation with GUI application details
- CLAUDE.md: Added GUI architecture, key classes, features, shortcuts
- README.md: Added quick start for GUI, features section, shortcuts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 02:19:48 -04:00
rob bb7c665d03 Fix welcome tab not restored in empty panes
When restoring session, panes that only had a welcome tab were left
empty because welcome tabs weren't saved. Now add a welcome tab to
any pane that ends up empty after restore.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 02:09:26 -04:00
rob cb173a4b42 Fix deploy docs output going to launching terminal
- Redirect stdout/stderr to DEVNULL
- Show notification dialog when deploy starts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 01:25:37 -04:00
rob d570681d86 Add Development Hub PyQt6 GUI application
Features:
- Project list with discovery from build-public-docs.sh
- PTY-based terminal with pyte emulation
- Pane-based workspace with horizontal/vertical splits
- Tab management within each pane
- Drag-drop support (cd to dirs, run executables, insert paths)
- New Project dialog with Ramble voice integration
- Settings dialog with JSON persistence
- Session persistence (restore layout on restart)
- Context menu: open terminal, editor, gitea, docs, deploy

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 01:25:18 -04:00
rob be7b848640 Add --deploy flag to build and publish public docs automatically 2026-01-05 19:13:42 -04:00
rob 5f6cab404b Add automatic sidebar.ts update when creating new projects 2026-01-05 19:11:14 -04:00
rob d3351b0f01 Use HTTPS for git remote (SSH port 222 unavailable) 2026-01-05 18:39:39 -04:00
rob 28f40f7edd Initial project setup
Development Hub - Central project orchestration for the development ecosystem.

Features:
- new-project script for automated project scaffolding
- Templates for Python projects
- Integration with centralized documentation system
- Gitea API integration for repo creation
2026-01-05 18:25:36 -04:00