rollingpebble 0.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rollingpebble-0.6.2/CHANGELOG.md +217 -0
- rollingpebble-0.6.2/MANIFEST.in +3 -0
- rollingpebble-0.6.2/PKG-INFO +158 -0
- rollingpebble-0.6.2/README.md +139 -0
- rollingpebble-0.6.2/backend/rollingpebble/__init__.py +5 -0
- rollingpebble-0.6.2/backend/rollingpebble/adapters/__init__.py +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/adapters/pylrclib_adapter.py +255 -0
- rollingpebble-0.6.2/backend/rollingpebble/adapters/pyroller_adapter.py +368 -0
- rollingpebble-0.6.2/backend/rollingpebble/cli.py +298 -0
- rollingpebble-0.6.2/backend/rollingpebble/config.py +54 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/index-ByboMpdf.css +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/index-yyBbsxuf.js +157 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/index-yyBbsxuf.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/ja-D7_rhcbo.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/ja-D7_rhcbo.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/ko-KR-DD0vrR3m.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/ko-KR-DD0vrR3m.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/ncmc-worker-BpoEUDiM.ts +210 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/pl-PL-CSfhlz8C.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/pl-PL-CSfhlz8C.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/pt-BR-BYOQPXu3.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/pt-BR-BYOQPXu3.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/sk-SK-ATjCPXMQ.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/sk-SK-ATjCPXMQ.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/smooth-scroll-Cyy-OSkS.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/smooth-scroll-Cyy-OSkS.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/zh-CN-y2rje7l9.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/zh-CN-y2rje7l9.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/zh-HK-BvMz0uGi.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/zh-HK-BvMz0uGi.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/zh-TW-o2O3CXEw.js +2 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/assets/zh-TW-o2O3CXEw.js.map +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/android-chrome-192x192.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/android-chrome-512x512.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/apple-touch-icon.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/browserconfig.xml +10 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/favicon-16x16.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/favicon-32x32.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/favicon.ico +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/mstile-150x150.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/mstile-310x310.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/favicons/safari-pinned-tab.svg +1 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/img/rollingpebble-avatar.png +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/img/rollingpebble-avatar.webp +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/img/rollingpebble-workspace-bg.webp +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/index.html +37 -0
- rollingpebble-0.6.2/backend/rollingpebble/frontend_dist/site.webmanifest +31 -0
- rollingpebble-0.6.2/backend/rollingpebble/jobs.py +573 -0
- rollingpebble-0.6.2/backend/rollingpebble/lyrics_utils.py +101 -0
- rollingpebble-0.6.2/backend/rollingpebble/main.py +555 -0
- rollingpebble-0.6.2/backend/rollingpebble/messages.py +147 -0
- rollingpebble-0.6.2/backend/rollingpebble/models.py +673 -0
- rollingpebble-0.6.2/backend/rollingpebble/paths.py +81 -0
- rollingpebble-0.6.2/backend/rollingpebble/runtime_constants.py +7 -0
- rollingpebble-0.6.2/backend/rollingpebble/runtime_dependencies.py +49 -0
- rollingpebble-0.6.2/backend/rollingpebble/runtime_environment.py +43 -0
- rollingpebble-0.6.2/backend/rollingpebble/runtime_installer.py +265 -0
- rollingpebble-0.6.2/backend/rollingpebble/runtime_python.py +80 -0
- rollingpebble-0.6.2/backend/rollingpebble/runtime_recipe.py +61 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/__init__.py +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/local_dialog.py +85 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/lrclib_service.py +29 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/netease_service.py +369 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/project_service.py +193 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/roller_service.py +421 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/runtime_manager.py +250 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/runtime_service.py +335 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/storage_service.py +1309 -0
- rollingpebble-0.6.2/backend/rollingpebble/services/upload_service.py +44 -0
- rollingpebble-0.6.2/backend/rollingpebble/storage/__init__.py +0 -0
- rollingpebble-0.6.2/backend/rollingpebble/storage/app_settings.py +41 -0
- rollingpebble-0.6.2/backend/rollingpebble/storage/files.py +149 -0
- rollingpebble-0.6.2/backend/rollingpebble/version.py +27 -0
- rollingpebble-0.6.2/backend/rollingpebble.egg-info/PKG-INFO +158 -0
- rollingpebble-0.6.2/backend/rollingpebble.egg-info/SOURCES.txt +80 -0
- rollingpebble-0.6.2/backend/rollingpebble.egg-info/dependency_links.txt +1 -0
- rollingpebble-0.6.2/backend/rollingpebble.egg-info/entry_points.txt +2 -0
- rollingpebble-0.6.2/backend/rollingpebble.egg-info/requires.txt +13 -0
- rollingpebble-0.6.2/backend/rollingpebble.egg-info/top_level.txt +1 -0
- rollingpebble-0.6.2/pyproject.toml +41 -0
- rollingpebble-0.6.2/setup.cfg +4 -0
- rollingpebble-0.6.2/tests/test_pyroller_adapter.py +118 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format loosely follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project uses Semantic Versioning.
|
|
6
|
+
|
|
7
|
+
## [0.6.2] - 2026-05-20
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Added Harmonese author information to the About dialog credits section.
|
|
12
|
+
- Added official website, GitHub, and Bandcamp links for Harmonese.
|
|
13
|
+
- Split author links and project repository links into separate rows in the About dialog.
|
|
14
|
+
|
|
15
|
+
## [0.6.1] - 2026-05-20
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Added a GitHub Actions workflow that publishes Python distributions to PyPI when a GitHub Release is published.
|
|
20
|
+
- Added frontend build and package-data preparation steps to the release workflow so wheels include the built WebUI.
|
|
21
|
+
- New `README.md` for users.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- Converted this changelog to a Keep a Changelog style structure.
|
|
26
|
+
- Updated the release process documentation for GitHub Releases plus PyPI trusted publishing.
|
|
27
|
+
|
|
28
|
+
## [0.6.0] - 2026-05-20
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- Initial release to GitHub Releases.
|
|
33
|
+
- Added a unified backend-to-frontend message i18n path and expanded UI translations across settings, runtime, storage, project, upload, and utility flows.
|
|
34
|
+
- Added isolated runtime dependency management and model cache controls for Auto Timing.
|
|
35
|
+
- Added reusable frontend primitives for modal shells, segmented tabs, panel messages, settings rows, Auto Timing fields, and settings refresh handling.
|
|
36
|
+
- Added storage service support for local migration, cleanup previews, app data classification, and runtime/model/project cleanup metadata.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
- Raised the isolated Auto Timing runtime requirement to `py-roller>=0.6.2,<0.8`.
|
|
41
|
+
- Reworked Settings with a dedicated Storage & Cleanup area, storage usage summaries, local storage location migration controls, project auto-delete settings, and safer cleanup actions.
|
|
42
|
+
- Improved project deletion stability, undo/restore behavior, and recent-project ordering interactions.
|
|
43
|
+
- Polished Synchronizer & Editor, Storage & Cleanup, Auto Timing, LRC Utilities, About, and Settings UI consistency.
|
|
44
|
+
- Improved toast/message lifetimes so operation-scoped messages clear when the related task completes instead of relying on fixed timeouts.
|
|
45
|
+
- Improved dialog and panel animations, including About, Settings, LRC Utilities, project cards, panel messages, and main UI transitions.
|
|
46
|
+
- Improved browser-tab/background audio handling and audio decode error reporting.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- Fixed the Theme Color picker focus/revert behavior.
|
|
51
|
+
|
|
52
|
+
## [0.5.5]
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- Reworked the Synchronizer/Editor workspace artwork as a non-interactive background layer instead of a large image card.
|
|
57
|
+
- Removed the rounded green-bordered workspace avatar image from the empty Synchronizer state.
|
|
58
|
+
- Added a borderless workspace background asset and responsive positioning for shorter or narrower screens.
|
|
59
|
+
|
|
60
|
+
## [0.5.4]
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- Polished Auto Timing settings terminology and kept matching controls aligned between Settings and the main Auto Timing panel.
|
|
65
|
+
- Reduced processing presets to the currently supported Quick and Full flows.
|
|
66
|
+
- Moved model download options into their own Advanced Parameters section and removed one-click network preset buttons from the UI.
|
|
67
|
+
- Changed the default Auto Timing BY tag to `LRC Roller`.
|
|
68
|
+
- Refined the startup avatar presentation to remove the framed rounded-rectangle treatment and scale more safely on shorter displays.
|
|
69
|
+
|
|
70
|
+
## [0.5.3]
|
|
71
|
+
|
|
72
|
+
### Changed
|
|
73
|
+
|
|
74
|
+
- Refined isolated py-roller runtime upgrade and diagnostics behavior.
|
|
75
|
+
- Changed runtime creation/repair to upgrade `py-roller>=0.5.6,<0.6` when using the PyPI runtime source.
|
|
76
|
+
- Centralized the py-roller runtime version requirement to avoid drift between status and installer code.
|
|
77
|
+
- Updated `rollingpebble doctor --run-pyroller-doctor` to run doctor inside the isolated runtime instead of PATH.
|
|
78
|
+
- Persisted failed runtime install/check results so Settings can show the latest failure after refresh.
|
|
79
|
+
- Kept pip raw output in logs while preventing `install_subprocess_output` events from crowding out structured install steps.
|
|
80
|
+
- Added a simple guard to avoid repairing the runtime while Auto Timing is running, and to avoid starting Auto Timing during runtime repair.
|
|
81
|
+
- Removed redundant runtime action notices; the runtime terminal now provides the task state.
|
|
82
|
+
|
|
83
|
+
## [0.5.2]
|
|
84
|
+
|
|
85
|
+
### Added
|
|
86
|
+
|
|
87
|
+
- Added structured runtime step rendering in Settings.
|
|
88
|
+
- Added doctor/install JSON reports in runtime diagnostics.
|
|
89
|
+
|
|
90
|
+
### Changed
|
|
91
|
+
|
|
92
|
+
- Integrated py-roller 0.5.6 runtime install JSONL progress and JSON doctor reports.
|
|
93
|
+
- Changed isolated runtime creation to call `py-roller install --progress-format jsonl --output-format json`.
|
|
94
|
+
- Changed Runtime Check to call `py-roller doctor --output-format json`.
|
|
95
|
+
- Moved runtime notices next to the runtime terminal.
|
|
96
|
+
- Folded raw runtime logs behind a details panel.
|
|
97
|
+
- Raised the isolated runtime package requirement to `py-roller>=0.5.6,<0.6`.
|
|
98
|
+
|
|
99
|
+
## [0.5.1]
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- Fixed isolated runtime installation failing before the installer starts when the runtime directory does not exist yet.
|
|
104
|
+
- Improved subprocess job error logging when a command cannot be started.
|
|
105
|
+
|
|
106
|
+
## [0.5.0] - 2026-05-13
|
|
107
|
+
|
|
108
|
+
### Added
|
|
109
|
+
|
|
110
|
+
- Added runtime liveness metadata to jobs, including PID, elapsed time, last output time, and return code.
|
|
111
|
+
- Added runtime task cancellation using process groups on POSIX systems.
|
|
112
|
+
|
|
113
|
+
### Changed
|
|
114
|
+
|
|
115
|
+
- Moved Auto Timing to an isolated py-roller runtime virtual environment under the rollingpebble data directory.
|
|
116
|
+
- Changed Runtime install/repair to create or repair that isolated runtime instead of modifying the rollingpebble backend `.venv`.
|
|
117
|
+
- Changed Auto Timing command generation to call the runtime Python with `-m pyroller.cli.main`, avoiding PATH-based py-roller resolution.
|
|
118
|
+
|
|
119
|
+
## [0.4.3] - 2026-05-12
|
|
120
|
+
|
|
121
|
+
### Changed
|
|
122
|
+
|
|
123
|
+
- Reworked the Synchronizer & Editor metadata option so it controls whether metadata tags are written into the LRC text, while keeping the metadata editor visible.
|
|
124
|
+
- Preserved metadata values when editing lyric text with metadata tags hidden from the text area.
|
|
125
|
+
|
|
126
|
+
### Fixed
|
|
127
|
+
|
|
128
|
+
- Fixed a React hook-order crash when changing the editor metadata setting.
|
|
129
|
+
|
|
130
|
+
## [0.4.2] - 2026-05-12
|
|
131
|
+
|
|
132
|
+
### Added
|
|
133
|
+
|
|
134
|
+
- Introduced an editor metadata setting, later corrected in 0.4.3 to control metadata tag writing.
|
|
135
|
+
|
|
136
|
+
### Changed
|
|
137
|
+
|
|
138
|
+
- Simplified Lyrics Import settings by removing automatic imported-LRC cleanup from the UI; imported lyrics now remain unchanged by default.
|
|
139
|
+
- Cleaned up Auto Timing settings copy and runtime controls; runtime logs now appear directly under the runtime action buttons.
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
|
|
143
|
+
- Fixed the Recent projects limit setting so it persists and updates the project list as expected.
|
|
144
|
+
|
|
145
|
+
## [0.4.1] - 2026-05-12
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
|
|
149
|
+
- Added an About dialog with project purpose, current version, credits, core hotkeys, and rights note.
|
|
150
|
+
- Added a dedicated About button in the header.
|
|
151
|
+
|
|
152
|
+
### Changed
|
|
153
|
+
|
|
154
|
+
- Reorganized Settings into General, Project, Lyrics Import, Synchronizer & Editor, Auto Timing, and Upload sections.
|
|
155
|
+
- Moved About out of Settings.
|
|
156
|
+
- Removed the Settings subtitle line and kept only implemented settings in each section.
|
|
157
|
+
|
|
158
|
+
## [0.4.0] - 2026-05-12
|
|
159
|
+
|
|
160
|
+
### Added
|
|
161
|
+
|
|
162
|
+
- Added avatar-based startup branding, browser title, manifest metadata, themed LRC circle favicon assets, and splash animation to match LRC Roller.
|
|
163
|
+
|
|
164
|
+
### Changed
|
|
165
|
+
|
|
166
|
+
- Polished the local UI ahead of the v0.4.0 milestone.
|
|
167
|
+
- Refined Recent Projects controls with a slimmer remove button and removed the explanatory limit line.
|
|
168
|
+
- Simplified Local Files import wording in Lyrics Import.
|
|
169
|
+
- Moved the manual LRC cleanup action into Settings and kept the Editor focused on lyrics editing.
|
|
170
|
+
- Unified Settings form controls, checkbox styling, fonts, focus states, and button hover states.
|
|
171
|
+
- Removed the temporary splash preview page after review.
|
|
172
|
+
- Changed Auto Timing task settings in Settings to save automatically instead of requiring a manual save button.
|
|
173
|
+
- Tightened Recent Projects row layout and improved model folder browse button styling.
|
|
174
|
+
- Replaced active legacy Akari image assets with LRC Roller avatar-based placeholders while keeping parser/local-storage compatibility where needed.
|
|
175
|
+
|
|
176
|
+
## [0.3.15] - 2026-05-12
|
|
177
|
+
|
|
178
|
+
### Changed
|
|
179
|
+
|
|
180
|
+
- Updated Auto Timing progress parsing for py-roller 0.5.4 structured events.
|
|
181
|
+
- Prefer canonical `progress` values while keeping compatibility with earlier `percent` events.
|
|
182
|
+
- Normalize progress stages such as `preflight` and `model_download` so the stage checklist remains stable across py-roller progress protocol updates.
|
|
183
|
+
|
|
184
|
+
## [0.3.12] - 2026-05-12
|
|
185
|
+
|
|
186
|
+
### Added
|
|
187
|
+
|
|
188
|
+
- Added restricted-network Hugging Face download presets that keep SOCKS proxies and prefer `socks5h://` for remote DNS.
|
|
189
|
+
|
|
190
|
+
### Changed
|
|
191
|
+
|
|
192
|
+
- Updated model download proxy placeholders and preview warnings to catch `socks5://` misconfiguration.
|
|
193
|
+
- Clarified that CLI-like download defaults are for direct/public network access only.
|
|
194
|
+
|
|
195
|
+
## [0.3.11] - 2026-05-12
|
|
196
|
+
|
|
197
|
+
### Changed
|
|
198
|
+
|
|
199
|
+
- Kept Auto Timing task controls and Settings defaults in parity, including Apple Silicon/MPS visibility for Torch-based transcriber backends.
|
|
200
|
+
- Changed default HF model download mode to XET off for new settings.
|
|
201
|
+
- Reworked model download presets to match a known-good py-roller CLI style: XET off, no proxy, and py-roller default timeouts/workers.
|
|
202
|
+
- Added command-preview warnings for proxy, XET auto, and single-worker HF downloads.
|
|
203
|
+
|
|
204
|
+
## [0.3.10] - 2026-05-12
|
|
205
|
+
|
|
206
|
+
### Added
|
|
207
|
+
|
|
208
|
+
- Added Direct, Split, Realign, and Rewrite processing presets in the Auto Timing UI.
|
|
209
|
+
|
|
210
|
+
### Changed
|
|
211
|
+
|
|
212
|
+
- Required `py-roller>=0.5.2` for the Hugging Face timeout environment fix.
|
|
213
|
+
- Normalized Hugging Face timeout and worker options as positive integers before building `py-roller` commands.
|
|
214
|
+
- Built `py-roller` commands from the selected stage range, only passing inputs and options that are valid for those stages.
|
|
215
|
+
- Persisted reusable py-roller artifacts in each project under `artifacts/` so realign and rewrite-only flows can reuse prior work.
|
|
216
|
+
- Removed MPS from faster-whisper device choices because ctranslate2 does not accept PyTorch MPS device names.
|
|
217
|
+
- Rendered Command Preview as a scrollable terminal-style block that does not stretch the side panel.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rollingpebble
|
|
3
|
+
Version: 0.6.2
|
|
4
|
+
Summary: Local WebUI frontend for py-roller and pylrclib.
|
|
5
|
+
Author: Harmonese
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: fastapi>=0.110
|
|
10
|
+
Requires-Dist: uvicorn[standard]>=0.27
|
|
11
|
+
Requires-Dist: python-multipart>=0.0.9
|
|
12
|
+
Requires-Dist: pylrclib-cli>=0.4.6
|
|
13
|
+
Provides-Extra: roller
|
|
14
|
+
Provides-Extra: full
|
|
15
|
+
Provides-Extra: dev
|
|
16
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
17
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
18
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
19
|
+
|
|
20
|
+
# Rolling Pebble
|
|
21
|
+
|
|
22
|
+
[](https://pypi.org/project/rollingpebble/)
|
|
23
|
+
[](https://pypi.org/project/rollingpebble/)
|
|
24
|
+
|
|
25
|
+
Rolling Pebble is a local lyrics workstation for searching, editing, timing, organizing, and publishing LRC lyrics.
|
|
26
|
+
|
|
27
|
+
It gives you a browser-based interface backed by a local Python server. Your projects, audio, lyrics, runtime environments, and model caches stay on your machine. Auto Timing is powered by `py-roller` in an isolated runtime so large audio dependencies do not pollute the main app environment.
|
|
28
|
+
|
|
29
|
+
## What It Does
|
|
30
|
+
|
|
31
|
+
- **Import** audio and lyrics from local files, LRCLIB, and supported online sources.
|
|
32
|
+
- **Edit** metadata and lyric text in a focused LRC editor.
|
|
33
|
+
- **Synchronize** timestamps manually when you want frame-level control.
|
|
34
|
+
- **Auto-time** lyrics with `py-roller` using isolated CPU/CUDA runtime profiles.
|
|
35
|
+
- **Review and clean up** projects, model caches, runtime environments, and app data.
|
|
36
|
+
- **Publish** prepared lyrics through LRCLIB workflows.
|
|
37
|
+
- **Use multiple languages** through the built-in i18n layer.
|
|
38
|
+
|
|
39
|
+
## Typical Workflow
|
|
40
|
+
|
|
41
|
+
1. Create or import a project with an audio file.
|
|
42
|
+
2. Import lyrics from LRCLIB, a local file, or the editor.
|
|
43
|
+
3. Clean up the lyric text and metadata.
|
|
44
|
+
4. Use the Synchronizer for manual timing, or Auto Timing for py-roller based alignment.
|
|
45
|
+
5. Review the generated LRC, export it, or publish it through LRCLIB.
|
|
46
|
+
|
|
47
|
+
## Install
|
|
48
|
+
|
|
49
|
+
Rolling Pebble requires Python 3.10 or newer. Auto Timing additionally needs a Python 3.12 executable available on your system because the isolated `py-roller` runtime is built on Python 3.12.
|
|
50
|
+
|
|
51
|
+
Recommended install:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python -m venv rollingpebble-env
|
|
55
|
+
. rollingpebble-env/bin/activate
|
|
56
|
+
python -m pip install -U pip
|
|
57
|
+
python -m pip install rollingpebble
|
|
58
|
+
rollingpebble
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
On Windows PowerShell:
|
|
62
|
+
|
|
63
|
+
```powershell
|
|
64
|
+
py -m venv rollingpebble-env
|
|
65
|
+
.\rollingpebble-env\Scripts\Activate.ps1
|
|
66
|
+
python -m pip install -U pip
|
|
67
|
+
python -m pip install rollingpebble
|
|
68
|
+
rollingpebble
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Then open:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
http://127.0.0.1:6789
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## First Run
|
|
78
|
+
|
|
79
|
+
Start Rolling Pebble:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
rollingpebble
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Then open:
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
http://127.0.0.1:6789
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The default server binds to `127.0.0.1`, so it is intended for local use.
|
|
92
|
+
|
|
93
|
+
## Auto Timing
|
|
94
|
+
|
|
95
|
+
Auto Timing uses `py-roller` for lyric alignment. Rolling Pebble does not install Torch, Demucs, faster-whisper, or other heavy audio dependencies into the main app environment. Instead, it creates a separate runtime under the app data directory.
|
|
96
|
+
|
|
97
|
+
To set it up:
|
|
98
|
+
|
|
99
|
+
1. Open **Settings -> Auto Timing -> Runtime**.
|
|
100
|
+
2. Choose a runtime profile.
|
|
101
|
+
3. Click **Create Runtime**.
|
|
102
|
+
4. Run **Runtime Check** after creation completes.
|
|
103
|
+
|
|
104
|
+
If Python 3.12 is not detected automatically, set:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
export LRC_ROLLER_RUNTIME_PYTHON=/path/to/python3.12
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The current supported py-roller range is:
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
py-roller>=0.6.2,<0.8
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Storage and Privacy
|
|
117
|
+
|
|
118
|
+
Rolling Pebble is local-first. It stores data under the user data directory, for example:
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
~/.local/share/rollingpebble
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Inside the app, **Settings -> Storage & Cleanup** shows project data, model caches, runtime environments, and other app data. Model caches are stored separately from runtime environments so they can be reused across runtime repairs.
|
|
125
|
+
|
|
126
|
+
Rolling Pebble only contacts external services when you use features that need them, such as LRCLIB lookup/publishing, supported online source import, or model downloads for Auto Timing.
|
|
127
|
+
|
|
128
|
+
## Developer Notes
|
|
129
|
+
|
|
130
|
+
For source development:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
python -m venv .venv
|
|
134
|
+
. .venv/bin/activate
|
|
135
|
+
python -m pip install -U pip setuptools wheel
|
|
136
|
+
python -m pip install -e .
|
|
137
|
+
pnpm install
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Run the backend and frontend together:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
. .venv/bin/activate
|
|
144
|
+
rollingpebble dev
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Or use two terminals:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# terminal 1
|
|
151
|
+
. .venv/bin/activate
|
|
152
|
+
rollingpebble serve --reload
|
|
153
|
+
|
|
154
|
+
# terminal 2
|
|
155
|
+
pnpm dev
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Release packaging details live in [RELEASE.md](./RELEASE.md).
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Rolling Pebble
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/rollingpebble/)
|
|
4
|
+
[](https://pypi.org/project/rollingpebble/)
|
|
5
|
+
|
|
6
|
+
Rolling Pebble is a local lyrics workstation for searching, editing, timing, organizing, and publishing LRC lyrics.
|
|
7
|
+
|
|
8
|
+
It gives you a browser-based interface backed by a local Python server. Your projects, audio, lyrics, runtime environments, and model caches stay on your machine. Auto Timing is powered by `py-roller` in an isolated runtime so large audio dependencies do not pollute the main app environment.
|
|
9
|
+
|
|
10
|
+
## What It Does
|
|
11
|
+
|
|
12
|
+
- **Import** audio and lyrics from local files, LRCLIB, and supported online sources.
|
|
13
|
+
- **Edit** metadata and lyric text in a focused LRC editor.
|
|
14
|
+
- **Synchronize** timestamps manually when you want frame-level control.
|
|
15
|
+
- **Auto-time** lyrics with `py-roller` using isolated CPU/CUDA runtime profiles.
|
|
16
|
+
- **Review and clean up** projects, model caches, runtime environments, and app data.
|
|
17
|
+
- **Publish** prepared lyrics through LRCLIB workflows.
|
|
18
|
+
- **Use multiple languages** through the built-in i18n layer.
|
|
19
|
+
|
|
20
|
+
## Typical Workflow
|
|
21
|
+
|
|
22
|
+
1. Create or import a project with an audio file.
|
|
23
|
+
2. Import lyrics from LRCLIB, a local file, or the editor.
|
|
24
|
+
3. Clean up the lyric text and metadata.
|
|
25
|
+
4. Use the Synchronizer for manual timing, or Auto Timing for py-roller based alignment.
|
|
26
|
+
5. Review the generated LRC, export it, or publish it through LRCLIB.
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
Rolling Pebble requires Python 3.10 or newer. Auto Timing additionally needs a Python 3.12 executable available on your system because the isolated `py-roller` runtime is built on Python 3.12.
|
|
31
|
+
|
|
32
|
+
Recommended install:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
python -m venv rollingpebble-env
|
|
36
|
+
. rollingpebble-env/bin/activate
|
|
37
|
+
python -m pip install -U pip
|
|
38
|
+
python -m pip install rollingpebble
|
|
39
|
+
rollingpebble
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
On Windows PowerShell:
|
|
43
|
+
|
|
44
|
+
```powershell
|
|
45
|
+
py -m venv rollingpebble-env
|
|
46
|
+
.\rollingpebble-env\Scripts\Activate.ps1
|
|
47
|
+
python -m pip install -U pip
|
|
48
|
+
python -m pip install rollingpebble
|
|
49
|
+
rollingpebble
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Then open:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
http://127.0.0.1:6789
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## First Run
|
|
59
|
+
|
|
60
|
+
Start Rolling Pebble:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
rollingpebble
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Then open:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
http://127.0.0.1:6789
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The default server binds to `127.0.0.1`, so it is intended for local use.
|
|
73
|
+
|
|
74
|
+
## Auto Timing
|
|
75
|
+
|
|
76
|
+
Auto Timing uses `py-roller` for lyric alignment. Rolling Pebble does not install Torch, Demucs, faster-whisper, or other heavy audio dependencies into the main app environment. Instead, it creates a separate runtime under the app data directory.
|
|
77
|
+
|
|
78
|
+
To set it up:
|
|
79
|
+
|
|
80
|
+
1. Open **Settings -> Auto Timing -> Runtime**.
|
|
81
|
+
2. Choose a runtime profile.
|
|
82
|
+
3. Click **Create Runtime**.
|
|
83
|
+
4. Run **Runtime Check** after creation completes.
|
|
84
|
+
|
|
85
|
+
If Python 3.12 is not detected automatically, set:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
export LRC_ROLLER_RUNTIME_PYTHON=/path/to/python3.12
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The current supported py-roller range is:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
py-roller>=0.6.2,<0.8
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Storage and Privacy
|
|
98
|
+
|
|
99
|
+
Rolling Pebble is local-first. It stores data under the user data directory, for example:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
~/.local/share/rollingpebble
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Inside the app, **Settings -> Storage & Cleanup** shows project data, model caches, runtime environments, and other app data. Model caches are stored separately from runtime environments so they can be reused across runtime repairs.
|
|
106
|
+
|
|
107
|
+
Rolling Pebble only contacts external services when you use features that need them, such as LRCLIB lookup/publishing, supported online source import, or model downloads for Auto Timing.
|
|
108
|
+
|
|
109
|
+
## Developer Notes
|
|
110
|
+
|
|
111
|
+
For source development:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
python -m venv .venv
|
|
115
|
+
. .venv/bin/activate
|
|
116
|
+
python -m pip install -U pip setuptools wheel
|
|
117
|
+
python -m pip install -e .
|
|
118
|
+
pnpm install
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Run the backend and frontend together:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
. .venv/bin/activate
|
|
125
|
+
rollingpebble dev
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Or use two terminals:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# terminal 1
|
|
132
|
+
. .venv/bin/activate
|
|
133
|
+
rollingpebble serve --reload
|
|
134
|
+
|
|
135
|
+
# terminal 2
|
|
136
|
+
pnpm dev
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Release packaging details live in [RELEASE.md](./RELEASE.md).
|
|
File without changes
|