Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
9894dc0
fix: log level not reconfigurable at runtime
thaihoang2011 Nov 26, 2025
08369cb
fix: log level not reconfigurable at runtime
thaihoang2011 Nov 28, 2025
fe79b80
Merge pull request #73 from martin-papy/bugfix/57
minh362000 Dec 8, 2025
b0da3b9
chore: update dependencies in pyproject.toml
Dec 8, 2025
444466d
Merge pull request #75 from martin-papy/bugfix/60
thanhbuingoc-cbtw Dec 8, 2025
d0b575d
Merge branch 'hotfix/0.7.4' of https://github.com/martin-papy/qdrant-…
thaihoang2011 Dec 8, 2025
e3aaa52
fix: update logging configuration to include log level in reconfigure…
thaihoang2011 Dec 9, 2025
79d6abe
fix: correct unpacking of logging configuration in LoggingConfig
thaihoang2011 Dec 9, 2025
8dcd271
Merge pull request #63 from martin-papy/bugfix/58
thanhbuingoc-cbtw Dec 9, 2025
c9adda4
chore: split oversized file to comply with model size constraints
minh0306 Dec 9, 2025
9df1c78
fix: update qdrant-client API from search() to query_points()
thanhbuingoc-cbtw Dec 8, 2025
044f0ae
Merge pull request #79 from martin-papy/bugfix/58
thanhbuingoc-cbtw Dec 9, 2025
502c7c5
Merge pull request #78 from martin-papy/bugfix/74
thanhbuingoc-cbtw Dec 9, 2025
0e83180
fix: fix missing spacy in mcp-server dependencies. Fix #67
minh0306 Dec 10, 2025
1a8e9b6
Merge pull request #82 from martin-papy/bugfix/67
thanhbuingoc-cbtw Dec 10, 2025
3917bcc
fix:improve mock payload structure and test robustness
minh0306 Dec 10, 2025
f2e6166
fix: incorrect indentation
minh0306 Dec 10, 2025
563e2b9
fix: use level parameter in MCP wrapper reconfigure()
Dec 10, 2025
8c03034
Merge pull request #84 from martin-papy/fix/logging-fallback-with-level
thanhbuingoc-cbtw Dec 10, 2025
5a53aa3
chore(release): update README and RELEASE_NOTES for version 0.7.4
thanhbuingoc-cbtw Dec 11, 2025
02b0733
chore(release): bump versions to 0.7.4
thanhbuingoc-cbtw Dec 11, 2025
886ce58
chore: update Release note for v0.7.4
minh0306 Dec 11, 2025
e16e454
fix: revert bump version
minh0306 Dec 11, 2025
a168da3
Merge pull request #83 from martin-papy/hotfix/0.7.4
martin-papy Dec 12, 2025
9fb3c56
chore: add .venv to .gitignore for virtual environment exclusion
martin-papy Dec 12, 2025
9478ab8
chore(release): bump versions; update classifiers and internal deps
martin-papy Dec 12, 2025
3f039a1
fix: add optional similarity_threshold parameter (default 0.7) to fin…
minh362000 Dec 29, 2025
d15fcbb
chore: update search-capabilities.md
minh362000 Dec 29, 2025
72559ec
fix: handle mixed document types (dict/object) and validate text fiel…
minh362000 Dec 29, 2025
6a5fa5d
fix: Replace NestedCondition with dot notation for project_ids filter…
minh362000 Jan 2, 2026
c2b4f78
fix: separate fetch limit from user limit and adjust default search l…
amycbtw Jan 2, 2026
adc39fd
test: fix mock spec to properly simulate missing document attributes
minh362000 Jan 2, 2026
805fdfd
fix: update reason field in document analysis to use recommendation_r…
thaihoang2011 Jan 5, 2026
37fd71e
fix: rename limit to fetch_limit to avoid overriding user input
amycbtw Jan 6, 2026
9024dcf
fix: resolve UnboundLocalError error related to fetch_limit variable
amycbtw Jan 6, 2026
1435c49
Merge pull request #100 from martin-papy/bugfix/93
thanhbuingoc-cbtw Jan 8, 2026
a664014
Merge pull request #98 from martin-papy/bugfix/86
thanhbuingoc-cbtw Jan 8, 2026
e933c6f
Merge pull request #92 from martin-papy/bugfix/90
thanhbuingoc-cbtw Jan 8, 2026
981792a
chore: optimize CI Pipeline to reduce Test execution time
huyenhothi Jan 8, 2026
508d8a5
chore: improve CI performance by caching pip
huyenhothi Jan 8, 2026
e665490
Merge pull request #97 from martin-papy/bugfix/85
thanhbuingoc-cbtw Jan 8, 2026
a1e123c
Merge pull request #91 from martin-papy/bugfix/89
thanhbuingoc-cbtw Jan 8, 2026
92e8bc0
chore: save pip cache on MAIN only and address CodeRabbit feedback
huyenhothi Jan 9, 2026
44c1ba3
chore: run black formatter
huyenhothi Jan 12, 2026
a546bec
chore(release): add CHANGELOG entries for version 0.7.5
minh362000 Jan 20, 2026
0779836
chore(release): update CHANGELOG entries for version 0.7.5
minh362000 Jan 20, 2026
febcb75
chore: apply ruff linting fixes
minh362000 Jan 20, 2026
96b3e41
docs: add best practices guide for contributors
thanhbuingoc-cbtw Jan 20, 2026
f740516
📝 Add docstrings to `hotfix/0.7.5`
coderabbitai[bot] Jan 20, 2026
e5794d8
Merge pull request #105 from martin-papy/coderabbitai/docstrings/febcb75
thanhbuingoc-cbtw Jan 21, 2026
9433ca7
Merge pull request #103 from martin-papy/hotfix/0.7.5
thanhbuingoc-cbtw Jan 21, 2026
8328932
Merge pull request #102 from martin-papy/chore/cache-deps-and-improve…
thanhbuingoc-cbtw Jan 21, 2026
129c342
Merge pull request #104 from martin-papy/chore/add-coding-standards-g…
NguyenVu11796 Jan 21, 2026
494f887
chore: fix lint check
thanhbuingoc-cbtw Jan 21, 2026
133e698
Merge pull request #107 from martin-papy/chore/fix-ruff-check
thanhbuingoc-cbtw Jan 21, 2026
1b848c2
chore: update document for release
minh362000 Jan 22, 2026
f72756b
docs: Replace release notes references with changelog
minh362000 Jan 22, 2026
1b9b530
chore: update changelog for v0.7.6
minh362000 Jan 22, 2026
a23449c
chore: update readme file
minh362000 Jan 22, 2026
757f41e
Merge pull request #112 from martin-papy/hotfix/0.7.6
thanhbuingoc-cbtw Jan 22, 2026
1440a2c
chore(release): bump versions; update classifiers and internal deps
martin-papy Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cursor/rules/tech-writer.mdc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: Guide the AI to act as a Senior Technical Writer, focusing on clear and concise documentation.
globs:
globs:
alwaysApply: false
---

