Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
c39da6e
feat(ci): implement semantic-release with three-branch strategy (#89)
mkdir700 Sep 8, 2025
4c8dab6
chore(release): 1.0.0-alpha.1
semantic-release-bot Sep 8, 2025
07c3e5f
fix(ci): resolve duplicate GitHub releases issue (#90)
mkdir700 Sep 8, 2025
4534162
fix: improve release workflow and build configuration (#91)
mkdir700 Sep 8, 2025
31596b8
chore(release): 1.0.0-alpha.2
semantic-release-bot Sep 8, 2025
f066209
fix(release): remove custom labels from GitHub release assets (#92)
mkdir700 Sep 8, 2025
136902d
refactor(config): centralize default values in ConfigManager (#93)
mkdir700 Sep 8, 2025
a47466b
feat(ci): add alpha and beta branch support to test workflow (#94)
mkdir700 Sep 8, 2025
c8d654d
refactor(HomePage): remove watched indicator from video thumbnails (#96)
mkdir700 Sep 8, 2025
237dd30
fix: remove path unique constraint to allow duplicate video file addi…
mkdir700 Sep 8, 2025
2f64029
feat: replace FFmpeg with MediaInfo for video metadata extraction (#95)
mkdir700 Sep 8, 2025
8bdae3b
chore(release): 1.0.0-alpha.3
semantic-release-bot Sep 8, 2025
e30213b
fix(updater): resolve auto-update channel handling and version-based …
mkdir700 Sep 8, 2025
526e71a
feat(player): implement hover menu system for control panel component…
mkdir700 Sep 8, 2025
bd7d116
chore(release): 1.0.0-alpha.4
semantic-release-bot Sep 8, 2025
df83095
feat(player): implement favorite playback rates with hover menu syste…
mkdir700 Sep 9, 2025
a951877
feat(ui): enhance video selection clarity and simplify display (#101)
mkdir700 Sep 9, 2025
c6c8909
fix(player): ensure video always starts paused and sync UI state corr…
mkdir700 Sep 9, 2025
cb148f4
refactor(media): replace mediainfo.js with @remotion/media-parser (#103)
mkdir700 Sep 10, 2025
e5f4109
feat(startup): implement configurable startup intro with preloading o…
mkdir700 Sep 10, 2025
b675150
feat(player): implement volume wheel control with intelligent acceler…
mkdir700 Sep 10, 2025
a05abd2
refactor(SubtitleList): implement state machine architecture for scro…
mkdir700 Sep 10, 2025
4f5bad2
feat(ci): configure CodeRabbit for alpha, beta, and main branch PR re…
mkdir700 Sep 10, 2025
bd7f5c3
fix(player): improve subtitle overlay positioning and remove i18n dep…
mkdir700 Sep 10, 2025
b8a9522
chore(release): 1.0.0-alpha.5
semantic-release-bot Sep 10, 2025
bb2ac30
feat(search): implement video search engine with live results and hig…
mkdir700 Sep 10, 2025
444476b
fix(subtitle): improve ASS subtitle parsing for bilingual text (#111)
mkdir700 Sep 10, 2025
28d061e
chore(release): 1.0.0-alpha.6
semantic-release-bot Sep 10, 2025
c25f17a
feat(player): implement comprehensive video error recovery (#113)
mkdir700 Sep 10, 2025
1ff9550
feat(ci): add dynamic workflow names to show release version in actio…
mkdir700 Sep 10, 2025
5a4f26a
feat(ffmpeg): integrate bundled FFmpeg with automatic fallback mechan…
mkdir700 Sep 10, 2025
0ca1d39
fix(ci): sync package.json version with manual trigger input (#116)
mkdir700 Sep 10, 2025
bd43c5c
chore(release): 1.0.0-alpha.7
semantic-release-bot Sep 10, 2025
4030234
feat(ci): implement semantic-release with automatic version detection…
mkdir700 Sep 10, 2025
38e4db9
chore(release): 1.0.0-alpha.8
semantic-release-bot Sep 10, 2025
c2c12c9
ci(test): Add dev branch to Github Actions test workflow triggers
mkdir700 Sep 11, 2025
b4ad16f
fix(player): Fix subtitle navigation when activeCueIndex is -1 (#119)
mkdir700 Sep 11, 2025
7879ef4
fix(homepage): Fix UI desynchronization issue after deleting video re…
mkdir700 Sep 11, 2025
2c65f5a
feat(performance): implement video import performance optimization wi…
mkdir700 Sep 11, 2025
d563c92
fix(player): Fix subtitle overlay dragging to bottom and improve resp…
mkdir700 Sep 11, 2025
29f70f6
fix(ui): Remove white border shadow from modal buttons in dark mode (…
mkdir700 Sep 11, 2025
be33316
feat(scripts): optimize FFmpeg download progress display (#125)
mkdir700 Sep 11, 2025
a42ee9d
Update .coderabbit.yaml
mkdir700 Sep 12, 2025
78d3629
feat(player): Implement fullscreen toggle functionality with keyboard…
mkdir700 Sep 12, 2025
9730ba1
fix(player): Prevent subtitle overlay interactions from triggering vi…
mkdir700 Sep 12, 2025
0e85ec3
Update README.md
mkdir700 Sep 8, 2025
c417557
ci(sync): add workflow to sync main to beta (#132)
mkdir700 Sep 12, 2025
35eb0a5
ci: add dev release workflow (#131)
mkdir700 Sep 12, 2025
9de6aee
ci: Update dev-release.yml
mkdir700 Sep 12, 2025
93ac160
Revert "ci(sync): add workflow to sync main to beta (#132)"
mkdir700 Sep 12, 2025
eadebcf
fix(windows): resolve file extension validation requiring double dots…
mkdir700 Sep 12, 2025
37a11e5
ci(semantic-release): Allow using chore(release): ... to trigger a pa…
mkdir700 Sep 12, 2025
670530a
refactor(branding): rebrand from Cherry Studio to EchoPlayer across a…
mkdir700 Sep 12, 2025
8a94ceb
fix(ci): Failed to get next version
mkdir700 Sep 12, 2025
0634016
Update LICENSE
mkdir700 Sep 12, 2025
0eb4697
fix(subtitle): prevent overlay showing content during subtitle gaps (…
mkdir700 Sep 12, 2025
805e774
fix(player): improve play/pause button reliability (#141)
mkdir700 Sep 12, 2025
70d289d
feat(dictionary): expose DictionaryService API in preload and add com…
mkdir700 Sep 12, 2025
e2857e9
fix(build): Fix FFmpeg cross-platform build on macOS for Windows targ…
mkdir700 Sep 12, 2025
22005bb
feat: implement Ctrl+C subtitle copy with lightweight toast notificat…
mkdir700 Sep 12, 2025
b17fe10
chore(release): 1.0.0-beta.1
semantic-release-bot Sep 13, 2025
996e76a
fix(updater): remove detailed release notes from system update dialog…
mkdir700 Sep 13, 2025
e6bab51
remove: subtitle display mode keyboard shortcuts (#154)
mkdir700 Sep 13, 2025
64e36a2
fix(logger): optimize logger memory management and reduce high-freque…
mkdir700 Sep 13, 2025
582168f
fix(subtitle): resolve overlay pause/seek update delays with immediat…
mkdir700 Sep 13, 2025
95dae5a
feat(ffmpeg): implement dynamic FFmpeg download system with runtime m…
mkdir700 Sep 13, 2025
30496b1
feat: add Windows ARM64 architecture support (#157)
mkdir700 Sep 13, 2025
ee435ce
fix(ui): use system title bar for Windows and Linux platforms (#158)
mkdir700 Sep 13, 2025
b82be00
refactor: remove legacy manual release scripts in favor of semantic-r…
mkdir700 Sep 13, 2025
3d90e67
fix(updater): resolve pre-release version detection issue (#161)
mkdir700 Sep 13, 2025
25bc32b
fix(player): persist relocated video file path to database (#162)
mkdir700 Sep 13, 2025
61efdad
feat(ffmpeg): add China mirror support for FFmpeg downloads (#164)
mkdir700 Sep 14, 2025
45fbe0a
ci: Sync release to gitcode
mkdir700 Sep 14, 2025
64dbeac
chore(release): 1.0.0-beta.2
semantic-release-bot Sep 14, 2025
2932a6e
feat(player): comprehensive dictionary popover with pronunciation and…
mkdir700 Sep 15, 2025
d5a3360
fix(dictionary): support pronunciation extraction without UK/US disti…
mkdir700 Sep 15, 2025
09e98e2
fix(player): resolve focus loss after dictionary popup interaction (#…
mkdir700 Sep 15, 2025
19ca2f5
fix(player): resolve shortcut pause failure caused by state oscillati…
mkdir700 Sep 15, 2025
5d44cde
feat(telemetry): integrate Sentry error monitoring across main and re…
mkdir700 Sep 15, 2025
b6171de
feat(updater): integrate China-specific feed URLs for better update e…
mkdir700 Sep 16, 2025
e5d198d
feat(workflow): auto-fetch GitHub release description when manual tri…
mkdir700 Sep 16, 2025
c0dcfd1
fix(player): resolve spacebar shortcut not working after clicking to …
mkdir700 Sep 16, 2025
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
35 changes: 35 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Configuration for development teams
language: 'en-US'

reviews:
profile: 'assertive'
high_level_summary: true
auto_review:
enabled: true
drafts: false
base_branches:
- 'alpha'
- 'beta'
- 'main'
- 'dev'
ignore_title_keywords:
- 'wip'
- 'draft'
tools:
eslint:
enabled: true
ruff:
enabled: true
gitleaks:
enabled: true
hadolint:
enabled: true

chat:
auto_reply: true

knowledge_base:
code_guidelines:
enabled: true
filePatterns:
- '**/.cursorrules'
236 changes: 236 additions & 0 deletions .github/workflows/dev-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
name: Dev Release Build

on:
workflow_dispatch:
inputs:
platform:
description: 'Target platform'
required: true
type: choice
options:
- macos
- linux
- windows
version:
description: 'Version to set (optional)'
required: false
type: string

jobs:
build-macos:
runs-on: macos-latest
if: ${{ inputs.platform == 'macos' }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 8
run_install: false

- name: Get pnpm store directory
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install

- name: Set version
if: ${{ inputs.version != '' }}
shell: bash
run: |
node -e "
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
pkg.version = '${{ inputs.version }}';
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
console.log(\`Version set to \${pkg.version}\`);
"

- name: Build macOS package
run: |
pnpm build
pnpm exec electron-builder --mac --publish never
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ELECTRON_BUILDER_CHANNEL: dev

- name: List build artifacts
shell: bash
run: |
echo "Build artifacts:"
find dist -type f -name "*" | head -20

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: macos-dev-artifacts
path: |
dist/*.dmg
dist/*.zip
dist/*.yml
dist/*.yaml
dist/*.blockmap
retention-days: 30
if-no-files-found: warn

build-linux:
runs-on: ubuntu-latest
if: ${{ inputs.platform == 'linux' }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 8
run_install: false

- name: Get pnpm store directory
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install

- name: Set version
if: ${{ inputs.version != '' }}
shell: bash
run: |
node -e "
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
pkg.version = '${{ inputs.version }}';
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
console.log(\`Version set to \${pkg.version}\`);
"

- name: Build Linux package
run: |
pnpm build
pnpm exec electron-builder --linux --publish never
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ELECTRON_BUILDER_CHANNEL: dev

- name: List build artifacts
shell: bash
run: |
echo "Build artifacts:"
find dist -type f -name "*" | head -20

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: linux-dev-artifacts
path: |
dist/*.AppImage
dist/*.deb
dist/*.yml
dist/*.yaml
dist/*.blockmap
retention-days: 30
if-no-files-found: warn

build-windows:
runs-on: windows-latest
if: ${{ inputs.platform == 'windows' }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 8
run_install: false

- name: Get pnpm store directory
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install

- name: Set version
if: ${{ inputs.version != '' }}
shell: bash
run: |
node -e "
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
pkg.version = '${{ inputs.version }}';
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
console.log(\`Version set to \${pkg.version}\`);
"

- name: Build Windows package
run: |
pnpm build
pnpm exec electron-builder --win --publish never
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ELECTRON_BUILDER_CHANNEL: dev

- name: List build artifacts
shell: bash
run: |
echo "Build artifacts:"
find dist -type f -name "*" | head -20

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: windows-dev-artifacts
path: |
dist/*.exe
dist/*.yml
dist/*.yaml
dist/*.blockmap
retention-days: 30
if-no-files-found: warn
Loading
Loading