mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-03-19 22:53:08 +00:00
Add orphaned features management routes and UI integration (#819)
* test(copilot): add edge case test for error with code field Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Changes from fix/bug-fixes-1-0 * refactor(auto-mode): enhance orphaned feature detection and improve project initialization - Updated detectOrphanedFeatures method to accept preloaded features, reducing redundant disk reads. - Improved project initialization by creating required directories and files in parallel for better performance. - Adjusted planning mode handling in UI components to clarify approval requirements for different modes. - Added refresh functionality for file editor tabs to ensure content consistency with disk state. These changes enhance performance, maintainability, and user experience across the application. * feat(orphaned-features): add orphaned features management routes and UI integration - Introduced new routes for managing orphaned features, including listing, resolving, and bulk resolving. - Updated the UI to include an Orphaned Features section in project settings and navigation. - Enhanced the execution service to support new orphaned feature functionalities. These changes improve the application's capability to handle orphaned features effectively, enhancing user experience and project management. * fix: Normalize line endings and resolve stale dirty states in file editor * chore: Update .gitignore and enhance orphaned feature handling - Added a blank line in .gitignore for better readability. - Introduced a hash to worktree paths in orphaned feature resolution to prevent conflicts. - Added validation for target branch existence during orphaned feature resolution. - Improved prompt formatting in execution service for clarity. - Enhanced error handling in project selector for project initialization failures. - Refactored orphaned features section to improve state management and UI responsiveness. These changes improve code maintainability and user experience when managing orphaned features. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -463,9 +463,25 @@ export class AutoModeServiceFacade {
|
||||
(pPath, featureId, status) =>
|
||||
featureStateManager.updateFeatureStatus(pPath, featureId, status),
|
||||
(pPath, featureId) => featureStateManager.loadFeature(pPath, featureId),
|
||||
async (_feature) => {
|
||||
// getPlanningPromptPrefixFn - planning prompts handled by AutoModeService
|
||||
return '';
|
||||
async (feature) => {
|
||||
// getPlanningPromptPrefixFn - select appropriate planning prompt based on feature's planningMode
|
||||
if (!feature.planningMode || feature.planningMode === 'skip') {
|
||||
return '';
|
||||
}
|
||||
const prompts = await getPromptCustomization(settingsService, '[PlanningPromptPrefix]');
|
||||
const autoModePrompts = prompts.autoMode;
|
||||
switch (feature.planningMode) {
|
||||
case 'lite':
|
||||
return feature.requirePlanApproval
|
||||
? autoModePrompts.planningLiteWithApproval + '\n\n'
|
||||
: autoModePrompts.planningLite + '\n\n';
|
||||
case 'spec':
|
||||
return autoModePrompts.planningSpec + '\n\n';
|
||||
case 'full':
|
||||
return autoModePrompts.planningFull + '\n\n';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
},
|
||||
(pPath, featureId, summary) =>
|
||||
featureStateManager.saveFeatureSummary(pPath, featureId, summary),
|
||||
@@ -1117,12 +1133,13 @@ export class AutoModeServiceFacade {
|
||||
|
||||
/**
|
||||
* Detect orphaned features (features with missing branches)
|
||||
* @param preloadedFeatures - Optional pre-loaded features to avoid redundant disk reads
|
||||
*/
|
||||
async detectOrphanedFeatures(): Promise<OrphanedFeatureInfo[]> {
|
||||
async detectOrphanedFeatures(preloadedFeatures?: Feature[]): Promise<OrphanedFeatureInfo[]> {
|
||||
const orphanedFeatures: OrphanedFeatureInfo[] = [];
|
||||
|
||||
try {
|
||||
const allFeatures = await this.featureLoader.getAll(this.projectPath);
|
||||
const allFeatures = preloadedFeatures ?? (await this.featureLoader.getAll(this.projectPath));
|
||||
const featuresWithBranches = allFeatures.filter(
|
||||
(f) => f.branchName && f.branchName.trim() !== ''
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user