feat(release): ship the current feature set as 1.2.0

Version 1.1.0 was published on 2026-09-15, so its tag is closed. Every commit
since then, the update-feed rework, dictionary import and export, the extra
push transports, and entitlement gating, needs its own immutable version.

Product version, Android version code, iOS build number, and all package and
store surfaces move to 1.2.0 / 1020001, with Korean and English store notes for
the new version code. The download centers read that version and its release
date from one place instead of repeating them inline.
This commit is contained in:
Yun Chan 2026-09-16 23:49:50 +09:00
parent 49a4c97923
commit 035d0a76f5
25 changed files with 56 additions and 47 deletions

View file

@ -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.1.0"
"version": "1.2.0"
},
"servers": [
{

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/admin",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice Admin CRM — SaaS 관리 도구",
"scripts": {

View file

@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Version>1.1.0</Version>
<Version>1.2.0</Version>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/desktop",
"version": "1.1.0",
"version": "1.2.0",
"productName": "d3ro-voice",
"description": "로컬 AI 음성 어시스턴트 (Electron)",
"main": "./out/main/index.js",

View file

@ -151,8 +151,8 @@ def versionSettingsValid = configuredVersionName != null &&
configuredVersionName ==~ strictSemver &&
configuredVersionCodeValue != null &&
configuredVersionCodeValue <= 2100000000L
def resolvedVersionName = versionSettingsValid ? configuredVersionName : "1.1.0"
def resolvedVersionCode = versionSettingsValid ? configuredVersionCodeValue.toInteger() : 1010001
def resolvedVersionName = versionSettingsValid ? configuredVersionName : "1.2.0"
def resolvedVersionCode = versionSettingsValid ? configuredVersionCodeValue.toInteger() : 1020001
def requiredReleaseSettings = [
D3RO_RELEASE_STORE_FILE: releaseStoreFilePath,

View file

@ -257,7 +257,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 1010001;
CURRENT_PROJECT_VERSION = 1020001;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = D3ROVoice/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
@ -265,7 +265,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.0;
MARKETING_VERSION = 1.2.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@ -287,14 +287,14 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 1010001;
CURRENT_PROJECT_VERSION = 1020001;
INFOPLIST_FILE = D3ROVoice/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.0;
MARKETING_VERSION = 1.2.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",

View file

@ -0,0 +1 @@
Team, meeting, memo, template, command, and dictionary screens now use server responses directly, so lists and edits stay in sync. Reporting a generated document confirms completion instead of hanging.

View file

@ -0,0 +1 @@
팀·회의·메모·템플릿·명령·사전 화면이 서버 응답을 그대로 사용해 목록과 수정 내용이 어긋나지 않습니다. 생성 문서 신고가 멈추지 않고 완료 확인을 표시합니다.

View file

@ -1,12 +1,12 @@
{
"name": "@d3ro/mobile-rn",
"version": "1.1.0",
"version": "1.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@d3ro/mobile-rn",
"version": "1.1.0",
"version": "1.2.0",
"dependencies": {
"@d3ro/api-client": "file:../../packages/api-client",
"@d3ro/core": "file:../../packages/core",
@ -62,7 +62,7 @@
},
"../..": {
"name": "d3ro-voice-monorepo",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"workspaces": [
"apps/desktop",
@ -81,7 +81,7 @@
},
"../../packages/api-client": {
"name": "@d3ro/api-client",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*",
@ -98,7 +98,7 @@
},
"../../packages/core": {
"name": "@d3ro/core",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"dependencies": {
"docx": "^9.6.1"
@ -109,7 +109,7 @@
},
"../../packages/i18n": {
"name": "@d3ro/i18n",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"devDependencies": {
"@types/react": "^19.0.0"
@ -120,7 +120,7 @@
},
"../../packages/ui-native": {
"name": "@d3ro/ui-native",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"devDependencies": {
"@types/react": "*"

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/mobile-rn",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"scripts": {
"android": "react-native run-android",

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/web",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice 웹 앱 — Next.js 기반 SaaS 인터페이스",
"scripts": {

View file

@ -24,6 +24,7 @@ import {
DESKTOP_FEED_URL,
DESKTOP_RELEASE_HUB_URL,
DESKTOP_RELEASES_URL,
DESKTOP_RELEASE_DATE,
DESKTOP_VERSION,
DESKTOP_WINDOWS_INSTALLER_FILENAME,
DESKTOP_WINDOWS_INSTALLER_URL,
@ -539,7 +540,7 @@ export default function DownloadPage(): React.ReactElement {
fontWeight: 500,
}}
/>
<Typography sx={{ color: d3roPalette.text.label, fontSize: '12px', fontFamily: 'monospace' }}>2026-08-29</Typography>
<Typography sx={{ color: d3roPalette.text.label, fontSize: '12px', fontFamily: 'monospace' }}>{DESKTOP_RELEASE_DATE}</Typography>
</Box>
<Button
component="a"

View file

@ -139,7 +139,7 @@ export function Sidebar(): React.ReactElement {
</PhosphorText>
</Box>
<Box sx={{ fontSize: '10px', fontFamily: 'ui-monospace, monospace', color: d3roPalette.text.muted }}>
v1.1.0
v1.2.0
</Box>
</Box>

View file

@ -4,7 +4,10 @@
// 설치 파일은 canonical Forgejo feed에서만 배포한다. 웹/사이트 빌드 산출물에는
// 설치 바이너리가 포함되지 않으므로 `/releases/...` 로컬 경로는 배포 환경에서 404다.
export const DESKTOP_VERSION = '1.1.0'
export const DESKTOP_VERSION = '1.2.0'
/** 릴리스 게시일. `release/product-version.json`의 releaseDate와 같아야 한다. */
export const DESKTOP_RELEASE_DATE = '2026-09-16'
const FORGEJO_ORIGIN = 'https://git.chanpaca.net'
const FORGEJO_OWNER = 'yunchan'

22
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "d3ro-voice-monorepo",
"version": "1.1.0",
"version": "1.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "d3ro-voice-monorepo",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"workspaces": [
"apps/desktop",
@ -25,7 +25,7 @@
},
"apps/admin": {
"name": "@d3ro/admin",
"version": "1.1.0",
"version": "1.2.0",
"dependencies": {
"@d3ro/api-client": "*",
"@d3ro/core": "*",
@ -109,7 +109,7 @@
},
"apps/desktop": {
"name": "@d3ro/desktop",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*",
@ -156,7 +156,7 @@
},
"apps/mobile-rn": {
"name": "@d3ro/mobile-rn",
"version": "1.1.0",
"version": "1.2.0",
"extraneous": true,
"dependencies": {
"@d3ro/api-client": "file:../../packages/api-client",
@ -209,7 +209,7 @@
},
"apps/web": {
"name": "@d3ro/web",
"version": "1.1.0",
"version": "1.2.0",
"dependencies": {
"@d3ro/api-client": "*",
"@d3ro/core": "*",
@ -20397,7 +20397,7 @@
},
"packages/api-client": {
"name": "@d3ro/api-client",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*",
@ -20414,7 +20414,7 @@
},
"packages/core": {
"name": "@d3ro/core",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"dependencies": {
"docx": "^9.6.1"
@ -20425,7 +20425,7 @@
},
"packages/i18n": {
"name": "@d3ro/i18n",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"devDependencies": {
"@types/react": "^19.0.0"
@ -20436,7 +20436,7 @@
},
"packages/ui": {
"name": "@d3ro/ui",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"dependencies": {
"@d3ro/core": "*"
@ -20456,7 +20456,7 @@
},
"packages/ui-native": {
"name": "@d3ro/ui-native",
"version": "1.1.0",
"version": "1.2.0",
"license": "MIT",
"devDependencies": {
"@types/react": "*"

View file

@ -1,6 +1,6 @@
{
"name": "d3ro-voice-monorepo",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice — 멀티플랫폼 AI 음성 어시스턴트 (Monorepo)",
"author": "D3RO",

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/api-client",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice API 클라이언트 — Supabase 래퍼 (web/desktop/mobile 공유)",
"license": "MIT",

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/core",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice 공유 비즈니스 로직 — 타입, 에러, IPC 채널, 상수, 유틸",
"license": "MIT",

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/i18n",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice 공유 i18n — 12개 locale, 타입 안전 키, Context, 포맷 유틸",
"license": "MIT",

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/ui-native",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice React Native DS — MetalCard/PhosphorText/Led/WaveBars etc.",
"license": "MIT",

View file

@ -1,6 +1,6 @@
{
"name": "@d3ro/ui",
"version": "1.1.0",
"version": "1.2.0",
"private": true,
"description": "D3RO Voice 공유 UI — 디자인 시스템 컴포넌트 + 테마 토큰 + CSS 변수 맵",
"license": "MIT",

View file

@ -1,8 +1,8 @@
{
"schemaVersion": 1,
"version": "1.1.0",
"androidVersionCode": 1010001,
"iosBuildNumber": 1010001,
"releaseDate": "2026-08-29",
"version": "1.2.0",
"androidVersionCode": 1020001,
"iosBuildNumber": 1020001,
"releaseDate": "2026-09-16",
"desktopLicensePublicKeyId": "5c52b765135ee2531c681b53cd4dc0e96fff8737f496c0b04ba8334fc81a887f"
}

View file

@ -1,12 +1,12 @@
{
"name": "d3ro-voice-site",
"version": "1.1.0",
"version": "1.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "d3ro-voice-site",
"version": "1.1.0",
"version": "1.2.0",
"dependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0"

View file

@ -1,7 +1,7 @@
{
"name": "d3ro-voice-site",
"private": true,
"version": "1.1.0",
"version": "1.2.0",
"type": "module",
"scripts": {
"dev": "vite --port 5199 --host",

View file

@ -5,7 +5,10 @@
// NAS 배포는 바이너리를 포함하지 않으므로 `/releases/...` 같은 로컬 경로는
// 실제 배포 환경에서 404가 된다.
export const DESKTOP_VERSION = '1.1.0'
export const DESKTOP_VERSION = '1.2.0'
/** 릴리스 게시일. `release/product-version.json`의 releaseDate와 같아야 한다. */
export const DESKTOP_RELEASE_DATE = '2026-09-16'
const FORGEJO_ORIGIN = 'https://git.chanpaca.net'
const FORGEJO_OWNER = 'yunchan'