Skip to content

Commit f8deb6e

Browse files
Plan V3 bilingual interface and moveset review
Milestone 4 becomes the English/Chinese interface (language saved in the account, or the browser for visitors; each language shows only its own text). Milestone 5 is content completion plus a review of existing movesets. Deployment, recommendations, release and video references move to Milestones 6-9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent c04234a commit f8deb6e

3 files changed

Lines changed: 54 additions & 35 deletions

File tree

‎CLAUDE.md‎

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ V2 delivered the structured, multi-boss Sekiro analytics application:
6262
* four required CI jobs: backend, frontend, integration, docker
6363
* local deployment with Docker Compose
6464

65-
Milestone 8 (search and filtering) was skipped. Milestone 10 (public deployment) moved into V3 as Milestone 5.
65+
Milestone 8 (search and filtering) was skipped. Milestone 10 (public deployment) moved into V3 as Milestone 6.
6666

6767
Released as `v2.0.0`.
6868

@@ -74,7 +74,7 @@ Completed so far:
7474
* **Milestone 2 — User-Owned Attempts:** `attempts.user_id` foreign key. It is nullable for now: attempts from before accounts existed stay ownerless and hidden until `python -m scripts.claim_attempts <username>` assigns them.
7575
* **Milestone 3 — Per-User Analytics and Isolation:** attempt history, boss analytics, progression and the Sekiro dashboard only cover the logged-in user, with isolation tests at the API and service level.
7676

77-
Next: Milestone 4 (content completion: the remaining main bosses and Chinese move names), then Milestone 5 (public deployment), which also makes `attempts.user_id` NOT NULL.
77+
Next: Milestone 4 (bilingual interface), then Milestone 5 (content completion and moveset review), then Milestone 6 (public deployment), which also makes `attempts.user_id` NOT NULL.
7878

7979
---
8080

@@ -89,14 +89,16 @@ V3 scope is:
8989
```text
9090
User accounts
9191
+
92-
Content completion (all main bosses, Chinese move names)
92+
Bilingual interface (English / 中文)
93+
+
94+
Content completion (all main bosses, reviewed movesets)
9395
+
9496
Public deployment
9597
+
9698
Rule-based practice recommendations
9799
```
98100

99-
Content completion was added after Milestones 1–3, so the public release covers every main boss and shows moves in Chinese as well as English. Move video or GIF references were considered and deferred (Milestone 8).
101+
The bilingual interface and content completion were added after Milestones 1–3, so the public release covers every main boss in both English and Chinese. Move video or GIF references were considered and deferred (Milestone 9).
100102

101103
Long-term tracking and practice goals are NOT part of V3. Long-term progression is already covered by V2's progression chart, recent vs. all-time comparisons and Sekiro dashboard. Practice goals were considered and dropped.
102104

@@ -146,7 +148,7 @@ Implement V3 incrementally. Each milestone should leave the project in a working
146148

147149
* add `attempts.user_id` as a foreign key to `users`, through a reviewed Alembic migration
148150
* migrate existing attempts to the owner's account explicitly. Do not silently delete or orphan them.
149-
* Done by making `attempts.user_id` nullable: pre-account attempts stay ownerless and hidden from everyone until `python -m scripts.claim_attempts <username>` assigns them. Milestone 5 makes the column NOT NULL.
151+
* Done by making `attempts.user_id` nullable: pre-account attempts stay ownerless and hidden from everyone until `python -m scripts.claim_attempts <username>` assigns them. Milestone 6 makes the column NOT NULL.
150152
* record the current user on every new attempt
151153
* read attempt history for the current user only
152154

@@ -156,22 +158,36 @@ Implement V3 incrementally. Each milestone should leave the project in a working
156158
* add tests proving users cannot read or write each other's attempts, at both the API and service level
157159
* keep the V2 analytics definitions unchanged apart from the user scope
158160

159-
### Milestone 4 — Content Completion
161+
### Milestone 4 — Bilingual Interface (English / 中文)
162+
163+
Users choose English or Chinese, and each language shows only its own text; the two are never mixed on one page.
164+
165+
* a language switch in the nav bar
166+
* logged-in users: the choice is saved in their account (a `users` column) and follows them across devices
167+
* visitors: the choice is kept in the browser; the first visit follows the browser language
168+
* all interface text in both languages, through a small in-house dictionary and `t()` helper; no i18n framework is needed for two languages
169+
* Chinese versions of all boss content for the existing bosses: boss locations, phase names, move names, descriptions, telegraphs, counters and common mistakes
170+
* Chinese move names: the name used by a Chinese Sekiro wiki where one exists (recorded with its page), otherwise a translation (marked as such in the data, never presented as official)
171+
* Chinese descriptions are translations of the English, wiki-sourced text; the Chinese moveset shows one note saying so instead of a marker on every move
172+
* the API returns both languages and the frontend picks one, so existing clients keep working
173+
* the user reviews all Chinese text manually
174+
* analytics definitions do not change with the language; only the displayed text does
175+
176+
### Milestone 5 — Content Completion and Moveset Review
160177

161178
Comes before public deployment so the public release is complete.
162179

163-
* add the remaining **main** bosses (mini-bosses stay out of scope), following the existing data rules: sourced from a wiki, boss-level `source_name` / `source_url`, `telegraph` and `common_mistakes` only when the source states them, reviewed by the user
164-
* add a Chinese name to every move:
165-
* prefer the name used by a Chinese Sekiro wiki (option A), recorded with its source
166-
* where no Chinese wiki name exists, provide a translation (option B), stored and shown as a translation, never presented as an official name
167-
* the user reviews all Chinese names manually
168-
* keep boss data quality over quantity; do not create placeholder moves
180+
* add the remaining main bosses, each in both languages: Gyoubu Masataka Oniwa, Headless Ape, Demon of Hatred, Genichiro (Way of Tomoe), Emma the Gentle Blade, Isshin Ashina, Folding Screen Monkeys, Divine Dragon, Inner Father, Inner Genichiro, Inner Isshin. Mini-bosses stay out of scope.
181+
* for new bosses, compare the Fextralife and Fandom wikis; every conflict between them, in English or Chinese, goes to the user for review
182+
* review the movesets of the existing bosses; the user may remove or edit moves
183+
* the seed sync never deletes a move on its own, because attempts may reference it. Removing a move that has recorded attempts needs an explicit decision about those attempts (for example, keep the move but hide it from new attempts, or reassign the attempts) before it is deleted.
184+
* follow the existing data rules: sourced from a wiki, boss-level `source_name` / `source_url`, `telegraph` and `common_mistakes` only when the source states them, no placeholder moves
169185

170-
### Milestone 5 — Public Deployment
186+
### Milestone 6 — Public Deployment
171187

172-
Moved from V2 Milestone 10. It comes after the account milestones because accounts are what make a public instance safe, and after content completion so the public release is complete. See "Public Deployment" below for the work involved.
188+
Moved from V2 Milestone 10. It comes after the account milestones because accounts are what make a public instance safe, and after the bilingual and content milestones so the public release is complete. See "Public Deployment" below for the work involved.
173189

174-
### Milestone 6 — Practice Recommendations
190+
### Milestone 7 — Practice Recommendations
175191

176192
* rule-based and explainable, derived only from the user's attempt records
177193
* candidate signals include:
@@ -180,16 +196,17 @@ Moved from V2 Milestone 10. It comes after the account milestones because accoun
180196
* undefeated bosses the user has practiced recently
181197
* every recommendation includes its evidence, for example "6 of your last 10 attempts ended in Phase 2; 4 of those were Floating Passage"
182198
* failure counts for a move only count attempts that reached a phase containing that move, so dying earlier cannot make a move look "improved"
199+
* recommendations are shown in both languages
183200
* the exact rules are decided with the user before implementation
184201

185-
### Milestone 7 — Integration Testing, CI and Release
202+
### Milestone 8 — Integration Testing, CI and Release
186203

187204
* an end-to-end test: register → record attempts → analytics → recommendations
188205
* extend CI to cover authentication and user isolation
189206
* verify the production deployment workflow
190207
* release `v3.0.0`
191208

192-
### Milestone 8 — Move Video References (Deferred)
209+
### Milestone 9 — Move Video References (Deferred)
193210

194211
Short clips or GIFs showing each move, so players can identify it more easily.
195212

@@ -274,7 +291,7 @@ V2 should preserve that functionality while adding:
274291
* recent vs historical comparisons
275292
* overall Sekiro-level analytics
276293
* stronger integration testing
277-
* a reliable local deployment with Docker Compose (public hosting moved into V3 Milestone 5)
294+
* a reliable local deployment with Docker Compose (public hosting moved into V3 Milestone 6)
278295

279296
---
280297

@@ -417,7 +434,7 @@ These belong to V3–V5 or should only be introduced when justified by an actual
417434

418435
* Docker Compose, run locally
419436

420-
V2 has no public hosting and no staging or production environments. Public deployment moved into V3 Milestone 5; see "Public Deployment (V3 Milestone 5)".
437+
V2 has no public hosting and no staging or production environments. Public deployment moved into V3 Milestone 6; see "Public Deployment (V3 Milestone 6)".
421438

422439
---
423440

@@ -579,7 +596,7 @@ source_name
579596
source_url
580597
```
581598

582-
`name_zh` is the official Simplified Chinese name. Boss names and (from V3 Milestone 4) move names have Chinese versions; the rest of the UI stays in English for now.
599+
`name_zh` is the official Simplified Chinese name. From V3 Milestone 4 the whole interface and all boss content exist in English and Chinese; see Milestone 4.
583600

584601
`source_name` and `source_url` record where the boss's phase and move data came from. All moves of a boss share this source.
585602

@@ -1503,14 +1520,14 @@ v2.0.0 (run locally with Docker Compose)
15031520

15041521
---
15051522

1506-
# Public Deployment (V3 Milestone 5)
1523+
# Public Deployment (V3 Milestone 6)
15071524

15081525
V2 ran locally only. Public deployment was moved into V3 because:
15091526

15101527
* V2 has no authentication, so a public instance would let anyone record attempts into the only attempt history
15111528
* V3 Milestones 1–3 add user accounts and per-user data, which solves that problem directly
15121529

1513-
Until Milestone 5 is done, a Cloudflare Tunnel to the local instance is acceptable for temporary remote access, such as from a phone away from home.
1530+
Until Milestone 6 is done, a Cloudflare Tunnel to the local instance is acceptable for temporary remote access, such as from a phone away from home.
15141531

15151532
The work involved:
15161533

@@ -1797,11 +1814,11 @@ A broken persistence or analytics change should normally be detected before merg
17971814

17981815
---
17991816

1800-
## Milestone 10 — Stable Deployment (Moved to V3 Milestone 5)
1817+
## Milestone 10 — Stable Deployment (Moved to V3 Milestone 6)
18011818

18021819
### Decision
18031820

1804-
Public deployment moved into V3 as Milestone 5. See "Public Deployment (V3 Milestone 5)" for the reasons and the work involved.
1821+
Public deployment moved into V3 as Milestone 6. See "Public Deployment (V3 Milestone 6)" for the reasons and the work involved.
18051822

18061823
### What V2 Still Includes
18071824

@@ -1844,7 +1861,7 @@ Recommended sequence:
18441861
18451862
13. CI Hardening
18461863
1847-
14. Stable Deployment (moved to V3 Milestone 5, see Milestone 10)
1864+
14. Stable Deployment (moved to V3 Milestone 6, see Milestone 10)
18481865
18491866
15. Release v2.0.0
18501867
```
@@ -1950,7 +1967,7 @@ These are NOT V3 requirements.
19501967
When working in this repository:
19511968

19521969
1. Treat V1 and V2 as completed.
1953-
2. Treat V3 as the current active development scope, limited to accounts, content completion, public deployment and rule-based practice recommendations.
1970+
2. Treat V3 as the current active development scope, limited to accounts, the bilingual interface, content completion, public deployment and rule-based practice recommendations.
19541971
3. Preserve the lightweight manual attempt-recording workflow; accounts must not add fields to it.
19551972
4. Do not add detailed manual combat telemetry.
19561973
5. Continue supporting `Other` and `Not Sure`.
@@ -1968,7 +1985,7 @@ When working in this repository:
19681985
17. Keep database access and analytics logic outside route handlers.
19691986
18. Avoid unnecessary repository/factory/framework abstractions.
19701987
19. Do not create large amounts of low-quality boss data.
1971-
20. Do not invent Sekiro mechanics when uncertain, and keep game knowledge traceable to sources. Chinese move names come from a Chinese wiki where one exists; otherwise they are marked as translations.
1988+
20. Do not invent Sekiro mechanics when uncertain, and keep game knowledge traceable to sources. Chinese move names come from a Chinese wiki where one exists; otherwise they are marked as translations. Chinese descriptions are translations of the sourced English text.
19721989
21. Do not commit secrets, production credentials or private database URLs.
19731990
22. Do not add OAuth, email infrastructure, roles, social features or practice goals in V3.
19741991
23. Do not add video analysis (V4) or Black Myth: Wukong (V5).
@@ -1989,7 +2006,8 @@ If the feature does not clearly belong to:
19892006
Accounts and Authentication
19902007
User-Owned Attempts
19912008
Per-User Analytics and Isolation
1992-
Content Completion
2009+
Bilingual Interface
2010+
Content Completion and Moveset Review
19932011
Public Deployment
19942012
Practice Recommendations
19952013
Testing / CI / Release

‎ROADMAP.md‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,19 @@ Released as `v2.0.0`.
8383
**Core question:**
8484
**What should I practice next?**
8585

86-
V3 introduces individual player identity, complete boss content, public deployment and practice recommendations.
86+
V3 introduces individual player identity, an English / Chinese interface, complete boss content, public deployment and practice recommendations.
8787

8888
Milestones:
8989

9090
1. ✅ **Accounts and authentication:** register, log in, log out, with hashed passwords and session cookies
9191
2. ✅ **User-owned attempts:** every attempt belongs to a user; existing attempts move to the owner's account
9292
3. ✅ **Per-user analytics:** boss analytics, progression and the Sekiro dashboard show only the user's own data
93-
4. **Content completion:** every main boss, and a Chinese name for every move (from a Chinese wiki where one exists, otherwise marked as a translation)
94-
5. **Public deployment:** a stable URL with HTTPS, backups and deployment from `main`
95-
6. **Practice recommendations:** rule-based suggestions derived from the user's own attempts, each showing its evidence
96-
7. **Integration testing, CI and release**
97-
8. **Move video references (deferred):** short clips showing each move; not required for `v3.0.0`
93+
4. **Bilingual interface:** switch between English and Chinese, with each language showing only its own text; saved in the account, or in the browser for visitors
94+
5. **Content completion and moveset review:** every main boss in both languages, and a review of the existing movesets
95+
6. **Public deployment:** a stable URL with HTTPS, backups and deployment from `main`
96+
7. **Practice recommendations:** rule-based suggestions derived from the user's own attempts, each showing its evidence
97+
8. **Integration testing, CI and release**
98+
9. **Move video references (deferred):** short clips showing each move; not required for `v3.0.0`
9899

99100
Example output:
100101

‎backend/app/auth.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
def _cookie_secure() -> bool:
1616
# Local development runs over plain HTTP, so Secure is opt-in until the
17-
# HTTPS deployment (V3 Milestone 5) sets COOKIE_SECURE=true.
17+
# HTTPS deployment (V3 Milestone 6) sets COOKIE_SECURE=true.
1818
return os.environ.get("COOKIE_SECURE", "false").lower() == "true"
1919

2020

0 commit comments

Comments
 (0)