From 3db9024a2d990fba4b29695cebdac7286f268aef Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Mon, 4 Sep 2023 17:28:19 +0800 Subject: [PATCH] chore: release 0.3.1 (#3326) * chore: update editor version * fix: export name (with CJK) doesn't match the document name * chore: bump version 0.3.1 --- CHANGELOG.md | 16 +++++++++++++++ frontend/Makefile.toml | 2 +- .../database_view/widgets/share_button.dart | 7 ++++--- .../document/application/share_bloc.dart | 8 +++++--- .../presentation/share/share_button.dart | 9 +++++---- .../lib/util/string_extension.dart | 20 +++++++++++++++++++ frontend/appflowy_flutter/pubspec.lock | 4 ++-- frontend/appflowy_flutter/pubspec.yaml | 4 ++-- 8 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 frontend/appflowy_flutter/lib/util/string_extension.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 35b228e447..108dd5146f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Release Notes +## Version 0.3.1 - 09/04/2023 + +### New Features + +- Improve CJK (Chinese, Japanese, Korean) input method support. +- Share a database in CSV format. +- Support for aligning the block component with the toolbar. +- Support for editing name when creating a new page. +- Support for inserting a table in the document page. +- Database views allow for independent field visibility toggling. + +### Bug fixes + +- Paste multiple lines in code block. +- Some UI issues + ## Version 0.3.0 - 08/22/2023 ### New Features diff --git a/frontend/Makefile.toml b/frontend/Makefile.toml index c721155462..d86c3e5b66 100644 --- a/frontend/Makefile.toml +++ b/frontend/Makefile.toml @@ -24,7 +24,7 @@ CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true CARGO_MAKE_CRATE_FS_NAME = "dart_ffi" CARGO_MAKE_CRATE_NAME = "dart-ffi" LIB_NAME = "dart_ffi" -CURRENT_APP_VERSION = "0.3.0" +CURRENT_APP_VERSION = "0.3.1" FLUTTER_DESKTOP_FEATURES = "dart,rev-sqlite" PRODUCT_NAME = "AppFlowy" # CRATE_TYPE: https://doc.rust-lang.org/reference/linkage.html diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/share_button.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/share_button.dart index 091bd44b22..241c6c874d 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/share_button.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/share_button.dart @@ -1,15 +1,16 @@ import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/plugins/database_view/application/share_bloc.dart'; import 'package:appflowy/startup/startup.dart'; +import 'package:appflowy/util/string_extension.dart'; import 'package:appflowy/workspace/application/view/view_listener.dart'; import 'package:appflowy/workspace/presentation/home/toast.dart'; import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart'; +import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/file_picker/file_picker_service.dart'; import 'package:flowy_infra_ui/widget/rounded_button.dart'; -import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -111,7 +112,7 @@ class DatabaseShareActionListState extends State { case ShareAction.csv: final exportPath = await getIt().saveFile( dialogTitle: '', - fileName: '${Uri.encodeComponent(name)}.csv', + fileName: '${name.toFileName()}.csv', ); if (exportPath != null) { databaseShareBloc.add(DatabaseShareEvent.shareCSV(exportPath)); diff --git a/frontend/appflowy_flutter/lib/plugins/document/application/share_bloc.dart b/frontend/appflowy_flutter/lib/plugins/document/application/share_bloc.dart index c4dc32ffdb..9579c6ec75 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/application/share_bloc.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/application/share_bloc.dart @@ -1,11 +1,13 @@ import 'dart:io'; + import 'package:appflowy/workspace/application/export/document_exporter.dart'; import 'package:appflowy_backend/protobuf/flowy-document2/entities.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + part 'share_bloc.freezed.dart'; class DocShareBloc extends Bloc { diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/share/share_button.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/share/share_button.dart index d7a8be47a1..ab64632694 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/share/share_button.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/share/share_button.dart @@ -1,16 +1,17 @@ import 'package:appflowy/generated/locale_keys.g.dart'; -import 'package:appflowy/startup/startup.dart'; import 'package:appflowy/plugins/document/application/share_bloc.dart'; +import 'package:appflowy/startup/startup.dart'; +import 'package:appflowy/util/string_extension.dart'; import 'package:appflowy/workspace/application/view/view_listener.dart'; import 'package:appflowy/workspace/presentation/home/toast.dart'; import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart'; import 'package:appflowy_backend/protobuf/flowy-document2/entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/file_picker/file_picker_service.dart'; import 'package:flowy_infra_ui/widget/rounded_button.dart'; -import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; -import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -119,7 +120,7 @@ class ShareActionListState extends State { final exportPath = await getIt().saveFile( dialogTitle: '', // encode the file name in case it contains special characters - fileName: '${Uri.encodeComponent(name)}.md', + fileName: '${name.toFileName()}.md', ); if (exportPath != null) { docShareBloc.add(DocShareEvent.shareMarkdown(exportPath)); diff --git a/frontend/appflowy_flutter/lib/util/string_extension.dart b/frontend/appflowy_flutter/lib/util/string_extension.dart new file mode 100644 index 0000000000..66c32db7ff --- /dev/null +++ b/frontend/appflowy_flutter/lib/util/string_extension.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; + +extension EncodeString on String { + static const _specialCharacters = r'\/:*?"<>| '; + + /// Encode a string to a file name. + /// + /// Normalizes the string to remove special characters and replaces the "\/:*?"<>|" with underscores. + String toFileName() { + final buffer = StringBuffer(); + for (final character in characters) { + if (_specialCharacters.contains(character)) { + buffer.write('_'); + } else { + buffer.write(character); + } + } + return buffer.toString(); + } +} diff --git a/frontend/appflowy_flutter/pubspec.lock b/frontend/appflowy_flutter/pubspec.lock index ebaa8c5588..aedff21bf7 100644 --- a/frontend/appflowy_flutter/pubspec.lock +++ b/frontend/appflowy_flutter/pubspec.lock @@ -54,8 +54,8 @@ packages: dependency: "direct main" description: path: "." - ref: "0e55cce" - resolved-ref: "0e55cce14f2ead916a8942a123d08b818934e2fd" + ref: "3f2db9b" + resolved-ref: "3f2db9b416f7c7512acba397e0cbb342fabaf7a2" url: "https://github.com/AppFlowy-IO/appflowy-editor.git" source: git version: "1.3.0" diff --git a/frontend/appflowy_flutter/pubspec.yaml b/frontend/appflowy_flutter/pubspec.yaml index ddd77f95fd..446828994a 100644 --- a/frontend/appflowy_flutter/pubspec.yaml +++ b/frontend/appflowy_flutter/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.3.0 +version: 0.3.1 environment: sdk: ">=3.0.0 <4.0.0" @@ -48,7 +48,7 @@ dependencies: appflowy_editor: git: url: https://github.com/AppFlowy-IO/appflowy-editor.git - ref: 0e55cce + ref: 3f2db9b appflowy_popover: path: packages/appflowy_popover