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:
@@ -22,6 +22,7 @@ import { projectApi } from '../../services/api';
|
||||
export default function ProjectList() {
|
||||
const [searchTerm, setSearchTerm] = useState('');
|
||||
const [statusFilter, setStatusFilter] = useState<'all' | 'active' | 'inactive' | 'archived'>('all');
|
||||
const [bzzzFilter, setBzzzFilter] = useState<'all' | 'enabled' | 'disabled'>('all');
|
||||
|
||||
// Fetch real projects from API
|
||||
const { data: projects = [], isLoading, error } = useQuery({
|
||||
@@ -35,7 +36,13 @@ export default function ProjectList() {
|
||||
const matchesSearch = project.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
||||
project.description?.toLowerCase().includes(searchTerm.toLowerCase());
|
||||
const matchesStatus = statusFilter === 'all' || project.status === statusFilter;
|
||||
return matchesSearch && matchesStatus;
|
||||
|
||||
const bzzzEnabled = (project as any).bzzz_config?.bzzz_enabled || false;
|
||||
const matchesBzzz = bzzzFilter === 'all' ||
|
||||
(bzzzFilter === 'enabled' && bzzzEnabled) ||
|
||||
(bzzzFilter === 'disabled' && !bzzzEnabled);
|
||||
|
||||
return matchesSearch && matchesStatus && matchesBzzz;
|
||||
});
|
||||
|
||||
const getStatusBadge = (status: string) => {
|
||||
@@ -134,6 +141,19 @@ export default function ProjectList() {
|
||||
<option value="archived">Archived</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center space-x-2">
|
||||
<span className="text-sm text-gray-500">🐝</span>
|
||||
<select
|
||||
value={bzzzFilter}
|
||||
onChange={(e) => setBzzzFilter(e.target.value as any)}
|
||||
className="border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-blue-500"
|
||||
>
|
||||
<option value="all">All Projects</option>
|
||||
<option value="enabled">Bzzz Enabled</option>
|
||||
<option value="disabled">Bzzz Disabled</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -213,6 +233,16 @@ export default function ProjectList() {
|
||||
</Link>
|
||||
)}
|
||||
</Menu.Item>
|
||||
<Menu.Item>
|
||||
{({ active }) => (
|
||||
<Link
|
||||
to={`/projects/${project.id}/bzzz`}
|
||||
className={`${active ? 'bg-gray-100' : ''} block px-4 py-2 text-sm text-gray-700`}
|
||||
>
|
||||
🐝 Bzzz Integration
|
||||
</Link>
|
||||
)}
|
||||
</Menu.Item>
|
||||
<Menu.Item>
|
||||
{({ active }) => (
|
||||
<button
|
||||
@@ -233,9 +263,20 @@ export default function ProjectList() {
|
||||
|
||||
{/* Status and Tags */}
|
||||
<div className="flex items-center justify-between mt-4">
|
||||
<span className={getStatusBadge(project.status)}>
|
||||
{project.status}
|
||||
</span>
|
||||
<div className="flex items-center space-x-2">
|
||||
<span className={getStatusBadge(project.status)}>
|
||||
{project.status}
|
||||
</span>
|
||||
{/* Bzzz Integration Status */}
|
||||
{(project as any).bzzz_config?.bzzz_enabled && (
|
||||
<span className="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800">
|
||||
🐝 Bzzz
|
||||
{(project as any).bzzz_config?.ready_to_claim && (
|
||||
<span className="ml-1 inline-block w-2 h-2 bg-green-400 rounded-full"></span>
|
||||
)}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
<div className="flex items-center space-x-1">
|
||||
{project.tags?.slice(0, 2).map((tag) => (
|
||||
<span key={tag} className="inline-flex items-center px-2 py-1 rounded text-xs bg-gray-100 text-gray-600">
|
||||
@@ -248,6 +289,21 @@ export default function ProjectList() {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* GitHub Repository Info for Bzzz-enabled projects */}
|
||||
{(project as any).bzzz_config?.bzzz_enabled && (project as any).bzzz_config?.git_url && (
|
||||
<div className="mt-3 text-xs text-gray-500">
|
||||
<div className="flex items-center space-x-1">
|
||||
<svg className="h-3 w-3" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fillRule="evenodd" d="M10 0C4.477 0 0 4.484 0 10.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0110 4.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.203 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.942.359.31.678.921.678 1.856 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0020 10.017C20 4.484 15.522 0 10 0z" clipRule="evenodd" />
|
||||
</svg>
|
||||
<span>{(project as any).bzzz_config.git_owner}/{(project as any).bzzz_config.git_repository}</span>
|
||||
{(project as any).bzzz_config.ready_to_claim && (
|
||||
<span className="text-green-600">• Ready for tasks</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Metrics */}
|
||||
|
||||
Reference in New Issue
Block a user