YANG QIA
250efcd6ed
fix(data-vi): filterting error occurs when the data source name contains a hyphen -
( #6231 )
2025-02-17 13:34:44 +08:00
nocobase[bot]
0ef52caf6f
Merge branch 'main' into next
2025-01-16 13:17:10 +00:00
xilesun
cf26388199
fix(data-vi): issue of filtering datetime fields
2025-01-16 21:16:15 +08:00
YANG QIA
f80e2107a1
fix(data-vi): height issue ( #5879 )
2024-12-13 10:05:15 +08:00
YANG QIA
de323cf6f8
fix(data-vi): allows to use foreign keys in query configuration of charts ( #5869 )
2024-12-12 15:56:00 +08:00
YANG QIA
ce74a77e96
feat(data-vi): optimize ( #5299 )
...
* refactor(data-vi): add echarts
* fix: echart
* feat: echarts
* chore: add migration
* feat: update
* feat: dark theme
* feat: add configuration
* chore: update
* chore: update
* fix: bug
* chore: update
* chore: update
* fix: test
* fix: build
* chore: update
* chore: locale
2024-10-08 20:15:00 +08:00
YANG QIA
8992bb6a99
fix(data-vi): support for formatting dateOnly
, datetimeNoTz
, unixTimestamp
fields in chart dimension configuration ( #5261 )
...
* fix(data-vi): support for formatting dateOnly, unixTimestamp fields in chart dimension configuration
* fix: test
* fix: timezone
* fix: test
* fix: test
2024-09-13 13:24:29 +08:00
YANG QIA
a04aeb17e6
feat(data-vi): support for adding chart blocks in popups/drawers/sub-pages ( #5248 )
2024-09-11 10:17:01 +08:00
YANG QIA
011bba4529
fix(data-vi): fix incorrect data source context when multiple data sources exist ( #5237 )
2024-09-09 23:24:57 +08:00
Zeke Zhang
67d2f85a99
fix(defaultValue): ignores variable values that do not match the current field ( #5122 )
...
* refactor(variable): refactor parseVariable to support return more context
* fix(defaultValue): ignore no matching value
* fix: make unit tests pass
* chore: fix unit test
2024-08-28 11:53:52 +08:00
Zeke Zhang
c2260c76c0
feat(variable): add a new variable named 'API token' ( #4850 )
...
* feat(variable): add a variable named 'Current token'
* refactor: rename to 'API Token'
* test: add e2e tests
* chore: update unit test
2024-07-09 14:42:12 +08:00
YANG QIA
de0fb26609
fix(data-vi): custom filter conditions are not applied ( #4671 )
...
* fix(data-vi): custom filter conditions are not applied
* fix: default value
2024-06-15 13:35:27 +08:00
YANG QIA
34108f1fcb
feat(data-vi): support for using url params and current role variables ( #4586 )
...
* feat(data-vi): support for using url params and current role variable
* fix: bug
2024-06-07 11:43:11 +08:00
jack zhang
62b2b5c68b
chore: add copyright information to the file header ( #4028 )
...
* fix: add license code
* fix: bug
* fix: bug
* fix: upgrade
* fix: improve
* chore: add copyright information to the file header
* fix: d.ts bug
* fix: bug
* fix: e2e bug
* fix: merge main
---------
Co-authored-by: chenos <chenlinxh@gmail.com>
2024-04-30 15:51:31 +08:00
YANG QIA
2d9ed8d1ff
fix(data-vi): number becomes string after precision transformation ( #4092 )
2024-04-18 20:07:26 +08:00
YANG QIA
91fdd84ea1
feat(data-vi): improved user experiences (refer to pr) ( #4013 )
...
* feat(data-vi): improved user experiences (refer to pr)
* feat: enhance transformers
* fix: transformer
* fix: test
* fix: tooltips
* feat: add format
* chore: add locales and tip
2024-04-12 22:21:15 +08:00
YANG QIA
b111f827ed
feat(data-vi): allows to add charts for mobile client ( #3922 )
...
* feat(data-vi): allows to add charts for mobile client
* fix: remove foreign keys
2024-04-04 00:06:30 +08:00
Zeke Zhang
e572f6645e
refactor: change useProps to x-use-component-props ( #3853 )
...
* refactor: update TableV2 component props
* refactor: update Action component
* refactor: update Filter.Action
* refactor: update FormV2
* refactor: update TableV2.Selector
* refactor: update Details
* refactor: update Action.Link
* refactor: about acl
* refactor: useCustomizeUpdateActionProps
* refactor: update decrator FormV2
* refactor(plugin-data-visualization): useProps to x-use-component-props
* refactor: update Pagination
* refactor: update CalendarV2
* refactor: update TitleField
* refactor: useProps
* refactor: update AssociationFilter.Item
* feat(withDynamicSchemaProps): support function useComponentPropsStr
* refactor: update FormDataTemplates
* chore: fix unit tests
* chore: fix e2e
* refactor: update
* feat(withDynamicSchemaProps): support to use dot
* refactor: update
* refactor: update
* chore: avoid error
2024-04-02 21:38:40 +08:00
YANG QIA
aeb87a8e28
feat(data-vi): data scope for chart filter fields ( #3894 )
...
* feat(data-vi): data scope for chart filter fields
* fix: filter foreign keys
2024-04-01 20:25:34 +08:00
YANG QIA
868a487b2d
fix(data-vi): bug when filtering chart with assocations ( #3867 )
...
* fix(data-vi): bug when filtering chart with assocations
* fix: remote select
2024-03-29 14:13:59 +08:00
YANG QIA
8ca94329ce
fix(data-vi): canvas height keeps increasing when filtering/reseting ( #3849 )
2024-03-28 12:56:25 +08:00
YANG QIA
088f3977a2
feat(data-vi): support multiple data sources ( #3743 )
...
* feat(data-vi): support multiple data sources
* chore: update
* chore: new pr
* chore: update
* chore: merge
* fix: bug
* fix: isDBInstance
* fix: fix T-3624
* fix: fix T-3625
* fix: test
* fix: fix T-3659
* fix: fix T-3660
* fix: backend tests
* fix: acl
* fix: fix T-3680
* fix: build
2024-03-25 14:54:13 +08:00
katherinehhh
af6113c8ef
feat: support for multiple data sources ( #3418 )
...
* refactor: collectionName display with tablePrefix
* fix: bug
* fix: schema toolbar no ddata source (T-3182)
* fix: unit test bug
* fix: useAssociationNames support data source
* chore(RecordProvider_deprecated): add collectionName
* fix: deprecated
* refactor: default value
* refactor: default value
* fix: fastRefresh=false
* style: fix action link style (T-3228)
* fix: should not diaplay Save mode for some Action (T-3217)
* chore: remove group title (T-3194)
* fix: extend collections bug
* chore: transaction
* fix: filter block only current data source (T-3226)
* fix: fix filter block in drawer (T-3224)
* fix: avoid error when editing field (T-3232)
* fix: primary key name in postgres
* chore: test
* chore: test
* refactor: forgin key support select and input
* fix: doc bug
* fix: change duplllicte divier name
* feat: throughScope
* fix: bug
* refactor: local improve
* fix: fix parent record of Add child in tree table (T-3235)
* fix: block template filter by dataSource(T-3234)
* chore: change table primary key
* refactor: index for primarykey & unique
* chore: test
* fix: should not display filter blocks option if no association field (T-3242)
* fix: dataSourceKey
* refactor: sourcekey & forginkey & targetkey limit type
* fix: bug
* chore: test
* fix: upload action
* fix: unit test
* fix: useSourceIdFromParentRecord
* fix: permissions
* fix: oho association field should has default fieldnames
* fix: useSourceIdFromParentRecord
* fix: tableSelectorProvider collection undefined
* fix: bug
* chore: validate association keys
* fix: apply mixin bug
* fix: getPrimaryKey
* fix: bug T-3253
* fix: collection unit test
* chore: validate association keys
* fix: create collection
* fix: getCollection in TableBlockProvider
* refactor: association key in data source manager
* fix: improve doc
* fix(relationshipBlocks): fix sourceId (T-3257,T-3264)
* fix: plugin acl test
* chore: correct field options
* fix: dataScope resource
* fix: improve doc
* fix: appVersion = '<0.20.0-alpha.1'
* refactor: fieldNames
* refactor: primarykey & unique & autoIncrement shuld not support edit in third dataSource
* fix: bug
* fix: gantt block params tree
* fix: style
* fix: wording & icon
* fix: bug
* fix: roles cache
* refactor: calender & express & file collection support preset fields
* fix: decode uri
* refactor: migrate files [wip] (#3584 )
* refactor: migrate blockSettings:table
* refactor: migrate fieldSettings:TableColumn
* refactor: migrate TableBlockInitializer
* fix: fix import path
* refactor: migrate TableActionInitailizers
* refactor: migrate TableColumnInitializers
* refactor: migrate TableActionColumnInitializers
* refactor: migrate TableColumnSchemaToolbar
* refactor: migrate TableSelectorInitializer
* refactor: migrate blockSettings:tableSelector
* refactor(tableSelector): migrate e2e
* refactor(form): migrate e2e
* refactor: migrate FormBlockInitializer
* refactor: migrate CreateFormBlockInitializer
* refactor: migrate RecordFormBlockInitializer
* refactor: migrate blockSettings:createForm
* refactor: rename file name
* refactor: migrate blockSettings:editForm
* refactor: migrate FormActionInitailizers
* refactor: move to a new file
* refactor: migrate formItemInitializers
* refactor: migrate FormItemSchemaToolbar
* refactor: migrate fieldSettings:FormItem
* chore: fix build
* fix: fix weird path error
* fix: rename formActionInitializers
* fix: create collection field
* refactor: throughCollection
* fix: datasources get permission
* fix: throughCollection
* fix: throughCollection
* fix: register initializer components
* refactor: targetkey & source key must be unique
* refactor: targetkey & source key must be unique index
* fix(customRequest): avoid error when clicking button
* chore: error message when add multiple primary keys
* fix: target key in hasMany
* fix: default value should not support edit in outside dataSource
* fix: test
* fix: update associations (#3586 )
* fix: source key
* fix: addAccessor
* fix: updateAssociations
* fix: bugs
* fix: remove test.only
* refactor: migrate RecordReadPrettyFormBlockInitializer
* refactor: migrate singleDataDetailsBlockSettings
* fix(users): filter bug
* refactor: migrate readPrettyFormActionInitializers
* refactor: migrate readPrettyFormItemInitializers
* refactor: migrate DetailsBlockInitializer
* refactor: migrate multiDataDetailsBlockSettings
* feat: validate association key pairs
* chore: default title
* refactor: migrate detailsActionInitializers
* refactor: migrate e2e
* refactor: migrate ListBlockInitializer
* refactor: migrate listBlockSettings
* refactor: migrate listActionInitializers
* refactor: migrate listItemActionInitializers
* fix: create collection
* fix: remove fieldsHistoryRepository.createMany
* test(e2e): fix error message for roles.name
* fix: sync indexes in postgres
* chore: test
* test: acl test
* test(e2e): fix sort error
* refactor: remove useless code
* test: kanban e2e
* fix: load user
* fix: test
* test: fix unit tests
* fix: db.sync
* test: updateRole
* fix: test
* fix: settings and initializer performance improve
* fix: update role resources
* fix: add block
* fix: fix T-3308
* test: fix e2e
* test(e2e): skip fix block
* chore: skip test in sqlite
* fix: change initializer menu key
* test(collectionManager): fix e2e
* refactor: sort field availableTypes
* fix: client core performance optimization
* refactor(GridCard): migrate e2e
* refactor: migrate GridCard
* fix: bug
* refactor: migrate utils
* refactor: migrate filter-form
* fix: change Record to CollectionRecord
* chore: acl migration
* chore: acl migration
* chore: migration of acl
* refactor: migrate Collapse
* chore: error message
* fix: update associations
* chore: update collection search to be case-insensitive
* refactor: migrate Markdown
* fix(WorkflowTodos): x-toolbar typo
* feat: admin change password
* feat: check foreign key && target key value in update associations
* chore: dataSource permission
* refactor: dataSource permission
* fix: acl support data source permission
* fix: fix T-3307
* chore: test
* refactor: locale improve
* chore: locale
* chore: sqlite test config
* chore: create user with roles test
* chore: test
* test: fix mock data to avoid duplication
* chore: test
* fix: load table with tablePrefix
* chore: move action in datasource
* chore: number field to sort field type
* test: optimize dropdown
* chore: upgrade @playwright/test to v1.42.1
* fix: fix invalid path for Windows
* test: fix e2e
* chore: kanban Sort field
* fix: kanban
* fix: kanban
* refactor: create sort in kanban
* refactor: create sort field in kanban
* refactor: locale improve
* refactor: locale improve
* fix: sync with null default value
* refactor: collectionFieldInterfaceSelect
* fix: move action
* fix: update associations
* fix: test case
* chore: test
* test: optimize e2e
* feat: remvoe Duplicate for single details block (T-3195)
* fix(fieldNames): should use primaryKey as default value (T-3322, T-3319)
* fix: use filterTargetKey as fieldNNames.value
* test: fix e2e
* test: fix e2e
* test(kanban): fix e2e
* test(blockTemplate): should clear template at end of test
* refactor: migrate fields
* refactor: migrate actions
* refactor: migrate menu
* refactor: migrate page
* refactor(SchemaSettings): unify naming style
* fix: scopeKeyOptions undefined
* refactor(SchemaInitializers): unify naming stle
* fix(bi): chart filter fields
* chore: acl snippets
* refactor: replace CreateFormBlockInitializers to blockInitializers:createForm
* refactor: replace to blockInitializers:customizeCreateForm
* refactor: replace block intializers name
* refactor: replace action initializers name
* refactor: replace field initializers name
* style: fix hover style for column action (T-3297)
* refactor: revert some codes
* chore: update comment
* fix: revert record deprected
* fix: remove pro-plugins
* fix: bug
* chore: replace iframeBlockSchemaSettings to blockSettings:iframe
* Revert "refactor: revert some codes"
This reverts commit 991021ceaeecc5d27113a51e501a4abd439edcd2.
* Revert "refactor: replace field initializers name"
This reverts commit b47b808d06305741b56302e3dad1dd256658fad4.
* Revert "refactor: replace action initializers name"
This reverts commit eab1b6e3d986d1c3dc80d75fa6230fa948e3a33e.
* Revert "refactor: replace block intializers name"
This reverts commit 50ab9da177f344d037184a17746cb1d0e037a826.
* Revert "refactor: replace to blockInitializers:customizeCreateForm"
This reverts commit 77b9f59bb14d944fd8c42006e899861196589748.
* Revert "refactor: replace CreateFormBlockInitializers to blockInitializers:createForm"
This reverts commit e9a38b0b4d9fabc571b7d9cdc8929914f5e2a367.
* Revert "refactor(SchemaInitializers): unify naming stle"
This reverts commit 542390899fa84d212a8dbbe7f77e0f19befa6ae8.
* Revert "refactor(SchemaSettings): unify naming style"
This reverts commit 8566735922c4a157efccdb3830deaedeb08c6f6a.
* Revert "chore: replace iframeBlockSchemaSettings to blockSettings:iframe"
This reverts commit 884f6df92fdc860a50500025f132904e9528002f.
* refactor: create sorting field in kanban
* refactor: create sorting field in kanban
* fix: style
* fix: bug
* fix(SideMenu): fix the problem of invalid add menu (T-3331)
* fix: translation
* feat: client en-US docs
---------
Co-authored-by: xilesun <2013xile@gmail.com>
Co-authored-by: dream2023 <1098626505@qq.com>
Co-authored-by: Zeke Zhang <958414905@qq.com>
Co-authored-by: chenos <chenlinxh@gmail.com>
Co-authored-by: Chareice <chareice@live.com>
2024-03-03 23:06:24 +08:00
YANG QIA
f803105e69
perf(bi): optimize performance of chart filter block ( #3316 )
...
* perf: add useMemo
* fix: bug
* fix: bug
* chore: remove memo
2024-01-04 19:21:54 +08:00
YANG QIA
33779d3da2
fix: fix T-2749 ( #3194 )
2023-12-15 11:33:08 +08:00
YANG QIA
4665095372
fix(bi): import bug ( #3165 )
2023-12-08 16:56:05 +08:00
YANG QIA
16ad19b18d
feat(bi): filter block for charts ( #2851 )
...
* refactor: SchemaInitializer
* feat: render
* feat: finish BlockInitializers
* feat: finish TableActionInitializers
* refactor: new SchemaInitializerV2
* feat: support useChildren
* feat: finish TableColumnInitializers
* refactor: tableActionColumnInitializers
* fix: bug
* refactor: xx
* docs: schemaInitializer demo1
* docs: schema-initializer demo2
* feat: demo3
* docs: schema-initializer
* fix: form
* feat(bi): filter block for charts
* refactor: schema-initializer
* fix: bug
* feat: add filter block in chart block
* refactor: schema initializer
* refactor: rename
* fix: delete SchemaInitializerProvider
* refactor: props `insert` to hooks `useSchemaInitializerV2`
* fix: bug
* refactor: improve code & style
* feat: add expand/collapse button
* fix: filter & reset bug
* fix: configure data conflict
* refactor: delete `SchemaInitializer.Button`
* refactor: delete old SchemaInitializer
* feat: support for adding custom filter field
* fix: bug
* fix: workflow
* fix: docs
* feat: support for editing operator of collection field
* fix: bug
* fix: bug
* feat: support for editing options of custom fields
* feat: style
* fix: remove v2
* feat: init chart with filter
* fix: visible
* fix: bug
* fix: item hook
* feat: support for setting default value
* feat: item hook
* feat: support for filtering by associate fields
* fix: bug of associate field
* fix: get field bug
* fix: bug of adding filter block
* fix: bug of empty filter
* fix: filter parse issues
* fix: add search DataBlockInitializer
* fix: build bug
* fix: fix bug and improve
* fix: bug
* fix: variable
* fix: hook dependencies
* fix: style bug
* fix: style bug
* fix: test bug
* fix: test bug
* fix: rerender bug
* fix: remove menu select
* fix: bug
* chore: add aria-label for SchemaInitializerButton
* refactor: rename name to camel case
* fix: menu height bug
* fix: build errors
* fix: build errors
* fix: bug
* fix: bug
* fix: performance
* fix: fix T-2388, T-2384
* test: add test for header
* fix: sidebar is not refresh (T-2422)
* feat(e2e): support to add group page and link page
* chore: make sure the page is configurable when using page.goto
* test: add tests for menu initializer
* fix: imporve code
* fix: fix T-2383
* fix: variables
* fix: variables
* fix: fix T-2441
* chore: fix build error
* chore: optimize locator of menu item
* refactor: rename testid for select
* feat: select source field for custom field, fix T-2416
* fix: bug
* test: make tests passing
* fix: make tests passing
* chore: upgrade vitest to v0.34.6
* chore: increase timeout of e2e
* feat: core
* fix: revert schema initializer demos
* test: menu, page tabs, page grid, table column
* fix: schema button interface
* fix: fix T-2386
* feat: refactor: page tab settings
* feat: page settings
* fix: dumirc
* fix: export CSSVariableProvider
* feat: lazy render
* fix: fix T-2473, T-2474
* fix: fix T-2476
* fix: fix T-2472
* fix: form-item
* fix: general schema desinger
* feat: filter form item settings
* fix: fix T-2484, T-2482
* refactor: form-v2 schema settings
* refactor: form-v1 schema settings
* refactor: action schema settings
* fix: dependency
* fix: action bug
* fix: form-item bug
* fix: types error
* docs: schema settings doc
* docs: schema settings
* feat: schema setting item add name
* fix: visible lazy render bug
* fix: revert form item filter
* fix: test bug
* fix: test JSON.parse bug
* fix: test bug
* fix: improve styling
* fix: styling
* fix: cleanup
* fix: token.borderRadiusSM
* fix: bug
* test: add tests
* fix: style bug
* fix: add chart performance
* feat: add SchemaDesignerContext
* fix: bug
* fix: test bug
* style: create record action style improve
* fix: make test passing
* chore: mack tests passing
* chore: make tests passing
* test: fix tests
* style: style revert
* fix: bug
* fix: data selector
* fix: fix tests
* fix: fix tests
* fix: delete PluginManagerContext
* refactor: improve router and add SchemaComponentProvider & CSSVariableProvider to MainComponent
* fix: add dn and field builtin to SchemaSettingWrapper
* feat: update docs
* refactor: application providers
* fix: test bug
* fix: fix tests
* chore: make test passing
* feat: update docs
* chore: rename collection name
* feat: update docs
* chore: skip weird test
* fix: blockInitializers media to otherBlocks
* fix: cancel to skip test
* fix: bug
* test: add test
* refactor: migrate to small files
* test: add tests for form block settings
* chore: format
* fix: add chart scroll bug
* refactor: action designer improve
* refactor: formitem designer schemaSetting
* feat: schemaSettingsManager and schemaInitializerManager addItem and removeItem
* test: add tests for color field in creating block
* test: add tests for email field in creating block
* test: make tests passing
* perf: reduce fields number
* fix: sub menu bug
* chore: update filter hook
* chore: fix association fields
* fix: build
* chore: use `default` instead of `componentProps.defaultValue`
* chore: remove chinaRegion in custom field components
* fix: menu height
* fix: duplicate keys warning
* fix: variable issues
* fix: filter bug
* fix: operator bug
---------
Co-authored-by: Your Name <1098626505@qq.com>
Co-authored-by: Rain <958414905@qq.com>
Co-authored-by: chenos <chenlinxh@gmail.com>
Co-authored-by: katherinehhh <katherine_15995@163.com>
2023-12-05 20:45:18 +08:00
jack zhang
705b7449f0
feat: new plugin manager, supports adding plugins through UI ( #2430 )
...
* refactor: plugin manager page
* fix: bug
* feat: addByNpm api
* fix: improve the addByNpm
* feat: improve applicationPlugins:list api
* fix: re-download npm package when restart app
* fix: plugin delete api
* feat: plugin detail api
* feat: zipUrl add api
* fix: upload api bug
* fix: plugin detail info
* feat: upgrade api
* fix: upload api
* feat: handle plugin load error
* feat: support authToken
* feat: muti lang
* fix: build error
* fix: self review
* Update plugin-manager.ts
* fix: bug
* fix: bug
* fix: bug
* fix: bug
* fix: bug
* fix: bugs
* fix: detail click and remove isOfficial
* fix: upgrade no refresh
* fix: file size and type check
* fix: bug
* fix: upgrade error
* fix: bug
* fix: bug
* fix: plugin card layout
* fix: handling exceptional cases
* fix: tgz file support
* fix: macos compress file
* fix: bug
* fix: bug
* fix: bug
* fix: bug
* fix: add upgrade npm type
* fix: bugs
* fix: bug
* fix: change plugins static expose url
* fix: api prefix
* fix: bug
* fix: add nginx `/static/plugin/` path
* fix: bugs and pr docker build no dts
* fix: bug
* fix: build tools bug
* fix: improve code
* fix: build bug
* feat: improve plugin info
* fix: ui bug
* fix: plugin document bug
* feat: improve code
* feat: improve code
* feat: process dev deps check
* feat: improve code
* feat: process.env.IS_DEV_CMD
* fix: do not delete the plugin package
* feat: plugin symlink
* fix: tsx watch --ignore=./storage/plugins/**
* fix: test error
* fix: improve code
* fix: improve code
* fix: emitStartedEvent
* fix: improve code
* fix: type error
* fix: test error
* test: console.log
* fix: createStoragePluginSymLink
* fix: clientStaticMiddleware rename to clientStaticUtils
* feat: build tools support plugins folder
* fix: 350px
* fix: error
* feat: client dev support plugin folder
* fix: clear cli options
* fix: typeError: Converting circular structure to JSON
* fix: plugin name
* chore: restart application after command
* feat: upgrade error & docs
* Update v14-changelog.md
* Update v14-changelog.md
* Update v14-changelog.md
* fix: gateway test
* refactor(plugin-workflow): add ready state for gracefully tearing down
* Revert "chore: restart application after command"
This reverts commit 5015274f8e4e06e506e15754b672330330e8c7f8.
* chore: stop application whe restart
* T 1218 change plugin folder (#2629 )
* feat: change folder name
* feat: change `pm create` command
* feat: revert plugin name change
* fix: delete samples
* feat: change plugins folder
* fix: pm create
* feat: update docs
* fix: link package error
* fix: docs
* fix: create command
* fix: pm add error
* fix: create add build
* fix: pm creatre + add
* feat: add tar command
* fix: docs
* fix: bug
* fix: docs
---------
Co-authored-by: chenos <chenlinxh@gmail.com>
* feat: docs
* Update your-fisrt-plugin.md
* Update your-fisrt-plugin.md
* chore: application reload
* chore: test
* fix: pm add error
* chore: preset install skip exists plugin
* fix: createIfNotExists
---------
Co-authored-by: chenos <chenlinxh@gmail.com>
Co-authored-by: chareice <chareice@live.com>
Co-authored-by: Zhou <zhou.working@gmail.com>
Co-authored-by: mytharcher <mytharcher@gmail.com>
2023-09-12 22:39:23 +08:00