Commit Graph

56 Commits

Author SHA1 Message Date
Severian e7c9adbcc5 Keep multi-turn conversations linked to their card
The first pass read the name from the last user turn and the token from
the last assistant turn. Both are wrong once a conversation continues.

Only sucker's *first* reply carries a conversation token — later ones say
"Character updated" or "unchanged" with no token in them — so reading the
last assistant turn lost the link three turns in and would have created a
duplicate card on every message. tokenCandidates() now searches the whole
conversation, still preferring whatever the user just typed, since pasting
a token is deliberate.

The name is the first user turn after the greeting, not the last one. That
is what the old code read at messages[3], and unlike the last turn it stays
put as messages are appended.

Tests cover a three-turn conversation for both.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NX2SsmUqQftWTZAY4BDuFa
2026-09-11 04:18:26 +08:00
Severian 11c244fdd2 Read the request by role, not by position
Some users' JanitorAI sends a "." user turn between the card and the
greeting; others' does not. Sucker read fixed indices, so on the shorter
shape every slot was off by one: first_mes was set to the name line, and
the name slot did not exist at all. That TypeError was caught by the
handler and reported as the "you dingus, read the directions" message,
which blamed the user for a shape they never chose.

src/lib/messages.ts now resolves the slots by role instead — the card is
the system turn, the greeting is the first assistant turn, the user's
latest input is the last user turn, and sucker's own previous reply is the
last assistant turn. All four hold in both shapes and in a continued
conversation, so the conversation token is found in either as well.

Extraction now throws a description of what is missing rather than a
TypeError, and tests/messages.test.ts pins both shapes. The tests need no
framework: `npm test` runs node's built-in runner.

Existing cards are unaffected: the update path already discards the
extracted name and keeps the original.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NX2SsmUqQftWTZAY4BDuFa
2026-09-11 04:14:04 +08:00
Eslezer e7da1aab4d Merge pull request #10 from severian-dev/feat/css-editor-banner
profile/css editor banner
2026-09-11 00:17:49 +10:00
Eslezer 64013ea5ea Bump version to 2.4 and add CSS editor changelog entry
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 00:15:44 +10:00
Eslezer d7c8a9a008 Add CSS editor banner and update Avalon member count
- Bump Avalon member count to 885
- Add looping, muted video banner linking to the new Janitor profile CSS editor
- Desktop: show the Avalon and CSS banners side by side
- Mobile: show them in a carousel (random start, 8s auto-advance, arrows/dots)
- Paint video frames to a canvas so browsers like Opera GX don't overlay
  pop-out controls on the banner

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 22:51:12 +10:00
Severian 225c2e3c4f chore: 2.3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BvRuentLsG1UGpy9gmNWvR
2026-08-04 01:22:09 +08:00
Iseult a66a46fc4a fix: revise dingus error message to surface context size issue; update changelog 2026-03-29 06:00:21 +08:00
Iseult d42d13e7f0 Add ladyofpa.in mirror, update Avalon banner copy, bump member count to 295 2026-02-28 20:13:34 +08:00
Severian b252df5591 Merge pull request #9 from leri-a/master
Adding restart line to docker-compose.
2026-02-04 14:07:01 +08:00
Ema P. 75a16b6ece Adding restart line to docker-compose. 2026-02-03 15:48:24 -05:00
Severian d35d704ce1 chore: 2.2 2026-01-30 18:22:16 +08:00
Severian 549d94fe85 Merge pull request #7 from chill-protocol/webp-link
Option for webp file name or character image URL inputs
2025-12-21 12:41:20 +08:00
tui bdde78475e Added the option to directly input webp file name or character image link when creating PNG for character cards 2025-12-21 09:44:53 +13:00
Ema 06d8b2e36c Merge pull request #6 from severian-dev/docker-next-standalone
Docker next standalone
2025-12-10 22:37:39 -05:00
Ema 59acc534fa Cleaning readme. 2025-12-10 22:34:29 -05:00
Ema fdd13085c3 Removing runtime env 2025-12-10 22:31:54 -05:00
Severian 8923bf3f63 chore: prod env, no sourcemaps 2025-12-11 08:42:20 +08:00
Ema P. a02087915b Standalone Readme Editing 2025-12-10 12:38:10 -05:00
Ema P. e6e230ab84 Building image from .next standalone server. 2025-12-10 10:55:35 -05:00
Ema P. b3aece1e41 Adding next.config.js for standalone. 2025-12-10 10:52:36 -05:00
Ema 24441720d6 Merge pull request #5 from leri-a/master
Updating base image
2025-12-10 09:42:29 -05:00
Ema P. 2fc4e419b2 Updating base image 2025-12-10 09:39:17 -05:00
Severian 95f5a3e725 chore: 2.1 2025-12-10 08:27:22 +08:00
Severian f99985ad6c chore: deps 2025-12-09 10:40:18 +08:00
Severian dceb65a529 google analytics 2025-10-04 05:32:58 +08:00
Severian 35522d935d colored code tags 2025-10-04 05:27:39 +08:00
Severian 875ace5b2d fix non-streaming 2025-10-04 05:22:04 +08:00
Severian 3a67baf48b updated directions 2025-10-04 05:05:44 +08:00
Severian b0d5696a3a match token fix 2025-10-04 04:55:44 +08:00
Severian ff9d5532da chore: test 2025-10-04 04:49:28 +08:00
Severian e10fd80914 minor changes 2025-10-04 04:29:23 +08:00
Severian d720ddcea5 2.0 2025-10-04 04:28:02 +08:00
Severian 624f9f264b formatting 2025-10-03 23:28:34 +08:00
Severian 936a8a7b62 notebook no longer needed 2025-10-03 23:27:28 +08:00
Severian b61879e157 Merge pull request #4 from severian-dev/multiturn-sucker
feat: Added multiturn messaging and tracking of scenario/description …
2025-10-03 23:20:12 +08:00
Ema Park 0a39f1dbea Removing version attribute 2025-09-26 20:01:22 -04:00
Ema Park 5460082ead Initial dockerfile, docker-compose. 2025-09-26 19:50:31 -04:00
chill-protocol a089b7aab3 feat: Added multiturn messaging and tracking of scenario/description changes. 2025-09-15 20:59:51 +12:00
Severian 7c40eef29e chore: 1.9 2025-08-10 21:39:34 +08:00
Severian 5f91675522 chore: add callout 2025-07-13 05:12:10 +08:00
Severian 03d2e5a3e2 chore: 1.8 2025-07-13 05:04:26 +08:00
Severian d7c879cc36 chore: revised extraction implementation 2025-07-13 04:57:25 +08:00
Severian a4b5041657 chore: 1.7 2025-05-24 18:57:44 +08:00
Severian 58d8155984 chore: 1.6 2025-03-03 16:20:51 +08:00
Severian b9da8cfdb4 chore: 1.5 2025-02-16 00:10:27 +08:00
Severian 5e4f89cc88 chore: should handle the char extraction better now 2025-02-13 16:18:52 +08:00
Severian 97da46b042 chore: yeah it's fixed 2025-02-13 14:59:27 +08:00
Severian ae06eb5f01 chore: odd, let me try this 2025-02-13 14:54:22 +08:00
Severian 3b7eba06f8 chore: why is this shit not logging 2025-02-13 14:48:49 +08:00
Severian 75a1318af9 chore: fixed regex issue 2025-02-13 14:42:59 +08:00