Commit Graph

40 Commits

Author SHA1 Message Date
Phantom
4611e2c058
feat(mcp): add shouldConfig flag and i18n support for builtin MCPServer description (#8440)
* feat(mcp): 添加shouldConfig字段用于标记需要配置的服务器

在MCPServer接口中添加shouldConfig字段,用于标识需要额外配置的服务器
修改BuiltinMCPServersSection组件,根据shouldConfig字段显示配置提示标签
更新内置服务器列表,为需要配置的服务器添加shouldConfig字段

* feat(i18n): 添加内置服务器描述的多语言支持

* feat(mcp): 为内置MCP服务器添加国际化描述支持

将内置MCP服务器的描述从硬编码改为通过i18n获取,支持多语言显示

* feat(i18n): 添加内置MCP服务器的多语言描述

为内置MCP服务器添加多语言描述文本,包括中文、英文、日文等语言版本
同时优化mcp.ts中的描述文本引用方式,直接使用完整路径而非拼接前缀

* feat(mcp): 为内置服务器添加默认描述并修复无效描述显示

为内置MCP服务器添加默认描述字段,并在UI中使用国际化文本替换硬编码的"Invalid description"。同时为所有语言环境添加"no"键作为默认描述文本。
2025-07-26 23:38:32 +08:00
George·Dong
81b6350501
feat(export): citation export control (#8519)
* feat(export): add option to exclude citations in Markdown export

* feat(export): add option to standardize citations in Markdown export

* chore(i18n): sync i18n

* test(export): add processCitations utility tests for citation handling

* refactor(export): improve citation processing and optimize markdown format

* test(export): clarify markdown formatting expectations in message tests
2025-07-26 17:30:38 +08:00
Phantom
b2de157c3c
fix(i18n): add i18n for data restore (#8533)
fix(i18n): 添加备份解压成功的多语言翻译

在备份恢复流程中增加解压成功状态的多语言翻译,并定义进度阶段的类型
2025-07-26 16:17:53 +08:00
Phantom
e7ad3e6935
feat(translate): add Ukrainian (#8528)
feat(i18n): 添加乌克兰语支持
2025-07-26 11:58:33 +08:00
one
08c5f82a04
refactor(Knowledge): simplify dimension settings, support base migration (#8315)
* refactor(knowledge): simplify dimension settings, support base migration

Embedding dimension
- remove 'auto set dimension', let the user take control
- reuse findModelById
- improve error messages for VoyageEmbeddings

Knowledgebase migration
- enable migration when model or dimension changes
- add knowledgeThunk to reuse code

KnowledgeSettings
- unify UI for AddKnowledgeBasePopup and EditKnowledgeBasePopup
- refactor KnowledgeSettings, split it to smaller components

Tests:
- knowledgeThunk
- InputEmbeddingDimension
- KnowledgeBaseFormModal
- GeneralSettingsPanel
- AdvancedSettingsPanel
- InfoTooltip

Misc.
- add InfoTooltip
- remove MemoriesSettingsModal

* fix: i18n and vitest config
2025-07-26 10:54:06 +08:00
Phantom
6cc29c5005
chore(i18n): forced nested structure to support i18n ally (#8457)
* chore(i18n): 更新i18n文件为嵌套结构以适应插件

* feat(i18n): 添加自动翻译脚本处理待翻译文本

添加自动翻译脚本auto-translate-i18n.ts,用于处理以[to be translated]开头的待翻译文本
在package.json中添加对应的运行命令auto:i18n

* chore(i18n): 更新嵌套结构

* chore(i18n): 更新多语言翻译文件并改进翻译逻辑

更新了多个语言的翻译文件,替换了"[to be translated]"标记为实际翻译内容
改进auto-translate-i18n.ts中的翻译逻辑,添加错误处理和日志输出
部分数组格式的翻译描述自动改为对象格式

* fix(i18n): 修复嵌套结构检查并改进错误处理

添加对嵌套结构中使用点符号的检查,确保使用严格嵌套结构
改进错误处理,在检查失败时输出更清晰的错误信息

* fix(测试): 更新下载失败测试中的翻译键名

* test(下载): 移除重复的下载失败翻译并更新测试

* feat(eslint): 添加规则,警告不建议在t()函数中使用模板字符串

* style: 使用单引号替换模板字符串中的反引号

* docs(.vscode): 添加i18n-ally扩展推荐到vscode配置

* fix: 在自动翻译脚本中停止进度条显示

确保在脚本执行完成后正确停止进度条,避免控制台输出混乱

* fix(i18n): 修复模型列表添加确认对话框的翻译键名

更新多语言文件中模型管理部分的翻译结构,将"add_listed"从字符串改为包含"confirm"和"key"的对象
同时修正EditModelsPopup组件中对应的翻译键引用

* chore: 注释掉i18n-ally命名空间配置

* docs: 添加国际化(i18n)最佳实践文档

添加中英文双语的技术文档,详细介绍项目中的i18n实现方案、工具链和最佳实践
包含i18n ally插件使用指南、自动化脚本说明以及代码规范要求

* docs(国际化): 更新i18n文档中的键名格式示例

将文档中错误的flat格式示例从下划线命名改为点分隔命名,以保持一致性

* refactor(i18n): 统一翻译键名从.key后缀改为.label后缀

* chore(i18n): sort

* refactor(locales): 使用 Object.fromEntries 重构 locales 对象

* feat(i18n): 添加机器翻译的语言支持

新增希腊语、西班牙语、法语和葡萄牙语的机器翻译支持,并调整语言资源加载顺序
2025-07-25 17:36:04 +08:00
one
0453402242
chore(languages): update languages with a script (#8445)
* chore(languages): update languages with a script

* refactor: update languages and merge it into constants

* refactor: add usf and ush
2025-07-24 15:57:09 +08:00
Phantom
52c087fd22
chore(i18n): improve i18n translation scripts (#8441)
* refactor(i18n): 迁移i18n脚本至TypeScript并添加进度条

- 将check-i18n.js和sync-i18n.js迁移为TypeScript版本
- 添加cli-progress依赖以显示翻译进度条
- 更新package.json中的i18n相关脚本
- 移除不再使用的sort.js工具文件

* refactor(i18n): 重构翻译同步脚本以支持多目录

将翻译文件目录变量重命名为更清晰的名称,并添加对translate目录的支持
优化文件路径处理逻辑,使用path.basename获取文件名

* chore: update i18n

* docs(i18n): 更新翻译目录的README说明

更新README文件以更清晰地说明翻译文件的生成方式和使用注意事项

* style(DMXAPISettings): 添加关于国际化的FIXME注释

在PlatformOptions上方添加注释,提醒此处需要国际化处理
2025-07-24 10:21:48 +08:00
SuYao
84e78560f4
refactor: streamline system prompt handling and introduce built-in tools (#7714)
* refactor: streamline system prompt handling and introduce built-in tools

- Removed the static SYSTEM_PROMPT_THRESHOLD from BaseApiClient and replaced it with a constant in constant.ts.
- Updated API clients (AnthropicAPIClient, GeminiAPIClient, OpenAIApiClient, OpenAIResponseAPIClient) to simplify system prompt logic by eliminating unnecessary checks and using new utility functions for prompt building.
- Introduced built-in tools functionality, including a new 'think' tool, to enhance the tool usage experience.
- Refactored ApiService to integrate built-in tools and adjust system prompt modifications accordingly.
- Added utility functions for managing built-in tools in mcp-tools.ts and created a new tools index for better organization.

* refactor(tests): update prompt tests to use new buildSystemPromptWithTools function

- Renamed the function used in prompt tests from buildSystemPrompt to buildSystemPromptWithTools to reflect recent changes in prompt handling.
- Adjusted test cases to ensure compatibility with the updated function, maintaining the integrity of user prompt handling.

* refactor(ApiService, mcp-tools, prompt): enhance tool usage and prompt handling

- Updated ApiService to improve system prompt construction based on tool usage mode, ensuring clearer logic for tool integration.
- Enhanced mcp-tools with a new response structure for the 'think' tool, allowing for better handling of tool responses.
- Expanded prompt utility functions to include detailed instructions for using the 'think' tool, improving user guidance.
- Refactored tests to validate new prompt building logic and tool integration, ensuring robust functionality across scenarios.

* fix: enhance prompt

* feat(McpToolChunkMiddleware): enhance tool call handling with built-in tool support

- Added support for built-in tools in the parseAndCallTools function, allowing for conditional tool invocation based on tool type.
- Implemented a check to return early if the tool call response is null, improving error handling.
2025-07-23 17:27:39 +08:00
SuYao
d0649d29fb
feat(MCP): outputschema (#7881)
* feat(MCP): outputschema

* fix: mark outputschema optional

* fix: upgrade zod v4
2025-07-23 10:12:00 +08:00
alickreborn0
3b123863b5
feat: Support LLM Tracing by Alibaba Cloud EDAS product (#7895)
* feat: add tracing modules

* Initial commit

* fix: problem

* fix: update trace web

* fix: trace view

* fix: trace view

* fix: fix some problem

* fix: knowledge and mcp trace

* feat: save trace to user home dir

* feat: open trace with electron browser window

* fix: root trace outputs

* feat: trace internationalization and add trace icon

* feat: add trace title

* feat: update

* package.json添加windows运行script

* feat: update window title

* fix: mcp trace param

* fix: error show

* fix: listTool result

* fix: merge error

* feat: add stream usage and response

* feat: change trace stream

* fix: change stream adapter

* fix: span detail show problem

* fix: process show by time

* fix: stream outputs

* fix: merge problem

* fix: stream outputs

* fix: output text

* fix: EDAS support text

* fix: change trace footer style

* fix: topicId is loaded multiple times

* fix: span reload problem & attribute with cache

* fix: refresh optimization

* Change Powered by text.

* resolve upstream conflicts

* fix: build-time type exception

* fix: exceptions not used when building

* fix: recend no trace

* fix: resend trace list

* fix: delete temporary files

* feat: trace for resend

* fix: trace for resend message with edit

* fix: directory structure and construction method of mcp-trace

* fix: change CRLF to LF

* fix: add function call outputs

* Revert "fix: change CRLF to LF"

* fix: reorganize multi-model display

* fix: append model trace binding topic

* fix: some problems

* fix: code optimization

* fix: delete async

* fix: UI optimization

* fix: sort import

---------

Co-authored-by: 崔顺发 <csf01409784@alibaba-inc.com>
Co-authored-by: 管鑫荣 <gxr01409783@alibaba-inc.com>
2025-07-20 14:53:35 +08:00
kangfenmao
559fcecf77 refactor(CodeBlockView): replace HtmlArtifacts component with HtmlArtifactsCard
- Removed the obsolete HtmlArtifacts component and its associated logic.
- Introduced the new HtmlArtifactsCard component to enhance the rendering of HTML artifacts.
- Updated the CodeBlockView to utilize HtmlArtifactsCard, improving maintainability and user experience.
- Added a new HtmlArtifactsPopup component for better HTML content preview and editing capabilities.
- Enhanced localization by adding translation keys for HTML artifacts in multiple languages.
2025-07-10 02:45:32 +08:00
kangfenmao
074ba0ae05 feat(i18n): add "Open Logs" button translations for multiple languages
- Introduced new translation keys for the "Open Logs" button in various languages (en-us, ja-jp, ru-ru, zh-cn, zh-tw, el-gr, es-es, fr-fr, pt-pt).
- Updated the DataSettings component to include a button for opening application logs, enhancing user accessibility to log files.
2025-07-09 19:22:57 +08:00
kangfenmao
4a8a5e8428 feat(i18n): enhance localization for GitHub Copilot settings
- Added new translation keys for error messages and steps in the GitHub Copilot authentication process across multiple languages (en-us, ja-jp, ru-ru, zh-cn, zh-tw).
- Updated the GitHubCopilotSettings component to reflect the new steps for user guidance during the authentication process.
- Improved user experience by providing detailed descriptions and success/error messages related to the authorization flow.
2025-07-09 19:07:32 +08:00
kangfenmao
7237ba34db docs: short i18n keys 2025-07-09 17:26:42 +08:00
Wang Jiyuan
bd87b8a002
feat: use variables in topic naming and improve default prompt (#7083)
* feat: use variables in topic naming

* feat: use structured conversation string

* feat: add i18n

* feat: add i18n

* feat: implement summaries for other providers

* fix: adjust new version

* feat: Structure the conversation as a JSON string when naming the topic

* fix: improve logic

* fix: improve prompts

* update fetchMessageSummary
2025-06-15 22:40:37 +08:00
Wang Jiyuan
c9f12c2e49
feat: add prompt variable "username" (#7174) 2025-06-14 13:08:32 +08:00
kangfenmao
e029159067 Revert "fix: qwen3 cannot name a topic (#6722)"
This reverts commit 389f750d7b.
2025-06-11 20:31:24 +08:00
Guscccc
7e54c465b1
feat: add plain text copy functionality for messages and topics. 添加了复制纯文本的功能(去除Markdown格式符号) (#5965)
* feat: add plain text copy functionality for messages and topics.

* refactor: move minapp settings to minapp page

* fix: add success message after copying topic and message as text

* fix: refactor test imports and add mocks for translation and window.message

---------

Co-authored-by: Guscccc <Augustus.Li@outlook.com>
Co-authored-by: kangfenmao <kangfenmao@qq.com>
Co-authored-by: 自由的世界人 <3196812536@qq.com>
2025-06-11 17:23:35 +08:00
Wang Jiyuan
cd8c5115df
Feat: Allows setting the vector dimension of the knowledge base embedding model (#7025) 2025-06-11 11:52:15 +08:00
Wang Jiyuan
3ee8186f96
Fix: bubble-style unnecessary menu background (Plan D) (#7026)
* fix: bubble-style  unnecessary menu background

* fix: show divider in message only in plain mode

* fix: bubble user message style in dark mode

* fix: action button hover style

* refactor: The rendering position of the message menbar is determined by the settings

* fix: bubble style assistant message token usage left align

* fix: bubble style

* fix: bubble style

* fix: text color and bubble edit

* fix: bubble editing

* fix: bubble editing

* fix: bubble editor

* fix: editor width

* fix: remove redundant tokens usage

* fix: not unified token font size and color

* fix: unexpected display behavior in plain mode

* fix: info style

* fix: bubble style

* fix: Style fixes for better compatibility

* fix: bubble style

* fix: Move the menu of the last message to the outside

* fix: bubble style

* fix: why this happened?

* feat: add description for messages divider in settings

* fix: 谁想出来的上下margin不一样还是神秘数字

* fix: new context style
2025-06-10 18:13:11 +08:00
Wang Jiyuan
e13b136484
feat: add prompt variables description (#6991)
* feat: add prompt variables description

* fix: remove comment
2025-06-09 10:41:26 +08:00
kangfenmao
3cb34d30a9 refactor: remove isPreset messages and assistant.messages 2025-06-06 15:54:32 +08:00
beyondkmp
cc2810b117
feat(AppUpdater): implement localized update dialog (#6742)
feat(AppUpdater): implement localized update dialog with new translations for multiple languages

Co-authored-by: beyondkmp <beyondkmkp@gmail.com>
2025-06-03 12:34:12 +08:00
Wang Jiyuan
389f750d7b
fix: qwen3 cannot name a topic (#6722)
* fix: qwen3 cannot name a topic

* feat: Display error message when topic naming fails
2025-06-02 23:18:41 +08:00
beyondkmp
9f49ce6dc9
refactor: Theme improve (#6619)
* refactor(IpcChannel): rename theme change event and streamline theme handling

- Updated the IpcChannel enum to rename 'theme:change' to 'theme:updated' for clarity.
- Refactored theme handling in ipc.ts to utilize a new ThemeService, simplifying theme updates and event broadcasting.
- Adjusted various components to consistently use the updated theme variable naming convention.

* refactor(Theme): standardize theme handling across components

- Updated theme retrieval to use 'actualTheme' instead of 'theme' for consistency.
- Changed default theme setting from 'auto' to 'system' in ConfigManager and related components.
- Adjusted theme handling in various components to reflect the new naming convention and ensure proper theme application.

* fix(Theme): improve theme handling and migration logic

- Added a console log for debugging theme transitions in ThemeProvider.
- Updated ThemeService to ensure theme is set correctly when changed.
- Incremented version number in store configuration to reflect changes.
- Enhanced migration logic to convert 'auto' theme setting to 'system' for better consistency.

* feat(Theme): add getTheme IPC channel and improve theme management

- Introduced a new IPC channel 'App_GetTheme' to retrieve the current theme.
- Updated ThemeService to include a method for getting the current theme.
- Refactored theme initialization in WindowService to ensure proper theme setup.
- Enhanced theme handling in various components to utilize the new theme retrieval method.

* fix(ThemeService): improve theme initialization and retrieval logic

- Set default theme to 'system' and updated theme initialization to handle legacy versions.
- Enhanced getTheme method to return both the current theme and the actual theme based on nativeTheme settings.
- Removed redundant initTheme method from ThemeService and ensured themeService is imported in WindowService for proper initialization.
- Updated ThemeProvider to handle the new structure of the theme retrieval response.

* refactor(Settings): remove theme management from settings

- Eliminated theme-related state and actions from the settings slice.
- Updated useSettings hook to remove theme handling functionality.
- Cleaned up imports by removing unused ThemeMode type.

* refactor(Theme): update theme retrieval in GeneralSettings and HomeWindow

- Restored theme retrieval in GeneralSettings and HomeWindow components.
- Adjusted imports to ensure proper theme management.
- Updated theme condition checks to utilize the ThemeMode enumeration for consistency.

* refactor(Theme): update theme terminology and retrieval in Sidebar and DisplaySettings

- Changed theme label from 'auto' to 'system' in multiple localization files for consistency.
- Updated Sidebar component to reflect the new theme terminology.
- Adjusted DisplaySettings to display the updated theme label.

* refactor(ThemeProvider): initialize theme state from API response

* refactor(ThemeProvider): reset theme state to default values and streamline initialization logic

* refactor(Theme): enhance theme management by incorporating 'system' mode and updating state handling

- Updated ThemeService to include 'system' as a valid theme option.
- Refactored ThemeProvider to utilize useSettings for theme state management and ensure proper initialization.
- Adjusted useSettings to include theme setting functionality.
- Modified settings slice to manage theme state effectively.

* refactor(WindowService, ThemeProvider, Messages, HomeWindow): streamline imports and clean up unused variables

- Removed duplicate import of ThemeService in WindowService.
- Adjusted import order in ThemeProvider for clarity.
- Simplified useSettings destructuring in Messages component.
- Cleaned up unused ThemeMode import in HomeWindow.

* refactor(Theme): standardize theme usage across components by replacing 'actualTheme' with 'theme'

- Updated components to consistently use 'theme' instead of 'actualTheme' for better clarity and maintainability.
- Adjusted ThemeProvider to reflect changes in theme state management.
- Ensured all relevant components are aligned with the new theme structure.

* refactor(Theme): remove unused theme retrieval functionality

- Eliminated the App_GetTheme channel and associated methods from ThemeService and IPC handling.
- Updated components to use the new theme structure, replacing 'actualTheme' with 'settedTheme' for consistency.
- Ensured all theme-related functionalities are streamlined and aligned with the latest changes.

* refactor(Theme): update theme variable usage in ChatFlowHistory and GeneralSettings

- Replaced 'theme' with 'settedTheme' in ChatFlowHistory for consistency with recent theme structure changes.
- Simplified theme destructuring in GeneralSettings by removing unused 'themeMode' variable.
- Ensured alignment with the latest theme management updates across components.

* refactor(Theme): update theme variable in GeneralSettings component

- Replaced 'themeMode' with 'theme' in GeneralSettings for consistency with recent theme structure changes.
- Ensured alignment with the latest theme management updates across components.

---------

Co-authored-by: beyondkmp <beyondkmkp@gmail.com>
2025-05-30 15:10:58 +08:00
kangfenmao
a6bb58bb45 feat(DisplaySettings): add theme color presets and zoom settings
- Introduced a new color selection feature in DisplaySettings, allowing users to choose from predefined theme color presets.
- Added a dedicated section for zoom settings in the DisplaySettings component, enhancing user customization options.
- Updated localization files to include new zoom settings titles in multiple languages.
2025-05-29 15:35:32 +08:00
Alain
2e8cbdc4aa
fix(provider): update Qiniu's name and logo, fix gitee typo (#6593)
* fix(provider): update Qiniu's name and logo

* fix(provider): typo
2025-05-29 13:32:46 +08:00
Wei
2d7caf9fc5 feat: add new model provider BurnCloud 2025-05-20 13:55:57 +08:00
Rudbeckia.hirta.L
e9ab193a24
feat: support skipping files during backup(slim backup) (#6075)
* feat: support skipping files during backup

* 修复 lint

* 修复 lint

---------

Co-authored-by: daisai.1 <daisai.1@bytedance.com>
2025-05-17 19:20:40 +08:00
George Zhao
138ab1c5b7
feat(i18n): 更新机器翻译多语言,使用Qwen3 236b进行机器翻译。 (#5840)
feat(i18n): update Portuguese translations for import/export features, assistant settings, and mini app configurations

Co-authored-by: George Zhao <georgezhao@SKJLAB>
2025-05-10 23:40:57 +08:00
shiquda
62b6584d65
feat: support preview of MCP call results (#5236) 2025-04-25 08:59:41 +08:00
kangfenmao
6e91066e5d refactor: remove search enhanceMode 2025-04-21 11:35:06 +08:00
缘生
9b21c334cc
feat: implement maximum backups feature in WebDAV settings (#5060)
* feat: implement maximum backups feature in WebDAV settings

- Add maximum backups feature to WebDAV settings

Signed-off-by: ysicing <i@ysicing.me>

* refactor: refactor backup file management for device-specific handling

- Change the order of hostname and device type in the backup file name
- Add filtering for backup files to manage device-specific backups
- Update logic to delete the oldest backup files based on the specific device count

Signed-off-by: ysicing <i@ysicing.me>

---------

Signed-off-by: ysicing <i@ysicing.me>
2025-04-19 10:22:03 +08:00
kangfenmao
72e18fbcc1 feat(MCPSettings): enhance MCP server management and localization updates
- Added a new SVG icon for npm in the MCP settings.
- Introduced a custom hook `useMCPServer` for retrieving a specific MCP server by ID.
- Updated localization files to include new error messages for tool and prompt loading in English, Japanese, Russian, and Chinese.
- Refactored MCP settings components for improved navigation and state management, including the use of React Router for routing.
- Enhanced the Npx search functionality and UI for better user experience.
2025-04-12 19:47:36 +08:00
kangfenmao
46c7df6f5b refactor(GraphRAG): Remove GraphRAG related files and references from the project 2025-04-06 08:11:10 +08:00
Hobee Liu
8b9929cc7b
feat: add chat navigation bar close (#4019)
* feat(聊天导航): 新增关闭、置顶和置底按钮并更新图标

在聊天导航组件中新增了关闭、置顶和置底按钮,并更新了相关图标以提升用户体验。同时,添加了点击关闭按钮时隐藏导航的功能。

* feat(消息导航): 添加手动关闭状态以避免误触

在 ChatNavigation 组件中添加 `manuallyClosedUntil` 状态,用于在用户手动关闭导航后,1分钟内不响应鼠标靠近事件。这可以防止用户在操作时误触导航栏,提升用户体验。

* refactor(ChatNavigation): 重命名函数并添加滚动处理逻辑

重命名 handleChatNavigationClick 为 handleCloseChatNavigation 以提高代码可读性,并添加 handleScrollToTop 和 handleScrollToBottom 函数以处理滚动逻辑

* fix: 修复滚动到顶部时位置不正确的问题

将 `scrollToTop` 函数中的 `top` 值从 `0` 改为 `-container.scrollHeight`,以确保滚动到顶部时位置正确

* docs(i18n): 添加新的翻译字符串以支持更多操作

在多个语言文件中添加了“回到顶部”、“回到底部”和“关闭”的翻译字符串,以支持更多用户界面操作。

* refactor: 移除未使用的变量以简化代码
```

解释:
- **类型**: `refactor`,因为这是代码重构,移除了未使用的变量,没有改变功能行为。
- **描述**: 移除了未使用的变量以简化代码,符合简洁和可维护性的原则。
2025-04-01 16:17:57 +08:00
kangfenmao
29b5ba787b refactor: mcp service 2025-03-28 04:24:10 +08:00
hobee
0d612cb827 feat(i18n): 在侧边栏添加隐藏小工具的翻译
为多种语言添加了“隐藏小工具”的翻译,以支持新的功能需求。
2025-03-25 00:32:39 +08:00
kangfenmao
f9941a6858 feat(i18n): add machine translations for Greek, Spanish, French, and Portuguese
- Updated the translation script to output machine-generated translations for Greek, Spanish, French, and Portuguese.
- Adjusted file paths for translation outputs and ensured proper formatting in the translation prompts.
- Added a README file to indicate that the translations are machine-generated and should not be edited.
2025-03-22 23:41:17 +08:00