mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
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
This commit is contained in:
parent
a821740469
commit
3db9024a2d
16
CHANGELOG.md
16
CHANGELOG.md
@ -1,5 +1,21 @@
|
|||||||
# Release Notes
|
# 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
|
## Version 0.3.0 - 08/22/2023
|
||||||
|
|
||||||
### New Features
|
### New Features
|
||||||
|
@ -24,7 +24,7 @@ CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true
|
|||||||
CARGO_MAKE_CRATE_FS_NAME = "dart_ffi"
|
CARGO_MAKE_CRATE_FS_NAME = "dart_ffi"
|
||||||
CARGO_MAKE_CRATE_NAME = "dart-ffi"
|
CARGO_MAKE_CRATE_NAME = "dart-ffi"
|
||||||
LIB_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"
|
FLUTTER_DESKTOP_FEATURES = "dart,rev-sqlite"
|
||||||
PRODUCT_NAME = "AppFlowy"
|
PRODUCT_NAME = "AppFlowy"
|
||||||
# CRATE_TYPE: https://doc.rust-lang.org/reference/linkage.html
|
# CRATE_TYPE: https://doc.rust-lang.org/reference/linkage.html
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/share_bloc.dart';
|
import 'package:appflowy/plugins/database_view/application/share_bloc.dart';
|
||||||
import 'package:appflowy/startup/startup.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/application/view/view_listener.dart';
|
||||||
import 'package:appflowy/workspace/presentation/home/toast.dart';
|
import 'package:appflowy/workspace/presentation/home/toast.dart';
|
||||||
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.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:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/file_picker/file_picker_service.dart';
|
import 'package:flowy_infra/file_picker/file_picker_service.dart';
|
||||||
import 'package:flowy_infra_ui/widget/rounded_button.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/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
@ -111,7 +112,7 @@ class DatabaseShareActionListState extends State<DatabaseShareActionList> {
|
|||||||
case ShareAction.csv:
|
case ShareAction.csv:
|
||||||
final exportPath = await getIt<FilePickerService>().saveFile(
|
final exportPath = await getIt<FilePickerService>().saveFile(
|
||||||
dialogTitle: '',
|
dialogTitle: '',
|
||||||
fileName: '${Uri.encodeComponent(name)}.csv',
|
fileName: '${name.toFileName()}.csv',
|
||||||
);
|
);
|
||||||
if (exportPath != null) {
|
if (exportPath != null) {
|
||||||
databaseShareBloc.add(DatabaseShareEvent.shareCSV(exportPath));
|
databaseShareBloc.add(DatabaseShareEvent.shareCSV(exportPath));
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:appflowy/workspace/application/export/document_exporter.dart';
|
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-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:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
|
||||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
||||||
import 'package:dartz/dartz.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';
|
part 'share_bloc.freezed.dart';
|
||||||
|
|
||||||
class DocShareBloc extends Bloc<DocShareEvent, DocShareState> {
|
class DocShareBloc extends Bloc<DocShareEvent, DocShareState> {
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
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/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/application/view/view_listener.dart';
|
||||||
import 'package:appflowy/workspace/presentation/home/toast.dart';
|
import 'package:appflowy/workspace/presentation/home/toast.dart';
|
||||||
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.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-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:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/file_picker/file_picker_service.dart';
|
import 'package:flowy_infra/file_picker/file_picker_service.dart';
|
||||||
import 'package:flowy_infra_ui/widget/rounded_button.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/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
@ -119,7 +120,7 @@ class ShareActionListState extends State<ShareActionList> {
|
|||||||
final exportPath = await getIt<FilePickerService>().saveFile(
|
final exportPath = await getIt<FilePickerService>().saveFile(
|
||||||
dialogTitle: '',
|
dialogTitle: '',
|
||||||
// encode the file name in case it contains special characters
|
// encode the file name in case it contains special characters
|
||||||
fileName: '${Uri.encodeComponent(name)}.md',
|
fileName: '${name.toFileName()}.md',
|
||||||
);
|
);
|
||||||
if (exportPath != null) {
|
if (exportPath != null) {
|
||||||
docShareBloc.add(DocShareEvent.shareMarkdown(exportPath));
|
docShareBloc.add(DocShareEvent.shareMarkdown(exportPath));
|
||||||
|
20
frontend/appflowy_flutter/lib/util/string_extension.dart
Normal file
20
frontend/appflowy_flutter/lib/util/string_extension.dart
Normal file
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -54,8 +54,8 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: "0e55cce"
|
ref: "3f2db9b"
|
||||||
resolved-ref: "0e55cce14f2ead916a8942a123d08b818934e2fd"
|
resolved-ref: "3f2db9b416f7c7512acba397e0cbb342fabaf7a2"
|
||||||
url: "https://github.com/AppFlowy-IO/appflowy-editor.git"
|
url: "https://github.com/AppFlowy-IO/appflowy-editor.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
@ -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.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 0.3.0
|
version: 0.3.1
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
@ -48,7 +48,7 @@ dependencies:
|
|||||||
appflowy_editor:
|
appflowy_editor:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/AppFlowy-IO/appflowy-editor.git
|
url: https://github.com/AppFlowy-IO/appflowy-editor.git
|
||||||
ref: 0e55cce
|
ref: 3f2db9b
|
||||||
appflowy_popover:
|
appflowy_popover:
|
||||||
path: packages/appflowy_popover
|
path: packages/appflowy_popover
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user