mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-04-18 20:05:05 -04:00
fix: simple columns issues (#7466)
* Revert "feat: use flutter_distrubutor to build linux and macos packages (#7392)"
This reverts commit 6dc45c9830
.
* fix: linux link issue
* fix: outline doesn't work well in columns
* fix: cannot drag a block under a table that’s in the second column
This commit is contained in:
parent
8d8fc91391
commit
8046177d84
31 changed files with 207 additions and 833 deletions
230
.github/workflows/release.yml
vendored
230
.github/workflows/release.yml
vendored
|
@ -128,9 +128,9 @@ jobs:
|
|||
runs-on: ${{ matrix.job.os }}
|
||||
needs: create-release
|
||||
env:
|
||||
MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/build/${{ github.ref_name }}
|
||||
MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/product/${{ github.ref_name }}/macos/Release
|
||||
MACOS_X86_ZIP_NAME: AppFlowy-${{ github.ref_name }}-macos-x86_64.zip
|
||||
MACOS_DMG_NAME: AppFlowy-${{ github.ref_name }}-macos-x86_64.dmg
|
||||
MACOS_DMG_NAME: AppFlowy-${{ github.ref_name }}-macos-x86_64
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
@ -158,22 +158,46 @@ jobs:
|
|||
- name: Install prerequisites
|
||||
working-directory: frontend
|
||||
run: |
|
||||
brew install p7zip
|
||||
cargo install --force --locked cargo-make
|
||||
cargo install --force --locked duckscript_cli
|
||||
|
||||
- name: Import codesign certificate
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }}
|
||||
p12-password: ${{ secrets.MACOS_CERTIFICATE_PWD }}
|
||||
|
||||
- name: Build AppFlowy
|
||||
working-directory: frontend
|
||||
run: |
|
||||
flutter config --enable-macos-desktop
|
||||
flutter pub global activate flutter_distributor
|
||||
sh scripts/flutter_release_build/build_macos.sh --build_type dmg --build_arch x86_64 --version ${{ github.ref_name }} --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }}
|
||||
dart ./scripts/flutter_release_build/build_flowy.dart run . ${{ github.ref_name }}
|
||||
|
||||
- name: Codesign AppFlowy
|
||||
run: |
|
||||
echo ${{ secrets.MACOS_CERTIFICATE }} | base64 --decode > certificate.p12
|
||||
security create-keychain -p action build.keychain
|
||||
security default-keychain -s build.keychain
|
||||
security unlock-keychain -p action build.keychain
|
||||
security import certificate.p12 -k build.keychain -P ${{ secrets.MACOS_CERTIFICATE_PWD }} -T /usr/bin/codesign
|
||||
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k action build.keychain
|
||||
/usr/bin/codesign --force --options runtime --deep --sign "${{ secrets.MACOS_CODESIGN_ID }}" "${{ env.MACOS_APP_RELEASE_PATH }}/AppFlowy.app" -v
|
||||
|
||||
- name: Create macOS dmg
|
||||
run: |
|
||||
brew install create-dmg
|
||||
create-dmg \
|
||||
--volname ${{ env.MACOS_DMG_NAME }} \
|
||||
--hide-extension "AppFlowy.app" \
|
||||
--background frontend/scripts/dmg_assets/AppFlowyInstallerBackground.jpg \
|
||||
--window-size 600 450 \
|
||||
--icon-size 94 \
|
||||
--icon "AppFlowy.app" 141 249 \
|
||||
--app-drop-link 458 249 \
|
||||
"${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg" \
|
||||
"${{ env.MACOS_APP_RELEASE_PATH }}/AppFlowy.app"
|
||||
|
||||
- name: Notarize AppFlowy
|
||||
run: |
|
||||
xcrun notarytool submit ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }} -v -f "json" --wait
|
||||
|
||||
- name: Archive Asset
|
||||
working-directory: ${{ env.MACOS_APP_RELEASE_PATH }}
|
||||
run: zip --symlinks -qr ${{ env.MACOS_X86_ZIP_NAME }} AppFlowy.app
|
||||
|
||||
- name: Upload Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
|
@ -191,82 +215,8 @@ jobs:
|
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
||||
asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}
|
||||
asset_name: ${{ env.MACOS_DMG_NAME }}
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-for-macOS-arm64:
|
||||
name: ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-args }}]
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
needs: create-release
|
||||
env:
|
||||
MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/build/${{ github.ref_name }}
|
||||
MACOS_AARCH64_ZIP_NAME: AppFlowy-${{ github.ref_name }}-macos-arm64.zip
|
||||
MACOS_DMG_NAME: AppFlowy-${{ github.ref_name }}-macos-arm64.dmg
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
- {
|
||||
targets: "aarch64-apple-darwin",
|
||||
os: macos-latest,
|
||||
extra-build-args: "",
|
||||
}
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
||||
targets: ${{ matrix.job.targets }}
|
||||
components: rustfmt
|
||||
|
||||
- name: Install prerequisites
|
||||
working-directory: frontend
|
||||
run: |
|
||||
brew install p7zip
|
||||
cargo install --force --locked cargo-make
|
||||
cargo install --force --locked duckscript_cli
|
||||
|
||||
- name: Import codesign certificate
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }}
|
||||
p12-password: ${{ secrets.MACOS_CERTIFICATE_PWD }}
|
||||
|
||||
- name: Build AppFlowy
|
||||
working-directory: frontend
|
||||
run: |
|
||||
flutter config --enable-macos-desktop
|
||||
dart pub global activate flutter_distributor
|
||||
sh scripts/flutter_release_build/build_macos.sh --build_type dmg --build_arch arm64 --version ${{ github.ref_name }} --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }}
|
||||
|
||||
- name: Upload Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
||||
asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_AARCH64_ZIP_NAME }}
|
||||
asset_name: ${{ env.MACOS_AARCH64_ZIP_NAME }}
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
- name: Upload DMG Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
||||
asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}
|
||||
asset_name: ${{ env.MACOS_DMG_NAME }}
|
||||
asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg
|
||||
asset_name: ${{ env.MACOS_DMG_NAME }}.dmg
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-for-macOS-universal:
|
||||
|
@ -274,9 +224,9 @@ jobs:
|
|||
runs-on: ${{ matrix.job.os }}
|
||||
needs: create-release
|
||||
env:
|
||||
MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/build/${{ github.ref_name }}
|
||||
MACOS_APP_RELEASE_PATH: frontend/appflowy_flutter/product/${{ github.ref_name }}/macos/Release
|
||||
MACOS_AARCH64_ZIP_NAME: AppFlowy-${{ github.ref_name }}-macos-universal.zip
|
||||
MACOS_DMG_NAME: AppFlowy-${{ github.ref_name }}-macos-universal.dmg
|
||||
MACOS_DMG_NAME: AppFlowy-${{ github.ref_name }}-macos-universal
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
@ -306,22 +256,46 @@ jobs:
|
|||
- name: Install prerequisites
|
||||
working-directory: frontend
|
||||
run: |
|
||||
brew install p7zip
|
||||
cargo install --force --locked cargo-make
|
||||
cargo install --force --locked duckscript_cli
|
||||
|
||||
- name: Import codesign certificate
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }}
|
||||
p12-password: ${{ secrets.MACOS_CERTIFICATE_PWD }}
|
||||
|
||||
- name: Build AppFlowy
|
||||
working-directory: frontend
|
||||
run: |
|
||||
flutter config --enable-macos-desktop
|
||||
dart pub global activate flutter_distributor
|
||||
sh scripts/flutter_release_build/build_macos.sh --build_type dmg --build_arch universal --version ${{ github.ref_name }} --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }}
|
||||
sh scripts/flutter_release_build/build_universal_package_for_macos.sh ${{ github.ref_name }}
|
||||
|
||||
- name: Codesign AppFlowy
|
||||
run: |
|
||||
echo ${{ secrets.MACOS_CERTIFICATE }} | base64 --decode > certificate.p12
|
||||
security create-keychain -p action build.keychain
|
||||
security default-keychain -s build.keychain
|
||||
security unlock-keychain -p action build.keychain
|
||||
security import certificate.p12 -k build.keychain -P ${{ secrets.MACOS_CERTIFICATE_PWD }} -T /usr/bin/codesign
|
||||
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k action build.keychain
|
||||
/usr/bin/codesign --force --options runtime --deep --sign "${{ secrets.MACOS_CODESIGN_ID }}" "${{ env.MACOS_APP_RELEASE_PATH }}/AppFlowy.app" -v
|
||||
|
||||
- name: Create macOS dmg
|
||||
run: |
|
||||
brew install create-dmg
|
||||
create-dmg \
|
||||
--volname ${{ env.MACOS_DMG_NAME }} \
|
||||
--hide-extension "AppFlowy.app" \
|
||||
--background frontend/scripts/dmg_assets/AppFlowyInstallerBackground.jpg \
|
||||
--window-size 600 450 \
|
||||
--icon-size 94 \
|
||||
--icon "AppFlowy.app" 141 249 \
|
||||
--app-drop-link 458 249 \
|
||||
"${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg" \
|
||||
"${{ env.MACOS_APP_RELEASE_PATH }}/AppFlowy.app"
|
||||
|
||||
- name: Notarize AppFlowy
|
||||
run: |
|
||||
xcrun notarytool submit ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg --apple-id ${{ secrets.MACOS_NOTARY_USER }} --team-id ${{ secrets.MACOS_TEAM_ID }} --password ${{ secrets.MACOS_NOTARY_PWD }} -v -f "json" --wait
|
||||
|
||||
- name: Archive Asset
|
||||
working-directory: ${{ env.MACOS_APP_RELEASE_PATH }}
|
||||
run: zip --symlinks -qr ${{ env.MACOS_AARCH64_ZIP_NAME }} AppFlowy.app
|
||||
|
||||
- name: Upload Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
|
@ -339,8 +313,8 @@ jobs:
|
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
||||
asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}
|
||||
asset_name: ${{ env.MACOS_DMG_NAME }}
|
||||
asset_path: ${{ env.MACOS_APP_RELEASE_PATH }}/${{ env.MACOS_DMG_NAME }}.dmg
|
||||
asset_name: ${{ env.MACOS_DMG_NAME }}.dmg
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-for-linux:
|
||||
|
@ -348,12 +322,14 @@ jobs:
|
|||
runs-on: ${{ matrix.job.os }}
|
||||
needs: create-release
|
||||
env:
|
||||
LINUX_APP_RELEASE_PATH: frontend/appflowy_flutter/build/${{ github.ref_name }}
|
||||
LINUX_APP_RELEASE_PATH: frontend/appflowy_flutter/product/${{ github.ref_name }}/linux/Release
|
||||
LINUX_ZIP_NAME: AppFlowy-${{ matrix.job.target }}-x86_64.tar.gz
|
||||
LINUX_PACKAGE_DEB_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.deb
|
||||
LINUX_PACKAGE_RPM_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.rpm
|
||||
LINUX_PACKAGE_TMP_RPM_NAME: AppFlowy-${{ github.ref_name }}-2.x86_64.rpm
|
||||
LINUX_PACKAGE_TMP_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-x86_64.AppImage
|
||||
LINUX_PACKAGE_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.AppImage
|
||||
LINUX_PACKAGE_ZIP_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.zip
|
||||
LINUX_PACKAGE_TAR_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.tar.gz
|
||||
LINUX_PACKAGE_ZIP_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.tar.gz
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
@ -362,7 +338,7 @@ jobs:
|
|||
- {
|
||||
arch: x86_64,
|
||||
target: x86_64-unknown-linux-gnu,
|
||||
os: ubuntu-22.04,
|
||||
os: ubuntu-20.04,
|
||||
extra-build-args: "",
|
||||
flutter_profile: production-linux-x86_64,
|
||||
}
|
||||
|
@ -388,24 +364,14 @@ jobs:
|
|||
- name: Install prerequisites
|
||||
working-directory: frontend
|
||||
run: |
|
||||
# Install dependencies
|
||||
sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential libsqlite3-dev libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev keybinder-3.0 libnotify-dev
|
||||
sudo apt install rpm patchelf locate
|
||||
sudo add-apt-repository universe
|
||||
sudo apt install libfuse2
|
||||
|
||||
# Install appimagetool
|
||||
wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||
chmod +x appimagetool
|
||||
mv appimagetool /usr/local/bin/
|
||||
|
||||
# Install cargo-make and duckscript
|
||||
sudo apt-get install -y build-essential libsqlite3-dev libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
|
||||
sudo apt-get install keybinder-3.0
|
||||
sudo apt-get install -y alien libnotify-dev
|
||||
source $HOME/.cargo/env
|
||||
cargo install --force --locked cargo-make
|
||||
cargo install --force --locked duckscript_cli
|
||||
|
||||
rustup target add ${{ matrix.job.target }}
|
||||
|
||||
- name: Install gcc-aarch64-linux-gnu
|
||||
|
@ -418,8 +384,30 @@ jobs:
|
|||
working-directory: frontend
|
||||
run: |
|
||||
flutter config --enable-linux-desktop
|
||||
dart pub global activate flutter_distributor
|
||||
./scripts/flutter_release_build/build_linux.sh --build_type all --build_arch x86_64 --version ${{ github.ref_name }}
|
||||
dart ./scripts/flutter_release_build/build_flowy.dart run . ${{ github.ref_name }}
|
||||
|
||||
- name: Archive Asset
|
||||
working-directory: ${{ env.LINUX_APP_RELEASE_PATH }}
|
||||
run: tar -czf ${{ env.LINUX_ZIP_NAME }} *
|
||||
|
||||
- name: Build Linux package (.deb)
|
||||
working-directory: frontend
|
||||
run: |
|
||||
sh scripts/linux_distribution/deb/build_deb.sh appflowy_flutter/product/${{ github.ref_name }}/linux/Release ${{ github.ref_name }} ${{ env.LINUX_PACKAGE_DEB_NAME }}
|
||||
|
||||
- name: Build Linux package (.rpm)
|
||||
working-directory: ${{ env.LINUX_APP_RELEASE_PATH }}
|
||||
run: |
|
||||
sudo alien -r ${{ env.LINUX_PACKAGE_DEB_NAME }}
|
||||
cp -r ${{ env.LINUX_PACKAGE_TMP_RPM_NAME }} ${{ env.LINUX_PACKAGE_RPM_NAME }}
|
||||
|
||||
- name: Build Linux package (.AppImage)
|
||||
working-directory: frontend
|
||||
continue-on-error: true
|
||||
run: |
|
||||
sh scripts/linux_distribution/appimage/build_appimage.sh ${{ github.ref_name }}
|
||||
cd ..
|
||||
cp -r frontend/${{ env.LINUX_PACKAGE_TMP_APPIMAGE_NAME }} ${{ env.LINUX_APP_RELEASE_PATH }}/${{ env.LINUX_PACKAGE_APPIMAGE_NAME }}
|
||||
|
||||
- name: Upload Asset
|
||||
id: upload-release-asset
|
||||
|
@ -428,11 +416,11 @@ jobs:
|
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
||||
asset_path: ${{ env.LINUX_APP_RELEASE_PATH }}/${{ env.LINUX_PACKAGE_ZIP_NAME }}
|
||||
asset_path: ${{ env.LINUX_APP_RELEASE_PATH }}/${{ env.LINUX_ZIP_NAME }}
|
||||
asset_name: ${{ env.LINUX_PACKAGE_ZIP_NAME }}
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
- name: Upload DEB package
|
||||
- name: Upload Debian package
|
||||
id: upload-release-asset-install-package-deb
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
|
|
|
@ -1,35 +1,12 @@
|
|||
output: build/
|
||||
output: dist/
|
||||
releases:
|
||||
- name: prod
|
||||
- name: dev
|
||||
jobs:
|
||||
- name: release-prod-linux-deb
|
||||
- name: release-dev-linux-deb
|
||||
package:
|
||||
platform: linux
|
||||
target: deb
|
||||
- name: release-prod-linux-rpm
|
||||
- name: release-dev-linux-rpm
|
||||
package:
|
||||
platform: linux
|
||||
target: rpm
|
||||
- name: release-prod-linux-appimage
|
||||
package:
|
||||
platform: linux
|
||||
target: appimage
|
||||
- name: release-prod-linux-zip
|
||||
package:
|
||||
platform: linux
|
||||
target: zip
|
||||
|
||||
# Because the flutter_distribute plugin does not support the deep code-signing for macos, we need to manually sign the app.
|
||||
# So we don't use the flutter_distribute plugin to distribute the macos app.
|
||||
# - name: release-prod-macos-dmg
|
||||
# package:
|
||||
# platform: macos
|
||||
# target: dmg
|
||||
# - name: release-prod-macos-pkg
|
||||
# package:
|
||||
# platform: macos
|
||||
# target: pkg
|
||||
- name: release-prod-macos-zip
|
||||
package:
|
||||
platform: macos
|
||||
target: zip
|
||||
|
|
|
@ -10,6 +10,7 @@ import 'package:flutter/services.dart';
|
|||
import 'package:flutter/widgets.dart';
|
||||
import 'package:open_filex/open_filex.dart';
|
||||
import 'package:string_validator/string_validator.dart';
|
||||
import 'package:universal_platform/universal_platform.dart';
|
||||
import 'package:url_launcher/url_launcher.dart' as launcher;
|
||||
|
||||
typedef OnFailureCallback = void Function(Uri uri);
|
||||
|
@ -38,6 +39,11 @@ Future<bool> afLaunchUri(
|
|||
);
|
||||
}
|
||||
|
||||
// on Linux, add http scheme to the url if it is not present
|
||||
if (UniversalPlatform.isLinux && !isURL(url, {'require_protocol': true})) {
|
||||
uri = Uri.parse('https://$url');
|
||||
}
|
||||
|
||||
// try to launch the uri directly
|
||||
bool result;
|
||||
try {
|
||||
|
|
|
@ -108,6 +108,12 @@ class _DraggableOptionButtonState extends State<DraggableOptionButton> {
|
|||
}
|
||||
}
|
||||
|
||||
// return simple table block if the target node is in a simple table block
|
||||
final parentSimpleTableNode = targetNode.parentTableNode;
|
||||
if (parentSimpleTableNode != null) {
|
||||
return parentSimpleTableNode;
|
||||
}
|
||||
|
||||
return targetNode;
|
||||
},
|
||||
builder: (context, data) {
|
||||
|
@ -160,9 +166,16 @@ class _DraggableOptionButtonState extends State<DraggableOptionButton> {
|
|||
}
|
||||
}
|
||||
|
||||
// return simple table block if the target node is in a simple table block
|
||||
final parentSimpleTableNode = targetNode.parentTableNode;
|
||||
if (parentSimpleTableNode != null) {
|
||||
return parentSimpleTableNode;
|
||||
}
|
||||
|
||||
return targetNode;
|
||||
},
|
||||
);
|
||||
|
||||
dragToMoveNode(
|
||||
context,
|
||||
node: widget.blockComponentContext.node,
|
||||
|
|
|
@ -36,6 +36,15 @@ Future<void> dragToMoveNode(
|
|||
return;
|
||||
}
|
||||
|
||||
if (shouldIgnoreDragTarget(
|
||||
editorState: editorState,
|
||||
dragNode: node,
|
||||
targetPath: acceptedPath,
|
||||
)) {
|
||||
Log.info('Drop ignored: node($node, ${node.path}), path($acceptedPath)');
|
||||
return;
|
||||
}
|
||||
|
||||
final position = getDragAreaPosition(context, targetNode, dragOffset);
|
||||
if (position == null) {
|
||||
Log.info('position is null');
|
||||
|
@ -182,6 +191,7 @@ Future<void> dragToMoveNode(
|
|||
Node dragTargetNode,
|
||||
Offset dragOffset,
|
||||
) {
|
||||
debugPrint('getDragAreaPosition - dragTargetNode: ${dragTargetNode.type}');
|
||||
final selectable = dragTargetNode.selectable;
|
||||
final renderBox = selectable?.context.findRenderObject() as RenderBox?;
|
||||
if (selectable == null || renderBox == null) {
|
||||
|
|
|
@ -263,10 +263,13 @@ class OutlineItemWidget extends StatelessWidget {
|
|||
textDirection: textDirection,
|
||||
children: [
|
||||
HSpace(node.leftIndent),
|
||||
Text(
|
||||
node.outlineItemText,
|
||||
textDirection: textDirection,
|
||||
style: style,
|
||||
Flexible(
|
||||
child: Text(
|
||||
node.outlineItemText,
|
||||
textDirection: textDirection,
|
||||
style: style,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
cmake_minimum_required(VERSION 3.10)
|
||||
project(runner LANGUAGES CXX)
|
||||
|
||||
set(BINARY_NAME "appflowy")
|
||||
set(BINARY_NAME "AppFlowy")
|
||||
set(APPLICATION_ID "io.appflowy.appflowy")
|
||||
|
||||
cmake_policy(SET CMP0063 NEW)
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
display_name: AppFlowy
|
||||
|
||||
icon: linux/packaging/assets/logo.png
|
||||
|
||||
keywords:
|
||||
- AppFlowy
|
||||
- Office
|
||||
- Document
|
||||
- Database
|
||||
- Note
|
||||
- Kanban
|
||||
- Note
|
||||
|
||||
generic_name: AppFlowy
|
||||
|
||||
categories:
|
||||
- Office
|
||||
|
||||
startup_notify: true
|
||||
|
||||
supported_mime_type:
|
||||
- x-scheme-handler/appflowy-flutter
|
|
@ -29,8 +29,7 @@ essential: false
|
|||
section: x11
|
||||
priority: optional
|
||||
|
||||
supported_mime_type:
|
||||
- x-scheme-handler/appflowy-flutter
|
||||
supportedMimeType: x-scheme-handler/appflowy-flutter
|
||||
|
||||
dependencies:
|
||||
- libnotify-bin
|
||||
|
|
|
@ -26,8 +26,7 @@ categories:
|
|||
|
||||
startup_notify: true
|
||||
|
||||
supported_mime_type:
|
||||
- x-scheme-handler/appflowy-flutter
|
||||
supportedMimeType: x-scheme-handler/appflowy-flutter
|
||||
|
||||
requires:
|
||||
- libnotify
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
|
@ -1,26 +0,0 @@
|
|||
{
|
||||
"title": "AppFlowy",
|
||||
"icon-size": 94,
|
||||
"window": {
|
||||
"size": {
|
||||
"width": 600,
|
||||
"height": 450
|
||||
}
|
||||
},
|
||||
"background": "../../macos/packaging/assets/background.jpg",
|
||||
"contents": [
|
||||
{
|
||||
"x": 141,
|
||||
"y": 249,
|
||||
"type": "file",
|
||||
"path": "AppFlowy.app",
|
||||
"name": "AppFlowy.app"
|
||||
},
|
||||
{
|
||||
"x": 458,
|
||||
"y": 249,
|
||||
"type": "link",
|
||||
"path": "/Applications"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
title: "AppFlowy"
|
||||
icon-size: 94
|
||||
window:
|
||||
size:
|
||||
width: 600
|
||||
height: 450
|
||||
background: "../../../macos/packaging/assets/background.jpg"
|
||||
contents:
|
||||
- x: 141
|
||||
y: 249
|
||||
type: "file"
|
||||
path: "AppFlowy.app"
|
||||
name: "AppFlowy.app"
|
||||
- x: 458
|
||||
y: 249
|
||||
type: "link"
|
||||
path: "/Applications"
|
|
@ -79,7 +79,7 @@ USER $user
|
|||
WORKDIR /home/$user
|
||||
COPY --from=builder /appflowy/frontend/appflowy_flutter/build/linux/x64/release/bundle .
|
||||
RUN xdg-user-dirs-update && \
|
||||
test -e ./appflowy && \
|
||||
file ./appflowy
|
||||
test -e ./AppFlowy && \
|
||||
file ./AppFlowy
|
||||
|
||||
CMD ["./appflowy"]
|
||||
CMD ["./AppFlowy"]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<node name="/io/appflowy/appflowy/Object">
|
||||
<interface name="io.appflowy.appflowy">
|
||||
<node name="/io/appflowy/AppFlowy/Object">
|
||||
<interface name="io.appflowy.AppFlowy">
|
||||
<method name="Activate">
|
||||
<arg type="a{sv}" name="platform_data" direction="in" />
|
||||
</method>
|
||||
|
@ -13,4 +13,4 @@
|
|||
<arg type="a{sv}" name="platform_data" direction="in" />
|
||||
</method>
|
||||
</interface>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=AppFlowy
|
||||
Icon=io.appflowy.appflowy
|
||||
Exec=appflowy %U
|
||||
Icon=io.appflowy.AppFlowy
|
||||
Exec=AppFlowy %U
|
||||
Categories=Network;Productivity;
|
||||
Keywords=Notes
|
||||
DBusActivatable=true
|
||||
|
|
|
@ -1,46 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop-application">
|
||||
<id>io.appflowy.appflowy</id>
|
||||
|
||||
<id>io.appflowy.AppFlowy</id>
|
||||
|
||||
<name>AppFlowy</name>
|
||||
<summary>Open Source Notion Alternative</summary>
|
||||
|
||||
<summary>Open Source Notion Alternative</summary>
|
||||
|
||||
<metadata_license>CC-BY-4.0</metadata_license>
|
||||
<project_license>AGPL-3.0-only</project_license>
|
||||
|
||||
|
||||
<description>
|
||||
<p>
|
||||
# Built for teams that need more control and flexibility ## 100% data control You can host
|
||||
AppFlowy wherever you want; no vendor lock-in.
|
||||
# Built for teams that need more control and flexibility ## 100% data control You can host AppFlowy wherever you want; no vendor lock-in.
|
||||
</p>
|
||||
<p>
|
||||
## Unlimited customizations Design and modify AppFlowy your way with an open core codebase.
|
||||
</p>
|
||||
<p>
|
||||
## One codebase supporting multiple platforms AppFlowy is built with Flutter and Rust. What
|
||||
does this mean? Faster development, better native experience, and more reliable performance.
|
||||
## One codebase supporting multiple platforms AppFlowy is built with Flutter and Rust. What does this mean? Faster development, better native experience, and more reliable performance.
|
||||
</p>
|
||||
<p>
|
||||
# Built for individuals who care about data security and mobile experience ## 100% control of
|
||||
your data Download and install AppFlowy on your local machine. You own and control your
|
||||
personal data.
|
||||
# Built for individuals who care about data security and mobile experience ## 100% control of your data Download and install AppFlowy on your local machine. You own and control your personal data.
|
||||
</p>
|
||||
<p>
|
||||
## Extensively extensible For those with no coding experience, AppFlowy enables you to create
|
||||
apps that suit your needs. It's built on a community-driven toolbox, including templates,
|
||||
plugins, themes, and more.
|
||||
## Extensively extensible For those with no coding experience, AppFlowy enables you to create apps that suit your needs. It's built on a community-driven toolbox, including templates, plugins, themes, and more.
|
||||
</p>
|
||||
<p>
|
||||
## Truly native experience Faster, more stable with support for offline mode. It's also
|
||||
better integrated with different devices. Moreover, AppFlowy enables users to access features
|
||||
and possibilities not available on the web.
|
||||
## Truly native experience Faster, more stable with support for offline mode. It's also better integrated with different devices. Moreover, AppFlowy enables users to access features and possibilities not available on the web.
|
||||
</p>
|
||||
</description>
|
||||
|
||||
<launchable type="desktop-id">io.appflowy.appflowy.desktop</launchable>
|
||||
|
||||
<launchable type="desktop-id">io.appflowy.AppFlowy.desktop</launchable>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://github.com/AppFlowy-IO/appflowy/raw/main/doc/imgs/welcome.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
</component>
|
||||
</component>
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[D-BUS Service]
|
||||
Name=io.appflowy.appflowy
|
||||
Exec=appflowy
|
||||
Name=io.appflowy.AppFlowy
|
||||
Exec=AppFlowy
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
gdbus call --session --dest io.appflowy.appflowy \
|
||||
gdbus call --session --dest io.appflowy.AppFlowy \
|
||||
--object-path /io/appflowy/AppFlowy/Object \
|
||||
--method io.appflowy.appflowy.Open "['$1']" {}
|
||||
--method io.appflowy.AppFlowy.Open "['$1']" {}
|
||||
|
|
|
@ -1,243 +0,0 @@
|
|||
#!/bin/bash
|
||||
# This Script is used to build the AppFlowy linux zip, deb, rpm or appimage
|
||||
#
|
||||
# Usage: ./scripts/flutter_release_build/build_linux.sh --build_type <type> --build_arch <arch> --version <version> [--skip-code-generation] [--skip-rebuild-core]
|
||||
#
|
||||
# Options:
|
||||
# -h, --help Show this help message and exit
|
||||
# --build_type The type of package to build. Must be one of:
|
||||
# - all: Build all package types
|
||||
# - zip: Build only zip package
|
||||
# - tar.xz: Build only tar.xz package
|
||||
# - deb: Build only deb package
|
||||
# - rpm: Build only rpm package
|
||||
# - appimage: Build only appimage package
|
||||
# --build_arch The architecture to build. Must be one of:
|
||||
# - x86_64: Build for x86_64 architecture
|
||||
# - arm64: Build for arm64 architecture (not supported yet)
|
||||
# --version The version number (e.g. 0.8.2)
|
||||
# --skip-code-generation Skip the code generation step
|
||||
# --skip-rebuild-core Skip the core rebuild step
|
||||
|
||||
show_help() {
|
||||
echo "Usage: ./scripts/flutter_release_build/build_linux.sh --build_type <type> --build_arch <arch> --version <version> [--skip-code-generation] [--skip-rebuild-core]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message and exit"
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " --build_type The type of package to build. Must be one of:"
|
||||
echo " - all: Build all package types"
|
||||
echo " - zip: Build only zip package"
|
||||
echo " - tar.xz: Build only tar.xz package"
|
||||
echo " - deb: Build only deb package"
|
||||
echo " - rpm: Build only rpm package"
|
||||
echo " Please install the \033[33mrpm-build\033[0m and \033[33mpatchelf\033[0m before building the rpm and appimage package."
|
||||
echo " For more information, please refer to the https://distributor.leanflutter.dev/makers/rpm/."
|
||||
echo " - appimage: Build only appimage package"
|
||||
echo " Please install the \033[33mlocate\033[0m and \033[33mappimagetool\033[0m before building the appimage package."
|
||||
echo " For more information, please refer to the https://distributor.leanflutter.dev/makers/appimage/."
|
||||
echo " --build_arch The architecture to build. Must be one of:"
|
||||
echo " - x86_64: Build for x86_64 architecture"
|
||||
echo " - arm64: Build for arm64 architecture (not supported yet)"
|
||||
echo " --version The version number (e.g. 0.8.2)"
|
||||
echo " --skip-code-generation Skip the code generation step. It may save time if you have already generated the code."
|
||||
echo " --skip-rebuild-core Skip the core rebuild step. It may save time if you have already built the core."
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Check for help flag
|
||||
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||
show_help
|
||||
fi
|
||||
|
||||
# Parse named arguments
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--build_type)
|
||||
BUILD_TYPE="$2"
|
||||
shift 2
|
||||
;;
|
||||
--build_arch)
|
||||
BUILD_ARCH="$2"
|
||||
shift 2
|
||||
;;
|
||||
--version)
|
||||
VERSION="$2"
|
||||
shift 2
|
||||
;;
|
||||
--skip-code-generation)
|
||||
SKIP_CODE_GENERATION=true
|
||||
shift
|
||||
;;
|
||||
--skip-rebuild-core)
|
||||
SKIP_REBUILD_CORE=true
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "Unknown parameter: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
clear_cache() {
|
||||
echo -e "Clearing the cache..."
|
||||
rm -rf appflowy_flutter/build/$VERSION/
|
||||
}
|
||||
|
||||
info() {
|
||||
echo -e "🚀 \033[32m$1\033[0m"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo -e "🚨 \033[31m$1\033[0m"
|
||||
}
|
||||
|
||||
# Validate build type argument
|
||||
if [ -z "$BUILD_TYPE" ]; then
|
||||
error "Please specify build type with --build_type: all, zip, tar.xz, deb, rpm, appimage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Validate version argument
|
||||
if [ -z "$VERSION" ]; then
|
||||
error "Please specify version number with --version (e.g. 0.8.2)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Validate build arch argument
|
||||
if [ -z "$BUILD_ARCH" ]; then
|
||||
error "Please specify build arch with --build_arch: x86_64, arm64 or universal"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$BUILD_TYPE" != "all" ] && [ "$BUILD_TYPE" != "zip" ] && [ "$BUILD_TYPE" != "tar.xz" ] && [ "$BUILD_TYPE" != "deb" ] && [ "$BUILD_TYPE" != "rpm" ] && [ "$BUILD_TYPE" != "appimage" ]; then
|
||||
error "Invalid build type. Must be one of: all, zip, tar.xz, deb, rpm, appimage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
has_built_core=false
|
||||
has_generated_code=false
|
||||
|
||||
prepare_build() {
|
||||
info "Preparing build..."
|
||||
|
||||
# Build the rust-lib with version
|
||||
if [ "$SKIP_REBUILD_CORE" != "true" ] && [ "$has_built_core" != "true" ]; then
|
||||
cargo make --env APP_VERSION=$VERSION --profile production-linux-$BUILD_ARCH appflowy-core-release
|
||||
has_built_core=true
|
||||
fi
|
||||
|
||||
if [ "$SKIP_CODE_GENERATION" != "true" ] && [ "$has_generated_code" != "true" ]; then
|
||||
cargo make --env APP_VERSION=$VERSION --profile production-linux-$BUILD_ARCH code_generation
|
||||
has_generated_code=true
|
||||
fi
|
||||
}
|
||||
|
||||
build_zip() {
|
||||
info "Building zip package version $VERSION..."
|
||||
|
||||
prepare_build
|
||||
|
||||
cd appflowy_flutter
|
||||
flutter_distributor release --name=prod --jobs=release-prod-linux-zip --skip-clean
|
||||
cd ..
|
||||
mv appflowy_flutter/build/$VERSION/appflowy-$VERSION+$VERSION-linux.zip appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.zip
|
||||
|
||||
info "Zip package built successfully. The zip package is located at appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.zip"
|
||||
}
|
||||
|
||||
build_deb() {
|
||||
info "Building deb package version $VERSION..."
|
||||
|
||||
prepare_build
|
||||
|
||||
cd appflowy_flutter
|
||||
flutter_distributor release --name=prod --jobs=release-prod-linux-deb --skip-clean
|
||||
cd ..
|
||||
mv appflowy_flutter/build/$VERSION/appflowy-$VERSION+$VERSION-linux.deb appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.deb
|
||||
|
||||
info "Deb package built successfully. The deb package is located at appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.deb"
|
||||
}
|
||||
|
||||
build_rpm() {
|
||||
info "Building rpm package version $VERSION..."
|
||||
|
||||
prepare_build
|
||||
|
||||
cd appflowy_flutter
|
||||
flutter_distributor release --name=prod --jobs=release-prod-linux-rpm --skip-clean
|
||||
cd ..
|
||||
mv appflowy_flutter/build/$VERSION/appflowy-$VERSION+$VERSION-linux.rpm appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.rpm
|
||||
|
||||
info "RPM package built successfully. The RPM package is located at appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.rpm"
|
||||
}
|
||||
|
||||
# Function to build AppImage package
|
||||
build_appimage() {
|
||||
info "Building AppImage package version $VERSION..."
|
||||
|
||||
prepare_build
|
||||
|
||||
cd appflowy_flutter
|
||||
flutter_distributor release --name=prod --jobs=release-prod-linux-appimage --skip-clean
|
||||
cd ..
|
||||
mv appflowy_flutter/build/$VERSION/appflowy-$VERSION+$VERSION-linux.AppImage appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.AppImage
|
||||
|
||||
info "AppImage package built successfully. The AppImage package is located at appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.AppImage"
|
||||
}
|
||||
|
||||
build_tar_xz() {
|
||||
info "Building tar.xz package version $VERSION..."
|
||||
|
||||
prepare_build
|
||||
|
||||
# step 1: check if the linux zip package is built, if not, build the zip package
|
||||
if [ ! -f "appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.zip" ]; then
|
||||
info "Linux zip package is not built. Building the zip package..."
|
||||
build_zip
|
||||
fi
|
||||
|
||||
# step 2: unzip the zip package
|
||||
unzip appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.zip -d appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64
|
||||
|
||||
# check if the AppFlowy directory exists
|
||||
if [ ! -d "appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64" ]; then
|
||||
error "AppFlowy directory doesn't exist. Please check the zip package."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# step 3: build the tar.xz package
|
||||
tar -cJvf appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.tar.xz appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64/*
|
||||
|
||||
info "Tar.xz package built successfully. The tar.xz package is located at appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-linux-x86_64.tar.xz"
|
||||
}
|
||||
|
||||
clear_cache
|
||||
|
||||
# Build packages based on build type
|
||||
case $BUILD_TYPE in
|
||||
"all")
|
||||
build_zip
|
||||
build_deb
|
||||
build_rpm
|
||||
build_appimage
|
||||
;;
|
||||
"zip")
|
||||
build_zip
|
||||
;;
|
||||
"deb")
|
||||
build_deb
|
||||
;;
|
||||
"rpm")
|
||||
build_rpm
|
||||
;;
|
||||
"appimage")
|
||||
build_appimage
|
||||
;;
|
||||
"tar.xz")
|
||||
build_tar_xz
|
||||
;;
|
||||
esac
|
|
@ -1,297 +0,0 @@
|
|||
# This Script is used to build the AppFlowy macOS zip, dmg or pkg
|
||||
#
|
||||
# Usage: ./scripts/flutter_release_build/build_macos.sh --build_type <type> --build_arch <arch> --version <version> --apple-id <apple-id> --team-id <team-id> --password <password> [--skip-code-generation] [--skip-rebuild-core]
|
||||
#
|
||||
# Options:
|
||||
# -h, --help Show this help message and exit
|
||||
# --build_type The type of package to build. Must be one of:
|
||||
# - all: Build all package types
|
||||
# - zip: Build only zip package
|
||||
# - dmg: Build only dmg package
|
||||
# - tar.xz: Build only tar.xz package
|
||||
# --build_arch The architecture to build. Must be one of:
|
||||
# - x86_64: Build for x86_64 architecture
|
||||
# - arm64: Build for arm64 architecture
|
||||
# - universal: Build for universal architecture
|
||||
# --version The version number (e.g. 0.8.2)
|
||||
# --skip-code-generation Skip the code generation step
|
||||
# --skip-rebuild-core Skip the core rebuild step
|
||||
# --apple-id The apple id to use for the notary service
|
||||
# --team-id The team id to use for the notary service
|
||||
# --password The password to use for the notary service
|
||||
|
||||
show_help() {
|
||||
echo "Usage: ./scripts/flutter_release_build/build_macos.sh --build_type <type> --build_arch <arch> --version <version> --apple-id <apple-id> --team-id <team-id> --password <password> [--skip-code-generation] [--skip-rebuild-core]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message and exit"
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " --build_type The type of package to build. Must be one of:"
|
||||
echo " - all: Build all package types"
|
||||
echo " - zip: Build only zip package"
|
||||
echo " Please install the \033[33mp7zip\033[0m before building the zip package."
|
||||
echo " For more information, please refer to the https://distributor.leanflutter.dev/makers/zip/."
|
||||
echo " - tar.xz: Build only tar.xz package"
|
||||
echo " - dmg: Build only dmg package"
|
||||
echo " Please install the \033[33mappdmg\033[0m before building the dmg package."
|
||||
echo " For more information, please refer to the https://distributor.leanflutter.dev/makers/dmg/."
|
||||
echo " --build_arch The architecture to build. Must be one of:"
|
||||
echo " - x86_64: Build for x86_64 architecture"
|
||||
echo " - arm64: Build for arm64 architecture"
|
||||
echo " - universal: Build for universal architecture"
|
||||
echo " --version The version number (e.g. 0.8.2)"
|
||||
echo " --skip-code-generation Skip the code generation step. It may save time if you have already generated the code."
|
||||
echo " --skip-rebuild-core Skip the core rebuild step. It may save time if you have already built the core."
|
||||
echo " --apple-id The apple id to use for the notary service"
|
||||
echo " --team-id The team id to use for the notary service"
|
||||
echo " --password The password to use for the notary service"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Check for help flag
|
||||
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||
show_help
|
||||
fi
|
||||
|
||||
# Parse named arguments
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--build_type)
|
||||
BUILD_TYPE="$2"
|
||||
shift 2
|
||||
;;
|
||||
--build_arch)
|
||||
BUILD_ARCH="$2"
|
||||
shift 2
|
||||
;;
|
||||
--version)
|
||||
VERSION="$2"
|
||||
shift 2
|
||||
;;
|
||||
--skip-code-generation)
|
||||
SKIP_CODE_GENERATION=true
|
||||
shift
|
||||
;;
|
||||
--skip-rebuild-core)
|
||||
SKIP_REBUILD_CORE=true
|
||||
shift
|
||||
;;
|
||||
--apple-id)
|
||||
APPLE_ID="$2"
|
||||
shift 2
|
||||
;;
|
||||
--team-id)
|
||||
TEAM_ID="$2"
|
||||
shift 2
|
||||
;;
|
||||
--password)
|
||||
PASSWORD="$2"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown parameter: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
clear_cache() {
|
||||
echo "Clearing the cache..."
|
||||
rm -rf appflowy_flutter/build/$VERSION/
|
||||
}
|
||||
|
||||
info() {
|
||||
echo "🚀 \033[32m$1\033[0m"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo "🚨 \033[31m$1\033[0m"
|
||||
}
|
||||
|
||||
# Validate build type argument
|
||||
if [ -z "$BUILD_TYPE" ]; then
|
||||
error "Please specify build type with --build_type: all, zip, dmg, tar.xz"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Validate version argument
|
||||
if [ -z "$VERSION" ]; then
|
||||
error "Please specify version number with --version (e.g. 0.8.2)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Validate build arch argument
|
||||
if [ -z "$BUILD_ARCH" ]; then
|
||||
error "Please specify build arch with --build_arch: x86_64, arm64 or universal"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$BUILD_TYPE" != "all" ] && [ "$BUILD_TYPE" != "zip" ] && [ "$BUILD_TYPE" != "dmg" ] && [ "$BUILD_TYPE" != "tar.xz" ]; then
|
||||
error "Invalid build type. Must be one of: all, zip, dmg, tar.xz"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
prepare_build() {
|
||||
info "Preparing build..."
|
||||
|
||||
# step 1: build the appflowy-core (rust-lib) based on the build arch
|
||||
if [ "$SKIP_REBUILD_CORE" != "true" ]; then
|
||||
if [ "$BUILD_ARCH" = "x86_64" ] || [ "$BUILD_ARCH" = "universal" ]; then
|
||||
info "Building appflowy-core for x86_64...(This may take a while)"
|
||||
cargo make --profile production-mac-x86_64 appflowy-core-release
|
||||
fi
|
||||
|
||||
if [ "$BUILD_ARCH" = "arm64" ] || [ "$BUILD_ARCH" = "universal" ]; then
|
||||
info "Building appflowy-core for arm64...(This may take a while)"
|
||||
cargo make --profile production-mac-arm64 appflowy-core-release
|
||||
fi
|
||||
|
||||
# step 2 (optional): combine these two libdart_ffi.a into one libdart_ffi.a if the build arch is universal
|
||||
if [ "$BUILD_ARCH" = "universal" ]; then
|
||||
info "Combining libdart_ffi.a for universal..."
|
||||
lipo -create \
|
||||
rust-lib/target/x86_64-apple-darwin/release/libdart_ffi.a \
|
||||
rust-lib/target/aarch64-apple-darwin/release/libdart_ffi.a \
|
||||
-output rust-lib/target/libdart_ffi.a
|
||||
|
||||
info "Checking the libdart_ffi.a for universal..."
|
||||
lipo -archs rust-lib/target/libdart_ffi.a
|
||||
|
||||
cp -rf rust-lib/target/libdart_ffi.a \
|
||||
appflowy_flutter/packages/appflowy_backend/macos/
|
||||
fi
|
||||
fi
|
||||
|
||||
# step 3 (optional): generate the flutter code: languages, icons and freezed files.
|
||||
if [ "$SKIP_CODE_GENERATION" != "true" ]; then
|
||||
info "Generating the flutter code...(This may take a while)"
|
||||
cargo make code_generation
|
||||
fi
|
||||
|
||||
# step 4: build the zip package
|
||||
info "Building the zip package..."
|
||||
cd appflowy_flutter
|
||||
flutter_distributor release --name=prod --jobs=release-prod-macos-zip --skip-clean
|
||||
cd ..
|
||||
}
|
||||
|
||||
build_zip() {
|
||||
info "Building zip package version $VERSION..."
|
||||
|
||||
# step 1: check if the macos zip package is built, if not, build the zip package
|
||||
if [ ! -f "appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip" ]; then
|
||||
info "macOS zip package is not built. Building the zip package..."
|
||||
prepare_build
|
||||
|
||||
# step 1.1: move the zip package to the build directory
|
||||
mv appflowy_flutter/build/$VERSION/appflowy-$VERSION+$VERSION-macos.zip appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip
|
||||
fi
|
||||
|
||||
# step 2: unzip the zip package and codesign the app
|
||||
unzip -o appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip
|
||||
|
||||
# step 3: codesign the app
|
||||
# note: You must install the certificate to the system before codesigning
|
||||
sudo /usr/bin/codesign --force --options runtime --deep --sign "Developer ID Application: APPFLOWY PTE. LTD" --deep --verbose AppFlowy.app -v
|
||||
|
||||
# step 4: zip the app again
|
||||
7z a appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip AppFlowy.app
|
||||
|
||||
info "Zip package built successfully"
|
||||
}
|
||||
|
||||
build_dmg() {
|
||||
info "Building DMG package version $VERSION..."
|
||||
|
||||
# step 1: check if the macos zip package is built, if not, build the zip package
|
||||
if [ ! -f "appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip" ]; then
|
||||
info "macOS zip package is not built. Building the zip package..."
|
||||
build_zip
|
||||
fi
|
||||
|
||||
# step 2: unzip the zip package and copy the make_config.json file to the build directory
|
||||
unzip appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip -d appflowy_flutter/build/$VERSION/
|
||||
cp appflowy_flutter/macos/packaging/dmg/make_config.json appflowy_flutter/build/$VERSION/
|
||||
|
||||
# check if the AppFlowy.app doesn't exist, exit the script
|
||||
if [ ! -d "appflowy_flutter/build/$VERSION/AppFlowy.app" ]; then
|
||||
error "AppFlowy.app doesn't exist. Please check the zip package."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if the appdmg has been installed
|
||||
if ! command -v appdmg &>/dev/null; then
|
||||
info "appdmg is not installed. Installing appdmg..."
|
||||
npm install -g appdmg
|
||||
fi
|
||||
|
||||
# step 3: build the dmg package using appdmg
|
||||
# note: You must install the appdmg to the system before building the dmg package
|
||||
appdmg appflowy_flutter/build/$VERSION/make_config.json appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.dmg
|
||||
|
||||
# step 4: clear the temp files
|
||||
rm -rf appflowy_flutter/build/$VERSION/AppFlowy.app
|
||||
rm -rf appflowy_flutter/build/$VERSION/make_config.json
|
||||
|
||||
# check if the dmg package is built
|
||||
if [ ! -f "appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.dmg" ]; then
|
||||
error "DMG package is not built. Please check the build process."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
info "DMG package built successfully. The dmg package is located at appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.dmg"
|
||||
|
||||
if [ -z "$APPLE_ID" ] || [ -z "$TEAM_ID" ] || [ -z "$PASSWORD" ]; then
|
||||
error "The apple id, team id and password are not specified. Please notarize the dmg package manually."
|
||||
error "xcrun notarytool submit appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.dmg --apple-id <your-apple-id> --team-id <your-team-id> --password <your-password> -v -f \"json\" --wait"
|
||||
else
|
||||
xcrun notarytool submit appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.dmg --apple-id $APPLE_ID --team-id $TEAM_ID --password $PASSWORD -v -f "json" --wait
|
||||
info "Notarization is completed. Please check the notarization status"
|
||||
fi
|
||||
}
|
||||
|
||||
build_tar_xz() {
|
||||
info "Building tar.xz package version $VERSION..."
|
||||
|
||||
# step 1: check if the macos zip package is built, if not, build the zip package
|
||||
if [ ! -f "appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip" ]; then
|
||||
info "macOS zip package is not built. Building the zip package..."
|
||||
build_zip
|
||||
fi
|
||||
|
||||
# step 2: unzip the zip package and copy the make_config.json file to the build directory
|
||||
unzip appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.zip -d appflowy_flutter/build/$VERSION/
|
||||
|
||||
# check if the AppFlowy.app doesn't exist, exit the script
|
||||
if [ ! -d "appflowy_flutter/build/$VERSION/AppFlowy.app" ]; then
|
||||
error "AppFlowy.app doesn't exist. Please check the zip package."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# step 3: build the tar.xz package
|
||||
tar -cJvf appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.tar.xz appflowy_flutter/build/$VERSION/AppFlowy.app
|
||||
|
||||
info "Tar.xz package built successfully. The tar.xz package is located at appflowy_flutter/build/$VERSION/AppFlowy-$VERSION-macos-$BUILD_ARCH.tar.xz"
|
||||
}
|
||||
|
||||
clear_cache
|
||||
|
||||
# Build packages based on build type
|
||||
case $BUILD_TYPE in
|
||||
"all")
|
||||
build_zip
|
||||
build_dmg
|
||||
build_tar_xz
|
||||
;;
|
||||
"zip")
|
||||
build_zip
|
||||
;;
|
||||
"dmg")
|
||||
build_dmg
|
||||
;;
|
||||
"tar.xz")
|
||||
build_tar_xz
|
||||
;;
|
||||
esac
|
|
@ -11,11 +11,11 @@ script:
|
|||
AppDir:
|
||||
path: ./AppDir
|
||||
app_info:
|
||||
id: io.appflowy.appflowy
|
||||
id: io.appflowy.AppFlowy
|
||||
name: AppFlowy
|
||||
icon: appflowy.svg
|
||||
version: [CHANGE_THIS]
|
||||
exec: appflowy
|
||||
exec: AppFlowy
|
||||
exec_args: $@
|
||||
apt:
|
||||
arch:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
Type=Application
|
||||
Name=AppFlowy
|
||||
Icon=/usr/share/icons/hicolor/scalable/apps/appflowy.svg
|
||||
Exec=/usr/bin/appflowy %U
|
||||
Exec=/usr/bin/AppFlowy %U
|
||||
Categories=Network;Productivity;
|
||||
Keywords=Notes
|
||||
Terminal=false
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
if [ -e /usr/bin/appflowy ]; then
|
||||
if [ -e /usr/bin/AppFlowy ]; then
|
||||
echo "Symlink already exists, skipping."
|
||||
else
|
||||
echo "Creating Symlink in /usr/bin/appflowy"
|
||||
ln -s /usr/lib/appflowy/appflowy /usr/bin/appflowy
|
||||
ln -s /usr/lib/AppFlowy/AppFlowy /usr/bin/AppFlowy
|
||||
ln -s /usr/lib/AppFlowy/launcher.sh /usr/bin/AppFlowyLauncher.sh
|
||||
fi
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env bash
|
||||
if [ -e /usr/bin/appflowy ]; then
|
||||
rm /usr/bin/appflowy
|
||||
if [ -e /usr/bin/AppFlowy ]; then
|
||||
rm /usr/bin/AppFlowy
|
||||
rm /usr/bin/AppFlowyLauncher.sh
|
||||
fi
|
||||
|
|
|
@ -25,9 +25,9 @@ chmod 0755 $DEBIAN/postinst
|
|||
chmod 0755 $DEBIAN/postrm
|
||||
grep -rl "\[CHANGE_THIS\]" $DEBIAN/control | xargs sed -i "s/\[CHANGE_THIS\]/$VERSION/"
|
||||
|
||||
cp -fR $LINUX_RELEASE_PRODUCTION/appflowy $LIB
|
||||
cp ./scripts/linux_distribution/deb/appflowy.desktop $APPLICATIONS
|
||||
cp ./scripts/linux_distribution/packaging/io.appflowy.appflowy.metainfo.xml $METAINFO
|
||||
cp -fR $LINUX_RELEASE_PRODUCTION/AppFlowy $LIB
|
||||
cp ./scripts/linux_distribution/deb/AppFlowy.desktop $APPLICATIONS
|
||||
cp ./scripts/linux_distribution/packaging/io.appflowy.AppFlowy.metainfo.xml $METAINFO
|
||||
cp ./scripts/linux_distribution/packaging/appflowy.svg $ICONS
|
||||
|
||||
# Build the package
|
||||
|
|
|
@ -1 +1 @@
|
|||
Please refer to https://github.com/flathub/io.appflowy.appflowy repo.
|
||||
Please refer to https://github.com/flathub/io.appflowy.AppFlowy repo.
|
||||
|
|
|
@ -1,46 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop-application">
|
||||
<id>io.appflowy.appflowy</id>
|
||||
|
||||
<id>io.appflowy.AppFlowy</id>
|
||||
|
||||
<name>AppFlowy</name>
|
||||
<summary>Open Source Notion Alternative</summary>
|
||||
|
||||
<summary>Open Source Notion Alternative</summary>
|
||||
|
||||
<metadata_license>CC-BY-4.0</metadata_license>
|
||||
<project_license>AGPL-3.0-only</project_license>
|
||||
|
||||
|
||||
<description>
|
||||
<p>
|
||||
# Built for teams that need more control and flexibility ## 100% data control You can host
|
||||
AppFlowy wherever you want; no vendor lock-in.
|
||||
# Built for teams that need more control and flexibility ## 100% data control You can host AppFlowy wherever you want; no vendor lock-in.
|
||||
</p>
|
||||
<p>
|
||||
## Unlimited customizations Design and modify AppFlowy your way with an open core codebase.
|
||||
</p>
|
||||
<p>
|
||||
## One codebase supporting multiple platforms AppFlowy is built with Flutter and Rust. What
|
||||
does this mean? Faster development, better native experience, and more reliable performance.
|
||||
## One codebase supporting multiple platforms AppFlowy is built with Flutter and Rust. What does this mean? Faster development, better native experience, and more reliable performance.
|
||||
</p>
|
||||
<p>
|
||||
# Built for individuals who care about data security and mobile experience ## 100% control of
|
||||
your data Download and install AppFlowy on your local machine. You own and control your
|
||||
personal data.
|
||||
# Built for individuals who care about data security and mobile experience ## 100% control of your data Download and install AppFlowy on your local machine. You own and control your personal data.
|
||||
</p>
|
||||
<p>
|
||||
## Extensively extensible For those with no coding experience, AppFlowy enables you to create
|
||||
apps that suit your needs. It's built on a community-driven toolbox, including templates,
|
||||
plugins, themes, and more.
|
||||
## Extensively extensible For those with no coding experience, AppFlowy enables you to create apps that suit your needs. It's built on a community-driven toolbox, including templates, plugins, themes, and more.
|
||||
</p>
|
||||
<p>
|
||||
## Truly native experience Faster, more stable with support for offline mode. It's also
|
||||
better integrated with different devices. Moreover, AppFlowy enables users to access features
|
||||
and possibilities not available on the web.
|
||||
## Truly native experience Faster, more stable with support for offline mode. It's also better integrated with different devices. Moreover, AppFlowy enables users to access features and possibilities not available on the web.
|
||||
</p>
|
||||
</description>
|
||||
|
||||
<launchable type="desktop-id">io.appflowy.appflowy.desktop</launchable>
|
||||
|
||||
<launchable type="desktop-id">io.appflowy.AppFlowy.desktop</launchable>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://github.com/AppFlowy-IO/appflowy/raw/main/doc/imgs/welcome.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
</component>
|
||||
</component>
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[D-BUS Service]
|
||||
Name=io.appflowy.appflowy
|
||||
Name=io.appflowy.AppFlowy
|
||||
Exec=AppFlowy
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
gdbus call --session --dest io.appflowy.appflowy \
|
||||
--object-path /io/appflowy/appflowy/Object \
|
||||
--method io.appflowy.appflowy.Open "['$1']" {}
|
||||
gdbus call --session --dest io.appflowy.AppFlowy \
|
||||
--object-path /io/appflowy/AppFlowy/Object \
|
||||
--method io.appflowy.AppFlowy.Open "['$1']" {}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
if [ -e /usr/local/bin/appflowy ]; then
|
||||
if [ -e /usr/local/bin/AppFlowy ]; then
|
||||
echo "Symlink already exists, skipping."
|
||||
else
|
||||
echo "Creating Symlink in /usr/local/bin/appflowy"
|
||||
ln -s /opt/appflowy/appflowy /usr/local/bin/appflowy
|
||||
ln -s /opt/AppFlowy/AppFlowy /usr/local/bin/AppFlowy
|
||||
fi
|
||||
|
|
Loading…
Add table
Reference in a new issue