Compare commits

...

6 Commits

Author SHA1 Message Date
github-actions[bot] 0a987467b5 bump: version 0.57.1 → 0.57.2 2026-01-15 11:23:42 +00:00
github-actions[bot] ab6f7ca0b2 bump: version 0.61.2 → 0.61.3 2026-01-15 11:23:41 +00:00
Chris Coutinho 42fa33d0bf Merge pull request #480 from cbcoutinho/fix/astrolabe-vue3-bindings
fix(astrolabe): update Vue component bindings for Vue 3 compatibility
2026-01-15 12:23:21 +01:00
Chris Coutinho 006a3d95d6 fix(astrolabe): address review feedback for Vue 3 bindings
- Change limit initialization from string '20' to number 20 in App.vue
- Update AdminSettings.vue NcTextField to use v-model instead of legacy
  :value/@update:value bindings
- Update AdminSettings.vue NcSelect components to use :model-value with
  computed getters and @update:model-value for proper object-to-id
  conversion (same pattern as App.vue)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 12:16:08 +01:00
Chris Coutinho cb4e8acd9f fix(astrolabe): update Vue component bindings for Vue 3 compatibility
The astrolabe app was using Vue 2 style bindings that don't work with
@nextcloud/vue 9.x and Vue 3:

- NcTextField: Changed from :value/@update:value to v-model
- NcSelect: Changed from v-model (with computed prop) to
  :model-value/@update:model-value

