Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
53d1532
feat: use real maimai game art on the dan settlement screen
Swan416ya Oct 9, 2026
720e7f1
feat: assemble the dan settlement screen from official maimai parts
Swan416ya Oct 9, 2026
817fdd1
fix: score-coloured achievement digits and a drawn track frame
Swan416ya Oct 9, 2026
618e6e9
Merge remote-tracking branch 'upstream/main' into feat/dan-challenge
Swan416ya Oct 9, 2026
5472309
fix: rebalance the dan settlement row and bottom band
Swan416ya Oct 9, 2026
064276c
fix: put the DX score inside the official label frame
Swan416ya Oct 9, 2026
9977c4b
fix: fill the punched-out slots in the dan result base art
Swan416ya Oct 10, 2026
d475c7d
fix: use the official dan result layout, labels and rank art
Swan416ya Oct 10, 2026
b62f928
fix: tighten the dan digits, narrow the score box, lift the DX row
Swan416ya Oct 10, 2026
f73265a
fix: stop the DX decimal from flying, align the DX label, lift the to…
Swan416ya Oct 10, 2026
a082b8b
refactor: one glyph per cell — drop the per-character decimal hack
Swan416ya Oct 10, 2026
d3a99d4
feat: rebuild the dan card the way the original is built
Swan416ya Oct 10, 2026
e2d32d4
fix: put the decimal on the baseline, flatten the card colour
Swan416ya Oct 10, 2026
c46557e
fix: thin decimal on the baseline, right-aligned achievement, drop th…
Swan416ya Oct 10, 2026
ee09742
fix: stop the pushed-down decimal from bleeding, official score colou…
Swan416ya Oct 10, 2026
f8d55df
feat: redraw the track card on the original KopMBase layout
Swan416ya Oct 10, 2026
5d55588
fix: square off the bottom corners of the achievement box
Swan416ya Oct 10, 2026
cdd299b
fix: drop the decimal cell instead of the atlas tile, and put the ach…
Swan416ya Oct 10, 2026
774890e
chore: ignore repo-local AGENTS.md
Swan416ya Oct 11, 2026
c37098a
feat: add the maimai PRiSM PLUS design layer
Swan416ya Oct 11, 2026
6aaf753
feat: apply the new skin to every page
Swan416ya Oct 11, 2026
63e55b5
feat: add a night variant of the official background
Swan416ya Oct 11, 2026
5f9e72e
feat: add a site-wide dark mode with a header switch
Swan416ya Oct 11, 2026
f3952e2
fix: repaint the canvas charts when the theme changes
Swan416ya Oct 11, 2026
ecc0033
fix: keep dark mode and narrow layouts in step
Swan416ya Oct 11, 2026
7bbd75e
fix: follow the official box tiers and give text on the artwork a plate
Swan416ya Oct 11, 2026
0e3f1a2
fix: host the background at /bg.html and paint the brand icon from CSS
Swan416ya Oct 11, 2026
7512342
fix: draw the chart labels in the official font
Swan416ya Oct 11, 2026
928bb47
docs: record the night assets and the redesigned front end
Swan416ya Oct 11, 2026
9f68fee
fix: pick the night background assets per breakpoint
Swan416ya Oct 11, 2026
81142ee
feat: switch the settlement sheet background per rank
Swan416ya Oct 17, 2026
0a52352
fix: pad the preview achievement to four decimals
Swan416ya Oct 17, 2026
8829a86
feat: build the settlement sheet from client assets
Swan416ya Oct 17, 2026
6a29555
feat: rebuild the settlement medals from the client prefab
Swan416ya Oct 17, 2026
caa1935
fix: line up the settlement medals, number and rating box
Swan416ya Oct 17, 2026
5d63ccd
feat: rebuild the settlement sheet around the client's own artwork
Swan416ya Oct 18, 2026
1057e24
docs: record how each judge binds rating to a colour
Swan416ya Oct 18, 2026
13975e2
fix: correct the card's underside and its distance from CLEAR
Swan416ya Oct 18, 2026
50e6acb
feat: fall back to the client's navichara art for the mascot
Swan416ya Oct 18, 2026
6a959cc
feat: line up the settlement sheet's right half and its base bands
Swan416ya Oct 18, 2026
e68ad03
docs: add settlement sheet screenshots for the review
Swan416ya Oct 18, 2026
c740c1b
docs: re-shoot the settlement screenshots with the animated background
Swan416ya Oct 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@ __pycache__/
Thumbs.db
results/local-*.json
prompt0.md

