Ver Fonte

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
Lucas.Xu há 1 ano atrás
pai
commit
3db9024a2d

+ 16 - 0
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

+ 1 - 1
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

+ 4 - 3
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<DatabaseShareActionList> {
           case ShareAction.csv:
             final exportPath = await getIt<FilePickerService>().saveFile(
               dialogTitle: '',
-              fileName: '${Uri.encodeComponent(name)}.csv',
+              fileName: '${name.toFileName()}.csv',
             );
             if (exportPath != null) {
               databaseShareBloc.add(DatabaseShareEvent.shareCSV(exportPath));

+ 5 - 3
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<DocShareEvent, DocShareState> {

+ 5 - 4
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<ShareActionList> {
             final exportPath = await getIt<FilePickerService>().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));

+ 20 - 0
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();
+  }
+}

+ 2 - 2
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"

+ 2 - 2
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