The legacy :value and @update:value props were being ignored because
@nextcloud/vue 9.x components use modelValue/update:modelValue internally.
This caused the search button to remain disabled and the algorithm
dropdown to be unresponsive.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 12:06:20 +01:00
github-actions[bot] 02418a9531 bump: version 0.57.0 → 0.57.1 2026-01-15 09:00:41 +00:00
8 changed files with 49 additions and 20 deletions
+7
View File
@@ -5,6 +5,13 @@ All notable changes to the Nextcloud MCP Server will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [PEP 440](https://peps.python.org/pep-0440/). and this project adheres to [PEP 440](https://peps.python.org/pep-0440/).
## v0.61.3 (2026-01-15)
### Fix
- **astrolabe**: address review feedback for Vue 3 bindings
- **astrolabe**: update Vue component bindings for Vue 3 compatibility
## v0.61.2 (2026-01-15) ## v0.61.2 (2026-01-15)
### Fix ### Fix
+1 -1
View File
@@ -1,6 +1,6 @@
[tool.commitizen] [tool.commitizen]
name = "cz_conventional_commits" name = "cz_conventional_commits"
version = "0.57.0" version = "0.57.2"
tag_format = "nextcloud-mcp-server-$version" tag_format = "nextcloud-mcp-server-$version"
version_scheme = "semver" version_scheme = "semver"
update_changelog_on_bump = true update_changelog_on_bump = true
+14
View File
@@ -14,6 +14,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Configurable resource limits - Configurable resource limits
- Grafana dashboard annotations - Grafana dashboard annotations
## nextcloud-mcp-server-0.57.2 (2026-01-15)
### Fix
- **astrolabe**: address review feedback for Vue 3 bindings
- **astrolabe**: update Vue component bindings for Vue 3 compatibility
## nextcloud-mcp-server-0.57.1 (2026-01-15)
### Fix
- **ci**: bump helm chart version when MCP appVersion changes
- **astrolabe**: define appName and appVersion for @nextcloud/vue
## nextcloud-mcp-server-0.57.0 (2026-01-15) ## nextcloud-mcp-server-0.57.0 (2026-01-15)
### Feat ### Feat
+2 -2
View File
@@ -2,8 +2,8 @@ apiVersion: v2
name: nextcloud-mcp-server name: nextcloud-mcp-server
description: A Helm chart for Nextcloud MCP Server - enables AI assistants to interact with Nextcloud description: A Helm chart for Nextcloud MCP Server - enables AI assistants to interact with Nextcloud
type: application type: application
version: 0.57.0 version: 0.57.2
appVersion: "0.61.2" appVersion: "0.61.3"
keywords: keywords:
- nextcloud - nextcloud
- mcp - mcp
+1 -1
View File
@@ -1,6 +1,6 @@
[project] [project]
name = "nextcloud-mcp-server" name = "nextcloud-mcp-server"
version = "0.61.2" version = "0.61.3"
description = "Model Context Protocol (MCP) server for Nextcloud integration - enables AI assistants to interact with Nextcloud data" description = "Model Context Protocol (MCP) server for Nextcloud integration - enables AI assistants to interact with Nextcloud data"
authors = [ authors = [
{name = "Chris Coutinho", email = "chris@coutinho.io"} {name = "Chris Coutinho", email = "chris@coutinho.io"}
+6 -8
View File
@@ -48,19 +48,18 @@
<div class="mcp-search-card"> <div class="mcp-search-card">
<div class="mcp-search-row"> <div class="mcp-search-row">
<NcTextField <NcTextField
:value="query" v-model="query"
:label="t('astrolabe', 'Search query')" :label="t('astrolabe', 'Search query')"
:placeholder="t('astrolabe', 'Enter your search query...')" :placeholder="t('astrolabe', 'Enter your search query...')"
class="mcp-search-input" class="mcp-search-input"
@update:value="query = $event"
@keyup.enter="performSearch" /> @keyup.enter="performSearch" />
<NcSelect <NcSelect
v-model="selectedAlgorithmOption" :model-value="selectedAlgorithmOption"
:options="algorithmOptions" :options="algorithmOptions"
:placeholder="t('astrolabe', 'Algorithm')" :placeholder="t('astrolabe', 'Algorithm')"
class="mcp-algorithm-select" class="mcp-algorithm-select"
@input="algorithm = $event ? $event.id : 'hybrid'" /> @update:model-value="algorithm = $event ? $event.id : 'hybrid'" />
<NcButton <NcButton
type="primary" type="primary"
@@ -105,11 +104,10 @@
<div class="mcp-option-group"> <div class="mcp-option-group">
<label>{{ t('astrolabe', 'Result Limit') }}</label> <label>{{ t('astrolabe', 'Result Limit') }}</label>
<NcTextField <NcTextField
:value="limit" v-model="limit"
type="number" type="number"
:min="1" :min="1"
:max="100" :max="100" />
@update:value="limit = Number($event)" />
</div> </div>
<div class="mcp-option-group"> <div class="mcp-option-group">
@@ -445,7 +443,7 @@ export default {
algorithm: 'hybrid', algorithm: 'hybrid',
showAdvanced: false, showAdvanced: false,
selectedDocTypes: [], selectedDocTypes: [],
limit: '20', limit: 20,
scoreThreshold: 0, scoreThreshold: 0,
loading: false, loading: false,
error: null, error: null,
@@ -152,19 +152,21 @@
<div class="settings-form"> <div class="settings-form">
<NcSelect <NcSelect
v-model="settings.algorithm" :model-value="selectedAlgorithmOption"
:options="algorithmOptions" :options="algorithmOptions"
:label="t('astrolabe', 'Search Algorithm')" :label="t('astrolabe', 'Search Algorithm')"
class="form-field" /> class="form-field"
@update:model-value="settings.algorithm = $event ? $event.id : 'hybrid'" />
<p class="help-text"> <p class="help-text">
{{ t('astrolabe', 'Hybrid combines semantic understanding with keyword matching. Semantic finds conceptually similar content. BM25 matches exact keywords.') }} {{ t('astrolabe', 'Hybrid combines semantic understanding with keyword matching. Semantic finds conceptually similar content. BM25 matches exact keywords.') }}
</p> </p>
<NcSelect <NcSelect
v-model="settings.fusion" :model-value="selectedFusionOption"
:options="fusionOptions" :options="fusionOptions"
:label="t('astrolabe', 'Fusion Method')" :label="t('astrolabe', 'Fusion Method')"
class="form-field" /> class="form-field"
@update:model-value="settings.fusion = $event ? $event.id : 'rrf'" />
<p class="help-text"> <p class="help-text">
{{ t('astrolabe', 'Only applies to hybrid search. RRF balances results well for most queries. DBSF may work better when keyword matches are over/under-weighted.') }} {{ t('astrolabe', 'Only applies to hybrid search. RRF balances results well for most queries. DBSF may work better when keyword matches are over/under-weighted.') }}
</p> </p>
@@ -184,14 +186,13 @@
</div> </div>
<NcTextField <NcTextField
:value="settings.limit" v-model="settings.limit"
:label="t('astrolabe', 'Maximum Results')" :label="t('astrolabe', 'Maximum Results')"
type="number" type="number"
:min="5" :min="5"
:max="100" :max="100"
:step="5" :step="5"
class="form-field" class="form-field" />
@update:value="settings.limit = Number($event)" />
<p class="help-text"> <p class="help-text">
{{ t('astrolabe', 'Maximum number of results to return per search query (5-100).') }} {{ t('astrolabe', 'Maximum number of results to return per search query (5-100).') }}
</p> </p>
@@ -276,6 +277,15 @@ const fusionOptions = computed(() => [
{ id: 'dbsf', label: t('astrolabe', 'DBSF - Distribution-Based Score Fusion') }, { id: 'dbsf', label: t('astrolabe', 'DBSF - Distribution-Based Score Fusion') },
]) ])
// Computed properties for NcSelect (converts between stored ID and option object)
const selectedAlgorithmOption = computed(() =>
algorithmOptions.value.find(opt => opt.id === settings.value.algorithm) || algorithmOptions.value[0],
)
const selectedFusionOption = computed(() =>
fusionOptions.value.find(opt => opt.id === settings.value.fusion) || fusionOptions.value[0],
)
// Methods // Methods
async function loadServerStatus() { async function loadServerStatus() {
loading.value = true loading.value = true
Generated
+1 -1
View File
@@ -1988,7 +1988,7 @@ wheels = [
[[package]] [[package]]
name = "nextcloud-mcp-server" name = "nextcloud-mcp-server"
version = "0.61.2" version = "0.61.3"
source = { editable = "." } source = { editable = "." }
dependencies = [ dependencies = [
{ name = "aiosqlite" }, { name = "aiosqlite" },