Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
ac74ef9
[ci skip] Update version to main
github-actions[bot] Sep 29, 2025
b8bdc81
Merge branch 'main' of https://github.com/blinkospace/blinko
blinko-space Sep 29, 2025
0981288
chore: update cuda path in yml
blinko-space Sep 29, 2025
551c053
[ci skip] Update version to 1.6.3
github-actions[bot] Sep 29, 2025
ca41afd
chore: update yml
blinko-space Sep 29, 2025
be3c20a
Merge branches 'main' and 'main' of https://github.com/blinkospace/bl…
blinko-space Sep 29, 2025
385be77
chore: update yml
blinko-space Sep 29, 2025
0859bfd
♻️refactor: improve whisper transcriber code formatting and structure
blinko-space Sep 29, 2025
b2ef73e
fix: upload timeout
blinko-space Sep 30, 2025
c3cf5bc
✨feat: implement CUDA/CPU feature separation with conditional builds
blinko-space Sep 30, 2025
53c9f3f
chore: update doc
blinko-space Sep 30, 2025
9c5a8be
chore: Update version to 1.6.3
actions-user Sep 30, 2025
0ceae35
feat: added notes dragging
Felitendo Sep 30, 2025
f91c6e2
Merge branch 'blinkospace:main' into main
Felitendo Sep 30, 2025
2919628
fix: dragging notes not staying in position
Felitendo Sep 30, 2025
6b64748
Docs: update French translation of todo to Tâches instead of Procuration
Oct 2, 2025
0145f65
Merge pull request #928 from Darvyn/main
blinko-space Oct 5, 2025
69293b4
Merge branch 'blinkospace:main' into main
Felitendo Oct 8, 2025
e031a30
♻️ refactor: implement long-press drag activation for better UX
blinko-space Oct 9, 2025
3fb2f22
chore: update
blinko-space Oct 9, 2025
d54e5c8
chore: Update version to 1.6.4
actions-user Oct 9, 2025
b757f70
[ci skip] Update version to 1.6.4
github-actions[bot] Oct 9, 2025
4788502
feat: implement enhanced authentication system for AI providers
Oct 14, 2025
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
44 changes: 0 additions & 44 deletions .claude/settings.local.json

This file was deleted.

81 changes: 69 additions & 12 deletions .github/workflows/app-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,14 @@ jobs:
args: '--target x86_64-apple-darwin'
- platform: 'ubuntu-22.04' # Linux Platform
args: ''
- platform: 'windows-latest' # Windows Platform
- platform: 'windows-latest' # Windows Platform (CPU)
args: ''
features: '--features whisper-cpu'
variant: 'cpu'
- platform: 'windows-latest' # Windows Platform (CUDA)
args: ''
features: '--features whisper-cuda'
variant: 'cuda'

runs-on: ${{ matrix.platform }}
steps:
Expand All @@ -132,19 +138,61 @@ jobs:
name: tauri-config
path: app/src-tauri/

- name: Install CUDA Toolkit (Windows)
if: matrix.platform == 'windows-latest'
uses: Jimver/[email protected]
- name: Install CUDA Toolkit (Windows CUDA)
if: matrix.platform == 'windows-latest' && matrix.variant == 'cuda'
uses: Jimver/[email protected]
id: cuda-toolkit
with:
cuda: '12.1.0'
cuda: '12.5.0'
method: 'network'
sub-packages: '[ "nvcc", "cudart", "cublas", "cublas_dev", "curand", "curand_dev" ]'
sub-packages: '[ "nvcc", "cudart", "cublas", "cublas_dev", "curand", "curand_dev", "visual_studio_integration", "thrust" ]'

- name: Set CUDA environment variables (Windows)
if: matrix.platform == 'windows-latest'
- name: Set CUDA environment variables (Windows CUDA)
if: matrix.platform == 'windows-latest' && matrix.variant == 'cuda'
run: |
echo "Installed cuda version is: ${{steps.cuda-toolkit.outputs.cuda}}"
echo "Cuda install location: ${{steps.cuda-toolkit.outputs.CUDA_PATH}}"
echo "CUDA_PATH=${{steps.cuda-toolkit.outputs.CUDA_PATH}}" >> $GITHUB_ENV
echo "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin" >> $GITHUB_PATH
nvcc -V


- name: Fix CUDA Visual Studio Integration (Windows CUDA)
if: matrix.platform == 'windows-latest' && matrix.variant == 'cuda'
run: |
echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1" >> $GITHUB_ENV
echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin" >> $GITHUB_PATH
$cudaPath = "${{steps.cuda-toolkit.outputs.CUDA_PATH}}"
echo "CUDA Path: $cudaPath"

# Source: CUDA Visual Studio integration files
$sourceDir = "$cudaPath\extras\visual_studio_integration\MSBuildExtensions"
echo "Source: $sourceDir"

# Find Visual Studio installation
$vsPaths = @(
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise",
"C:\Program Files\Microsoft Visual Studio\2022\Community",
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
)

foreach ($vsPath in $vsPaths) {
$destDir = "$vsPath\MSBuild\Microsoft\VC\v170\BuildCustomizations"
if (Test-Path $destDir) {
echo "Found VS at: $vsPath"
echo "Destination: $destDir"

if (Test-Path $sourceDir) {
echo "Copying CUDA integration files..."
Copy-Item "$sourceDir\*" $destDir -Force -Verbose
echo "Successfully copied CUDA integration files to $destDir"
} else {
echo "ERROR: Source directory not found: $sourceDir"
}
break
}
}

# Set environment variable for CMake to use CUDA toolset
echo "CMAKE_GENERATOR_TOOLSET=cuda=$cudaPath" >> $GITHUB_ENV

- name: Fix version format for Windows MSI
if: matrix.platform == 'windows-latest'
Expand Down Expand Up @@ -190,6 +238,7 @@ jobs:
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
components: ${{ matrix.platform == 'windows-latest' && 'rustfmt' || '' }}

- name: Rust Cache
uses: Swatinem/rust-cache@v2
Expand All @@ -211,6 +260,14 @@ jobs:
bun install
cd app && bun install


# Copy CUDA config for CUDA builds (with installer checks)
- name: Use CUDA config (Windows CUDA)
if: matrix.platform == 'windows-latest' && matrix.variant == 'cuda'
run: |
Copy-Item "app\src-tauri\tauri.cuda.conf.json" "app\src-tauri\tauri.conf.json" -Force
echo "Using CUDA configuration with installer CUDA detection"

# Using official Tauri Action to build and publish
- name: Build and Publish Desktop App
uses: tauri-apps/tauri-action@v0
Expand All @@ -221,9 +278,9 @@ jobs:
with:
projectPath: 'app'
tauriScript: '../node_modules/.bin/tauri'
args: ${{ matrix.args }}
args: ${{ matrix.args }} ${{ matrix.features || '' }}
tagName: ${{ needs.set-version.outputs.version }}
releaseName: Blinko ${{ needs.set-version.outputs.version }}
releaseName: Blinko ${{ needs.set-version.outputs.version }}${{ matrix.variant && format(' ({0})', matrix.variant) || '' }}
releaseBody: "Under construction, full changelog will be updated after build completion..."
releaseDraft: false
prerelease: false
Expand Down
86 changes: 74 additions & 12 deletions .github/workflows/windows-test-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,14 @@ jobs:
needs: [set-version, update-version]
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- variant: 'cpu'
features: '--features whisper-cpu'
- variant: 'cuda'
features: '--features whisper-cuda'
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -108,17 +116,61 @@ jobs:
name: tauri-config
path: app/src-tauri/

- name: Install CUDA Toolkit (Windows)
uses: Jimver/[email protected]
- name: Install CUDA Toolkit (Windows CUDA)
if: matrix.variant == 'cuda'
uses: Jimver/[email protected]
id: cuda-toolkit
with:
cuda: '12.1.0'
cuda: '12.5.0'
method: 'network'
sub-packages: '[ "nvcc", "cudart", "cublas", "cublas_dev", "curand", "curand_dev" ]'
sub-packages: '[ "nvcc", "cudart", "cublas", "cublas_dev", "curand", "curand_dev", "nvrtc", "nvrtc_dev", "visual_studio_integration", "thrust" ]'

- name: Set CUDA environment variables (Windows)
- name: Set CUDA environment variables (Windows CUDA)
if: matrix.variant == 'cuda'
run: |
echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1" >> $GITHUB_ENV
echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin" >> $GITHUB_PATH
echo "Installed cuda version is: ${{steps.cuda-toolkit.outputs.cuda}}"
echo "Cuda install location: ${{steps.cuda-toolkit.outputs.CUDA_PATH}}"
echo "CUDA_PATH=${{steps.cuda-toolkit.outputs.CUDA_PATH}}" >> $GITHUB_ENV
echo "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin" >> $GITHUB_PATH
nvcc -V


- name: Fix CUDA Visual Studio Integration
if: matrix.variant == 'cuda'
run: |
$cudaPath = "${{steps.cuda-toolkit.outputs.CUDA_PATH}}"
echo "CUDA Path: $cudaPath"

# Source: CUDA Visual Studio integration files
$sourceDir = "$cudaPath\extras\visual_studio_integration\MSBuildExtensions"
echo "Source: $sourceDir"

# Find Visual Studio installation
$vsPaths = @(
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise",
"C:\Program Files\Microsoft Visual Studio\2022\Community",
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
)

foreach ($vsPath in $vsPaths) {
$destDir = "$vsPath\MSBuild\Microsoft\VC\v170\BuildCustomizations"
if (Test-Path $destDir) {
echo "Found VS at: $vsPath"
echo "Destination: $destDir"

if (Test-Path $sourceDir) {
echo "Copying CUDA integration files..."
Copy-Item "$sourceDir\*" $destDir -Force -Verbose
echo "Successfully copied CUDA integration files to $destDir"
} else {
echo "ERROR: Source directory not found: $sourceDir"
}
break
}
}

# Set environment variable for CMake to use CUDA toolset
echo "CMAKE_GENERATOR_TOOLSET=cuda=$cudaPath" >> $GITHUB_ENV

- name: Fix version format for Windows MSI
run: |
Expand Down Expand Up @@ -155,6 +207,8 @@ jobs:

- name: Install Rust Stable
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt

- name: Rust Cache
uses: Swatinem/rust-cache@v2
Expand All @@ -176,12 +230,20 @@ jobs:
bun install
cd app && bun install


# Copy CUDA config for CUDA builds (with installer checks)
- name: Use CUDA config (Windows CUDA)
if: matrix.variant == 'cuda'
run: |
Copy-Item "app\src-tauri\tauri.cuda.conf.json" "app\src-tauri\tauri.conf.json" -Force
echo "Using CUDA configuration with installer CUDA detection"

# Build Windows App (without publishing)
- name: Build Windows App
- name: Build Windows App (${{ matrix.variant }})
run: |
cd app
echo "Starting Windows build..."
../node_modules/.bin/tauri build --no-bundle
echo "Windows build completed successfully!"
echo "Starting Windows ${{ matrix.variant }} build..."
../node_modules/.bin/tauri build --no-bundle ${{ matrix.features }}
echo "Windows ${{ matrix.variant }} build completed successfully!"
echo "Build artifacts location: src-tauri/target/release/"
ls -la src-tauri/target/release/
Get-ChildItem src-tauri/target/release/
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ keystore.properties
dev-dist
.claudeconfig
.claude/*
.claude/settings.local.json
target
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,17 @@ Blinko is an AI-powered card note-taking project. Designed for individuals who w

- 🔓**Open for Collaboration** :As an open-source project, Blinko invites contributions from the community. All code is transparent and available on GitHub, fostering a spirit of collaboration and constant improvement.

## 🎤 Offline Voice Recognition (Windows)

The Windows desktop version supports offline voice recognition powered by Whisper, allowing you to convert speech to text without internet connectivity.

### Available Versions
- **Blinko.exe** - CPU-only version for all systems
- **Blinko(CUDA).exe** - GPU-accelerated version for NVIDIA graphics cards
- **Requires [CUDA Toolkit](https://developer.nvidia.com/cuda-downloads) to be installed, otherwise installation will fail due to missing runtime environment**
- Provides significantly faster transcription performance
- Requires manual download of Whisper models from [Hugging Face](https://huggingface.co/ggerganov/whisper.cpp/tree/main)

## 📦Start with Docker in seconds

```bash
Expand Down
11 changes: 11 additions & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,17 @@ Blinko 是一个AI驱动的卡片笔记项目,专为那些想要快速捕捉

- 🔓**开放协作**:作为开源项目,Blinko 欢迎社区贡献。所有代码都在 GitHub 上公开透明,培养协作和持续改进的精神。

## 🎤 离线语音识别 (Windows)

Windows 桌面版支持基于 Whisper 的离线语音识别功能,让您无需网络连接即可将语音转换为文字。

### 可用版本
- **Blinko.exe** - CPU版本,适用于所有系统
- **Blinko(CUDA).exe** - GPU加速版本,专为NVIDIA显卡优化
- **必须先安装 [CUDA工具包](https://developer.nvidia.com/cuda-downloads),否则会因缺少运行环境导致安装报错**
- 提供显著更快的转录性能
- 需要手动从 [Hugging Face](https://huggingface.co/ggerganov/whisper.cpp/tree/main) 下载 Whisper 模型

## 🤖 AI 模型支持
### OpenAI
- 支持 OpenAI API
Expand Down
3 changes: 2 additions & 1 deletion app/public/locales/ar/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -734,5 +734,6 @@
"voice-recognition-hotkey": "مفتاح الإدخال الصوتي السريع",
"local-voice-recognition": "التفريغ الصوتي المحلي",
"cuda-acceleration": "تسريع CUDA",
"voice-tip": "اضغط مع الاستمرار على مفتاح الاختصار للتحدث، لإجراء التحويل الصوتي إلى نص، وعند تحريره سيتم إدراج المحتوى المُحول في صندوق النص."
"voice-tip": "اضغط مع الاستمرار على مفتاح الاختصار للتحدث، لإجراء التحويل الصوتي إلى نص، وعند تحريره سيتم إدراج المحتوى المُحول في صندوق النص.",
"dragging": "جاري السحب..."
}
3 changes: 2 additions & 1 deletion app/public/locales/de/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -734,5 +734,6 @@
"voice-recognition-hotkey": "Spracheingabe-Hotkey",
"local-voice-recognition": "Lokale Sprachtranskription",
"cuda-acceleration": "CUDA-Beschleunigung",
"voice-tip": "Halten Sie die Schnelltaste gedrückt, um zu sprechen und eine Sprachtranskription durchzuführen. Wenn Sie loslassen, wird der transkribierte Inhalt in das Textfeld eingefügt."
"voice-tip": "Halten Sie die Schnelltaste gedrückt, um zu sprechen und eine Sprachtranskription durchzuführen. Wenn Sie loslassen, wird der transkribierte Inhalt in das Textfeld eingefügt.",
"dragging": "Wird gerade gezogen..."
}
19 changes: 18 additions & 1 deletion app/public/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -791,5 +791,22 @@
"audio-tips": "Press and hold the shortcut key to enter, release to insert into the text box.",
"local-voice-recognition": "Local Voice Recognition",
"cuda-acceleration": "CUDA Acceleration",
"voice-tip": "Press and hold the shortcut key to speak for voice transcription, and release it to insert the transcribed content into the text box."
"voice-tip": "Press and hold the shortcut key to speak for voice transcription, and release it to insert the transcribed content into the text box.",
"dragging": "Dragging...",
"enhanced-authentication": "Enhanced Authentication",
"recommended": "Recommended",
"authentication-type": "Authentication Type",
"no-authentication-required": "No Authentication Required",
"no-auth-description": "This endpoint doesn't require authentication. Suitable for local or public APIs.",
"header-name": "Header Name",
"enter-your-api-key": "Enter your API key",
"header-name-placeholder": "e.g., Authorization, X-API-Key",
"bearer-token-header-description": "The header name for the Bearer token. Default: Authorization",
"api-key-header-description": "The header name for the API key. Examples: X-API-Key, api-key, Authorization",
"custom-headers": "Custom Headers",
"custom-headers-description": "Add custom HTTP headers for authentication. You can add multiple headers.",
"header-name": "Header Name",
"header-value": "Header Value",
"example-configurations": "Example Configurations",
"legacy-api-key-description": "For backward compatibility. It's recommended to use Enhanced Authentication above."
}
3 changes: 2 additions & 1 deletion app/public/locales/es/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -736,5 +736,6 @@
"voice-recognition-hotkey": "Teclas de acceso rápido para entrada de voz",
"local-voice-recognition": "Transcripción de voz local",
"cuda-acceleration": "Aceleración CUDA",
"voice-tip": "Mantén presionada la tecla de acceso rápido para hablar y realizar la transcripción por voz. Al soltar, el contenido transcrito se insertará en el cuadro de texto."
"voice-tip": "Mantén presionada la tecla de acceso rápido para hablar y realizar la transcripción por voz. Al soltar, el contenido transcrito se insertará en el cuadro de texto.",
"dragging": "Arrastrando..."
}
5 changes: 3 additions & 2 deletions app/public/locales/fr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@
"import-from-markdown": "Importer à partir d'un fichier Markdown",
"import-from-markdown-tip": "Importer à partir d'un simple fichier .md ou d'une archive .zip contenant des fichiers .md",
"not-a-markdown-or-zip-file": "Ce n'est pas un fichier Markdown ou zip. Veuillez sélectionner un fichier .md ou .zip.",
"todo": "Procuration",
"todo": "Tâches",
"restore": "Rétablissement",
"complete": "terminé",
"today": "Aujourd'hui",
Expand Down Expand Up @@ -736,5 +736,6 @@
"voice-recognition-hotkey": "Raccourci de saisie vocale",
"local-voice-recognition": "Transcription vocale locale",
"cuda-acceleration": "Accélération CUDA",
"voice-tip": "Maintenez enfoncé le raccourci pour parler et effectuer la transcription vocale. Lorsque vous relâchez, le contenu transcrit sera inséré dans la zone de texte."
"voice-tip": "Maintenez enfoncé le raccourci pour parler et effectuer la transcription vocale. Lorsque vous relâchez, le contenu transcrit sera inséré dans la zone de texte.",
"dragging": "En train de glisser..."
}
Loading