Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
8882982
Refactor code structure for improved readability and maintainability;…
Nov 29, 2025
5607b6a
Add Japanese and Chinese localizations for app strings
Nov 29, 2025
8ce61ee
fix: update Japanese localization strings for consistency and accuracy
Nov 29, 2025
e57a01a
fix: reorder imports and enhance MiniPlayer for safe area handling
Nov 30, 2025
20f5f65
fix: update dependencies and add .gitignore entries for local configu…
Feb 18, 2026
590fb55
chore: update Gradle and Kotlin versions, add just_audio_media_kit an…
Feb 18, 2026
a1f51ae
feat: implement file preview functionality with support for audio, im…
Feb 18, 2026
3548ae0
feat: add logout confirmation dialog and localizations for logout act…
Feb 18, 2026
8b9ec61
feat: add URL launcher functionality to open DLsite in browser and up…
Feb 18, 2026
b0f591e
feat: implement file download functionality and related UI components
Feb 18, 2026
63fa029
feat: implement download management features and settings screen
Feb 18, 2026
e9d1a18
feat: remove unused activeTabIndex and related logic from HomeViewMod…
Feb 18, 2026
df9a921
feat: refactor download functionality to use DownloadRequestItem; int…
Feb 18, 2026
3ed909a
feat: add onSelected handler to PopupMenuButton in FilterPanel for or…
Feb 18, 2026
4a624ef
feat: refactor audio player service and related components; remove un…
Feb 18, 2026
2226c93
feat: update Flutter version to 3.41.1 and improve formatting in buil…
Feb 18, 2026
4163cf4
feat: implement work rating feature; add updateWorkRating method and …
Feb 18, 2026
17de612
feat: add English localization support; create app_localizations_en.d…
Feb 18, 2026
9873f53
feat: add language selection feature; implement LocaleController and …
Feb 18, 2026
3401693
feat: add Windows build support; update build workflow and add launch…
Feb 18, 2026
3d0d45c
fix policy
Feb 18, 2026
8e8bf48
feat: update Java version to 21 in build workflow; enhance iOS deploy…
Feb 18, 2026
c7ea89d
feat: enhance WorkGrid and WorkRow to support dynamic column count an…
Feb 18, 2026
782fc47
feat: simplify file selection logic in DownloadFileSelectionDialog
Feb 19, 2026
06f4973
feat: refactor WorkCover widget layout for improved structure and rea…
Feb 19, 2026
ecb9c97
feat: enhance FilePreviewDialog to support image navigation and previ…
Feb 19, 2026
60ecaed
feat: add localization support for tags and work titles; refactor rel…
Feb 19, 2026
464ce9d
feat: enhance DetailScreen to display localized title in app bar
Feb 19, 2026
3ea9367
feat: add login requirement handling in PlaylistsViewModel and update…
Feb 19, 2026
eb94b0d
feat: update README files for enhanced localization and project detai…
Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 51 additions & 17 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ permissions:
on:
push:
tags:
- 'v*' # 当推送 v 开头的tag时触发,如 v1.0.0
- "v*" # 当推送 v 开头的tag时触发,如 v1.0.0
workflow_dispatch:

env:
FLUTTER_VERSION: '3.27.0'
FLUTTER_VERSION: "3.41.1"

jobs:
build-android:
Expand All @@ -19,19 +19,19 @@ jobs:
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # 获取完整的 git 历史
fetch-depth: 0 # 获取完整的 git 历史

- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
distribution: "zulu"
java-version: "21"

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: 'stable'
channel: "stable"

- name: Get dependencies
run: flutter pub get
Expand Down Expand Up @@ -66,13 +66,13 @@ jobs:
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # 获取完整的 git 历史
fetch-depth: 0 # 获取完整的 git 历史

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.27.0'
channel: 'stable'
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: "stable"

- name: Get dependencies
run: flutter pub get
Expand All @@ -93,14 +93,45 @@ jobs:
name: ios-build
path: build/ios/iphoneos/app-release.ipa

build-windows:
runs-on: windows-latest

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # 获取完整的 git 历史

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: "stable"

- name: Get dependencies
run: flutter pub get

- name: Build Windows
run: flutter build windows --release

- name: Package Windows build
shell: pwsh
run: |
Compress-Archive -Path "build/windows/x64/runner/Release/*" -DestinationPath "build/windows/x64/runner/Release/windows-release.zip" -Force

- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: windows-build
path: build/windows/x64/runner/Release/windows-release.zip

upload:
runs-on: ubuntu-latest
needs: [ build-android, build-ios ]
needs: [build-android, build-ios, build-windows]

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # 获取完整的 git 历史
fetch-depth: 0 # 获取完整的 git 历史

- name: Download artifacts
uses: actions/download-artifact@v4
Expand Down Expand Up @@ -141,35 +172,38 @@ jobs:
draft: false
body: |
## 🚧 Pre-release Version

### 📋 Release Information
**Version:** ${{ github.ref_name }}
**Previous Version:** ${{ steps.previoustag.outputs.tag }}
**Build Environment:** Flutter ${{ env.FLUTTER_VERSION }}

### 📝 Changelog
${{ steps.commits.outputs.commits }}

### 📦 Distribution
| File | Description | Purpose |
|------|-------------|----------|
| `.apk` | Android Package | Direct installation for testing |
| `.aab` | Android App Bundle | Google Play Store deployment |

| `.ipa` | iOS Package | iOS sideload/testing distribution |
| `.zip` | Windows Package | Windows desktop distribution |

### 🔍 Additional Notes
- This is a pre-release build intended for testing purposes
- Features and functionality may not be fully stable
- Not recommended for production use

### 📱 Compatibility
- Minimum Android SDK: 21 (Android 5.0)
- Target Android SDK: 33 (Android 13)

> **Note:** Please report any issues or bugs through the GitHub issue tracker.
files: |
dist/flutter-apk/app-release.apk
dist/bundle/release/app-release.aab
dist/app-release.ipa
dist/windows-release.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,6 @@ app.*.map.json
# 添加以下内容
**/android/key.properties
**/android/app/upload-keystore.jks

# mise
mise.local.toml
73 changes: 42 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,45 @@
# Yuro

[English](README_en.md)
[English](README_en.md) | [日本語](README_ja.md)

一个使用 Flutter 构建的 ASMR.ONE 客户端
Yuro 是一个使用 Flutter 构建的 ASMR.ONE 第三方客户端,聚焦于稳定播放、下载管理与多语言体验

## 项目概述

Yuro 旨在通过精美的动画和现代化的用户界面,提供流畅愉悦的 ASMR 聆听体验
Yuro 致力于提供流畅、轻量且现代化的 ASMR 使用体验,在播放、缓存和文件处理上做了针对性优化

## 特性
## 近期更新(主要为 `8882982` 之后)

- 稳定的后台播放,再也不用担心杀后台了
- 精美的动画效果
- 流畅的播放体验
- 简洁的UI设计
- 全方位的智能缓存机制
- 图片智能缓存:优化封面加载速度,告别重复加载
- 字幕本地缓存:实现快速字幕匹配与加载
- 音频文件缓存:减少重复下载,节省流量开销
- 为服务器减轻压力
- 智能的缓存策略确保资源高效利用
- 懒加载机制避免无效请求
- 合理的缓存清理机制平衡本地存储
- 新增多语言本地化(中文 / English / 日本語)与应用内语言切换
- 增强作品详情本地化:标题、标签等内容可按语言显示
- 实现文件下载能力:文件选择下载、下载目录设置、下载进度与历史记录
- 新增文件预览(音频 / 图片 / 文本)及图片浏览导航
- 支持作品评分、退出登录确认、在浏览器打开 DLsite
- 强化播放列表登录态处理,未登录时提供引导
- 构建与发布流程增强:新增 Windows 构建支持,CI 使用 Flutter 3.41.1

## 核心特性

- 稳定后台播放与 Mini Player
- 智能缓存机制(封面、字幕、音频)
- 搜索、收藏夹与播放列表管理
- 推荐内容与相关推荐浏览
- 作品标记(想听 / 在听 / 听过等)与评分
- 下载任务管理与进度跟踪
- 多语言界面(中文、English、日本語)

## 支持平台

- Android
- iOS(14.0+)
- Windows
- GitHub Actions 提供 Android / iOS / Windows 构建产物

## 开发要求

- Flutter 3.41.1(stable)
- Dart >= 3.2.3 < 4.0.0
- CI Java 21

## 开发准则

Expand All @@ -32,11 +50,13 @@ Yuro 旨在通过精美的动画和现代化的用户界面,提供流畅愉悦

<pre>
lib/
├── core/ # 核心功能
├── data/ # 数据层
├── domain/ # 领域层
├── presentation/ # 表现层
└── common/ # 通用功能
├── core/ # 音频、缓存、下载、国际化、依赖注入等核心能力
├── data/ # API、数据模型与仓库实现
├── presentation/ # ViewModel、布局与展示逻辑
├── screens/ # 页面级 Screen
├── widgets/ # 可复用 UI 组件
├── common/ # 常量、扩展与工具方法
└── l10n/ # 本地化资源(ARB)
</pre>

## 开始使用
Expand All @@ -56,19 +76,10 @@ flutter pub get
flutter run
```

## 功能特性

- 现代化UI设计
- 流畅的动画效果
- ASMR 播放控制
- 播放列表管理
- 搜索功能
- 收藏功能

## 贡献指南

在提交贡献之前,请阅读我们的[开发准则](docs/guidelines_zh.md)。

## 许可证

本项目采用 Creative Commons 非商业性使用-相同方式共享许可证 (CC BY-NC-SA) - 查看 [LICENSE](LICENSE) 文件了解详细信息。该许可证允许他人修改和分享您的作品,但禁止商业用途,要求保留署名,并要求对修改后的作品以相同的许可证发布
本项目采用 Creative Commons 非商业性使用-相同方式共享许可证 (CC BY-NC-SA)。详情请参阅 [LICENSE](LICENSE)。
64 changes: 45 additions & 19 deletions README_en.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,45 @@
# ASMR One App
# Yuro

[中文说明](README.md)
[中文说明](README.md) | [日本語](README_ja.md)

A beautiful and modern ASMR player application built with Flutter.
Yuro is a Flutter-based third-party ASMR.ONE client focused on stable playback, download management, and multilingual usability.

## Project Overview

ASMR One App is designed to provide a smooth and enjoyable ASMR listening experience with beautiful animations and a modern user interface.
Yuro aims to provide a smooth, lightweight, and modern ASMR experience with practical optimizations around playback, caching, and file handling.

## Recent Updates (mostly after `8882982`)

- Added multilingual localization (Chinese / English / Japanese) and in-app language switching
- Improved localized metadata in detail views (titles, tags, and related labels)
- Added file downloads with file selection, configurable download directory, progress panel, and history
- Added file preview support (audio / image / text) with image navigation
- Added work rating, logout confirmation, and "open DLsite in browser"
- Improved playlist login-state handling with user guidance when authentication is required
- Enhanced build and release pipeline with Windows build support and Flutter 3.41.1 CI

## Core Features

- Stable background playback and Mini Player
- Smart caching for covers, subtitles, and audio files
- Search, favorites, and playlist management
- Recommendation views and related works browsing
- Work mark status (want/listening/listened/etc.) and rating
- Download task management with progress tracking
- Multilingual UI (Chinese, English, Japanese)

## Supported Platforms

- Android
- iOS (14.0+)
- Windows
- GitHub Actions builds Android / iOS / Windows artifacts

## Development Requirements

- Flutter 3.41.1 (stable)
- Dart >= 3.2.3 < 4.0.0
- CI Java 21

## Development Guidelines

Expand All @@ -17,11 +50,13 @@ We maintain a comprehensive set of development guidelines to ensure code quality

<pre>
lib/
├── core/ # Core functionality
├── data/ # Data layer
├── domain/ # Domain layer
├── presentation/ # Presentation layer
└── common/ # Common functionality
├── core/ # Audio, cache, download, locale, DI, and other core modules
├── data/ # API layer, models, and repository implementations
├── presentation/ # ViewModels, layouts, and presentation logic
├── screens/ # Route-level screens
├── widgets/ # Reusable UI components
├── common/ # Shared constants, extensions, and utilities
└── l10n/ # Localization resources (ARB)
</pre>

## Getting Started
Expand All @@ -41,19 +76,10 @@ flutter pub get
flutter run
```

## Features

- Modern UI design
- Smooth animations
- ASMR playback control
- Playlist management
- Search functionality
- Favorites collection

## Contributing

Please read our [Development Guidelines](docs/guidelines_en.md) before making a contribution.

## License

This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License (CC BY-NC-SA) - see the [LICENSE](LICENSE) file for details. This license allows others to remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License (CC BY-NC-SA). See [LICENSE](LICENSE) for details.
Loading