Expand All @@ -12,7 +12,7 @@ You are a Senior Technical Writer specializing in creating clear, comprehensive,

### **Documentation Creation**

- Write user manuals, API documentation, developer guides, and release notes that are accurate and easy to understand
- Write user manuals, API documentation, developer guides, and changelog that are accurate and easy to understand
- Ensure all examples are tested and work as documented
- Include troubleshooting sections for common issues
- Provide clear migration paths for version changes
Expand Down
38 changes: 19 additions & 19 deletions .github/workflows/docs-auto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@ name: Documentation Website (Auto)

on:
push:
branches: [ main ]
branches: [main]
paths:
- 'docs/**'
- 'README.md'
- 'RELEASE_NOTES.md'
- 'packages/*/README.md'
- 'website/**'
- '.github/workflows/docs-auto.yml'
- "docs/**"
- "README.md"
- "CHANGELOG.md"
- "packages/*/README.md"
- "website/**"
- ".github/workflows/docs-auto.yml"
workflow_run:
workflows: ["Test and Coverage"]
types:
- completed
branches: [ main ]
branches: [main]
release:
types: [published]
# Only trigger on main package releases, not MCP server releases
Expand Down Expand Up @@ -63,7 +63,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
python-version: "3.12"

- name: Install dependencies
run: |
Expand All @@ -83,25 +83,25 @@ jobs:
id: get-workflow-run
run: |
echo "🔍 Finding latest successful test workflow run on main branch..."

