Prechádzať zdrojové kódy

release: 升级版本至 3.2.1,发布大纲独立快速模式、写作模式分别持久化与保存分类修复

Co-authored-by: Cursor <cursoragent@cursor.com>
darknessomi 3 týždňov pred
rodič
commit
5485859c3c

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "qmai",
-  "version": "3.2.0",
+  "version": "3.2.1",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "qmai",
-      "version": "3.2.0",
+      "version": "3.2.1",
       "license": "GPL-3.0-or-later",
       "dependencies": {
         "@base-ui/react": "^1.7.0",

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "qmai",
   "private": true,
-  "version": "3.2.0",
+  "version": "3.2.1",
   "license": "GPL-3.0-or-later",
   "type": "module",
   "scripts": {

+ 1 - 1
src-tauri/Cargo.lock

@@ -5793,7 +5793,7 @@ checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea"
 
 [[package]]
 name = "qmai"
-version = "3.2.0"
+version = "3.2.1"
 dependencies = [
  "arrow-array",
  "arrow-schema",

+ 1 - 1
src-tauri/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "qmai"
-version = "3.2.0"
+version = "3.2.1"
 description = "QMAI - AI writing system for long-form novels"
 authors = ["Mochocyang"]
 edition = "2021"

+ 1 - 1
src-tauri/tauri.conf.json

@@ -1,7 +1,7 @@
 {
   "$schema": "https://schema.tauri.app/config/2",
   "productName": "QMaiWrite",
-  "version": "3.2.0",
+  "version": "3.2.1",
   "identifier": "com.qingmuai.writer",
   "build": {
     "beforeDevCommand": "npm run dev",

+ 1 - 1
src/lib/changelog.spec.ts

@@ -6,7 +6,7 @@ describe("changelog", () => {
     const entries = allChangelog()
     const versions = entries.map((entry) => entry.version)
 
-    expect(versions.slice(0, 3)).toEqual(["3.1.2", "3.1.1", "3.1.0"])
+    expect(versions.slice(0, 3)).toEqual(["3.2.1", "3.2.0", "3.1.9"])
     expect(versions).toContain("3.0.9")
     expect(versions).toContain("2.2.37")
     expect(versions).toContain("2.1.0")

+ 34 - 0
src/lib/changelog.ts

@@ -7,6 +7,23 @@ export interface ChangelogEntry {
   };
 }
 
+const THREE_POINT_TWO_ONE_CHANGELOG: ChangelogEntry = {
+  version: "3.2.1",
+  date: "2026-08-14",
+  highlights: {
+    en: [
+      "[Independent Outline Fast Mode] AI Outline now has its own Fast / Standard switch, separate from chapter writing. Fast mode answers like a normal chat; Standard still runs the full outline workflow.",
+      "[Outline and Chapter Modes Remembered Separately] After restart, each restores its last choice. Changing the outline mode no longer overwrites chapter Fast / Standard / Strict.",
+      "[More Accurate Outline Save Folders] Save type is inferred from the title and your original request, so a chapter outline that mentions volume beats is no longer saved as a volume outline. If the save dialog is missing after generation, a confirmation still appears.",
+    ],
+    zh: [
+      "【大纲独立快速模式】AI 大纲现在有自己的「快速 / 标准」,不再跟写正文共用一套;快速模式像普通对话直接出稿,标准模式仍走完整工作流",
+      "【大纲和正文模式分开记住】重启后各自恢复上次选择,改大纲模式不会把正文的快速/标准/严格改掉",
+      "【大纲保存分类更准】按标题和你说的话判断存到章纲、卷纲等文件夹;章纲里提到「卷纲」也不再存错。生成完如果没弹出保存,会再补一次确认",
+    ],
+  },
+};
+
 const THREE_POINT_TWO_ZERO_CHANGELOG: ChangelogEntry = {
   version: "3.2.0",
   date: "2026-08-14",
@@ -1161,6 +1178,7 @@ function isMergedOnePointRelease(version: string): boolean {
 }
 
 export const CHANGELOG: ChangelogEntry[] = [
+  THREE_POINT_TWO_ONE_CHANGELOG,
   THREE_POINT_TWO_ZERO_CHANGELOG,
   THREE_POINT_ONE_NINE_CHANGELOG,
   THREE_POINT_ONE_EIGHT_CHANGELOG,
@@ -1227,6 +1245,8 @@ export const CHANGELOG: ChangelogEntry[] = [
 ];
 
 export function currentVersionChangelog(version: string): ChangelogEntry[] {
+  if (version === THREE_POINT_TWO_ONE_CHANGELOG.version)
+    return [THREE_POINT_TWO_ONE_CHANGELOG];
   if (version === THREE_POINT_TWO_ZERO_CHANGELOG.version)
     return [THREE_POINT_TWO_ZERO_CHANGELOG];
   if (version === THREE_POINT_ONE_NINE_CHANGELOG.version)
@@ -1332,6 +1352,13 @@ export function currentVersionChangelog(version: string): ChangelogEntry[] {
 
 export function allChangelog(): ChangelogEntry[] {
   return [
+    THREE_POINT_TWO_ONE_CHANGELOG,
+    THREE_POINT_TWO_ZERO_CHANGELOG,
+    THREE_POINT_ONE_NINE_CHANGELOG,
+    THREE_POINT_ONE_EIGHT_CHANGELOG,
+    THREE_POINT_ONE_SEVEN_CHANGELOG,
+    THREE_POINT_ONE_SIX_CHANGELOG,
+    THREE_POINT_ONE_FIVE_CHANGELOG,
     THREE_POINT_ONE_TWO_CHANGELOG,
     THREE_POINT_ONE_ONE_CHANGELOG,
     THREE_POINT_ONE_ZERO_CHANGELOG,
@@ -1377,6 +1404,13 @@ export function allChangelog(): ChangelogEntry[] {
     TWO_POINT_ZERO_CHANGELOG,
     ...CHANGELOG.filter(
       (entry) =>
+        entry !== THREE_POINT_TWO_ONE_CHANGELOG &&
+        entry !== THREE_POINT_TWO_ZERO_CHANGELOG &&
+        entry !== THREE_POINT_ONE_NINE_CHANGELOG &&
+        entry !== THREE_POINT_ONE_EIGHT_CHANGELOG &&
+        entry !== THREE_POINT_ONE_SEVEN_CHANGELOG &&
+        entry !== THREE_POINT_ONE_SIX_CHANGELOG &&
+        entry !== THREE_POINT_ONE_FIVE_CHANGELOG &&
         entry !== THREE_POINT_ONE_TWO_CHANGELOG &&
         !isMergedOnePointRelease(entry.version),
     ),