Commit Graph
189 Commits
Author SHA1 Message Date
Leonid Pershin 9c92fb44a7 Merge branch 'phase/61-portrait-loras-embeds' 2026-08-20 15:14:45 +03:00
Leonid Pershin 01ef277f96 Merge branch 'review/slice-4-recheck' 2026-08-20 15:05:08 +03:00
Leonid PershinandCursor a0f0152914 Record slice 3 recheck after later slices drifted staffing paths.
Pin homeroom seats, the management money row and assign-from-card, and drop the stale top-three skills claim from the protocol.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 15:01:22 +03:00
Leonid PershinandCursor 5a049d43c8 Cover class and person timetable filters that phases 16-17 already promised.
GET ?classId=/personId= and personTimetableQuery had no tests; occupancy on the grid comment still pointed at the old map snapshot.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:58:39 +03:00
Leonid PershinandCursor 9e217e93eb Stack portrait LoRAs and embeddings from model, preset, and shot kind.
Swarm loads LoRAs via loras/loraweights; embeddings go in the prompt as embed tags, not lora tags.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:58:26 +03:00
Leonid Pershin 8108508e24 Merge branch 'review/slice-2-recheck' 2026-08-20 14:58:03 +03:00
Leonid PershinandCursor c2e01f09d3 Lock slice-2 filters and the staff-parent intake path later slices left untested.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:53:56 +03:00
Leonid Pershin 67b7f7ec08 Merge branch 'phase/60-portrait-models'
ci / server (push) Failing after 3m46s
ci / client (push) Successful in 21s
# Conflicts:
#	docs/phases/off-queue/README.md
2026-08-20 14:46:20 +03:00
Leonid Pershin 5d46550f12 checkpoint before checking out main 2026-08-20 14:43:00 +03:00
Leonid Pershin d08748638a Merge branch 'review/slice-1-recheck' 2026-08-20 14:41:29 +03:00
Leonid PershinandCursor 2f9c2d707e Merge branch 'review/slice-9-cd'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:39:07 +03:00
Leonid PershinandCursor f6bb4c76cc Record slice 1 recheck after clothing, session and social.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:33:30 +03:00
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 820aea53fe Merge branch 'review/slice-10-a'
# Conflicts:
#	docs/phases/10-craft/reviewed.md
#	docs/phases/reviewed.md
2026-08-20 14:21:18 +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 Pershin 81fd3f6181 Split SwarmUI portraits into a model catalog and layered prompts.
Picker is Swarm intersect config, preset style/shot inherit model defaults, and living saves lift the old preset shape.
2026-08-20 14:08:11 +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 Pershin e2e7d30701 Tighten layer graph tests and document npm test typecheck.
Content and People/Schedule/Ai now fail the same way if they grow a game-layer edge the projects.md graph forbids; README matches the tsc-then-vitest script from phase 57.
2026-08-20 14:04:35 +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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 384f9d7273 Merge branch 'phase/51-warmth-lesson'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:09:55 +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