Commit Graph
19 Commits
Author SHA1 Message Date
robandClaude Opus 4.5 70e9c7b789 Increase assertion row and widget heights for proper display
- Row height: 50px
- Widget minimum heights: 34px
- Button max height constrained to 34px
- Table max height increased to 220px for taller rows

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 14:33:22 -04:00
robandClaude Opus 4.5 0548f6e3ec Let table cells manage widget sizes naturally
- Remove fixed heights, let Qt size widgets to fit cells
- Increase row height to 40px for more room
- Use padding instead of fixed size on remove button

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 14:24:24 -04:00
robandClaude Opus 4.5 0e1a5b5f62 Fix assertion row alignment and improve delete button visibility
- Set consistent fixed height (26px) on all row widgets
- Replace × with ✕ and style as red delete button
- Add hover/pressed states and tooltip
- Reduce row height to 32px for tighter alignment

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 14:13:43 -04:00
robandClaude Opus 4.5 7516a9b5ed Fix assertion table column widths in TestStepDialog
- Set fixed column widths (Type: 130px, Remove: 40px)
- Add minimum width (120px) on type combo box
- Value column stretches to fill remaining space

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 14:04:06 -04:00
robandClaude Opus 4.5 7110e82eca Fix assertion type combo box height in TestStepDialog
Set minimum height (28px) on type combo box to display selection.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 14:02:28 -04:00
robandClaude Opus 4.5 4176573e9d Fix assertion table row height in TestStepDialog
Set explicit row height (36px) and minimum input height (28px)
to prevent value input from being cut off.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 14:00:08 -04:00
robandClaude Opus 4.5 68ab329c33 Add interactive step testing to Tool Builder
- New TestStepDialog for testing individual steps from the GUI
- Test button in Tool Builder to test selected step
- Auto-detects variables from step templates
- Multiple assertion types: not_empty, contains, valid_json,
  matches_regex, min/max_length, equals, valid_python
- Background execution with timing metrics
- Provider override option for testing with mock provider
- Output variable display and assertion pass/fail results

Completes M5: Testing & Polish milestone (100%)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 13:42:20 -04:00
robandClaude Opus 4.5 9baddeef18 Add Help menu and contextual tooltips to GUI
- Add Help menu with quick guides: Getting Started, Create Tool,
  Install Tools, Publish Tools, Keyboard Shortcuts, About
- F1 shortcut opens Getting Started guide
- Add tooltips to Tool Builder section headings (Arguments, Steps,
  Output Template) that appear on hover over the label text
- Add tooltips to Registry page controls (search, filters, pagination)
- Enhance sidebar tooltips with keyboard shortcuts

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 06:27:23 -04:00
robandClaude Opus 4.5 3f259449d4 Add tool composition UI with auto-dependency management
- Add ToolStepDialog for configuring tool steps (tool selection, input mapping, args)
- Add "Add Tool" button in Tool Builder alongside Add Prompt/Add Code
- Add ToolNode in flow graph visualization (purple puzzle piece icon)
- Auto-populate dependencies when adding ToolStep in GUI
- Add --auto-install flag for automatic runtime dependency installation
- Add check_dependencies() and auto_install_dependencies() functions
- Update runner to pass auto_install parameter through execution chain

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-17 05:27:54 -04:00
robandClaude Opus 4.5 16de3e371c Add version display and bump buttons to publish dialog
- Show local and registry version in publish dialog
- Add +Patch/+Minor/+Major bump buttons
- Auto-fetch registry version on dialog open
- Suggest next version based on latest registry version
- Add fork detection and forked_from metadata support
- Update registry schema for forked_from/forked_version fields
- Display fork indicator when publishing forked tools

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-16 22:45:42 -04:00
robandClaude Opus 4.5 66c0fc77ae Fix GUI publish to save normalized config for hash consistency
The GUI was sending to_dict() output to server but only updating the
existing config file with the hash. This caused mismatches because
to_dict() adds fields like 'arguments: []' that weren't in the original.

