Commit Graph
100 Commits
Author SHA1 Message Date
Leonid PershinandCursor 19554d4362 Review slice 9 C-D: persist clash opinions and the bully's victim.
FinishConflict never set RosterTalkDirty, so people.json skipped quarrel shifts until some other save — the same seam as the A-B talk-circle fix. First BullyVictimId write stayed in RAM only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:27:49 +03:00
Leonid Pershin 1fd8ade69c Merge branch 'review/slice-10-bc' 2026-08-20 14:15:59 +03:00
Leonid PershinandCursor b23ce583df Use Seed.Mix in speech-policy PickTopic tests after Roll01.
Sequential integer seeds all roll ~0, so NoRude never saw a rude topic under free speech.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:13:14 +03:00
Leonid PershinandCursor 05a806ad51 Record slice 10 B-C review.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:07:41 +03:00
Leonid Pershin 63cde56cc3 Merge branch 'phase/46-speech-home'
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	docs/phases/09-social/README.md
#	src/HSchool.Server/Game/SchoolWorker.cs
#	tests/HSchool.Ai.Tests/TalkCirclesTests.cs
#	tests/HSchool.Simulation.Tests/MorningOpinionsTests.cs
#	tests/HSchool.Simulation.Tests/TalkCircleTests.cs
2026-08-20 14:06:29 +03:00
Leonid PershinandCursor 026fe4934f Mark phase 46 speech-home complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:54:38 +03:00
Leonid PershinandCursor f4f726a19d Merge branch 'phase/58-worker-card-split'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:54:25 +03:00
Leonid PershinandCursor 92c2143329 Add speech-topic policy from tomorrow and a morning family talk.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:53:12 +03:00
Leonid PershinandCursor 1e1a86fece Mark phase 58 worker-card-split complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:52:11 +03:00
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 f381475566 Mark phase 60 portrait-models in progress. 2026-08-20 13:43:29 +03:00
Leonid PershinandCursor cc9ea18480 Merge branch 'review/slice-9-ab'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:40:20 +03:00
Leonid PershinandCursor 26666ba426 Record slice 9 A-B review.
Phases 41-43 checked on b38d0bb. 44 and 46 were in flight; Outgoing.talkCircleBonus is a no-op at max 4.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:35:16 +03:00
Leonid PershinandCursor b38d0bb628 Persist talk opinions and pick topics by weight.
A finished circle never set Tick's peopleChanged bit, so people.json kept pre-talk numbers until morning drift. PickTopic compared a 0..total roll to a 0..1 cursor, so gossip almost never changed the subject.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:34:34 +03:00
Leonid Pershin e62f1c3cb7 Merge branch 'bug/4-wwwroot-not-found' 2026-08-20 13:33:14 +03:00
Leonid PershinandCursor add739de33 Mark phase 46 speech-home in progress.
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 23s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:28:19 +03:00
Leonid Pershin 5e147a8e47 Mark phase 58 worker-card-split in progress. 2026-08-20 13:25:41 +03:00
Leonid Pershin c526921779 Merge branch 'phase/44-quarrel-fight'
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Content/PeopleDefs.cs
#	src/HSchool.People/Roster.cs
#	src/HSchool.People/Seed.cs
2026-08-20 13:24:12 +03:00
Leonid PershinandCursor f7d5fa1d6b Mark bug 4 wwwroot skip as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:22:59 +03:00
Leonid PershinandCursor e35b8e438c Skip UseFileServer when wwwroot is missing.
Local Aspire has no published client folder; the middleware warned on every boot.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:22:28 +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 827c5f94d5 Mark phase 44 quarrel and fight as complete.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:31:56 +03:00
Leonid PershinandCursor 395107c959 Add recess quarrels, rare yard and gym fights, and apologies.
Bullies remember a victim by a trait field, a defender can join, staff break up a fight with a reprimand, and skip empty time clears leftover clashes so they cannot last forever.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:31:06 +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