Skip to content

Conversation

@bhowiebkr
Copy link
Owner

Summary

• Complete build system with portable Python runtime and organized output directory
• Comprehensive documentation restructure with BMAD-inspired organization
• Enhanced examples with named output pins and improved functionality
• Multiple bug fixes for pin handling, connections, and editor functionality

Changes

Build System: Added build_local.bat with portable Python runtime download and Nuitka compilation
Documentation: Restructured docs with organized directories (user_guide/, developer_guide/, reference/, etc.)
Examples: Updated password generator and other examples with named output pins
Bug Fixes: Fixed connection deserialization, pin type updates, command history errors
Infrastructure: Added builds/ directory to gitignore for organized build outputs

Test Plan

  • Verify build script downloads Python runtime correctly
  • Test Nuitka compilation process
  • Confirm examples work with named output pins
  • Validate documentation structure navigation
  • Test pin connection and deserialization functionality

🤖 Generated with Claude Code

Bryan Howard added 10 commits September 9, 2025 22:19
- Restructured docs into logical categories: developer_guide, implementation, issues, project, reference, user_guide
- Updated README.md and prd.md with current project state
- Improved documentation organization for better navigation and maintenance

🤖 Generated with [Claude Code](https://claude.ai/code)
Replace incorrect 'push()' calls with 'execute_command()' in:
- CodeEditorDialog: Fix AttributeError when accepting code changes
- Test files: Update mock assertions to use correct method

Resolves error: 'CommandHistory' object has no attribute 'push'

🤖 Generated with [Claude Code](https://claude.ai/code)
Resolves issue where graphs using @outputs: docstring annotations failed
to execute due to ambiguous pin name resolution during connection creation.

Changes:
- Add get_pin_by_name_and_direction() method to Node class for precise pin lookup
- Update NodeGraph.deserialize() to use direction-aware pin resolution
- Ensure start pins are always output pins and end pins are input pins
- Maintain backward compatibility with existing graphs

This enables human-readable pin names from docstring @outputs: annotations
while preserving reliable connection resolution between nodes.

🤖 Generated with [Claude Code](https://claude.ai/code)
… pin display

- Add @outputs: docstring annotations to all functions in password generator example
- Remove UUID references from connections for cleaner human-readable format
- Update connection names to use semantic pin names instead of generic output_N
- Add pin type display functionality with settings-based visibility control
- Update GUI handler to use named output 'result' instead of 'output_1'

This demonstrates the working implementation of named output pins and provides
a cleaner, more maintainable graph format without embedded UUIDs.

🤖 Generated with [Claude Code](https://claude.ai/code)
Settings Enhancement:
- Add checkbox in Settings dialog for toggling pin type display
- Implement refresh_pin_labels() to update all pins when settings change
- Save show_pin_types setting with default value true

Pin Display Updates:
- Pin labels can now show/hide type information (e.g., 'length (int)')
- Dynamic updates when user changes the setting via Settings dialog
- Maintains clean display option for users who prefer minimal UI

Example Files:
- Add named_output_example.md demonstrating @outputs: docstring usage
- Add named_output_test.md for testing named output functionality
- Provides reference implementations for future graph development

This completes the named output pins feature with full UI integration
and comprehensive examples for developers.

🤖 Generated with [Claude Code](https://claude.ai/code)
Resolves issue where editing @outputs: names in entry point node docstrings
caused pins to disappear instead of being renamed with connections preserved.

Changes:
- Add rename_pin() method to update pin names while preserving connections
- Implement _update_data_pins() with position-based pin matching algorithm
- Replace naive pin removal/recreation with intelligent pin updates
- Preserve connections, pin types, and visual properties during renames

Pin Update Logic:
- Match pins by position/index rather than name for reliable updates
- Rename existing pins when docstring names change
- Add new pins only when count increases
- Remove pins only from the end when count decreases
- Maintain all existing connections and properties

This enables seamless editing of @outputs: annotations without losing
graph connectivity or requiring manual reconnection of pins.

🤖 Generated with [Claude Code](https://claude.ai/code)
Ensures that when pin types are changed in function annotations, both the
pin type property and visual labels are updated correctly.

Changes:
- Detect pin type changes during pin updates
- Update pin.pin_type when function signature types change
- Call update_label_text() to refresh visual display with new type
- Handle both name and type changes in the same update cycle

Test Results:
- Pin type changes: str->int, int->float, complex types (List, Dict) ✓
- Label updates: "Data (str)" -> "Data (int)" correctly ✓
- Connection preservation: Connections maintained through type changes ✓
- Input pin types: Function parameter type changes working ✓

This completes the pin editing experience - users can now edit both
@outputs: names and function signature types seamlessly with full
visual feedback and connection preservation.

🤖 Generated with [Claude Code](https://claude.ai/code)
- Add @outputs annotations to all example node functions for proper named pin support
- Fix connection pin names in weather_data_processor.md, nvidia_gpu_computer_vision_pipeline.md, and recipe_nutrition_calculator.md
- Update recipe_nutrition_calculator.md with complete GUI state handlers and example recipe
- Add file dialog folder memory functionality to remember last used directory
- Ensure proper data flow through all example pipelines with correct named pin connections

🤖 Generated with [Claude Code](https://claude.ai/code)
Remove example files that were not updated with named output pin support:
- Procedural_Sci-Fi_World_Generator.md
- data_analysis_dashboard.md
- file_organizer_automation.md
- interactive_game_engine.md
- named_output_example.md
- named_output_test.md
- password_generator_tool.md
- personal_finance_tracker.md
- social_media_scheduler.md
- text_processing_pipeline.md

Keeping core examples that have been updated with proper @outputs annotations:
- password_generator_tool_group.md
- weather_data_processor.md
- nvidia_gpu_computer_vision_pipeline.md
- recipe_nutrition_calculator.md

🤖 Generated with [Claude Code](https://claude.ai/code)
- Fix syntax errors in user prompts that caused batch script failures
- Remove interactive prompts to enable automated builds
- Organize all build artifacts into builds/ directory structure
- Fix PowerShell download command for Python runtime
- Update deprecated Nuitka console option to modern syntax
- Add python runtime validation to ensure Lib directory exists
- Remove manual exit prompt for automated workflow
- Add builds/ to .gitignore to prevent build artifact commits

🤖 Generated with [Claude Code](https://claude.ai/code)
@bhowiebkr bhowiebkr merged commit c04d1b2 into main Sep 10, 2025
1 check passed
@bhowiebkr bhowiebkr deleted the epic/next-feature branch September 10, 2025 04:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants