diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8aeefe2..6c61fb2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Additional Whisper model management UI
- Plugin system for custom pipelines
+## [1.8.0] - 2026-09-27
+
+> Published from an annotated tag. Installer and update metadata are served by the
+> canonical Forgejo feed; no binaries are committed to this repository.
+
+### Added
+- **Knowledge base syncs with your phone.** Documents added on the desktop can be
+ searched on the phone and web, and documents added there appear on the desktop and
+ are indexed with the local model. Deleting one removes it everywhere.
+- **Recordings sync and play anywhere.** Desktop recordings are uploaded (up to 50 MB
+ each, can be turned off in Settings > Cloud) so the phone can play them, and each
+ history card has a play button that also plays recordings made on the phone.
+- **Shared settings.** Language (Korean/English), light/dark/system theme,
+ auto-polish on or off and the active command follow the phone.
+
+### Fixed
+- A document's text is kept even when the local embedding model is unavailable, so
+ it can be indexed later without the original file.
+
## [1.7.0] - 2026-09-27
> Published from an annotated tag. Installer and update metadata are served by the
diff --git a/apps/admin-swagger/openapi.json b/apps/admin-swagger/openapi.json
index c680a48..9ae4aa7 100644
--- a/apps/admin-swagger/openapi.json
+++ b/apps/admin-swagger/openapi.json
@@ -3,7 +3,7 @@
"info": {
"title": "D3RO-VOICE Admin API",
"description": "Admin CRM Edge Functions for user management, subscription CRUD, payment history, and audit logs.",
- "version": "1.7.0"
+ "version": "1.8.0"
},
"servers": [
{
diff --git a/apps/admin/package.json b/apps/admin/package.json
index c5f3978..2cead7d 100644
--- a/apps/admin/package.json
+++ b/apps/admin/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/admin",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice Admin CRM — SaaS 관리 도구",
"scripts": {
diff --git a/apps/api-server/D3ROVoice.Api.csproj b/apps/api-server/D3ROVoice.Api.csproj
index bdcb77d..39d21c0 100644
--- a/apps/api-server/D3ROVoice.Api.csproj
+++ b/apps/api-server/D3ROVoice.Api.csproj
@@ -2,7 +2,7 @@
net10.0
- 1.7.0
+ 1.8.0
enable
enable
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index 4effa31..32952ab 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/desktop",
- "version": "1.7.0",
+ "version": "1.8.0",
"productName": "d3ro-voice",
"description": "로컬 AI 음성 어시스턴트 (Electron)",
"main": "./out/main/index.js",
diff --git a/apps/mobile-rn/android/app/build.gradle b/apps/mobile-rn/android/app/build.gradle
index 1d626f2..bbda70d 100644
--- a/apps/mobile-rn/android/app/build.gradle
+++ b/apps/mobile-rn/android/app/build.gradle
@@ -151,8 +151,8 @@ def versionSettingsValid = configuredVersionName != null &&
configuredVersionName ==~ strictSemver &&
configuredVersionCodeValue != null &&
configuredVersionCodeValue <= 2100000000L
-def resolvedVersionName = versionSettingsValid ? configuredVersionName : "1.7.0"
-def resolvedVersionCode = versionSettingsValid ? configuredVersionCodeValue.toInteger() : 1070000
+def resolvedVersionName = versionSettingsValid ? configuredVersionName : "1.8.0"
+def resolvedVersionCode = versionSettingsValid ? configuredVersionCodeValue.toInteger() : 1080000
def requiredReleaseSettings = [
D3RO_RELEASE_STORE_FILE: releaseStoreFilePath,
diff --git a/apps/mobile-rn/ios/D3ROVoice.xcodeproj/project.pbxproj b/apps/mobile-rn/ios/D3ROVoice.xcodeproj/project.pbxproj
index f42b444..b7f555d 100644
--- a/apps/mobile-rn/ios/D3ROVoice.xcodeproj/project.pbxproj
+++ b/apps/mobile-rn/ios/D3ROVoice.xcodeproj/project.pbxproj
@@ -257,7 +257,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1070000;
+ CURRENT_PROJECT_VERSION = 1080000;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = D3ROVoice/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
@@ -265,7 +265,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 1.7.0;
+ MARKETING_VERSION = 1.8.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -287,14 +287,14 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1070000;
+ CURRENT_PROJECT_VERSION = 1080000;
INFOPLIST_FILE = D3ROVoice/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 1.7.0;
+ MARKETING_VERSION = 1.8.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
diff --git a/apps/mobile-rn/metadata/android/en-US/changelogs/1080000.txt b/apps/mobile-rn/metadata/android/en-US/changelogs/1080000.txt
new file mode 100644
index 0000000..fa702fd
--- /dev/null
+++ b/apps/mobile-rn/metadata/android/en-US/changelogs/1080000.txt
@@ -0,0 +1 @@
+Knowledge documents and recordings from the desktop app now show up on your phone, and language, theme and auto-polish settings stay in step with the desktop.
diff --git a/apps/mobile-rn/metadata/android/ko-KR/changelogs/1080000.txt b/apps/mobile-rn/metadata/android/ko-KR/changelogs/1080000.txt
new file mode 100644
index 0000000..dc41fe9
--- /dev/null
+++ b/apps/mobile-rn/metadata/android/ko-KR/changelogs/1080000.txt
@@ -0,0 +1 @@
+데스크톱 앱에서 추가한 지식 문서와 녹음을 휴대폰에서도 보고 들을 수 있습니다. 언어·테마·자동 다듬기 설정도 데스크톱과 함께 맞춰집니다.
diff --git a/apps/mobile-rn/package-lock.json b/apps/mobile-rn/package-lock.json
index cc1b214..ec0d1b9 100644
--- a/apps/mobile-rn/package-lock.json
+++ b/apps/mobile-rn/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@d3ro/mobile-rn",
- "version": "1.7.0",
+ "version": "1.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@d3ro/mobile-rn",
- "version": "1.7.0",
+ "version": "1.8.0",
"dependencies": {
"@d3ro/api-client": "file:../../packages/api-client",
"@d3ro/core": "file:../../packages/core",
@@ -62,7 +62,7 @@
},
"../..": {
"name": "d3ro-voice-monorepo",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"workspaces": [
"apps/desktop",
@@ -81,7 +81,7 @@
},
"../../packages/api-client": {
"name": "@d3ro/api-client",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*",
@@ -98,7 +98,7 @@
},
"../../packages/core": {
"name": "@d3ro/core",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"dependencies": {
"docx": "^9.6.1"
@@ -109,7 +109,7 @@
},
"../../packages/i18n": {
"name": "@d3ro/i18n",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"devDependencies": {
"@types/react": "^19.0.0"
@@ -120,7 +120,7 @@
},
"../../packages/ui-native": {
"name": "@d3ro/ui-native",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"devDependencies": {
"@types/react": "*"
diff --git a/apps/mobile-rn/package.json b/apps/mobile-rn/package.json
index a6bb16a..da841e2 100644
--- a/apps/mobile-rn/package.json
+++ b/apps/mobile-rn/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/mobile-rn",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"scripts": {
"android": "react-native run-android",
diff --git a/apps/web/package.json b/apps/web/package.json
index 5ad5430..c4f31cd 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/web",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice 웹 앱 — Next.js 기반 SaaS 인터페이스",
"scripts": {
diff --git a/apps/web/src/components/layout/sidebar.tsx b/apps/web/src/components/layout/sidebar.tsx
index c4e5876..6208c3f 100644
--- a/apps/web/src/components/layout/sidebar.tsx
+++ b/apps/web/src/components/layout/sidebar.tsx
@@ -139,7 +139,7 @@ export function Sidebar(): React.ReactElement {
- v1.7.0
+ v1.8.0
diff --git a/package-lock.json b/package-lock.json
index a1956e7..312b9c9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "d3ro-voice-monorepo",
- "version": "1.7.0",
+ "version": "1.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "d3ro-voice-monorepo",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"workspaces": [
"apps/desktop",
@@ -25,7 +25,7 @@
},
"apps/admin": {
"name": "@d3ro/admin",
- "version": "1.7.0",
+ "version": "1.8.0",
"dependencies": {
"@d3ro/api-client": "*",
"@d3ro/core": "*",
@@ -109,7 +109,7 @@
},
"apps/desktop": {
"name": "@d3ro/desktop",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*",
@@ -161,7 +161,7 @@
},
"apps/web": {
"name": "@d3ro/web",
- "version": "1.7.0",
+ "version": "1.8.0",
"dependencies": {
"@d3ro/api-client": "*",
"@d3ro/core": "*",
@@ -17216,7 +17216,7 @@
},
"packages/api-client": {
"name": "@d3ro/api-client",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*",
@@ -17233,7 +17233,7 @@
},
"packages/core": {
"name": "@d3ro/core",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"dependencies": {
"docx": "^9.6.1"
@@ -17244,7 +17244,7 @@
},
"packages/i18n": {
"name": "@d3ro/i18n",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"devDependencies": {
"@types/react": "^19.0.0"
@@ -17255,7 +17255,7 @@
},
"packages/ui": {
"name": "@d3ro/ui",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*"
@@ -17275,7 +17275,7 @@
},
"packages/ui-native": {
"name": "@d3ro/ui-native",
- "version": "1.7.0",
+ "version": "1.8.0",
"license": "MIT",
"devDependencies": {
"@types/react": "*"
diff --git a/package.json b/package.json
index 9478310..aa99095 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "d3ro-voice-monorepo",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice — 멀티플랫폼 AI 음성 어시스턴트 (Monorepo)",
"author": "D3RO",
diff --git a/packages/api-client/package.json b/packages/api-client/package.json
index 10736f7..54b7b80 100644
--- a/packages/api-client/package.json
+++ b/packages/api-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/api-client",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice API 클라이언트 — Supabase 래퍼 (web/desktop/mobile 공유)",
"license": "MIT",
diff --git a/packages/core/package.json b/packages/core/package.json
index abd990e..705eaba 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/core",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice 공유 비즈니스 로직 — 타입, 에러, IPC 채널, 상수, 유틸",
"license": "MIT",
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 556f3e7..b6aa72a 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/i18n",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice 공유 i18n — 12개 locale, 타입 안전 키, Context, 포맷 유틸",
"license": "MIT",
diff --git a/packages/ui-native/package.json b/packages/ui-native/package.json
index 7a9873f..1271988 100644
--- a/packages/ui-native/package.json
+++ b/packages/ui-native/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/ui-native",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice React Native DS — MetalCard/PhosphorText/Led/WaveBars etc.",
"license": "MIT",
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 9738e8a..9059258 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@d3ro/ui",
- "version": "1.7.0",
+ "version": "1.8.0",
"private": true,
"description": "D3RO Voice 공유 UI — 디자인 시스템 컴포넌트 + 테마 토큰 + CSS 변수 맵",
"license": "MIT",
diff --git a/release/product-version.json b/release/product-version.json
index fdc5696..34a7938 100644
--- a/release/product-version.json
+++ b/release/product-version.json
@@ -1,8 +1,8 @@
{
"schemaVersion": 1,
- "version": "1.7.0",
- "androidVersionCode": 1070000,
- "iosBuildNumber": 1070000,
+ "version": "1.8.0",
+ "androidVersionCode": 1080000,
+ "iosBuildNumber": 1080000,
"releaseDate": "2026-09-27",
"desktopLicensePublicKeyId": "5c52b765135ee2531c681b53cd4dc0e96fff8737f496c0b04ba8334fc81a887f"
}
diff --git a/site/package-lock.json b/site/package-lock.json
index 102ac78..746ab25 100644
--- a/site/package-lock.json
+++ b/site/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "d3ro-voice-site",
- "version": "1.7.0",
+ "version": "1.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "d3ro-voice-site",
- "version": "1.7.0",
+ "version": "1.8.0",
"dependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
diff --git a/site/package.json b/site/package.json
index f1b7fa2..e098f4e 100644
--- a/site/package.json
+++ b/site/package.json
@@ -1,7 +1,7 @@
{
"name": "d3ro-voice-site",
"private": true,
- "version": "1.7.0",
+ "version": "1.8.0",
"type": "module",
"scripts": {
"dev": "vite --port 5199 --host",
diff --git a/site/src/release.ts b/site/src/release.ts
index 0c17ae8..4360143 100644
--- a/site/src/release.ts
+++ b/site/src/release.ts
@@ -5,7 +5,7 @@
// NAS 배포는 바이너리를 포함하지 않으므로 `/releases/...` 같은 로컬 경로는
// 실제 배포 환경에서 404가 된다.
-export const DESKTOP_VERSION = '1.7.0'
+export const DESKTOP_VERSION = '1.8.0'
/** 릴리스 게시일. `release/product-version.json`의 releaseDate와 같아야 한다. */
export const DESKTOP_RELEASE_DATE = '2026-09-27'