diff --git a/frontend/src/components/application_spaces/ApplicationSpaceDetail.vue b/frontend/src/components/application_spaces/ApplicationSpaceDetail.vue
index 5e47accc0..11238c7ad 100644
--- a/frontend/src/components/application_spaces/ApplicationSpaceDetail.vue
+++ b/frontend/src/components/application_spaces/ApplicationSpaceDetail.vue
@@ -284,10 +284,12 @@
const repoData = data.value.data
repoDetailStore.initialize(repoData, props.repoType)
-
- setRepoTab({
- currentBranch: props.currentBranch ? props.currentBranch : repoDetailStore.defaultBranch,
- })
+
+ if (!isUpdate) {
+ setRepoTab({
+ currentBranch: props.currentBranch || repoDetailStore.defaultBranch
+ })
+ }
return true
} catch (error) {
return false
diff --git a/frontend/src/components/application_spaces/ApplicationSpaceSettings.vue b/frontend/src/components/application_spaces/ApplicationSpaceSettings.vue
index 8d6edb557..bbd6faf49 100644
--- a/frontend/src/components/application_spaces/ApplicationSpaceSettings.vue
+++ b/frontend/src/components/application_spaces/ApplicationSpaceSettings.vue
@@ -119,6 +119,37 @@
/>
+
+
+
@@ -261,6 +295,9 @@
const delDesc = ref('')
const theMcpNickname = ref(props.mcpNickname || '')
const theMcpDesc = ref(props.mcpDesc || '')
+ const theDefaultBranch = ref(props.defaultBranch || '')
+ const originalDefaultBranch = ref(props.defaultBranch || '')
+ const branchList = ref([])
const mcpPath = ref(props.path)
const readmeContent = ref('')
const readmeSha = ref('')
@@ -297,6 +334,7 @@
}
document.addEventListener('click', collapseTagList)
fetchReadme()
+ fetchBranches()
})
onBeforeUnmount(() => {
@@ -317,6 +355,14 @@
}
)
+ watch(
+ () => props.defaultBranch,
+ (newBranch) => {
+ theDefaultBranch.value = newBranch
+ originalDefaultBranch.value = newBranch
+ }
+ )
+
watch(
() => props.tagList,
(newTagList) => {
@@ -570,6 +616,21 @@
}
}
+ const hasDefaultBranchChanged = computed(() =>
+ theDefaultBranch.value.trim() !== originalDefaultBranch.value.trim()
+ )
+
+ const updateDefaultBranch = () => {
+ const branch = theDefaultBranch.value.trim()
+ if (!branch) return
+ updateMcp({ default_branch: branch })
+ }
+
+ const fetchBranches = async () => {
+ const { data } = await useFetchApi(`/mcps/${props.path}/branches`).json()
+ branchList.value = data.value?.data || []
+ }
+
const updateMcp = async (payload) => {
const mcpUpdateEndpoint = `/mcps/${props.path}`
const options = {
diff --git a/frontend/src/components/models/ModelSettings.vue b/frontend/src/components/models/ModelSettings.vue
index b23fb9514..70523e0dd 100644
--- a/frontend/src/components/models/ModelSettings.vue
+++ b/frontend/src/components/models/ModelSettings.vue
@@ -73,6 +73,36 @@
+
+
+
+
+ {{ $t('models.edit.defaultBranch') }}
+
+
+ {{ $t('models.edit.defaultBranchDesc') }}
+
+
+
+
+
+
+
+
+
+
@@ -323,6 +353,9 @@
isUpdatingIndustryTags: false,
originalModelNickname: this.modelNickname || '',
originalModelDesc: this.modelDesc || '',
+ originalDefaultBranch: this.default_branch || '',
+ theDefaultBranch: this.default_branch || '',
+ branchList: [],
originalTags: [],
originalIndustryTags: [],
}
@@ -336,6 +369,9 @@
hasDescChanged() {
return this.theModelDesc.trim() !== this.originalModelDesc.trim()
},
+ hasDefaultBranchChanged() {
+ return this.theDefaultBranch.trim() !== this.originalDefaultBranch.trim()
+ },
hasTagsChanged() {
if (this.originalTags.length !== this.selectedTags.length) return true
const originalTagIds = this.originalTags.map(tag => tag.uid).sort()
@@ -364,6 +400,7 @@
document.addEventListener('click', this.collapseTagList)
this.getIndustryTags()
this.fetchReadme()
+ this.fetchBranches()
},
watch: {
modelNickname(newNickname, _) {
@@ -372,6 +409,10 @@
modelDesc(newDesc, _) {
this.theModelDesc = newDesc
},
+ default_branch(newBranch) {
+ this.theDefaultBranch = newBranch
+ this.originalDefaultBranch = newBranch
+ },
tagList(newTagList, _) {
this.theTagList = newTagList
},
@@ -655,7 +696,6 @@
tags,
license
}
- console.log(111, newMetadata)
const newMetadataString = yaml.dump(newMetadata)
const newContent = `---\n${newMetadataString}\n---\n\n${content}`
await this.updateReadme(newContent)
@@ -725,6 +765,17 @@
}
},
+ async updateDefaultBranch() {
+ const branch = this.theDefaultBranch.trim()
+ if (!branch) return
+ this.updateModel({ default_branch: branch })
+ },
+
+ async fetchBranches() {
+ const { data } = await useFetchApi(`/models/${this.path}/branches`).json()
+ this.branchList = data.value?.data || []
+ },
+
async updateModel(payload) {
const modelUpdateEndpoint = `/models/${this.path}`
const options = {
diff --git a/frontend/src/components/shared/BranchDropdown.vue b/frontend/src/components/shared/BranchDropdown.vue
index 2b5d650ed..9ccb31eb6 100644
--- a/frontend/src/components/shared/BranchDropdown.vue
+++ b/frontend/src/components/shared/BranchDropdown.vue
@@ -60,9 +60,9 @@
if (data.value) {
branches.value = data.value.data
-
+
const branchExists = (branches.value || []).some(branch => branch.name === props.currentBranch)
-
+
if (!branchExists && branches.value.length > 0) {
const defaultBranch = branches.value[0].name
emit('changeBranch', defaultBranch)
diff --git a/frontend/src/components/shared/FileList.vue b/frontend/src/components/shared/FileList.vue
index e8823b1e3..3d5a4fef3 100644
--- a/frontend/src/components/shared/FileList.vue
+++ b/frontend/src/components/shared/FileList.vue
@@ -154,7 +154,7 @@