NocoBase 是一個極易擴充套件的開源無程式碼開發平臺。完全掌控,無限擴充套件,助力你的開發團隊快速響應變化,顯著降低成本,不必投入幾年時間和數百萬資金研發,只需要花幾分鐘部署 NocoBase。
NocoBase 中文官網
官方文件
線上 Demo
v1.0 里程碑
歷時 3 年,NocoBase 迎來第一次根版本號升級,版本號從 0.x 升級到 1.0。這是一個新的里程碑。
- 在 0.x 階段:核心 API 和功能快速變化,每一個新的版本都可能存在不相容的變更;
- 在 1.x 階段:核心 API 基本穩定,NocoBase 將在保持穩定的基礎上不斷增加新的外掛,最佳化安全性和效能。
新特性
- 主題編輯器可以配置頁面和彈窗內邊距、區塊間距、區塊圓角
- 新增區塊時,資料表支援過濾
- 關係資料支援排序
- 改進資料視覺化的互動
- 支援移動端新增圖表區塊
- 圖表篩選區塊支援設定欄位資料範圍
- 新增更多變數,檢視詳情
- 彈窗中支援新增任意資料表的區塊
- 工作流:“操作後事件”支援關係區塊內按鈕觸發
- 彈窗內資料變動時,關閉彈窗自動重新整理上一層容器內的資料
- 大幅提升表格區塊的效能
- 大幅提升測試覆蓋率
新外掛
-
Field: Markdown(Vditor)
- 用於儲存 Markdown,並使用 Vditor 編輯器渲染,支援常見 Markdown 語法,如列表,程式碼,引用等,並支援上傳圖片,錄音等。同時可以做到即時渲染,所見即所得。
-
Comments
- 提供評論資料表模板和區塊,為任意資料表的資料新增評論功能。
完整更新記錄
檢視完整記錄
- feat(plugin-workflow): refresh the list after sync #4177
- feat(plugin-workflow): show workflow key as tooltip on title #4178
- test(plugin-workflow): add test cases #4199
- chore: api cache control header #4203
- feat: load vditor dep from local #4190
- test: input number separator test #4204
- fix: number field shuold support separator setting #4197
- fix(plugin-workflow): refine experience #4195
- chore: optimize warning wordings of import & export #4196
- refactor: external data source collection manager #4193
- fix: env bug #4191
- fix: empty operator with association field #4189
- chore: add e2e #4184
- fix: vditor version #4183
- refactor: form data template locale improve #4188
- test: add automated testing #4098
- chore: data source logger instance #4181
- chore: get database instance in relation repository #4179
- chore: add e2e for variables #4152
- chore: define collection debug message #4176
- chore: unsupportedFields in view collection #4155
- feat: add plugin-field-markdown-vditor #4065
- fix: bulk edit form acl action error #4166
- fix: auto create uuid foreign key in relation field #4160
- fix(plugin-fm): fix confusing size limit hint #4153
- fix(users): improve users:updateProfile #4162
- fix(client): get api url #4161
- feat: remove plugin-ui-routes-storage #4140
- fix: lock cytoscape version #4158
- refactor: collection template support presetFieldsDisabled #4159
- fix: grid schema #4157
- client unit test #4150
- fix: update belongs to many association that target key is not primary key #4146
- refactor: form data template locale improve #4148
- fix(database): column name in array field #4110
- test: refresh on action e2e test #4147
- fix(custom-request): support configuring content type #4144
- chore: deprecate the current record variable from the form #4063
- feat(Theme): add some tokens #4137
- fix(client): fix some warnings #4143
- style: tableActionColumn style improve #4138
- fix: actionBar style improve #4123
- chore: warning message if on delete conflict #4141
- fix(plugin-workflow-manual): allow pass node when no assignee #4139
- chore: datasource manager api #4124
- fix(plugin-workflow-manual): fix assignees parsing bug #4125
- fix: load association field in collection #4122
- perf: remove all Skeleton animation #4113
- test: add e2e #4121
- chore(data-vi): adjust api #4116
- fix: scheduleEventTrigger #4114
- feat(plugin-workflow): add checker for intervally dispatching #4119
- feat: add filterOtherRecordsCollection for DataBlockInitializer #4117
- refactor: optimize CollectionField #4111
- fix: improve sort field migration #4112
- fix: field component #4102
- fix: association select support add mode #4108
- fix: createdBy & updatedBy target option #4109
- fix(linkage-rule): linkage rule support empty condiction #4103
- fix: add SanitizedCollectionProvider #4100
- fix: tree collection target error #4105
- fix: add ClearCollectionFieldContext #4101
- feat: improve form block #4099
- chore: migrate sortable options to sort field #4011
- feat: support sort option in appends #4056
- feat(data-vi): allows pie chart to accept negative numbers, fix T-4075 #4094
- fix(data-vi): number becomes string after precision transformation #4092
- fix: encode url params #4055
- test(plugin-workflow): add test case for duplicated triggering schedule workflow #3817
- perf(LinkageRules): solve lagging problems #4090
- fix(subTable): should not display Allow add new data option #4086
- fix: missing fields #4083
- fix: table select pagination error #4078
- fix: reset page when setting block data scope #4081
- fix: custom request role list #4074
- fix: parse iso week #4068
- fix(sourceId): avoid error #4077
- fix(sql-collection): can't select interface when setting fields #4079
- fix: load with source field #4075
- fix: deletion of operation linkage rules does not take effect in real time #4058
- fix(core): fix round bug in formula evaluator #4070
- test: add e2e for data loading mode #4069
- fix(filterForm): avoid duplicate names #4071
- chore: optimize block title #4040
- fix: sync default value in view #4067
- fix(defaultValue): fix the issue of default values disappearing after refreshing the page #4066
- refactor: gantt block #4059
- fix: sub-table big field should support variable default value #4062
- chore(Theme): set the default font size of the Compact theme to 16 #4064
- test: add e2e for actions #4053
- fix(variable): missing variables and invalid translations #4054
- test: add backend unit tests #4000
- fix: improve card item #4036
- chore(acl): disable register association fields actions #4014
- fix(variable): fix parent record variable reporting errors in data scope #4039
- test(e2e): add assertions on field values #4034
- feat(Variable): add a new variable #4025
- feat: run e2e with pro plugins #3890
- fix: bug #4038
- fix: array operator with camel case field #4032
- fix: scopeKeyOptions should be obtained in real-time #4029
- fix(addText): should use FormItemSchemaToolbar instead of BlockSchema… #3963
- feat: register once hook in datasource manager #4024
- fix: snippets #4030
- fix: vitest single bug #4031
- feat(data-vi): improved user experiences (refer to pr) #4013
- test: add frontend unit test #3991
- feat: support Others option in popup #4015
- fix(collection-manager): no refresh after override the field #4022
- chore: add export & import warnings #4027
- refactor: third party data source support sort field grouped sorting edit #4023
- fix(plugin-acl): pm.acl.roles snippet #4026
- test: association name block e2e test #4021
- fix: get api url #4020
- fix(Sub-details): the initializer button is not displayed when the field value is empty #4019
- fix: initializer use useAassociationName #4018
- fix(auth): cas login bug when use subdirectory deployment #4017
- fix(TreeTable): add child error #4008
- fix: remove active field should not clear value #4012
- fix(plugin-acl): datasource roles snippet #4016
- fix: after selecting all, bulk update prompts for unselected data #4010
- refactor: tree table is not enabled by default #4001
- feat(plugin-workflow-action-trigger): support association actions to trigger #4007
- Update application.ts #4006
- fix: tag filed setting #4009
- fix(users): remove phone validation due to incorrect check of foreign phone numebrs #4005
- fix: association block action permission verification failed #3994
- refactor: fields for table sorting cannot select sorting fields with scopekey #3984
- fix(Form): invalid parentRecord #3998
- fix(plugin-workflow): adjust locale #3993
- fix: sub -table support allowSelectExistingRecord setting #4004
- fix(auth): sign up page not found when entering with url directly #4002
- chore(database): set null value when field is unique and value is empty string #3997
- chore(gateway): report error with cause message #3999
- chore(error-handler): display message cause the error #3996
- fix: restore with table name in camel case #3995
- refactor(plugin-workflow): adjust comments #3990
- fix: gantt collapse & expand #3982
- fix(BulkForm): should be required when switching to 'Changed to' #3965
- fix: move action #3985
- refactor: sort field should not has defaultValue #3986
- chore: update class names of plugins #3981
- feat(plugin-workflow-sync): add sync when multi-app-share-collection enabled #3969
- fix(localization): incorrect locale when first entering #3968
- chore: adjust and add api comments #3951
- refactor: select options configuration #3964
- fix(GridCard): set the count of columns displayed in a row #3960
- refactor: only numerical formula fields support format #3962
- chore(plugin-workflow): add comments #3959
- chore: remove legacy formula plugins #3939
- fix(LinkageRules): should be effective immediately #3958
- fix(Picker): should display Allow add new data option #3957
- fix(connect-data-blocks): should immediately show in the drop-down menu #3953
- fix: left menu title modify #3956
- fix: template list provider bug #3950
- refactor: nanoid &uuid autoFill #3955
- feat: getParentJsonSchema in ui schema repository #3690
- fix: save uuid & nano id field value with sequelize validation #3952
- fix: throughCollection support fuzzy search #3949
- fix: getSourceKeyByAssocation #3947
- fix(RichText): unify style #3946
- fix(connectDataBlocks): should add FilterBlockProvider to Grid #3944
- chore: add appVersion to Schema #3936
- fix: collectionFieldInterfaceSelect #3945
- fix: fix sourceId of templates #3941
- fix(collection manager): collection manager primarykey & nanoid & uuid suport index setting #3943
- fix(plugin-formula-field): fix component context #3937
- fix: nanoid availableTypes #3942
- fix: automatically generate default values #3940
- fix: formula field caluation error #3938
- fix: formula field support format #3928
- refactor: unify tab initailizer naming #3932
- fix: add zIndex to Lightbox overlay style #3934
- fix(Table): fix the problem that the content of the association field is not displayed #3930
- fix(evaluators): fix array flatten #3931
- refactor: main data source view collection support filterTargetKey #3818
- fix: formula field calculation error #3929
- fix: load view collection belongs to association with source options #3912
- fix: edit form unchanged should not appear unSaveed warning when cloas modal #3920
- fix(Collapse): fix error for chinaRegions #3925
- fix: number display format #3924
- fix(defaultValue): should immediate effect when set default value #3923
- feat: action support refreshDataBlockRequest configuration #3882
- refactor: formBlockProvider & detailBlockProvider #3898
- feat(data-vi): allows to add charts for mobile client #3922
- chore: add API comments #3919
- fix: fix Pagination #3921
- test(plugin-error-handler): middleware #3909
- fix: update plugin #3895
- fix: gantt block pagination #3918
- fix: source id null #3917
- fix(Table): fix Pagination #3916
- fix: get the correct sourceId #3897
- fix(DataScope): fix no immediate effect issue after saving #3910
- fix: select field options initialValue #3911
- fix: external link click #3908
- fix(inputNumber): loss of accuracy in inputNumber #3902
- feat(plugin-workflow-action-trigger): add global action events #3883
- docs: add api comment #3868
- fix: vitest config bug #3907
- fix: table fixed bug #3901
- fix: list data undefined error #3905
- fix: lazy render bug #3886
- fix: sort params missing #3906
- refactor: change useProps to x-use-component-props #3853
- fix(withDynamicSchemaProps): change deep merge to shallow merge #3899
- fix: history block add print button, click print button to report error #3900
- fix: tar bug #3891
- chore: return bigInt as string type #3887
- feat(data-vi): data scope for chart filter fields #3894
- feat: adjust menu of add new #3884
- fix(plugin-custom-request): fix edit button dialog #3893
- fix: fieldNames missing when setting data scope #3892
- fix: deps check error when dev add production plugin #3848
- fix: workflow tabs not exists #3889
- fix: association field support data scope linkage #3888
- fix: templateBlockProvider support association field append #3866
- chore: main datasource api #3880
- feat: run vitest with coverage #3802
- fix: avoid duplicate menu keys #3885
- fix(data-vi): dual axes chart displays abnormally #3881
- fix: reject update when filter is empty object #3777
- chore: update field with primary key attribute #3852
- refactor: uuid & nanoid support default value configuration #3830
- feat: table performance #3791
- fix: setFormValueChanged undefined #3879
- fix(client): fix diabled in filter dynamic component #3874
- fix(plugin-workflow-parallel): fix locale #3876
- fix(formula-field): formula field set form value change #3873
- fix: formBlockProvider block display #3877
- refactor(plugin-workflow): change to #3871
- fix: kanban card modal display abnormal #3863
- fix: filterTargetKey only support view collection #3872
外掛變更
以下外掛不再提供開源版本(已經在生產環境使用的使用者請聯絡我們獲得升級)
- @nocobase/plugin-auth-cas:透過 CAS 協議認證身份;
- @nocobase/plugin-auth-odic:透過 OIDC (OpenID Connect) 協議認證身份;
- @nocobase/plugin-auth-saml:透過 SAML 2.0 認證身份。
以下外掛已廢棄,將在近期版本里移除
- @nocobase/plugin-audit-logs:已廢棄,暫時不刪除,新版不會安裝
- @nocobase/plugin-snapshot-field:已廢棄,暫時不刪除,新版不會安裝
- @nocobase/plugin-charts:使用 @nocobase/plugin-data-visualization 代替
- @nocobase/plugin-excel-formula-field:使用 @nocobase/plugin-field-formula 代替
- @nocobase/plugin-math-formula-field:使用 @nocobase/plugin-field-formula 代替
- @nocobase/plugin-ui-routes-storage:已廢棄,前端路由直接在前端擴充套件即可
完整外掛列表請檢視:https://cn.nocobase.com/plugins-cn.html
程式碼註釋
為了提供更好的開發體驗,我們為一些特殊的 API 新增了註釋:
@internal
通常用於標識程式碼中的內部實現細節或內部方法,這些方法或功能不是為了公共使用而設計的,而是為了在程式碼內部使用而存在。@experimental
用於標識實驗性功能或 API。該 API 尚處於開發和測試階段,可能會發生較大變化,甚至可能在以後的版本中被移除或替換。@deprecated
用於標識程式碼中已經過時或不推薦使用的功能、方法或 API。這意味著雖然它們仍然可用,但是可能在將來的版本中被移除,或者已經有更好的替代方案可供使用。
許可協議
NocoBase 採取 AGPL-3.0 和 商業許可雙重授權,詳情請參考 NocoBase 許可協議
升級指南
- ⚠️升級前一定要先備份資料庫!一定要先備份資料庫!一定要先備份資料庫!
- 可以將整個專案程式碼也進行備份。
因為 Auth: CAS,Auth: OIDC,Auth: SAML 三個 SSO 外掛從開原始碼中移除,因此升級將分為兩種情況。
如果你未使用 SSO 外掛
請按照常規方法正常升級。請檢視文件
如果你使用了 SSO 外掛
請按照以下步驟升級:
1. 升級應用
參考文件升級概述,將 NocoBase 升級到最新版。
如果你之前啟用了 CAS、OIDC、SAML 外掛,升級時會有以下提示:
命令列升級時終端提示:
Docker 版介面提示:
2. 刪除外掛 or 獲取外掛 1.0 版本?
如果你選擇刪除外掛後繼續升級:
根據提示刪除外掛
# 主應用
yarn pm remove cas oidc saml --force
# 如果是子應用,需要新增 --app 引數
yarn pm remove cas oidc saml --force --app=sub-app1
繼續升級
yarn nocobase upgrade
如果你選擇外掛更新到 1.0 版本
聯絡 NocoBase 團隊獲取外掛 1.0 版本,並繼續進行升級
3. CAS、OIDC、SAML 外掛升級流程
此時,應用介面已經無法訪問了,所以我們需要用手動的方式升級
- 使用賬號登入 service.nocobase.com 下載最新版外掛
- 將外掛解壓到指定目錄
- CAS 外掛解壓至
./storage/plugins/@nocobase/plugin-auth-cas
- OIDC 外掛解壓至
./storage/plugins/@nocobase/plugin-auth-oidc
- SAML 外掛解壓至
./storage/plugins/@nocobase/plugin-auth-saml
- CAS 外掛解壓至
- 升級應用
- docker 版本直接重啟容器即可
- 原始碼或 create-nocobase-app 版本
- 下載依賴
yarn install
- 執行升級命令
yarn nocobase upgrade
- 重啟應用
- 下載依賴