# Agent instructions belong in the user-level DSH home, not in this repo.
AGENTS.md
69 changes: 58 additions & 11 deletions docs/dan.md

Large diffs are not rendered by default.

24 changes: 23 additions & 1 deletion docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,14 @@ public/
index.html 面板骨架(含账号管理区)
app.js Feed 渲染、筛选器、折叠、账号管理与同步进度
dx.html / dx.js DX Rating 榜(b35 + b15),填写完成用时
styles.css 深色主题,无外部字体或 CDN
styles.css / ui.css 重做前那一版的配色与组件样式,现在是皮肤的浅色底子
theme.css maimai 官网皮肤层,参数取自 vendor/maimai/style.css
theme-dark.css 深色模式层,规则一律带 [data-mm-theme="dark"] 前缀
theme-night.css 夜版背景,只换 /assets/night/ 那套贴图
theme.js 主题开关、移动端菜单、回到顶部(换主题的唯一写入口)
bg.html 背景 iframe 的宿主页:官网那份动态背景
vendor/maimai/** 官网素材原样快照(style.css / img / fonts,见其 README)
assets/night/** 夜版贴图,由官方素材离线重上色生成
tests/
phase1.test.ts 旧接口回归测试
phase2.test.ts 迁移、适配器、同步和调度测试
Expand All @@ -68,6 +75,21 @@ data/ 首次运行生成,本地数据不提交
data/backups/ npm run backup 生成的快照目录
```

## 前端皮肤与深色模式

皮肤复刻 maimai DX 国际版官网 PRiSM PLUS 时期的样式:`public/vendor/maimai/` 是原样快照(只改过 URL),
落到本站组件上的那一层全在 `public/theme.css`,与官方的有意偏差集中在它末尾那节,改之前先看那节。

- 主题落在 `<html data-mm-theme="light|dark">`,偏好存在 `localStorage['mm-theme']`,没手动选过就跟系统。
- 各页 `<head>` 里有一小段脚本在首帧前定好主题(六页重复同一段是有意的:抽成外链会先亮后暗)。
- 载入顺序 `fonts.css → styles.css → 各页自己的 CSS → ui.css → theme.css → theme-dark.css`,
深色层一律带 `[data-mm-theme="dark"]` 前缀,所以浅色那套不用改。
- 画布里的图是 JS 画的,CSS 管不到:`theme.js` 换主题时发 `mm-theme-change`,`stat-charts.js` 收到就按
当前主题重画(配色在它自己的 PALETTE 里)。
- 页面不引外部字体或 CDN,离线可用:M PLUS 1p 只自托管 latin / latin-ext 子集,中文回退系统字体。
- `bg.html` 是背景 iframe 的宿主页(结构取自归档快照,另加三行重置与夜版切换脚本),放在 `public/` 根下,
好让 `vendor/maimai/` 只留原样素材。

## 数据模型

- `users`:一个本地人物。`is_self` 标记自己(最多一个,是主视图与 DX 榜的锚点);`is_followed`(v7)标记**关注** —— 只决定「出不出在主视图」,不限数量,且与 `is_self` 是两层。详见下文「关注 ≠ 存在」。
Expand Down
Binary file added docs/images/dan-card-vs-original.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dan-card.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dan-card2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dan-dialog-mixed.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dan-page-mixed.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dan-page-perfect.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dan-settlement-mixed.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dan-settlement.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
661 changes: 661 additions & 0 deletions docs/platform-rating-colors.md

Large diffs are not rendered by default.

Binary file added docs/settlement-shots/00-settlement.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/settlement-shots/01-rank-ladder.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/settlement-shots/02-card-tones.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/settlement-shots/03-dxrating-tones.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/settlement-shots/04-mascots.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/algorithm-dx-icon-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/maimai/gam-rank-a.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/maimai/gam-rank-aa.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/maimai/gam-rank-aaa.png
Binary file added public/assets/maimai/gam-rank-b.png
Binary file added public/assets/maimai/gam-rank-bb.png
Binary file added public/assets/maimai/gam-rank-bbb.png
Binary file added public/assets/maimai/gam-rank-c.png
Binary file added public/assets/maimai/gam-rank-d.png
Binary file added public/assets/maimai/gam-rank-s.png
Binary file added public/assets/maimai/gam-rank-sp.png
Binary file added public/assets/maimai/gam-rank-ss.png
Binary file added public/assets/maimai/gam-rank-ssp.png
Binary file added public/assets/maimai/gam-rank-sss.png
Binary file added public/assets/maimai/gam-rank-sssp.png
Binary file added public/assets/maimai/life-base-green.png
Binary file added public/assets/maimai/life-base-red.png
Binary file added public/assets/maimai/medal-accepted.png
Binary file added public/assets/maimai/medal-cleansolve.png
Binary file added public/assets/maimai/num-26p-outline.png
Binary file added public/assets/maimai/num-26p.png
Binary file added public/assets/maimai/num-90p-outline.png
Binary file added public/assets/maimai/num-90p.png
Binary file added public/assets/maimai/num-score-blue.png
Binary file added public/assets/maimai/num-score-gold.png
Binary file added public/assets/maimai/num-score-red.png
Binary file added public/assets/maimai/result-bg/result-bg-a.png
Binary file added public/assets/maimai/result-bg/result-bg-b.png
Binary file added public/assets/maimai/result-bg/result-bg-s.png
Binary file added public/assets/maimai/result-bg/result-bg-ss.png
Binary file added public/assets/maimai/result-bg/result-bg-sss.png
Binary file added public/assets/maimai/result-dani.png
Binary file added public/assets/maimai/result-random.png
Binary file added public/assets/maimai/score-per-blue.png
Binary file added public/assets/maimai/score-per-gold.png
Binary file added public/assets/maimai/score-per-red.png
Binary file added public/assets/maimai/stamp-clear.png
Binary file added public/assets/maimai/stamp-fail.png
Binary file added public/assets/maimai/track-plate.png
Binary file added public/assets/mm-parts/LiberationSans.ttf
Binary file not shown.
Binary file added public/assets/mm-parts/bed-07.png
Binary file added public/assets/mm-parts/chara-matte.png
Binary file added public/assets/mm-parts/chara-placeholder.png
Binary file added public/assets/mm-parts/jacket-1820.png
Binary file added public/assets/mm-parts/navichara-01-p1-02.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_BSC_11.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_BSC_12.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_BSC_13.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_EXP_11.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_EXP_12.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_EXP_13.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_MST_11.png
Binary file added public/assets/mm-result/UI_CMN_MusicLevel_MST_13.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_0.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_1.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_10.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_11.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_12.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_13.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_14.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_2.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_3.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_4.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_5.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_6.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_7.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_8.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_9.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_0.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_1.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_2.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_3.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_4.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_5.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_6.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_7.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_8.png
Binary file added public/assets/mm-result/UI_CMN_Num_26p_Outline_9.png
Binary file added public/assets/mm-result/UI_CMN_RSL_TrackNo.png
Binary file added public/assets/mm-result/UI_CMN_RSL_TrackNo_0.png
Binary file added public/assets/mm-result/UI_CMN_RSL_TrackNo_1.png
Binary file added public/assets/mm-result/UI_CMN_RSL_TrackNo_2.png
Binary file added public/assets/mm-result/UI_RSL_MBase_ADV.png
Binary file added public/assets/mm-result/UI_RSL_MBase_BSC.png
Binary file added public/assets/mm-result/UI_RSL_MBase_DMY.png
Binary file added public/assets/mm-result/UI_RSL_MBase_EXP.png
Binary file added public/assets/mm-result/UI_RSL_MBase_MST.png
Binary file added public/assets/mm-result/UI_RSL_MBase_MST_Re.png
Binary file added public/assets/mm-result/UI_RSL_MBase_Mini_ADV.png
Binary file added public/assets/mm-result/UI_RSL_MBase_Mini_BSC.png
Binary file added public/assets/mm-result/UI_RSL_MBase_Mini_DMY.png
Binary file added public/assets/mm-result/UI_RSL_MBase_Mini_EXP.png
Binary file added public/assets/mm-result/UI_RSL_MBase_Mini_MST.png
Binary file added public/assets/mm-result/UI_RSL_MBase_Mini_MST_Re.png
Binary file added public/assets/mm-result/UI_RSL_MBase_Mini_UTG.png
Loading
Loading