Skip to content

rework the EPK editor and reorganise the charter toolkit#752

Merged
lxymahatma merged 2 commits into
devfrom
feat/epk-editor-rework
Jun 17, 2026
Merged

rework the EPK editor and reorganise the charter toolkit#752
lxymahatma merged 2 commits into
devfrom
feat/epk-editor-rework

Conversation

@KARPED1EM

Copy link
Copy Markdown
Member

Reworks the EPK metadata editor and the charter toolkit landing. No backend or serialization changes — the manifest model and all file I/O are untouched.

Editor

  • Dense, responsive two-column card layout (was a cramped single column), matching the app's other pages.
  • Sections + terms aligned to the product vocabulary: Basic Info / Chart Info / Description & Discovery / Maps; Song Author (曲师), Rating (定数), Maps (地图), …
  • Multi-line Description, aligned per-map rows, an unsaved-changes dot, Ctrl+S, and staying open after save.

Maps

  • Folder-driven: the editable difficulties are the union of the manifest's maps and the .bms files actually present, so a difficulty dropped into the folder appears (after Refresh) and a removed one drops out; saving writes every present map back.
  • Required-field validation: name, author, scene, BPM, the presence of a Hard (map2), and a rating + charter for every present map.

Toolkit

  • New EPK: builds a blank manifest from a folder of assets.
  • Reorganised into Offline tools (New / Open EPK) and Online tools (Chart Analyzer, Submit Chart — both open the Euterpe site).

Localisation

  • Updated across all 14 locales.

Testing

  • Release build clean; full suite green (Euterpe.Tests 631, Euterpe.Headless.Tests 118, Euterpe.Generators.Tests 14).

Rebuild the manifest metadata editor from a cramped single-column form into a
dense, responsive two-column card layout that matches the app's other pages.
Regroup and rename the fields to the product's canonical vocabulary (Basic
Info / Chart Info / Description & Discovery / Maps; Song Author, Rating as
"定数", Maps as "地图", ...), make Description a real multi-line field, align
the per-map rows, and give it a file-editor feel: an unsaved-changes dot,
Ctrl+S, and staying open on save instead of bouncing back to the launcher.

Drive the map list from the folder. The editable difficulties are now the
union of the manifest's maps and the .bms files actually present, so a
difficulty dropped into the folder shows up (after Refresh) as an editable
row and a removed one drops out; saving writes every present map back.
Required-field validation now covers name, author, scene, BPM, the presence
of a Hard (map2), and a rating + charter for every map present.

Add a New-EPK entry that builds a blank manifest from a folder of assets, and
reorganise the toolkit into Offline tools (New / Open EPK) and Online tools
(Chart Analyzer and Submit Chart, which open the Euterpe site), each as a
card-style launcher tile.

Localisation is updated across all 14 locales. No backend or serialization
changes: the manifest model and all file I/O are untouched.
Copilot AI review requested due to automatic review settings June 17, 2026 00:56
@codecov

codecov Bot commented Jun 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.90786% with 52 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/Euterpe/Features/Charting/EpkEditorPanel.axaml 89.53% 25 Missing ⚠️
.../Features/Charting/CharterToolkitPanelViewModel.cs 0.00% 24 Missing ⚠️
...terpe/Features/Charting/EpkEditorPanelViewModel.cs 91.89% 1 Missing and 2 partials ⚠️

📢 Thoughts on this report? Let us know!

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Reworks the EPK metadata editor UI/UX and reorganizes the charter toolkit landing, adding folder-driven map reconciliation, stricter save validation, and new toolkit entry points (offline/online), with corresponding localization updates.

Changes:

  • Updated EpkEditorPanel layout (two-column card UI), added Ctrl+S save, unsaved-changes indicator, and refreshed file/map presentation.
  • Enhanced EpkEditorPanelViewModel with stricter CanSave validation and a reconcile step to reflect folder file changes in map rows.
  • Reorganized CharterToolkitPanel into Offline/Online tools and added “New EPK…” flow; updated strings across locales.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/Euterpe.Tests/App/ViewModels/EpkEditorPanelViewModelTest.cs Adds tests for folder-driven map reconciliation and new save-validation rules.
src/Euterpe/Features/Charting/EpkEditorPanelViewModel.cs Implements new dirty tracking, expanded CanSave validation, and map/file reconciliation on refresh.
src/Euterpe/Features/Charting/EpkEditorPanel.axaml Rebuilds the editor UI into card-based two-column layout; adds Ctrl+S and dirty indicator.
src/Euterpe/Features/Charting/CharterToolkitPanelViewModel.cs Adds “New EPK” command and injects file-system access for folder-based manifest creation.
src/Euterpe/Features/Charting/CharterToolkitPanel.axaml Reorganizes toolkit landing into Offline/Online tool cards with URL launchers.
src/Euterpe.Localization/XAML/XAML*.resx Adds new toolkit/editor strings and updates terminology across all locales.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 323 to 327
var manifestMap = manifestMaps?.GetValueOrDefault(ChartFiles.MapName(difficulty));
if (manifestMap is null && !_files.ContainsKey(ChartFiles.MapFileName(difficulty)))
{
continue;
}
@lxymahatma lxymahatma merged commit 172d3f3 into dev Jun 17, 2026
2 checks passed
@lxymahatma lxymahatma deleted the feat/epk-editor-rework branch June 17, 2026 01:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants