Commit Graph
198 Commits
Author SHA1 Message Date
Leonid Pershin 5e23d1f500 Merge branch 'review/off-queue-portraits' 2026-08-20 16:21:21 +03:00
Leonid PershinandCursor 118d1815d8 Record slice 7 B-C recheck after later slices drifted climate and dress paths.
Adds a weather-drop walk test so a jacket is not teleported onto the body; PE change regressions already red on main stay open.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 16:17:45 +03:00
Leonid PershinandCursor 94e3e661e8 Record portrait phases 60-61 as reviewed.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 16:17:17 +03:00
Leonid Pershin 71000655e0 Merge branch 'review/slice-8-recheck' 2026-08-20 16:10:07 +03:00
Leonid Pershin 5490cfb247 Show a bare dash on ownerless school cards.
The design asked for the owner name or an em dash; wrapping the dash in the Owner template produced Хозяин: —. Low-speed clock tests now cover x1/2 and x2 as well as x1.
2026-08-20 16:06:59 +03:00
Leonid Pershin 5468852529 Merge branch 'review/slice-7-a-recheck' 2026-08-20 15:57:12 +03:00
Leonid Pershin 5df341f91b Restore Slavic save lift and redress abstract underwear on load.
Recheck of slice 7 stage A found UpgradeOlderSave removed after UpperUnderwear, so format-2 nameSetId saves never started, and golden people.json wearing abstract Underwear failed RequireKnownApparel. Bring back the lift, treat unusable items as undressed, and restore GoldenSaveTests.
2026-08-20 15:52:17 +03:00
Leonid PershinandCursor 1ef051764b Restore golden-save host tests for slice 6 after later formats stopped loading historic files.
Phase 39 dropped GoldenSaveTests when format 2 saves became unstartable. Recheck restores the missing-field and seed-equals-id assertions against a stamped copy, and records the recheck.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 15:39:07 +03:00
Leonid PershinandCursor cf1403e3b8 Merge branch 'review/slice-3-recheck'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 15:19:22 +03:00
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