release: version 0.9.11
* ui: tweaks on header bar layout * release: build arm64 linux binaries
This commit is contained in:
@@ -73,7 +73,7 @@ jobs:
|
||||
args: '--target aarch64-pc-windows-msvc --bundles nsis'
|
||||
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
timeout-minutes: 20
|
||||
timeout-minutes: 25
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -168,6 +168,95 @@ jobs:
|
||||
echo "Uploading $bin_file to GitHub release"
|
||||
gh release upload ${{ needs.get-release.outputs.release_tag }} $bin_file --clobber
|
||||
|
||||
build-tauri-linux-arm:
|
||||
if: false
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [get-release]
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [aarch64, armv7l]
|
||||
include:
|
||||
- arch: aarch64
|
||||
cpu: cortex-a72
|
||||
base_image: https://dietpi.com/downloads/images/DietPi_RPi-ARMv8-Bookworm.img.xz
|
||||
deb: arm64
|
||||
appimage: aarch64
|
||||
- arch: armv7l
|
||||
cpu: cortex-a53
|
||||
deb: armhfp
|
||||
appimage: armhf
|
||||
base_image: https://dietpi.com/downloads/images/DietPi_RPi-ARMv7-Bookworm.img.xz
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: initialize git submodules
|
||||
run: git submodule update --init --recursive
|
||||
|
||||
- name: create .env.local file for Next.js
|
||||
run: |
|
||||
echo "NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}" >> .env.local
|
||||
echo "NEXT_PUBLIC_POSTHOG_HOST=${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}" >> .env.local
|
||||
echo "NEXT_PUBLIC_SUPABASE_URL=${{ secrets.NEXT_PUBLIC_SUPABASE_URL }}" >> .env.local
|
||||
echo "NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }}" >> .env.local
|
||||
echo "NEXT_PUBLIC_APP_PLATFORM=tauri" >> .env.local
|
||||
|
||||
- name: copy .env.local to apps/readest-app
|
||||
run: cp .env.local apps/readest-app/.env.local
|
||||
|
||||
- name: cache rust build artifacts
|
||||
uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
cache-on-failure: true
|
||||
|
||||
- name: build app
|
||||
uses: pguyot/arm-runner-action@v2.6.5
|
||||
with:
|
||||
base_image: ${{ matrix.base_image }}
|
||||
cpu: ${{ matrix.cpu }}
|
||||
bind_mount_repository: true
|
||||
image_additional_mb: 10240
|
||||
optimize_image: no
|
||||
#exit_on_fail: no
|
||||
commands: |
|
||||
# Prevent Rust from complaining about $HOME not matching eid home
|
||||
export HOME=/root
|
||||
|
||||
# Workaround to CI worker being stuck on Updating crates.io index
|
||||
export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
|
||||
|
||||
# Install setup prerequisites
|
||||
apt-get update -y --allow-releaseinfo-change
|
||||
apt-get autoremove -y
|
||||
apt-get install -y --no-install-recommends --no-install-suggests pkg-config libfontconfig-dev curl libwebkit2gtk-4.1-dev build-essential libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf libfuse2 file
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
||||
. "$HOME/.cargo/env"
|
||||
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash
|
||||
apt-get install -y nodejs
|
||||
|
||||
npm install -g pnpm@latest-10
|
||||
|
||||
# Install frontend dependencies
|
||||
pnpm install
|
||||
|
||||
# Copy pdfjs-dist to public directory
|
||||
pnpm --filter @readest/readest-app setup-pdfjs
|
||||
|
||||
# Build the application
|
||||
pnpm tauri build
|
||||
|
||||
- name: upload arm bundles
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
shell: bash
|
||||
run: |
|
||||
version=${{ needs.get-release.outputs.release_version }}
|
||||
gh release upload ${{ needs.get-release.outputs.release_tag }} target/release/bundle/deb/Readest_${version}_${{ matrix.deb }}.deb --clobber
|
||||
gh release upload ${{ needs.get-release.outputs.release_tag }} target/release/bundle/appimage/Readest_${version}_${{ matrix.appimage }}.AppImage --clobber
|
||||
|
||||
update-release:
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@readest/readest-app",
|
||||
"version": "0.9.10",
|
||||
"version": "0.9.11",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "dotenv -e .env.tauri -- next dev",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
{
|
||||
"releases": {
|
||||
"0.9.11": {
|
||||
"date": "2025-02-14",
|
||||
"notes": [
|
||||
"Organize the library with customizable groups/folders",
|
||||
"Alpha release for Android and iOS platforms",
|
||||
"Various fixes and enhancements on Android and iOS platforms"
|
||||
]
|
||||
},
|
||||
"0.9.10": {
|
||||
"date": "2025-02-08",
|
||||
"notes": [
|
||||
|
||||
@@ -7,7 +7,7 @@ use tauri::{
|
||||
}; // 0.8
|
||||
|
||||
const WINDOW_CONTROL_PAD_X: f64 = 10.0;
|
||||
const WINDOW_CONTROL_PAD_Y: f64 = 22.0;
|
||||
const WINDOW_CONTROL_PAD_Y: f64 = 20.0;
|
||||
|
||||
struct UnsafeWindowHandle(*mut std::ffi::c_void);
|
||||
unsafe impl Send for UnsafeWindowHandle {}
|
||||
|
||||
@@ -56,12 +56,12 @@ const LibraryHeader: React.FC<LibraryHeaderProps> = ({
|
||||
<div
|
||||
ref={headerRef}
|
||||
className={clsx(
|
||||
'titlebar z-10 h-11 w-full py-2 pr-6',
|
||||
'titlebar z-10 flex h-11 w-full items-center py-2 pr-6',
|
||||
appService?.hasSafeAreaInset && 'mt-[env(safe-area-inset-top)]',
|
||||
isTrafficLightVisible ? 'pl-16' : 'pl-2',
|
||||
)}
|
||||
>
|
||||
<div className='flex items-center justify-between space-x-6 sm:space-x-12'>
|
||||
<div className='flex w-full items-center justify-between space-x-6 sm:space-x-12'>
|
||||
<div className='exclude-title-bar-mousedown relative flex w-full items-center pl-4'>
|
||||
{isInGroupView && (
|
||||
<button
|
||||
|
||||
@@ -22,6 +22,7 @@ export const usePullToRefresh = (ref: React.RefObject<HTMLDivElement>, onTrigger
|
||||
|
||||
if (el.scrollTop > 0) return;
|
||||
|
||||
const initialX = startEvent.touches[0]!.clientX;
|
||||
const initialY = startEvent.touches[0]!.clientY;
|
||||
|
||||
el.addEventListener('touchmove', handleTouchMove, { passive: false });
|
||||
@@ -31,10 +32,12 @@ export const usePullToRefresh = (ref: React.RefObject<HTMLDivElement>, onTrigger
|
||||
const el = ref.current;
|
||||
if (!el) return;
|
||||
|
||||
const currentX = moveEvent.touches[0]!.clientX;
|
||||
const currentY = moveEvent.touches[0]!.clientY;
|
||||
const dx = currentX - initialX;
|
||||
const dy = currentY - initialY;
|
||||
if (dy < 0 || Math.abs(dx) * 2 > Math.abs(dy)) return;
|
||||
|
||||
if (dy < 0) return;
|
||||
const parentEl = el.parentNode as HTMLDivElement;
|
||||
if (dy > TRIGGER_THRESHOLD) {
|
||||
flipArrow(parentEl);
|
||||
|
||||
Reference in New Issue
Block a user