Now saves the exact config that was published, ensuring local file
matches what was sent to server.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-16 20:37:29 -04:00
robandClaude Opus 4.5 f1c462146b Fix publish state tracking and add sync status feature
- Track moderation status (pending/approved/rejected) in local tool config
- Add new "pending" state indicator (◐ yellow) distinct from "published" (✓ green)
- Add "Sync Status" button to check registry for updated moderation status
- Add /me/tools/<name>/status API endpoint for checking tool status
- Improve admin panel error handling with better error messages

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-16 07:52:42 -04:00
robandClaude Opus 4.5 4b1f3cee52 Save registry_hash after publish for state tracking
- Add config_hash to publish API response
- Save registry_hash to local tool config after successful publish
- Show appropriate message based on moderation status (approved vs pending)

This enables the GUI to show publish state indicators (✓ published, ● modified)
for tools that have been published to the registry.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-16 07:12:20 -04:00
robandClaude Opus 4.5 96f7c05744 Fix publish dialog sending dict instead of YAML string
The publish_tool() API expects a YAML config string, but the dialog
was passing a dict directly, causing a 500 error on the server.

- Update PublishWorker to accept config_yaml string and readme
- Build complete tool config from Tool.to_dict()
- Convert to YAML string before sending
- Also include README.md if it exists in tool directory

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-16 07:06:45 -04:00
robandClaude Opus 4.5 88c9a8a1e7 Add custom step names and fix F key shortcut
- Add name field to PromptStep, CodeStep, and ToolStep dataclasses
- Update step dialogs to allow editing step names
- Display custom step names in both list and flow views
- Fix F key shortcut by installing event filter on graph widget
- Steps without custom names show default "Prompt N" / "Code N"

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-15 22:16:15 -04:00
robandClaude Opus 4.5 436d6292ff Add Python syntax checking to Code Step dialog
Validates code with ast.parse() before accepting. Shows line number
and error message if syntax is invalid.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-14 14:27:55 -04:00
robandClaude Opus 4.5 2438aec831 Restore AI-assisted code generation in Code Step dialog
Feature was present in TUI but missing after GUI conversion. Now includes:
- Split layout: Code editor (left) | AI Assist panel (right)
- Provider selector dropdown for AI calls
- Prompt editor with smart default template showing available variables
- "Generate Code" button that calls AI in background thread
- Response feedback area showing success/error status
- Automatic markdown fence stripping from AI responses
- Available variables computed from tool arguments + previous step outputs

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-14 14:20:58 -04:00
robandClaude Opus 4.5 9588c3f8b0 Add AI persona profiles for prompt injection
Profiles allow users to inject system instructions into prompts,
customizing the AI's behavior and persona for tool execution.

Features:
- Profile dataclass with name, description, system_prompt
- 8 built-in profiles: None, Comedian, Technical Writer, Teacher,
  Concise, Creative, Code Reviewer, Analyst
- Custom profile creation and storage in ~/.cmdforge/profiles/
- Profile selector in Prompt Step dialog
- Profile injection during tool execution
- Profiles page in GUI (Ctrl+4) for viewing and managing profiles

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-14 05:22:31 -04:00
robandClaude Opus 4.5 4fe2d26244 Convert TUI to PySide6 desktop GUI
Major UI overhaul replacing the urwid-based Terminal UI with a modern
PySide6 desktop application.

New GUI features:
- Sidebar navigation (My Tools, Registry, Providers)
- Tool Builder with visual form for creating/editing tools
- Registry browser with search and one-click install
- Provider management page
- Connect dialog for account pairing
- Publish dialog for sharing tools

- Keyboard shortcuts (Ctrl+N, Ctrl+S, Ctrl+R, Ctrl+1/2/3, Escape, Ctrl+Q)
- Window geometry persistence (remembers size/position)
- Modern clean stylesheet

Removed:
- ui.py, ui_snack.py, ui_registry.py, ui_urwid.py
- ui_urwid/ directory (urwid TUI implementation)

Updated:
- pyproject.toml: PySide6 now required, removed urwid
- CLI entry points to launch GUI
- All documentation (README, CLAUDE.md, AGENTS.md, wiki)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-14 04:38:35 -04:00