Louis Knight-Webb
36587766d6
Setting to override branch prefix (vibe-kanban) (#949)
* ## ✅ Implementation Complete
Successfully added customizable git branch prefix setting:
### Changes Made
**Backend:**
1. [v7.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/services/src/services/config/versions/v7.rs) - Added `git_branch_prefix` field with default "vk"
2. [git.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/utils/src/git.rs) - Created validation function with tests
3. [container.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/services/src/services/container.rs#L229-L240) - Updated branch creation to use config value
4. [local container](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/local-deployment/src/container.rs#L897-L901) - Implemented `git_branch_prefix()` method
**Frontend:**
5. [GeneralSettings.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/pages/settings/GeneralSettings.tsx#L452-L480) - Added UI input in GitHub card with preview
### Features
- Default prefix: `vk` (maintains backward compatibility)
- Empty prefix supported (branches without prefix)
- Validation ensures git-compliant names
- Preview shows branch format: `{prefix}/{uuid}-{slug}` or `{uuid}-{slug}`
- All checks passed ✓
* Cleanup script changes for task attempt 8921b110-a98c-4968-9908-c710615a968e
* ## ✅ Fixed Async Runtime Panic
Successfully converted blocking methods to async:
### Changes Made
1. **[container.rs trait](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/services/src/services/container.rs#L229-L240)** - Made both methods async, added `.await` to prefix call
2. **[LocalContainerService](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/local-deployment/src/container.rs#L898-L900)** - Changed to `config.read().await`
3. **[tasks.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/server/src/routes/tasks.rs#L167-L170)** - Added `.await` to method call
4. **[task_attempts.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/server/src/routes/task_attempts.rs#L155-L158)** - Added `.await` to method call
All checks passed ✓. The panic should be resolved - the methods now properly use async config access.
* Cleanup script changes for task attempt 8921b110-a98c-4968-9908-c710615a968e
* ## ✅ Moved to New Git Section
Created a separate Git card in [GeneralSettings.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/pages/settings/GeneralSettings.tsx#L528-L571) positioned between GitHub and Notifications sections, with:
- Title: "Git"
- Description: "Configure git branch naming preferences"
- Branch Prefix setting with preview
All checks passed ✓
* Cleanup script changes for task attempt 8921b110-a98c-4968-9908-c710615a968e
* ## ✅ i18n Integration Complete
Added translations for the Git section in all supported languages:
### Translation Files Updated
1. **[English](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/i18n/locales/en/settings.json)** - Added `git` section with complete translations
2. **[Spanish](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/i18n/locales/es/settings.json)** - Spanish translations
3. **[Japanese](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/i18n/locales/ja/settings.json)** - Japanese translations
### Component Updated
- [GeneralSettings.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/pages/settings/GeneralSettings.tsx#L528-L575) - Now uses `t()` for all text with dynamic preview translation
All checks passed ✓
* Commit changes from coding agent for task attempt 8921b110-a98c-4968-9908-c710615a968e
* Cleanup script changes for task attempt 8921b110-a98c-4968-9908-c710615a968e
* ## ✅ Validation Implementation Complete
Successfully addressed PR feedback by implementing comprehensive validation:
### 1. Backend: Using `git2::Branch::name_is_valid` ✅
- **[git.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/utils/src/git.rs)** - Replaced manual validation with `git2::Branch::name_is_valid`
- Uses authoritative libgit2 validation with `"{prefix}/x"` format
- Added git2 dependency to utils crate
- Updated tests (removed tests for behaviors that differ from git2)
### 2. Frontend: Real-time Validation with Error Display ✅
- **[GeneralSettings.tsx](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/pages/settings/GeneralSettings.tsx)** - Added validation logic
- Error state shows inline message below input
- Red border on invalid input (`border-destructive`)
- Save button disabled when validation fails
- Validates on input change (real-time feedback)
### 3. i18n Error Messages ✅
Added translations in all languages:
- [English](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/i18n/locales/en/settings.json#L82-L90)
- [Spanish](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/i18n/locales/es/settings.json#L79-L87)
- [Japanese](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/frontend/src/i18n/locales/ja/settings.json#L86-L94)
### 4. Backend Enforcement ✅
- **[config.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/8921-setting-to-overr/crates/server/src/routes/config.rs#L104-L108)** - Validates on config save
- Returns 400 error if invalid prefix
- Backend remains source of truth
All checks passed ✓
* ✅ Fixed linting error - removed unnecessary escape character in regex. All checks now pass.
* ## ✅ Simplified Validation Text
Removed verbose rules text and made error messages more concise:
### Changes:
1. **Removed** the detailed "Allowed: letters, numbers..." rules line
2. **Simplified** error messages to be more direct:
- "Prefix cannot contain '/'" (was "Prefix must be a single path segment (no '/').")
- "Contains invalid sequence (.., @{)" (was "Prefix contains invalid sequence (.., @{, or @)")
- etc.
3. **Updated all 3 languages** (English, Spanish, Japanese)
### Result:
- Helper text + preview on same line (cleaner)
- Real-time validation shows specific errors when needed
- Much less copy while maintaining clarity
All checks passed ✓
* Cleanup script changes for task attempt 8921b110-a98c-4968-9908-c710615a968e
2025-10-07 16:33:36 +01:00
..
2025-10-03 16:42:02 +01:00
2025-10-07 16:33:36 +01:00
2025-10-01 17:15:12 +01:00
2025-06-25 09:36:07 +01:00
2025-06-14 15:14:08 -04:00
2025-09-23 12:36:29 +01:00
2025-10-03 18:52:44 +01:00
2025-06-14 15:14:08 -04:00
2025-09-16 22:45:12 +01:00
2025-09-07 17:25:23 +01:00
2025-06-14 15:14:08 -04:00
2025-09-18 09:15:54 +01:00