@lobehub/chat 1.135.1 → 1.135.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.135.2](https://github.com/lobehub/lobe-chat/compare/v1.135.1...v1.135.2)
6
+
7
+ <sup>Released on **2025-10-06**</sup>
8
+
9
+ #### 💄 Styles
10
+
11
+ - **image**: Optimize UX and fix fal pricing.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Styles
19
+
20
+ - **image**: Optimize UX and fix fal pricing, closes [#9592](https://github.com/lobehub/lobe-chat/issues/9592) ([dddbfcd](https://github.com/lobehub/lobe-chat/commit/dddbfcd))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
5
30
  ### [Version 1.135.1](https://github.com/lobehub/lobe-chat/compare/v1.135.0...v1.135.1)
6
31
 
7
32
  <sup>Released on **2025-10-06**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,9 @@
1
1
  [
2
+ {
3
+ "children": {},
4
+ "date": "2025-10-06",
5
+ "version": "1.135.2"
6
+ },
2
7
  {
3
8
  "children": {
4
9
  "improvements": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.135.1",
3
+ "version": "1.135.2",
4
4
  "description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -39,6 +39,24 @@ export const qwenEditParamsSchema: ModelParamsSchema = {
39
39
  width: { default: 1328, max: 1536, min: 512, step: 1 },
40
40
  };
41
41
 
42
+ export const huanyuanImageParamsSchema: ModelParamsSchema = {
43
+ cfg: { default: 7.5, max: 20, min: 1, step: 0.1 },
44
+ prompt: { default: '' },
45
+ seed: { default: null },
46
+ size: {
47
+ default: 'square_hd',
48
+ enum: [
49
+ 'square_hd',
50
+ 'square',
51
+ 'portrait_4_3',
52
+ 'portrait_16_9',
53
+ 'landscape_4_3',
54
+ 'landscape_16_9',
55
+ ],
56
+ },
57
+ steps: { default: 28, max: 50, min: 1, step: 1 },
58
+ };
59
+
42
60
  const falImageModels: AIImageModelCard[] = [
43
61
  {
44
62
  description:
@@ -84,23 +102,7 @@ const falImageModels: AIImageModelCard[] = [
84
102
  displayName: 'HunyuanImage 3.0',
85
103
  enabled: true,
86
104
  id: 'fal-ai/hunyuan-image/v3',
87
- parameters: {
88
- cfg: { default: 7.5, max: 20, min: 1, step: 0.1 },
89
- prompt: { default: '' },
90
- seed: { default: null },
91
- size: {
92
- default: 'square_hd',
93
- enum: [
94
- 'square_hd',
95
- 'square',
96
- 'portrait_4_3',
97
- 'portrait_16_9',
98
- 'landscape_4_3',
99
- 'landscape_16_9',
100
- ],
101
- },
102
- steps: { default: 28, max: 50, min: 1, step: 1 },
103
- },
105
+ parameters: huanyuanImageParamsSchema,
104
106
  pricing: {
105
107
  units: [{ name: 'imageGeneration', rate: 0.1, strategy: 'fixed', unit: 'megapixel' }],
106
108
  },
@@ -197,7 +199,7 @@ const falImageModels: AIImageModelCard[] = [
197
199
  id: 'fal-ai/qwen-image-edit',
198
200
  parameters: qwenEditParamsSchema,
199
201
  pricing: {
200
- units: [{ name: 'imageGeneration', rate: 0.025, strategy: 'fixed', unit: 'image' }],
202
+ units: [{ name: 'imageGeneration', rate: 0.03, strategy: 'fixed', unit: 'megapixel' }],
201
203
  },
202
204
  releasedAt: '2025-08-19',
203
205
  type: 'image',
@@ -13,14 +13,15 @@ const ImageConfigSkeleton = memo(() => {
13
13
  <Flexbox gap={32} padding="12px 12px 0 12px" style={{ height: '100%' }}>
14
14
  {/* Model Selection */}
15
15
  <Flexbox gap={8}>
16
- <Skeleton.Input size="small" style={{ width: 100 }} />
17
- <Skeleton.Input size="large" style={{ width: '100%' }} />
16
+ <Skeleton.Input active size="small" style={{ width: 100 }} />
17
+ <Skeleton.Input active size="large" style={{ width: '100%' }} />
18
18
  </Flexbox>
19
19
 
20
20
  {/* Image Upload Area */}
21
21
  <Flexbox gap={8}>
22
- <Skeleton.Input size="small" style={{ width: 60 }} />
22
+ <Skeleton.Input active size="small" style={{ width: 60 }} />
23
23
  <Skeleton.Node
24
+ active
24
25
  style={{
25
26
  borderRadius: 8,
26
27
  height: 100,
@@ -32,16 +33,16 @@ const ImageConfigSkeleton = memo(() => {
32
33
  {/* Parameter Controls */}
33
34
  {Array.from({ length: 2 }, (_, index) => (
34
35
  <Flexbox gap={8} key={index}>
35
- <Skeleton.Input size="small" style={{ width: 80 }} />
36
- <Skeleton.Input size="default" style={{ width: '100%' }} />
36
+ <Skeleton.Input active size="small" style={{ width: 80 }} />
37
+ <Skeleton.Input active size="default" style={{ width: '100%' }} />
37
38
  </Flexbox>
38
39
  ))}
39
40
 
40
41
  {/* Image Number Control (Sticky at bottom) */}
41
42
  <Flexbox padding="12px 0" style={{ marginTop: 'auto' }}>
42
43
  <Flexbox gap={8}>
43
- <Skeleton.Input size="small" style={{ width: 60 }} />
44
- <Skeleton.Input size="default" style={{ width: '100%' }} />
44
+ <Skeleton.Input active size="small" style={{ width: 60 }} />
45
+ <Skeleton.Input active size="default" style={{ width: '100%' }} />
45
46
  </Flexbox>
46
47
  </Flexbox>
47
48
  </Flexbox>