# Get the latest successful workflow run for "Test and Coverage" on main branch
WORKFLOW_RUN=$(curl -s \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/actions/workflows" \
| jq -r '.workflows[] | select(.name == "Test and Coverage") | .id')

if [ "$WORKFLOW_RUN" = "null" ] || [ -z "$WORKFLOW_RUN" ]; then
echo "❌ Could not find 'Test and Coverage' workflow"
exit 1
fi

LATEST_RUN=$(curl -s \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/actions/workflows/$WORKFLOW_RUN/runs?branch=main&status=completed&conclusion=success&per_page=1" \
| jq -r '.workflow_runs[0].id')

if [ "$LATEST_RUN" = "null" ] || [ -z "$LATEST_RUN" ]; then
echo "❌ No successful test runs found on main branch"
echo "⚠️ Continuing without test artifacts for release"
Expand Down Expand Up @@ -170,22 +170,22 @@ jobs:
echo "📊 Total files built: $(find site -type f | wc -l)"
echo "📄 HTML pages: $(find site -name "*.html" | wc -l)"
echo "📁 Directories: $(find site -type d | wc -l)"

# Check if main pages exist
if [ -f "site/index.html" ]; then
echo "✅ Homepage built successfully"
else
echo "❌ Homepage missing"
exit 1
fi

if [ -f "site/docs/index.html" ]; then
echo "✅ Documentation index built successfully"
else
echo "❌ Documentation index missing"
exit 1
fi

if [ -f "site/coverage/index.html" ]; then
echo "✅ Coverage index built successfully"
else
Expand Down Expand Up @@ -242,7 +242,7 @@ jobs:
echo "Event: ${{ github.event_name }}"
echo "Branch: ${{ github.ref_name }}"
echo "Commit: ${{ github.sha }}"

# Check if this was a release event and if we should deploy
if [ "${{ github.event_name }}" = "release" ]; then
if [ "${{ needs.check-release.result }}" = "success" ] && [ "${{ needs.check-release.outputs.should-deploy }}" = "true" ]; then
Expand All @@ -253,7 +253,7 @@ jobs:
echo "⏭️ Documentation deployment skipped to avoid duplicates"
fi
fi

if [ "${{ needs.build-docs.result }}" = "success" ]; then
echo "✅ Website built successfully"
echo "📦 Artifact: website-auto-${{ github.run_id }}"
Expand All @@ -269,4 +269,4 @@ jobs:
else
echo "❌ Website build failed"
exit 1
fi
fi
125 changes: 120 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,20 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Restore pip dependency cache
uses: actions/cache/restore@v4
id: pip-cache-core
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-core-${{ hashFiles('packages/qdrant-loader-core/pyproject.toml', 'pyproject.toml') }}
restore-keys: |
${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-core-

- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -34,26 +44,43 @@ jobs:
# Install repo dev deps for pytest, coverage, etc.
pip install -e .[dev]

- name: Save pip dependency cache
uses: actions/cache/save@v4
if: steps.pip-cache-core.outputs.cache-hit != 'true' && github.ref_name == 'main'
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-core-${{ hashFiles('packages/qdrant-loader-core/pyproject.toml', 'pyproject.toml') }}

- name: Run core tests and generate coverage reports
run: |
cd packages/qdrant-loader-core
python -m pytest tests/ --cov=src --cov-report=xml:../../coverage-core.xml --cov-report=html:../../htmlcov-core -v
python -m pytest tests/ --cov=src -v

- name: Generate coverage reports
if: github.event_name == 'push' && github.ref_name == 'main'
run: |
cd packages/qdrant-loader-core
coverage xml -o ../../coverage-core.xml
coverage html -d ../../htmlcov-core

- name: Upload core coverage artifact
if: github.event_name == 'push' && github.ref_name == 'main'
uses: actions/upload-artifact@v4
with:
name: coverage-core-${{ github.run_id }}
path: |
htmlcov-core
coverage-core.xml
retention-days: 30

test-loader:
name: Test QDrant Loader
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: '3.12'
Expand All @@ -65,6 +92,15 @@ jobs:
sudo apt-get update
sudo apt-get install -y ffmpeg

- name: Restore pip dependency cache
uses: actions/cache/restore@v4
id: pip-cache-loader
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-loader-${{ hashFiles('packages/qdrant-loader-core/pyproject.toml', 'packages/qdrant-loader/pyproject.toml', 'pyproject.toml') }}
restore-keys: |
${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-loader-

- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -73,6 +109,13 @@ jobs:
pip install -e .[dev]
pip install -e packages/qdrant-loader

- name: Save pip dependency cache
uses: actions/cache/save@v4
if: steps.pip-cache-loader.outputs.cache-hit != 'true' && github.ref_name == 'main'
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-loader-${{ hashFiles('packages/qdrant-loader-core/pyproject.toml', 'packages/qdrant-loader/pyproject.toml', 'pyproject.toml') }}

- name: Create .env.test file for loader
run: |
cd packages/qdrant-loader
Expand Down Expand Up @@ -185,12 +228,31 @@ jobs:
echo "YAML config structure:"
head -20 tests/config.test.yaml

- name: Run loader tests and generate coverage reports
- name: Run loader unit tests
run: |
cd packages/qdrant-loader
python -m pytest tests/unit -n 2 --cov=src --cov-report= -v

- name: Run loader integration tests
if: |
(github.event_name == 'pull_request' &&
(github.event.pull_request.base.ref == 'develop' ||
github.event.pull_request.base.ref == 'main')) ||
(github.event_name == 'push' &&
(github.ref_name == 'develop' || github.ref_name == 'main'))
run: |
cd packages/qdrant-loader
python -m pytest tests/integration --cov=src --cov-append --cov-report= -v

- name: Generate coverage reports
if: github.event_name == 'push' && github.ref_name == 'main'
run: |
cd packages/qdrant-loader
python -m pytest tests/ --cov=src --cov-report=xml:../../coverage-loader.xml --cov-report=html:../../htmlcov-loader -v
coverage xml -o ../../coverage-loader.xml
coverage html -d ../../htmlcov-loader

- name: Upload loader coverage artifact
if: github.event_name == 'push' && github.ref_name == 'main'
uses: actions/upload-artifact@v4
with:
name: coverage-loader-${{ github.run_id }}
Expand All @@ -206,10 +268,20 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Restore pip dependency cache
uses: actions/cache/restore@v4
id: pip-cache-mcp
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-mcp-${{ hashFiles('packages/qdrant-loader-core/pyproject.toml', 'packages/qdrant-loader/pyproject.toml', 'packages/qdrant-loader-mcp-server/pyproject.toml', 'pyproject.toml') }}
restore-keys: |
${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-mcp-

- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -219,6 +291,13 @@ jobs:
pip install -e packages/qdrant-loader
pip install -e packages/qdrant-loader-mcp-server

- name: Save pip dependency cache
uses: actions/cache/save@v4
if: steps.pip-cache-mcp.outputs.cache-hit != 'true' && github.ref_name == 'main'
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-mcp-${{ hashFiles('packages/qdrant-loader-core/pyproject.toml', 'packages/qdrant-loader/pyproject.toml', 'packages/qdrant-loader-mcp-server/pyproject.toml', 'pyproject.toml') }}

- name: Create .env.test file for MCP server
run: |
cd packages/qdrant-loader-mcp-server
Expand Down Expand Up @@ -252,12 +331,31 @@ jobs:
echo "Contents (with secrets masked):"
sed 's/=.*/=***/' tests/.env.test

- name: Run MCP server tests and generate coverage reports
- name: Run MCP server unit tests
run: |
cd packages/qdrant-loader-mcp-server
python -m pytest tests/unit -n 2 --cov=src --cov-report= -v

- name: Run MCP server integration tests
if: |
(github.event_name == 'pull_request' &&
(github.event.pull_request.base.ref == 'develop' ||
github.event.pull_request.base.ref == 'main')) ||
(github.event_name == 'push' &&
(github.ref_name == 'develop' || github.ref_name == 'main'))
run: |
cd packages/qdrant-loader-mcp-server
python -m pytest tests/integration --cov=src --cov-append --cov-report= --cov-report=term-missing -v

- name: Generate coverage reports
if: github.event_name == 'push' && github.ref_name == 'main'
run: |
cd packages/qdrant-loader-mcp-server
python -m pytest tests/ --cov=src --cov-report=xml:../../coverage-mcp.xml --cov-report=html:../../htmlcov-mcp -v
coverage xml -o ../../coverage-mcp.xml
coverage html -d ../../htmlcov-mcp

- name: Upload MCP server coverage artifact
if: github.event_name == 'push' && github.ref_name == 'main'
uses: actions/upload-artifact@v4
with:
name: coverage-mcp-${{ github.run_id }}
Expand All @@ -273,6 +371,7 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: '3.12'
Expand All @@ -283,6 +382,15 @@ jobs:
sudo apt-get update
sudo apt-get install -y libcairo2-dev libgirepository1.0-dev

- name: Restore pip dependency cache
uses: actions/cache/restore@v4
id: pip-cache-website
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-website-${{ hashFiles('pyproject.toml') }}
restore-keys: |
${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-website-

- name: Install website test dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -291,6 +399,13 @@ jobs:
# Install optional docs dependencies for comprehensive testing
pip install -e .[docs] || echo "Optional docs dependencies not available"

- name: Save pip dependency cache
uses: actions/cache/save@v4
if: steps.pip-cache-website.outputs.cache-hit != 'true' && github.ref_name == 'main'
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-website-${{ hashFiles('pyproject.toml') }}

- name: Run website tests with coverage
run: |
# Add website directory to Python path and run tests
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ wheels/

# Virtual Environment
venv/
.venv/
env/
ENV/

Expand Down
Loading
Loading