Integrate Bzzz P2P task coordination and enhance project management

🔗 Bzzz Integration:
- Added comprehensive Bzzz integration documentation and todos
- Implemented N8N chat workflow architecture for task coordination
- Enhanced project management with Bzzz-specific features
- Added GitHub service for seamless issue synchronization
- Created BzzzIntegration component for frontend management

🎯 Project Management Enhancements:
- Improved project listing and filtering capabilities
- Enhanced authentication and authorization flows
- Added unified coordinator for better task orchestration
- Streamlined project activation and configuration
- Updated API endpoints for Bzzz compatibility

📊 Technical Improvements:
- Updated Docker Swarm configuration for local registry
- Enhanced frontend build with updated assets
- Improved WebSocket connections for real-time updates
- Added comprehensive error handling and logging
- Updated environment configurations for production

 System Integration:
- Successfully tested with Bzzz v1.2 task execution workflow
- Validated GitHub issue discovery and claiming functionality
- Confirmed sandbox-based task execution compatibility
- Verified Docker registry integration

This release enables seamless integration between Hive project management and Bzzz P2P task coordination, creating a complete distributed development ecosystem.

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
anthonyrawlins
2025-07-14 20:56:01 +10:00
parent e89f2f4b7b
commit 3f3eec7f5d
38 changed files with 2591 additions and 932 deletions

View File

@@ -45,7 +45,7 @@ interface AuthProviderProps {
children: ReactNode;
}
const API_BASE_URL = process.env.REACT_APP_API_URL || '/api';
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL + '/api' || '/api';
export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
const [user, setUser] = useState<User | null>(null);

View File

@@ -21,8 +21,30 @@ interface SocketIOProviderProps {
export const SocketIOProvider: React.FC<SocketIOProviderProps> = ({
children,
url = process.env.REACT_APP_SOCKETIO_URL || 'https://hive.home.deepblack.cloud'
url = import.meta.env.VITE_WS_BASE_URL || 'https://hive.home.deepblack.cloud'
}) => {
// Allow disabling SocketIO completely via environment variable
const socketIODisabled = import.meta.env.VITE_DISABLE_SOCKETIO === 'true';
if (socketIODisabled) {
console.log('Socket.IO disabled via environment variable');
const contextValue: SocketIOContextType = {
isConnected: false,
connectionState: 'disconnected',
sendMessage: () => console.warn('Socket.IO is disabled'),
joinRoom: () => console.warn('Socket.IO is disabled'),
leaveRoom: () => console.warn('Socket.IO is disabled'),
lastMessage: null,
subscribe: () => () => {},
reconnect: () => console.warn('Socket.IO is disabled')
};
return (
<SocketIOContext.Provider value={contextValue}>
{children}
</SocketIOContext.Provider>
);
}
const [subscriptions, setSubscriptions] = useState<Map<string, Set<(data: any) => void>>>(new Map());
const {
@@ -50,7 +72,7 @@ export const SocketIOProvider: React.FC<SocketIOProviderProps> = ({
}
},
onConnect: () => {
console.log('Socket.IO connected to Hive backend');
console.log('Socket.IO connected to Hive backend');
// Join general room and subscribe to common events
if (socket) {
@@ -62,10 +84,11 @@ export const SocketIOProvider: React.FC<SocketIOProviderProps> = ({
}
},
onDisconnect: () => {
console.log('Socket.IO disconnected from Hive backend');
console.log('🔌 Socket.IO disconnected from Hive backend');
},
onError: (error) => {
console.error('Socket.IO error:', error);
// Errors are already logged in the hook, don't duplicate
// console.error('Socket.IO error:', error);
}
});

View File

@@ -19,7 +19,7 @@ interface WebSocketProviderProps {
export const WebSocketProvider: React.FC<WebSocketProviderProps> = ({
children,
url = process.env.REACT_APP_WS_URL || 'wss://hive.home.deepblack.cloud/socket.io/general'
url = import.meta.env.VITE_WS_BASE_URL || 'wss://hive.home.deepblack.cloud'
}) => {
const [subscriptions, setSubscriptions] = useState<Map<string, Set<(data: any) => void>>>(new Map());