Commit Graph
100 Commits
Author SHA1 Message Date
Leonid PershinandCursor b48bbbcf7c Split SchoolWorker and the person card along existing seams without a second thread or public API.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:51:39 +03:00
Leonid Pershin 8d07b3606d Merge branch 'phase/57-client-typecheck'
# Conflicts:
#	docs/phases/10-craft/README.md
2026-08-20 13:12:16 +03:00
Leonid PershinandCursor da1a4010f6 Merge branch 'phase/59-dump-nodes'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:08:19 +03:00
Leonid Pershin a6000678bc Mark phase 57 client typecheck complete. 2026-08-20 12:58:01 +03:00
Leonid Pershin 45059b927f Run client typecheck before vitest in npm test.
Duplicate keys in strings.ts were green under vitest and red only on build. Drop the self file: dependency loop so npm test is enough.
2026-08-20 12:57:16 +03:00
Leonid Pershin 782a56eefe Merge branch 'phase/56-architecture-tests'
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	docs/phases/10-craft/README.md
2026-08-20 12:54:53 +03:00
Leonid PershinandCursor fc6c22bc41 Mark phase 56 architecture tests complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:48:59 +03:00
Leonid Pershin 2909315880 Merge branch 'bug/3-users-json-as-school'
ci / server (push) Failing after 3m49s
ci / client (push) Successful in 19s
2026-08-20 12:48:53 +03:00
Leonid PershinandCursor 121c28e4a3 Put layer and wall-clock bans in one test project so Content and Protocol fail the same way as People.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:48:00 +03:00
Leonid PershinandCursor a8b24bc681 Mark bug 3 users.json skip as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:47:23 +03:00
Leonid PershinandCursor 0b1a52a5e5 Skip users.json when loading school saves.
The session user list sits beside {id}.json; LoadAll treated it as a school with id 0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:46:52 +03:00
Leonid PershinandCursor 7423b34d60 Mark phase 59 dump nodes complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:46:13 +03:00
Leonid PershinandCursor 0d6173431a Wait for a person on a node before asserting the dump.
Needs.Count is true for everyone, so the old OR never caught empty occupancy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:45:18 +03:00
Leonid PershinandCursor 7496718d88 Mark phase 59 dump nodes in progress.
ci / server (push) Failing after 3m41s
ci / client (push) Successful in 19s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:36:59 +03:00
Leonid Pershin 9a6cbff55a Update AGENTS.md and various SKILL.md files to improve documentation structure, clarify design phase references, and ensure consistency in file paths. Adjust links to design documents for better navigation and organization across phases.
ci / server (push) Failing after 3m41s
ci / client (push) Successful in 21s
2026-08-20 12:26:21 +03:00
Leonid Pershin a37a5eb82d Remove off-queue.md and add new design documentation files including README.md, defs.md, near-term.md, projects.md, runtime.md, people.md, staffing.md, and schedule.md to outline the structure and agreements for the game's design phases. 2026-08-20 12:26:13 +03:00
Leonid Pershin 12cc36b4dd Merge branch 'phase/55-view-state'
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 20s
# Conflicts:
#	docs/phases/README.md
2026-08-20 12:10:55 +03:00
Leonid Pershin 4f3d3fc068 Update AGENTS.md to reflect live status of country, wardrobes, and weather; clarify off-queue tasks in off-queue.md; introduce phase 10 (craft) in README.md with design details and phase breakdown.
ci / server (push) Failing after 3m39s
ci / client (push) Failing after 15s
2026-08-20 12:08:27 +03:00
Leonid PershinandCursor 0902185b70 Mark phase 55 view-state as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:03:33 +03:00
Leonid PershinandCursor 36ec5e9f8e Restore school tabs and filters after refresh.
The URL keeps the open school and current view; sessionStorage keeps list filters and searches so F5 and re-entry do not dump the player on an empty map.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:03:04 +03:00
Leonid Pershin d8a2c2903c Merge branch 'phase/54-whats-new'
ci / server (push) Failing after 3m45s
ci / client (push) Failing after 21s
2026-08-20 11:45:48 +03:00
Leonid PershinandCursor 069c58194d Mark phase 54 whats-new as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:44:11 +03:00
Leonid PershinandCursor 449be4e0ea Show unseen Server commits after login.
Bake first-parent git log at Server build and remember the SHA in a browser cookie.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:43:36 +03:00
Leonid Pershin e299995d98 add skils
ci / server (push) Failing after 3m43s
ci / client (push) Failing after 14s
2026-08-20 11:33:39 +03:00
Leonid PershinandCursor 1e7014cabd Mark phase 54 in progress.
ci / server (push) Failing after 3m41s
ci / client (push) Failing after 14s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:30:11 +03:00
Leonid Pershin ee6930a39d Merge branch 'phase/45-presence-talk'
# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Server/Api/PeopleModels.cs
#	src/HSchool.Server/Game/PersonCardReader.cs
2026-08-20 11:27:58 +03:00
Leonid Pershin 43267e4482 Merge branch 'review/slice-8-session'
ci / server (push) Failing after 3m36s
ci / client (push) Successful in 17s
2026-08-20 11:11:54 +03:00
Leonid PershinandCursor 85bf757b69 Journal: set slice 8 review commit hash.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:05:31 +03:00
Leonid PershinandCursor 1c3ae9ab7e Reject a second live WebSocket for the same session name.
Two tabs with the cookie already set never POST /api/session, so name-online on login did not cover the design rule. Claim the name under the same lock as the online check.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:04:56 +03:00
Leonid Pershin ae2e3ddc14 Merge branch 'phase/47-romance-pack'
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 19s
# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Content/PeopleDefs.cs
#	src/HSchool.People/Seed.cs
2026-08-20 11:00:12 +03:00
Leonid Pershin 74720af208 Update Vite configuration to serve on 127.0.0.1 for Tailscale compatibility, preventing connection issues on Windows.
ci / server (push) Failing after 3m40s
ci / client (push) Successful in 17s
2026-08-20 10:54:28 +03:00
Leonid PershinandCursor d52f784e5e Mark phase 44 as in progress.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:51:15 +03:00
Leonid Pershin d3396b5b8f Refactor run-aspire scripts for improved cross-platform support. Replace run-aspire.cmd with run-aspire.ps1 for Windows and add run-aspire.sh for Ubuntu. Update documentation to reflect these changes and ensure synchronization between build rules across scripts. Enhance Tailscale integration and clarify usage instructions.
ci / server (push) Failing after 3m38s
ci / client (push) Successful in 18s
2026-08-20 10:48:19 +03:00
Leonid PershinandCursor 663edaccae Mark phase 45 presence talk as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:43:56 +03:00
Leonid Pershin 72e4891453 Mark phase 47 romance pack as complete. 2026-08-20 10:43:20 +03:00
Leonid PershinandCursor 2034946378 Show talk-circle partners and topic on the location panel and Now tab.
The frame and card share member ids; the client builds the sentence from the directory and locale.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:43:16 +03:00
Leonid Pershin d2911c3daf Complete phase 47 romance pack on generic orientation and affinity hooks.
Vanilla catalogs stay without crushes; a content pack ships the overlay so later mods can reuse it.
2026-08-20 10:42:42 +03:00
Leonid PershinandCursor 1a21a64b4b Bump protocol to v9 and carry talk-circle ids on the presence frame.
Names stay off the wire; a person not in a circle writes an empty member list and topic.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:42:11 +03:00
Leonid PershinandCursor f45347b335 Merge branch 'phase/43-whisper'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:40:35 +03:00
Leonid PershinandCursor 089917025a Mark phase 43 whisper as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:36:06 +03:00
Leonid PershinandCursor f7d5e0c042 Add lesson whispers, teacher catch chance, and after-bell teacher talk.
Whispering cuts lesson skill gain from BehaviorDef; a teacher in the room may interrupt into a discipline circle, and pedagogy scales the pupil's opinion of the teacher.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:35:31 +03:00
Leonid Pershin 9c49c8b3a6 Update SKILL documentation for phase and bug workflows. Clarified branch creation commands to specify main instead of HEAD, emphasized the importance of not committing phase changes to the bug tree, and provided detailed instructions for managing worktrees and agent interactions. Enhanced clarity on handling dependencies and worktree paths to prevent conflicts.
ci / server (push) Failing after 3m36s
ci / client (push) Successful in 20s
2026-08-20 10:29:56 +03:00
Leonid Pershin b14d27dd81 Merge branch 'bug/2-client-endpoint-proxy'
ci / server (push) Failing after 3m42s
ci / client (push) Successful in 16s
2026-08-20 10:17:31 +03:00
Leonid PershinandCursor 8e9ea6715c Mark phase 45 presence talk as in progress.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:16:50 +03:00
Leonid PershinandCursor 491ed39184 bug 2: mark complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:14:58 +03:00
Leonid PershinandCursor 7851bed14f Pin Vite to 5173 without an Aspire proxy so AppHost can start.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:14:26 +03:00
Leonid PershinandCursor 3bb5d45f10 Mark phase 45 presence talk as in progress.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:13:19 +03:00
Leonid PershinandCursor 7eac934533 Mark phase 47 romance pack as in progress.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:11:20 +03:00
Leonid PershinandCursor 52a4104f68 Mark phase 43 whisper as in progress.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:10:20 +03:00
Leonid Pershin cb869e4977 Enhance run-aspire.cmd to support Tailscale integration for remote access. The script now checks for Tailscale availability and connection status, providing warnings if not found or connected. Updated documentation in AGENTS.md and README.md to reflect changes, including instructions for using Tailscale with the Vite client. Fixed Vite configuration to pin the client port to 5173 and support HMR over Tailscale. Adjusted AppHost.cs to ensure proper endpoint targeting for Tailscale.
ci / server (push) Failing after 3m45s
ci / client (push) Successful in 17s
2026-08-20 10:02:42 +03:00
Leonid Pershin 51b4c22b69 Merge branch 'phase/39-school-owners'
ci / client (push) Successful in 18s
ci / server (push) Failing after 3m51s
2026-08-20 09:56:13 +03:00
Leonid Pershin e6dc0d5313 Merge branch 'bug/1-login-layout' 2026-08-20 09:55:42 +03:00
Leonid PershinandCursor 5257636869 Mark phase 39 school owners as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:45:13 +03:00
Leonid PershinandCursor cc18429108 Complete phase 39 school owners with owner-scoped API, menu, and tests.
Drop golden save load tests in favor of incompatible-save behavior; dress legacy people files on reload; fix AppHost isolation for multi-user socket and save cleanup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:44:08 +03:00
Leonid PershinandCursor b826e1394d Merge branch 'phase/53-weather-commute'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:43:47 +03:00
Leonid PershinandCursor ab97242bbc phase 53: mark complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:41:02 +03:00
Leonid PershinandCursor ce71a91a67 Add rain and snow minutes to the morning commute.
Day plans take a precomputed extra; Ai does not know precipitation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:40:24 +03:00
Leonid PershinandCursor 9f433c2a53 phase 53: mark in progress
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:35:40 +03:00
Leonid PershinandCursor fbac890be2 Merge branch 'phase/52-textbook-lesson'
ci / server (push) Failing after 3m45s
ci / client (push) Failing after 15s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:31:20 +03:00
Leonid Pershin 723f60a9ca Update SKILL.md files to clarify usage of phase and bug handling skills. Added details about agent waves in phase-work, phase-review, and side-work descriptions, emphasizing the shared merge lock and the distinction between different task types. Improved guidance on handling ongoing phases and the importance of not interfering with others' work.
ci / server (push) Failing after 3m39s
ci / client (push) Failing after 2s
2026-08-20 09:30:24 +03:00
Leonid PershinandCursor f064ea9b61 phase 52: mark complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:28:26 +03:00
Leonid PershinandCursor 1b3479f984 Halve lesson gain when the bag has no textbook for the subject.
Locker and home do not count. A pack without the field keeps vanilla 0.5.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:27:46 +03:00
Leonid PershinandCursor 6eb32e732b bug 1: mark complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:19:34 +03:00
Leonid PershinandCursor 9665302948 phase 52: mark in progress
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:19:27 +03:00
Leonid PershinandCursor 66451bc629 Center the login gate so the password field is not a full-width strip.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:18:48 +03:00
Leonid Pershin f4a793aca4 Update AGENTS.md and SKILL.md to refine testing policies and clarify project-specific test execution. Emphasized the importance of using filters for tests and avoiding full solution runs unless necessary. Adjusted descriptions in phase-work and side-work skills to align with the new testing guidelines.
ci / server (push) Failing after 3m46s
ci / client (push) Failing after 13s
2026-08-20 09:10:42 +03:00
Leonid PershinandCursor 384f9d7273 Merge branch 'phase/51-warmth-lesson'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:09:55 +03:00
Leonid PershinandCursor 1ca4d758f8 phase 51: mark complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:07:23 +03:00
Leonid Pershin e18a09ea82 Update AGENTS.md and SKILL.md files to clarify task handling and bug reporting. Added documentation for bug-related tasks in AGENTS.md and refined descriptions in phase-work and side-work skills to specify their usage and differentiate from bug work.
ci / server (push) Failing after 3m39s
ci / client (push) Failing after 13s
2026-08-20 09:06:59 +03:00
Leonid PershinandCursor 274814aecd Scale lesson gain by warmth the same way hunger already did.
The bar was live and drove dressing; a frozen pupil in class still learned as if it were May.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:06:50 +03:00
Leonid Pershin ac17abfd90 Merge branch 'phase/42-talk-circles'
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Simulation/PersonLog.cs
2026-08-20 09:03:38 +03:00
Leonid PershinandCursor 91a72b9b99 phase 51: mark in progress
ci / server (push) Failing after 3m35s
ci / client (push) Failing after 14s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:01:18 +03:00
Leonid PershinandCursor aaf539cacc Merge branch 'phase/50-teacher-skill-gain'
ci / server (push) Failing after 3m57s
ci / client (push) Failing after 17s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:58:27 +03:00
Leonid Pershin ef36bd5d35 phase 42: mark complete 2026-08-20 08:56:30 +03:00
Leonid Pershin 47fc10da02 Add talk circles with TopicDef, staff/phone chat, and opinion outcomes. 2026-08-20 08:55:55 +03:00
Leonid PershinandCursor 7935a3086f phase 50: mark complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:54:53 +03:00
Leonid PershinandCursor c2579d6767 Scale lesson skill gain by the teacher's subject skill.
Hiring a 78-math applicant already cost more than a 41; the class now actually learns faster when that teacher is in the room.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:54:13 +03:00
Leonid PershinandCursor 1287d503b2 Merge branch 'phase/49-skip-stale-build'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:51:57 +03:00
Leonid PershinandCursor f718f4b63d phase 50: mark in progress
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:48:16 +03:00
Leonid PershinandCursor 3eaecc12e7 Mark phase 49 skip-stale-build complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:46:39 +03:00
Leonid PershinandCursor 9bd1b8eea0 Skip MSBuild on run-aspire.cmd when binaries are still newer than sources.
dotnet run always evaluates the Aspire graph. A second launch after Ctrl+C should not wait on that.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:45:44 +03:00
Leonid Pershin 6dcbb3303c Merge branch 'phase/48-lesson-teacher-present' 2026-08-20 08:42:38 +03:00
Leonid PershinandCursor 32283bfada phase 48: mark complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:40:04 +03:00
Leonid PershinandCursor bdc902b7ff Renumber remaining lesson-coherence phases to 50-53.
Phase 49 is already claimed for skip-stale-build.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:39:29 +03:00
Leonid Pershin 4b236a7916 Merge main into phase/39-school-owners.
Keep school owners and phase 41 opinions/portraits together; ResetAsync wipes all saves so shared AppHost tests stay isolated.
2026-08-20 08:36:13 +03:00
Leonid PershinandCursor fbc32f2bfc Grow lesson skills only when the assigned teacher is standing in the room.
The timetable already named a teacher; learning ignored whether they were in the toilet, still walking, or not a person at all.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:33:28 +03:00
Leonid PershinandCursor 936d6fb04f phase 48: mark in progress
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:21:47 +03:00
Leonid Pershin 7266678ee9 Mark phase 42 talk-circles as in progress.
ci / server (push) Failing after 3m39s
ci / client (push) Failing after 14s
2026-08-20 08:21:21 +03:00
Leonid PershinandCursor 254c43535e Document off-queue lesson coherence (phases 48-52).
Teacher presence, teacher skill, warmth, textbooks and weather commute are already visible numbers that do not affect the lesson or the walk to school.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:21:14 +03:00
Leonid Pershin 9d96108516 Add portrait settings support to school creation and update related API and UI components. Enhance error handling for invalid presets and ensure proper cloning of settings. Update tests to validate new functionality.
ci / server (push) Failing after 3m40s
ci / client (push) Failing after 14s
2026-08-20 08:17:58 +03:00
Leonid Pershin db95de0ddf Update AGENTS.md with new task documentation and enhance Russian and English localization for portrait settings.
ci / server (push) Failing after 1m16s
ci / client (push) Failing after 13s
2026-08-20 08:01:46 +03:00
Leonid Pershin 26be7c87f8 WIP phase 39: school owners, my/others menu, guest restrictions. 2026-08-20 07:58:12 +03:00
Leonid Pershin 6264034e4b Merge branch 'phase/41-opinions'
# Conflicts:
#	docs/phases/README.md
2026-08-20 07:58:05 +03:00
Leonid Pershin e35aa0d893 phase 39: mark in progress 2026-08-20 07:40:55 +03:00
Leonid Pershin 3fdbbf488e phase 41: mark complete 2026-08-20 07:35:36 +03:00
Leonid Pershin b1b4f18b40 Add opinions storage, morning drift, and Connections card tab. 2026-08-20 07:34:57 +03:00
Leonid Pershin 40929aa3ce Merge branch 'phase/38-session'
# Conflicts:
#	docs/phases/README.md
#	tests/HSchool.AppHost.Tests/PortraitApiTests.cs
2026-08-20 07:25:12 +03:00
Leonid Pershin 660340c216 Enhance apparel definitions: Introduce 'UpperUnderwear' layer and related items (Bra, SportsBra, SoftBra) to support gender-specific clothing. Update inventory and dress generation logic to accommodate new layers and ensure proper coverage. Adjust localization for new apparel terms and refine tests for underwear functionality. 2026-08-20 07:20:40 +03:00
Leonid Pershin fbd18a646f Mark phase 38 session complete. 2026-08-20 07:17:52 +03:00
Leonid Pershin a444fc011e Add alpha session gate with cookie auth and login UI. 2026-08-20 07:17:18 +03:00