Prune stale docs and update .hermes content

Delete a large set of outdated documentation (many files under docs/ and .hermes/plans/, including audits, design, prd, technical, planning, assets, and todos). Update and consolidate .hermes content: refresh shared-memory pages (decision-log, development-workflow, document-map, pitfalls, project-overview, team-conventions) and several skills/references under .hermes/skills. Also modify AGENTS.md, README.md, UI_CODING_STANDARD.md, docs/README.md and .encoding-check-ignore. Purpose: clean up stale planning/audit material and keep current hermes documentation and related top-level docs in sync.
This commit is contained in:
2026-05-15 06:24:07 +08:00
parent 2eded08bc7
commit 3cb3efb4d0
708 changed files with 4033 additions and 142328 deletions

View File

@@ -2755,6 +2755,48 @@ test('mobile game category list orders works by composite public metric', async
expect(gameItems).toEqual(['热门高分拼图', '奇幻拼图']);
});
test('mobile game category filter dialog filters by play type', async () => {
const user = userEvent.setup();
const match3dEntry = {
...puzzlePublicEntry,
sourceType: 'match3d',
workId: 'match3d-work-category-filter',
profileId: 'match3d-profile-category-filter',
publicWorkCode: 'M3D-FILTER',
worldName: '奇幻抓鹅',
subtitle: '抓大鹅关卡',
summaryText: '一组用于筛选的抓大鹅作品。',
playCount: 6,
remixCount: 0,
likeCount: 1,
publishedAt: '2026-04-26T10:00:00.000Z',
updatedAt: '2026-04-26T10:00:00.000Z',
} satisfies PlatformPublicGalleryCard;
renderStatefulLoggedOutHomeView({
latestEntries: [puzzlePublicEntry, match3dEntry],
});
await user.click(screen.getByRole('button', { name: '发现' }));
await user.click(screen.getByRole('button', { name: '分类' }));
await user.click(screen.getByRole('button', { name: '奇幻' }));
expect(screen.getByRole('button', { name: //u })).toBeTruthy();
expect(screen.getByRole('button', { name: //u })).toBeTruthy();
await user.click(screen.getByRole('button', { name: //u }));
const filterDialog = await screen.findByRole('dialog', {
name: '分类筛选',
});
await user.click(within(filterDialog).getByRole('button', { name: '抓鹅' }));
expect(
screen.queryByRole('button', { name: //u }),
).toBeNull();
expect(screen.getByRole('button', { name: //u })).toBeTruthy();
});
test('bottom category tab becomes ranking and switches ranking metrics', async () => {
const user = userEvent.setup();