Skip to content

Add WordPress environment pipeline, template icons, onboarding wizard & developer mode#7

Merged
jhd3197 merged 4 commits intomainfrom
dev
Jan 28, 2026
Merged

Add WordPress environment pipeline, template icons, onboarding wizard & developer mode#7
jhd3197 merged 4 commits intomainfrom
dev

Conversation

@jhd3197
Copy link
Owner

@jhd3197 jhd3197 commented Jan 28, 2026

Summary

  • WordPress environment pipeline: Full-stack implementation of environment pipeline API and models — includes
    promotion jobs, sanitization profiles, environment activities, Docker/domain/health services, Git integration, and a rich
    React frontend with pipeline view, sync/promote modals, WP-CLI terminal, health panels, and more
  • Template icons & sidebar enhancements: Updated all template YAML icons and enhanced the sidebar user menu with
    developer mode toggle and improved layout
  • Onboarding wizard & developer mode: New multi-step setup wizard (account, intent, tier, summary), developer mode
    feature flag in settings, and auth context updates for onboarding state

jhd3197 and others added 4 commits January 27, 2026 19:35
Introduces a comprehensive REST API for WordPress multi-environment management, including endpoints for project listing, environment CRUD, promotion, sync, comparison, locking, activity logs, container logs, resource limits, basic auth, WP-CLI, health checks, disk usage, bulk operations, and auto-sync scheduling. Adds new models for environment activity, promotion jobs, and sanitization profiles, and integrates auto-sync scheduling into the app startup. Updates model imports and registration to include the new models.
Switched all template icon URLs to use local /serverkit.ai/imgs/template-icons/ assets for consistency and reliability. Improved the Sidebar component with a new user context menu featuring theme switching, settings navigation, and logout, along with conditional display of the WordPress pipeline link. Added and updated related styles for the sidebar, user menu, and page headers, and introduced new theme variables for code/terminal backgrounds.
Introduces a multi-step onboarding wizard for initial server setup, including admin account creation, use case selection, resource tier display, and summary. Adds backend support for onboarding completion and use case storage. Implements developer mode toggle in settings, exposing an icon reference panel. Updates styles and refactors related frontend logic for setup and settings pages.
Copilot AI review requested due to automatic review settings January 28, 2026 02:31
@jhd3197 jhd3197 merged commit c64e7af into main Jan 28, 2026
5 checks passed
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This is a comprehensive pull request introducing three major feature sets: WordPress environment pipeline management, template icon updates, and an onboarding wizard.

Changes:

  • Full-stack WordPress environment pipeline implementation with promotion jobs, sanitization profiles, environment activities, Docker/domain/health services, and Git integration
  • New React frontend with pipeline view, sync/promote modals, WP-CLI terminal, and health monitoring panels
  • Complete onboarding wizard with multi-step setup (account, intent, tier, summary)
  • Updated all 58+ template YAML files with standardized icon URLs pointing to serverkit.ai CDN
  • Enhanced sidebar with developer mode toggle and user context menu
  • New developer mode feature with icon reference tool

Reviewed changes

Copilot reviewed 124 out of 125 changed files in this pull request and generated 21 comments.

Show a summary per file
File Description
frontend/src/styles/pages/_terminal.less Replaced hardcoded colors with CSS variables for better theme support
frontend/src/styles/pages/_setup-wizard.less New comprehensive styles for multi-step onboarding wizard
frontend/src/styles/pages/_settings.less Added icon reference grid for developer mode
frontend/src/styles/_theme-variables.less Added code/terminal color variables for dark and light themes
frontend/src/pages/Setup.jsx Completely refactored from single-step to multi-step wizard
frontend/src/pages/WordPressProjects.jsx New pipeline projects listing page
frontend/src/pages/Templates.jsx Replaced emoji icons with Lucide React icons
frontend/src/components/Sidebar.jsx Enhanced with user context menu, theme switcher, and developer mode integration
backend/app/services/db_sync_service.py Enhanced with anonymization, password reset, and container-to-container operations
backend/app/services/environment_*.py New services for health monitoring, domain management, Docker operations
backend/app/models/*.py New models for environment activities, promotion jobs, and sanitization profiles
backend/app/api/auth.py Added onboarding completion endpoint
backend/app/sockets.py Added pipeline event streaming
backend/templates/*.yaml Updated 58+ templates with CDN icon URLs

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +43 to +44
--bg-code: #1a1a2e;
--text-code: #e2e8f0;
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hardcoded color values for code/terminal backgrounds could be extracted to semantic variables. Consider defining @bg-code and @text-code in the color palette section rather than directly in the CSS custom properties. This would make the color values easier to maintain and update across themes.

Copilot uses AI. Check for mistakes.
Comment on lines +76 to +82
.modal-footer {
display: flex;
gap: @space-3;
justify-content: flex-end;
padding: @space-4 @space-6;
border-top: 1px solid @border-subtle;
}
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The modal footer is being added but there's already a modal-actions class defined at line 73. This creates potential confusion about which class to use for footer actions. Consider consolidating these or clarifying the distinction in usage (e.g., modal-actions for bottom-aligned buttons vs modal-footer for a broader footer section).

Copilot uses AI. Check for mistakes.
Comment on lines +472 to +476
# Reset passwords to a known hash (password: 'changeme')
if reset_passwords and 'user_pass' in line.lower():
line = re.sub(
r"\$P\$[A-Za-z0-9./]{31}",
"$P$BchangemeHASHEDplaceholder00000",
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The password hash being set here appears to be a placeholder. The comment says "password: 'changeme'" but the hash value "$P$BchangemeHASHEDplaceholder00000" is not a valid WordPress password hash format (should be 34 characters for phpass). This will likely prevent login. Consider using a properly generated WordPress password hash or document that this is intentionally a non-working placeholder.

Suggested change
# Reset passwords to a known hash (password: 'changeme')
if reset_passwords and 'user_pass' in line.lower():
line = re.sub(
r"\$P\$[A-Za-z0-9./]{31}",
"$P$BchangemeHASHEDplaceholder00000",
# Reset passwords to an intentionally invalid placeholder so sanitized DBs can't be logged into
if reset_passwords and 'user_pass' in line.lower():
line = re.sub(
r"\$P\$[A-Za-z0-9./]{31}",
"***SANITIZED_PASSWORD***",

Copilot uses AI. Check for mistakes.

const Sidebar = () => {
const { user, logout } = useAuth();
const { theme, resolvedTheme, setTheme } = useTheme();
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused variable resolvedTheme.

Copilot uses AI. Check for mistakes.

if (!selectedIds || selectedIds.length === 0) return null;

const selectedNames = selectedIds.map(id => {
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused variable selectedNames.

Copilot uses AI. Check for mistakes.
fp = os.path.join(dirpath, f)
try:
total += os.path.getsize(fp)
except OSError:
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
total += os.path.getsize(fp)
except OSError:
pass
except Exception:
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
'message': message,
'percent': int((step / total) * 100) if total > 0 else 0,
})
except Exception:
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
for line in f:
if line.startswith('DB_PASSWORD='):
return line.strip().split('=', 1)[1]
except Exception:
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
if '=' in line and not line.startswith('#'):
key, value = line.split('=', 1)
env_vars[key] = value
except Exception:
Copy link

Copilot AI Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants