Repository navigation
Releases: rpaddict/RisuBard
Release list
RisuBard v0.9.77
RisuBard v0.9.77
[개선] 공식 위키 프롬프트 프리셋 2026-10-21
위키 프롬프트 프리셋의 공식 기본 프리셋이 공식 기본 프리셋 (2026-10-21)로 바뀝니다.
- 추가된 내용: 맨 앞에
개요블록이 들어갑니다. 위키 작성 AI에게 이 세션이 성인 사이의 창작 롤플레이이며 등장인물은 모두 성인이라는 전제와, 웹소설 작가로서 이야기의 개연성과 몰입을 지키라는 원칙을 알려 줍니다. 나머지 블록과 켜고 끄는 선택은 이전 공식 프리셋과 같습니다. - 이전 버전 보관: 이전 공식 프리셋은
공식 기본 프리셋 (2026-10-10)이라는 이름으로과거 공식 프리셋폴더에 들어갑니다. 이전 버전으로 돌아가고 싶으면 그 프리셋을 고르면 됩니다. - 공식 프리셋을 쓰던 채팅은 자동으로 새 버전을 쓰고, 직접 만든 프리셋은 바뀌지 않습니다.
바드위키 링크가 문서 ID로 적혀 연결되지 않던 문제
위키 작성 AI가 문서 제목 대신 내부 문서 ID로 링크를 적는 경우가 있었습니다. 예를 들어 [[location.xxxx|검은 이끼 골짜기]]처럼 적힌 링크는 해당 문서와 연결되지 않고 끊어진 링크로 남았습니다.
- 이제 실제 문서 ID로 적힌 링크도 그 문서로 연결됩니다.
|뒤의 표시 문구는 그대로 보입니다. - 위키 편집기 미리보기, 끊어진 링크 개수, 연결된 문서 수, 아크 플롯 링크가 모두 같은 기준으로 연결을 판단합니다.
- 위키 작성 AI에게 링크 대상에는 문서 제목이나 별칭만 쓰고 문서 ID나 파일 경로는 쓰지 말라고 지시합니다.
위키 편집기 본문에서 바꾼 문서 제목이 저장 후 되돌아가던 문제
위키 편집기에서 본문 맨 위의 ## 제목 줄만 고치고 저장하면, 위쪽 이름 칸의 옛 제목으로 덮여 원래 제목으로 돌아갔습니다.
- 이제
이름칸은 그대로 두고 본문 제목 줄만 바꿔 저장하면 바뀐 제목이 문서 이름이 됩니다. 이름칸을 바꾼 경우에는 지금처럼이름칸이 우선합니다.
파이어폭스에서 채팅 본문의 가운데 클릭 자동 스크롤이 작동하지 않던 문제
파이어폭스에서 채팅 본문을 마우스 가운데 버튼으로 누르면 자동 스크롤 아이콘은 나타나지만, 마우스를 움직여도 채팅이 스크롤되지 않았습니다. 최신 메시지가 아래에 붙는 채팅 본문의 스크롤 방식을 파이어폭스가 자동 스크롤 대상으로 인식하지 못했기 때문입니다. 사이드바와 설정 창에서는 원래 정상이었습니다.
- 이제 파이어폭스에서도 채팅 본문을 가운데 클릭한 뒤 마우스를 위아래로 움직이면 그 방향으로 스크롤됩니다. 누른 자리에 위아래 화살표 표시가 나타납니다.
- 가운데 클릭 후 손을 떼면 다음 클릭이나
Esc까지 계속 스크롤하고, 누른 채 끌었다가 놓으면 바로 멈춥니다. - 링크 위의 가운데 클릭, 본문 안 코드 블록처럼 따로 스크롤되는 영역은 브라우저 기본 동작을 그대로 씁니다. 크롬과 엣지는 바뀌지 않습니다.
IP 주소로 접속했을 때 프롬프트 프리셋을 불러오지 못하던 문제
http://192.168.0.10:6001처럼 HTTPS가 아닌 IP 주소로 리스바드에 접속하면, 프롬프트 프리셋 파일(.risup)을 불러올 때 window.crypto.subtle is undefined 오류가 나며 실패했습니다. 브라우저가 HTTPS나 localhost가 아닌 주소에서는 프리셋 암호 해제에 쓰는 내장 암호화 기능을 막기 때문입니다. 도메인과 HTTPS로 접속하면 원래 정상이었습니다.
- 이제 브라우저가 내장 암호화 기능을 막는 주소에서도 리스바드가 같은 방식으로 직접 계산해 프리셋을 불러오고 내보냅니다. 같은 이유로 실패하던 암호화된 캐릭터 카드, 번역기 프리셋, 테마 프리셋 불러오기와 위키 블록 식별도 함께 고쳐졌습니다.
- 만들어지는 파일은 이전과 똑같아서 다른 환경에서 만든 프리셋과 그대로 주고받을 수 있습니다.
RisuBard v0.9.76
RisuBard v0.9.76
[보안] 봇의 Lua 스크립트가 브라우저 코드를 실행할 수 있던 문제
봇이나 모듈의 Lua 스크립트가 simpleLLM, similarity 같은 API에서 받은 값을 거슬러 올라가, 리스바드가 도는 브라우저에서 임의의 코드를 실행할 수 있었습니다. 악의적인 봇을 가져오기만 해도 저장된 데이터나 API 키가 노출될 수 있는 문제였습니다.
- 이제 Lua 스크립트는 API 결과를 일반 Lua 표로만 받습니다. 브라우저 쪽 객체에는 닿을 수 없습니다.
- 표준 Lua 문법으로 값을 읽고 쓰는 봇은 그대로 동작합니다.
- 제보와 수정: rsyumi 님 (PR #41)
RisuBard v0.9.75
RisuBard v0.9.75
[수정] 아카라이브 복사에서 화면 밖 캐릭터 그림이 빠지던 문제
그림 겹치기를 아카라이브용으로 복사하면 처음 몇 장만 캐릭터가 나오고, 그 뒤 그림은 배경만 남았습니다. 챗 저장기에서는 더 자주 빠졌습니다.
- 원인: 봇이 캐릭터 그림을 화면에 보일 때 불러오도록 해 두면, 화면 밖에 있는 그림은 아직 불러오지 않아 크기가 0인 채로 구워졌습니다. 챗 저장기는 메시지를 화면 밖에서 그리기 때문에 거의 모든 그림이 빠졌습니다.
- 해결: 이제 그림으로 굽기 전에 블록 안의 캐릭터 그림을 먼저 모두 불러옵니다. 배경 위에 겹친 캐릭터 그림이 따로 떨어져 한 장 더 붙는 일도 함께 막았습니다.
- 선명한 그림: 그림으로 굽는 해상도가 모니터 배율을 따라 100% 화면에서는 1배로 구워져, 아카라이브에서 칸 너비로 늘어나면 흐릿했습니다. 이제 항상 2배 해상도로 굽고, 투명한 부분을 지키면서 용량을 줄이려 WebP(품질 85)로 저장합니다.
- 메시지별 복사와 챗 저장기에 똑같이 적용됩니다.
RisuBard v0.9.74
RisuBard v0.9.74
[수정] 아카라이브 복사에서 접힌 그림 겹치기와 장면 카드 글자가 깨지던 문제
0.9.73부터 아카라이브 복사가 상태창과 그림 겹치기를 그림으로 굽지만, 두 경우가 여전히 리스바드 화면과 다르게 나왔습니다.
- 접힌 그림 겹치기: 아래를 접어 둔 캐릭터 그림은 배경과 캐릭터가 따로 떨어져, 캐릭터 그림 아래에 배경 그림이 한 장 더 붙었습니다. 이제 접힌 그림도 배경과 캐릭터가 한 장으로 나옵니다.
- 장면 카드 글자: 봇이 Impact 같은 컴퓨터 글꼴을 이름만 바꿔 쓰는 장면 카드는 그림으로 구울 때 그 글꼴이 빠지고 더 넓은 글꼴로 바뀌었습니다. 그래서 날짜 끝 글자가 잘리고 제목이 두 줄로 넘쳤습니다. 이제 블록이 쓰는 글꼴을 함께 담아 화면과 같은 폭으로 굽습니다.
- 마지막 메시지 아래 빈 공간: 봇이 화면 구석에 띄우는 지도나 설정 버튼까지 그림으로 구워, 마지막 메시지를 복사하면 투명한 그림 여러 장이 큰 빈 공간으로 붙었습니다. 이제 이런 버튼은 그림으로 굽지 않고 뺍니다.
- 위아래 빈 줄: 복사한 메시지 아래에만 있던 빈 줄을 위에도 넣어, 붙여 넣은 카드 앞뒤에 바로 글을 쓸 수 있습니다.
- 메시지별 복사와 챗 저장기에 똑같이 적용됩니다.
[수정] 라이트보드 리롤 같은 버튼이 다른 챗을 덮어쓰던 문제
메시지 안의 버튼(라이트보드의 다시 생성 버튼, 봇이나 모듈의 트리거 버튼)은 누른 챗이 아니라, 처리가 끝난 순간에 열려 있는 챗에 결과를 썼습니다. 리롤처럼 오래 걸리는 버튼을 누르고 기다리는 동안 다른 챗이나 다른 봇으로 옮기면, 그 챗의 내용이 버튼을 누른 챗의 내용으로 통째로 바뀌었습니다. 챗 목록에 같은 챗이 두 개 생기고 원래 대화가 사라진 것처럼 보였습니다.
- 이제 버튼 결과는 항상 버튼을 누른 챗에만 들어갑니다. 기다리는 동안 다른 챗이나 봇으로 옮겨도 그쪽은 바뀌지 않습니다.
- 처리 중에 버튼을 누른 챗을 지웠다면 결과를 버립니다. 다른 챗에 대신 쓰지 않습니다.
[수정] 봇이나 모듈 스크립트가 챗을 고치면 바드위키가 그 턴들을 놓치던 문제
Lua의 setFullChat으로 챗 전체를 다시 쓰는 봇이나 모듈을 쓰면, 스크립트가 고친 메시지마다 리스바드가 붙여 둔 메시지 번호, 보낸 시각, 생성 정보, 위키 반영 표시가 모두 지워졌습니다. 바드위키는 메시지 번호로 턴을 찾기 때문에 번호가 지워진 턴은 위키 분석, 추가 분석, 위키 리부트에서 모두 빠졌습니다. 4턴을 진행했는데 리부트가 0/1턴으로 마지막 턴 하나만 다시 쓰는 일도 이 때문이었습니다.
- 이제 스크립트가 메시지 내용을 고쳐도 그 메시지의 번호, 시각, 생성 정보, 위키 반영 표시는 그대로 남습니다.
- 스크립트가 메시지를 지우거나 끼워 넣어 개수가 바뀌면, 내용이 그대로인 메시지만 원래 정보를 이어받습니다. 새로 생긴 메시지는 다음 전송 때 번호를 새로 받습니다.
- 이미 번호가 지워진 예전 턴은 다음 메시지를 보낼 때 새 번호를 받습니다. 그 뒤에 위키 리부트를 실행하면 그 턴들도 다시 위키에 들어갑니다.
RisuBard v0.9.73
RisuBard v0.9.73
[수정] 저장 대기 중 외부에서 파일을 고치면 앱이 시작되지 않던 문제
앱이 켜져 있는 동안 봇 제작 도구나 다른 프로그램이 캐릭터 파일을 고치면, 저장을 기다리던 앱 편집이 있을 때 외부 변경 받아들이기가 실패했습니다. 이 상태에서 창을 새로고침하면 시작 화면이 getItem Error: Canonical files changed while acknowledged saves are pending; a merge baseline is unavailable로 멈췄고, 서버를 완전히 다시 켜는 것 말고는 방법이 없었으며 그러면 저장을 기다리던 편집이 조용히 사라졌습니다.
- 자동 해결: 이제 시작과
외부 변경 받아들이기가 멈추지 않고 외부에서 고친 파일을 불러옵니다. - 앱 편집 유지: 외부에서 바뀐 것이 캐릭터 설정이나 로어북뿐이면, 그 캐릭터와 로어북만 외부 내용으로 바뀌고 저장을 기다리던 대화와 다른 편집은 그대로 저장됩니다.
- 복구 파일: 바뀐 내용을 불러오기 전에 저장을 기다리던 앱 상태 전체를 서버 데이터 폴더의
trash/live-files-recovery/안에 파일로 보관하고, 화면을 불러온 뒤 그 위치를 알려 줍니다. 설정 파일처럼 다른 파일이 바뀌어 외부 내용을 통째로 불러온 경우에도 앱 편집은 이 파일에 남습니다.
[수정] 새 대화 첫 턴에 첫 메시지 속 키워드로 로어북이 켜지지 않던 문제
그리팅을 받은 직후 처음 보내는 메시지에서는 로어북 키워드 검색이 사용자가 입력한 한 줄만 훑었습니다. 그래서 첫 메시지에 장소나 설정 키워드가 잔뜩 있어도 그 로어가 켜지지 않아, AI가 첫 응답부터 설정을 놓치곤 했습니다.
- 첫 메시지 포함: 대화 메시지 수가 검색 깊이보다 적으면 첫 메시지도 검색 대상에 들어갑니다. 대체 그리팅을 골랐다면 그 그리팅을 봅니다.
- 보이는 그대로 검색: 첫 메시지는 요청에 실제로 들어가는 렌더링 결과로 검색하므로, CBS 조건으로 숨긴 분기의 키워드 때문에 로어가 잘못 켜지지 않습니다.
- 기존 규칙 유지: 첫 메시지를 끈 대화나
Cut Messages for AI로 앞부분을 잘라 낸 대화에서는 첫 메시지를 검색하지 않습니다. 대화가 이미 검색 깊이만큼 쌓였다면 이전과 똑같이 동작합니다. - 검색 깊이가 대화보다 길 때: 검색 깊이가 대화 길이보다 크면 마지막 몇 개만 검색되던 문제도 함께 고쳐, 이제 모든 메시지를 검색합니다.
[수정] 아주 큰 챗을 내보낼 때 나던 Invalid array length 오류
챗 목록에서 챗 하나를 JSON으로 내보내거나 모든 챗을 내보낼 때, 내보낼 내용이 100MB를 넘으면 RangeError: Invalid array length 오류가 나고 파일이 만들어지지 않았습니다. 휴대폰 브라우저에서 접속해 긴 챗을 옮기려 할 때 주로 겪던 문제입니다.
- 수정: 내보낼 글을 파일로 바꾸는 방식을 브라우저 내장 기능으로 바꿔서 크기 제한이 사라졌습니다. 210MB짜리 모든 챗 내보내기까지 정상적으로 저장되는 것을 확인했습니다.
- 같은 방식을 쓰던 다른 내보내기: 텍스트를 파일로 저장하는 다른 내보내기도 같은 경로를 쓰므로 함께 고쳐졌습니다.
[개선] 챗 목록에서 여러 챗을 골라 한꺼번에 옮기기
챗 목록의 체크 상자는 지금까지 여러 챗을 지울 때만 쓸 수 있었습니다. 챗 여러 개를 폴더에 넣거나 순서를 바꾸려면 하나씩 끌어야 했고, 접어 둔 폴더에는 아예 넣을 수 없었습니다. 사이드바에서는 챗 하나만 따로 내보낼 방법도 없었습니다.
- 선택 막대: 챗을 하나라도 고르면 목록 위 도구 막대가 선택 막대로 바뀝니다. 고른 개수, 전체 선택, 폴더로 이동, 위로, 아래로, 선택한 챗 내보내기, 선택한 챗 삭제가 한곳에 있습니다. 위로와 아래로는 고른 챗을 같은 폴더 안에서 한 칸씩 옮깁니다. 선택은
Esc나 ✕ 버튼으로 풉니다. - 빠르게 고르기: Shift를 누른 채 챗을 클릭하면 마지막으로 고른 챗부터 그 챗까지 한 번에 골라집니다. Ctrl(맥은 Cmd)을 누른 채 클릭하면 챗을 열지 않고 선택에만 넣거나 뺍니다. 터치 화면에서는 챗을 길게 누르면 선택이 시작되고, 그 뒤로는 가볍게 누르기만 해도 고르거나 뺄 수 있습니다. 이때는 챗이 열리지 않으므로, 챗을 열려면 ✕로 선택을 먼저 풉니다.
- 폴더로 이동: 선택 막대의 폴더 버튼을 누르고 옮길 폴더를 고릅니다.
폴더 밖으로와새 폴더 만들어 옮기기도 있습니다. 챗을 받은 폴더는 펼쳐지므로 옮긴 결과를 바로 확인할 수 있습니다. - 함께 끌기: 고른 챗 가운데 하나를 끌어다 놓으면 나머지도 원래 순서대로 그 자리에 따라옵니다. 끄는 동안에는 접힌 폴더 아래에 놓을 자리가 나타나서, 폴더를 펼치지 않고도 넣을 수 있습니다. 이렇게 넣은 폴더는 접힌 채로 남고, 이름 옆 개수로 들어간 것을 확인할 수 있습니다.
- 끌기 손잡이: 이제 챗은 오른쪽 끝의 점무늬 손잡이를 잡아야 끌립니다. 챗 이름을 누르다가 순서가 실수로 바뀌는 일이 줄고, 터치 화면의 길게 누르기는 선택에 쓰입니다. 손잡이는 마우스를 올리면 나타나고, 터치 화면에서는 늘 보입니다.
- 선택한 챗 내보내기: 챗을 하나만 골랐다면 기존 챗 내보내기처럼 JSON, TXT, HTML 가운데 형식을 골라 저장합니다. 여러 개를 골랐다면 그 챗들과 그 챗들이 들어 있는 폴더만 JSON 파일 하나에 담습니다. 이 파일은 모든 챗 내보내기와 형식이 같아서 기존
가져오기로 그대로 불러올 수 있습니다. - 폴더 표시: 화살표로 펼침 상태를 보여 주고, 폴더 안 챗 개수를 이름 옆에 표시합니다. 폴더 색을 바꿀 때
폴더 색상 변경하기를 한 번 더 고르던 중간 단계를 없앴고, 영어로 나오던 색 이름(red, green 등)을 한국어로 보여 줍니다. 폴더를 지울 때는 확인 창에서 안의 챗이 지워지지 않고 폴더 밖으로 옮겨진다고 알려 주고, 빈 폴더에는 챗을 넣는 방법을 적어 둡니다. - 메뉴 이름:
더 보기메뉴의다운로드와임포트를모든 챗 내보내기와가져오기로 바꿨습니다.
[추가] 챗 이름 위에 마우스를 올리면 마지막 대화 미리보기
챗 이름만으로는 어떤 대화였는지 알기 어려워 하나씩 열어 봐야 했습니다. 이제 사이드바 챗 목록에서 챗 이름 위에 마우스를 올리고 0.4초쯤 기다리면, 그 챗을 열지 않아도 목록 오른쪽에 대화 내용을 보여 주는 카드가 뜹니다.
- 보이는 내용: 그 챗의 페르소나 이름, 마지막 메시지를 보낸 쪽의 이름과
5분 전처럼 지난 시간(일주일이 넘으면 날짜), 마지막 메시지의 앞부분 다섯 줄입니다. 페르소나를 고정하지 않은 챗에는 지금 선택된 페르소나 이름 옆에(챗에 고정 안 됨)이 붙습니다. HTML 태그는 걸러 내고 그림은[이미지]로 바꿔 글 위주로 보여 줍니다. - 가벼운 동작: 아직 열지 않은 챗은 마지막 메시지 하나만 서버에서 받아 옵니다. 챗 전체를 불러오지 않으므로 긴 챗도 바로 뜨고, 미리보기 때문에 챗 파일이나 내보내기 결과가 달라지지 않습니다.
- 키보드: Tab으로 챗에 초점을 옮겨도 같은 카드가 뜹니다.
- 뜨지 않는 경우: 터치 화면에서는 뜨지 않고, 창이 좁아 목록 옆에 자리가 없을 때도 뜨지 않습니다. 클릭하거나 목록을 스크롤하거나 챗을 끌면 카드가 사라집니다. 메시지가 없는 챗은
아직 주고받은 메시지가 없습니다라고 알려 줍니다.
[추가] 인풋 도우미(실험 기능): 지시를 섞어 쓰면 AI가 내 메시지를 완성
실험 기능이라 처음에는 꺼져 있습니다. 설정 > 리스바드 > 인풋 도우미 맨 위의 인풋 도우미 사용을 켜면 버튼이 나타납니다.
입력창에 평소처럼 메시지를 쓰다가 괄호 안에 지시를 섞어 넣고 전송 버튼 옆의 파란 요술봉 버튼을 누르면, AI가 지시대로 다음 턴에 보낼 메시지를 완성해 입력창 내용을 바꿉니다. 예를 들어 나는 주문을 외우기 시작한다. (주문 내용은 맡길게. 메시지 끝에는 (ooc: ...) 를 추가해.)라고 쓰면, 주문 대사를 직접 지어 넣고 끝에 적어 둔 (ooc: ...) 문장을 그대로 붙인 메시지가 들어옵니다. 바로 전송되지 않으므로 확인하고 고친 뒤 보내면 됩니다.
- 되돌리기: 결과가 마음에 들지 않으면 요술봉 왼쪽에 생기는 되돌리기 버튼을 누르거나, 결과를 고치기 전에
Ctrl+Z를 눌러 원래 입력으로 돌아갑니다. 결과를 그대로 두고 요술봉을 다시 눌러 새로 받아도 되돌리기는 처음 입력으로 돌아갑니다. 버튼은 메시지를 보내거나 입력창을 비우거나 다른 챗으로 옮기면 사라집니다. - 생성 중: 버튼 아이콘이 빙글빙글 도는 동안에는 입력창이 잠기고, 전송 버튼과 Enter, 재생성 단축키(
Ctrl+M)로 메시지를 보낼 수 없습니다. 보내려고 하면 인풋 도우미가 작업 중이라고 알려 줍니다. 채팅 응답을 만드는 동안에는 반대로 요술봉 버튼이 잠깁니다. - 요청 상태 창: 요청 상태 표시를 켜 두었다면 채팅 응답처럼 화면 구석에
인풋 도우미요청 상태 창이 떠서 진행 시간과 모델을 보여 줍니다. - 취소: 도는 버튼을 다시 누르거나 입력창에서
Esc를 누르면 요청을 취소하고 원래 입력을 그대로 둡니다. 설정에서 인풋 도우미를 끄거나 다른 챗으로 옮겨도 진행 중인 요청은 취소됩니다. - 실패: 요청이 실패하면 입력은 그대로 두고 오류 내용을 알림으로 보여 줍니다.
- 설정 페이지: 설정 > 리스바드 >
인풋 도우미에서 메인 모델과 보조 모델 가운데 쓸 모델, 함께 보낼 지난 메시지 수(기본 10개), 참고 자료로 넣을 항목을 고릅니다. 시스템 프롬프트, 캐릭터 설명, 페르소나, 캐릭터 로어북, 모듈 로어북을 체크할 수 있고, 로어북은 입력과 최근 대화로 켜지는 항목만 넣습니다. 기본으로는 모듈 로어북만 꺼져 있습니다. - 지시 프롬프트: 같은 페이지에서 AI에게 주는 지시문을 볼 수 있습니다. 기본 지시문은 보호되어 고칠 수 없고,
복제하기로 사본을 만들면 이름과 내용을 고쳐 쓸 수 있습니다. 그리모어 프롬프트와 같은 방식이며{{user}},{{char}}같은 CBS 문법을 쓸 수 있습니다. - 요청 기록: 인풋 도우미 요청은 요청 기록에
인풋 도우미로 표시됩니다.
[수정] 챗 목록의 순서 바꾸기와 폴더 편집에서 생기던 문제
챗 목록에서 순서를 바꾸거나 폴더 이름을 고칠 때 열린 챗의 설정이 바뀌거나 다른 조작이 막히는 문제가 있었습니다. 입력창 메뉴의 채팅 리스트 창은 챗을 지울 때 사이드바가 거치는 확인을 건너뛰었습니다.
- 다른 챗의 설정이 적용되던 문제: 챗이나 폴더를 끌어 순서를 바꾸다 지금 열린 챗의 자리가 달라지면, 그 자리에 원래 있던 다른 챗에 고정된 프롬프트 프리셋과 토글 값이 적용될 수 있었습니다. 그 챗을 아직 불러오지 않았다면 엉뚱한 챗을 불러오느라 로딩 화면이 뜨기도 했습니다. 이제 순서를 바꿔도 열린 챗과 그 설정이 그대로 유지됩니다.
채팅 리스트창의 삭제: 입력창 메뉴에서 여는채팅 리스트창(설정에서 켠 경우에만 보임)에서 챗을 지우면, 사이드바와 달리 바드페인터 작업 확인과 그림 생성 기록 보존을 거치지 않고 바로 지워졌습니다. 어떤 챗을 지우든 맨 위 챗으로 넘어가기도 했습니다. 이제 사이드바와 같은 절차로 지우며, 보던 챗을 지운 경우가 아니면 그 챗이 그대로 열려 있습니다.- 폴더 이름 바꾸기: 폴더의 연필 버튼을 누르면 모든 폴더 이름이 한꺼번에 입력 칸으로 바뀌었고, 그동안에는 챗을 눌러도 열리지 않았습니다. 편집을 끌 때 그 폴더가 접히기도 했습니다. 이제 누른 폴더의 이름만 그 자리에서 고치며, Enter로 확정하고 Esc로 취소합니다. 새 폴더를 만들면 이름 입력 칸이 바로 열립니다.
- 키보드와 화면 낭독기: Tab으로 체크 상자 사이를 옮겨 가며 Space로 고를 수 있고, 체크 상자와 폴더 버튼마다 이름이 붙었습니다. 같은 체크 상자를 쓰는 설정 화면 등 다른 곳의 체크 상자도 이제 키보드로 다룰 수 있습니다.
채팅 리스트창의 내보내기와 삭제 버튼도 Enter나 Space로 누를 수 있습니다.
[개선] 토글 값이 챗마다 따로 저장됨
지금까지 토글 값을 따로 가진 것은 채팅별 프리셋 고정으로 고정해 둔 챗뿐이었습니다. 고정하지 않은 챗은 모두 한 벌의 값을 나눠 썼기 때문에, 한 챗에서 토글을 바꾸면 다른 챗의 토글까지 함께 바뀌었습니다. 새 챗과 새 봇도 직전 값을 그대로 물려받아서, 매번 토글을 다시 맞추거나 고정 버튼을 눌러 두어야 했습니다.
- 챗마다 따로: 이제 모든 챗이 자기 토글 값을 가집니다. 한 챗에서 바꾼 토글은 다른 챗에 영향을 주지 않으며, 고정 버튼을 누르지 않아도 됩니다.
- 기존 챗: 고정하지 않았던 챗은 처음 열 때 모든 챗이 함께 쓰던 값을 그대로 가져와 자기 값으로 삼습니다. 화면에 보이던 토글 값은 달라지지 않습니다.
- 새 챗과 새 봇: 새 챗은 보고 있던 챗의 토글 값과 되돌리기 기준을 복사해서 시작합니다. 새 봇은 직접 만들든 카드로 가져오든 지금 열려 있는 챗의 토글 값으로 시작하고, 열린 챗이 없으면 모든 챗이 함께 쓰던 값으로 시작합니다.
- 새 챗에 자동 적용: 토글 프리셋 목록에서 프리셋 옆 별 버튼(
새 채팅에 자동 적용)을 누르면, 보던 챗의 값 대신 그 프리셋 값으로 새 챗과 새 봇이 시작합니다. 별은 프리셋 하나에만 켤 수 있고, 다시 누르면 꺼집니다. - 고정 버튼:
채팅별 프리셋 고정버튼은 이제 되돌리기 버튼을 눌렀을 때 돌아갈 값(되돌리기 기준)만 정합니다. 버튼을 누르고현재 설정으로 덮어쓰기를 고르면 지금 설정이 기준이 되고, 바로 옆 되돌리기 버튼을 누르면 그 값으로 돌아갑니다.고정 해제하고 전역 값 사용은 없앴습니다. 프롬프트 프리셋 파일 형식은 그대로라 기존 프리셋 파일도 그대로 쓸 수 있습니다. - RisuAI 방식: RisuAI처럼 모든 챗이 한 벌의 토글 값을 함께 쓰려면 설정 > 접근성에서
모든 채팅이 토글 공유 (RisuAI 방식)을 켭니다. 예전 이름은채팅 토글 바인딩 비활성화였습니다. - 스크립트: 스크립트가
toggle_로 시작하는 전역 변수를 바꾸면 지금 챗의 토글에만 반영됩니다. 그 밖의 전역 변수는 이전처럼 모든 챗이 함께 씁니다.
[수정] 고정한 챗의 위키 프롬프트 가이드가 공유 토글 값을 쓰던 문제
채팅별 프리셋 고정으로 토글 값을 따로 둔 챗에서도, 위키 프롬프트 가이드 안의 토글 조건은 모든 챗이 함께 쓰던 값으로 판단했습니다. 그래서 다른 챗에서 바꾼 토글이 이 챗의 위키 작성과 응답 가이드에 섞여 들어갈 수 있었습니다. 이제 가이드는 그 챗의 토글 값을 따릅니다.
[수정] 메시지별 아카라이브 복사에서 상태창과 그림 겹치기가 깨지던 문제
메시지마다 붙은 아카라이브 복사 버튼은 상태창이나 그림을 겹친 장면도 HTML로 바꿔 넣었습니다. 아카라이브는 flex, grid, position 같은 배치 코드를 지우기 때문에, 붙여 넣으면 칸이 한 줄로 뭉치거나 캐릭터 그림이 배경 아래로 떨어졌습니다.
- 그림으로 굽기: 이제 메시지별 복사도 챗 저장기처럼 이런 블록을 리스바드 화면 그대로 그림으로 바꿔 넣습니다. 앞뒤 문단은 계속 글자로 남습니다.
- 배경 없는 상태창: 배경 그림이 없어도 칸을 가로로 나란히 놓은 상태창과 표는 그림으로 굽습니다. 세로로만 쌓은 블록과 접힌
details는 이전처럼 HTML로 둡니다. - 본문 전체를 감싼 블록: 메시지 전체를 하나의 상자로 감싼 경우에는 상자와 문단은 글자로 두고, 그 안의 상태창이나 겹친 그림만 그림으로 바꿉니다.
- 크기와 위치: 가운데 정렬한 블록이 그림 안에서 한쪽으로 밀리던 문제를 고쳤고, 폭이 좁은 블록은 본문 폭에 맞춰 늘리지 않고 원래 비율 그대로 넣습니다. 챗 저장기에도 똑같이 적용됩니다.
[수정] 바드위키가 기억을 놓치던 네 가지 경우
바드위키는 최근 대화 몇 턴만 원문으로 넣고, 그보다 오래된 기억은 매번 검색해서 가져옵니다. 그래서 검색에서 놓치거나 분석 기록이 빠지면 대신 받쳐 줄 것이 없습니다. 이번에 그런 구멍 네 곳을 메웠습니다.
- 짧은 입력에서도 검색:
계속이나*고개를 끄덕인다*처럼 인물이나 장소 이름이 없는 짧은 입력이 바로 맞는 문서를 찾지 못하면 직전 대화의 단어로 다시 검색하게 되어 있었습니다. 그런데 반드시 넣는 문서가 하나라도 있으면 이 검색을 건너뛰었고, 기본으로 고정되는 현재 장면 문서도 여기에 들어가서 첫 분석 이후 거의 모든 챗에서 일어나지 않았습니다. 이제 그런 문서가 있어도 검색합니다. - 과거 원문 회수: 입력에
왜,기억,예전같은 말이 없으면, 단어 검색으로 찾아 놓은 과거 메시지를 버렸습니다. 이제 그중 가장 잘 맞는 두 개까지는 흔하지 않은 단어가 하나 이상 겹칠 때 그대로 넣습니다. - 실패한 턴 다시 분석: 분석이 실패하거나 정본 저장이 거부된 턴은
다음 턴에 자동으로 다시 시도합니다라는 안내와 달리 다시 분석되지 않아 그 턴의 기억이 빠졌습니다. 이제 새 턴을 분석할 때 바로 앞 AI 응답 두 개 가운데 아직 기록되지 않은 턴이 있으면 오래된 것부터 먼저 분석합니다. - 같은 챗의 분석 겹침 방지: 분석 모델이 느리거나 다음 메시지를 금방 보내면 앞 턴의 분석이 끝나기 전에 다음 턴의 분석이 시작되어, 나중 분석의 저장이
정본 문서 저장 실패로 끝나곤 했습니다. 이제 한 챗의 분석은 한 번에 하나씩 순서대로 실행하고, 기다리는 동안바드위키 작업 취소를 누르면 기다리던 분석도 함께 취소됩니다. 다른 챗의 분석은 이전처럼 동시에 진행됩니다.
[개선] 원문 창 바로 앞의 사건이 검색에서 밀리지 않음
바드위키는 최근 몇 턴은 대화를 그대로 넣고(원문 창) 그 앞은 사건 문서로 기억합니다. 그런데 사건 문서는 입력과 겹치는 정도로만 순위를 매겨서, 겹치는 정도가 같으면 방금 지나간 일이 수십 턴 전 일에 밀려 빠지기도 했습니다. 지금 어디야?처럼 현재 상태를 묻는 입력에서는 사건을 하나도 넣지 않는 규칙까지 있어서, 직전에 자리를 옮긴 사건조차 들어가지 않았습니다.
- 최근 사건 우선: 원문 창 앞 AI 응답 여섯 개 안에서 벌어진 사건은 원문 창에 가까울수록 검색 점수에 더 큰 가산점을 받습니다. 한 턴 전 사건이 가장 크고 여섯 턴 전이면 거의 없습니다. 이 범위 안에서는 입력과 겹치는 정도가 같을 때 더 최근 사건이 먼저 들어갑니다.
- 현재 상태 질문: 입력에
지금,어디,상태,관계같은 말이 있고왜,예전같은 과거를 묻는 말이 없으면, 입력과 겹치는 단어가 없어도 원문 창 앞 AI 응답 여섯 개 안의 사건 가운데 가장 최근 두 개를 넣습니다. 사건 문서에 배정된 분량 안에서만 넣으므로 인물이나 장소 같은 정본 문서는 줄어들지 않습니다. - 평소 입력: 입력과 겹치는 말이 전혀 없는 사건은 이전처럼 들어가지 않습니다. 가산점은 검색에 이미 걸린 사건의 순서만 바꿉니다. 최근 대화 정보가 없는 챗에서는 이전과 같습니다.
[정리] 작동하지 않던 바드쨩(Bard-chan) 설정 제거
0.9.30에서 추가한 바드쨩은 검색 후보의 점수가 비슷할 때 AI 모델에게 후보 순서를 한 번 더 정하게 하는 선택 기능(기본값 꺼짐)이었습니다. 그런데 검색 과정에서 바드쨩에게 넘길 후보 목록이 전달되지 않아서, 설정을 켜도 바드쨩은 한 번도 실행되지 않았고 0.9.30 이후 모든 버전이 그랬습니다. 켜 두었던 분도 실제 검색 결과와 비용은 꺼 둔 것과 똑같았습니다.
- 설정 제거: 바드위키의
현재 챗 설정과 공통 설정에서바드쨩 (Bard-chan)과바드쨩 모델을 없앴습니다. 제거한 뒤에도 검색 결과와 비용은 그대로입니다. - 저장된 값: 예전에 저장한 바드쨩 설정값은 남아 있어도 읽지 않습니다. 따로 지울 필요는 없습니다.
- 요청 로그: 예전 요청 로그에 남...
RisuBard v0.9.72
RisuBard v0.9.72
[추가] 에셋 리로드
0.9.66에서 외부 파일 자동 감지를 없앤 뒤로는, 캐릭터의 assets 폴더에 그림을 넣거나 바꿔도 앱에 반영되지 않았습니다. 봇 제작 도구나 탐색기로 그림을 고친 경우 이제 버튼 하나로 반영할 수 있습니다.
- 위치: 캐릭터 설정 > 캐릭터 디스플레이 맨 위,
에셋 뷰어로 보기오른쪽의에셋 리로드(서버 버전에서만 보입니다). 버튼에 마우스를 올리면 설명이 나옵니다. - 동작: 그 캐릭터의
assets폴더만 한 번 읽습니다. 새 이름의 파일은 에셋으로 추가되고, 이미 등록된 에셋 파일을 바꿨다면 같은 이름 그대로 새 그림으로 교체됩니다. 다른 캐릭터의 폴더는 읽지 않으며, 자동 감지가 다시 켜지지도 않습니다. - 반영: 현재 내용을 먼저 저장한 뒤 읽고, 바뀐 것은 앱을 다시 불러오지 않고 바로 반영한 뒤
에셋 폴더의 변경을 반영했어요를 알려 줍니다. 바뀐 것이 없으면 그대로 알려 줍니다.
[추가] BardWiki 집중 보기
PC에서 화면 배율을 125% 이상으로 쓰면 BardWiki의 헤더, 편집 바, BardChat이 세로 공간을 많이 차지해서, 정작 문서 본문은 몇 줄밖에 보이지 않았습니다. 이제 버튼 하나로 이 영역들을 한 줄씩으로 접고 문서 목록과 본문을 넓게 볼 수 있습니다.
- 위치: BardWiki 오른쪽 위, 닫기 버튼 왼쪽의
집중 보기버튼입니다 (데스크톱 레이아웃에서만 보입니다). - 헤더: 두 줄이던 헤더가 한 줄로 합쳐집니다. 추가 분석, 위키 도구, 보기 전환 버튼은 그대로 남고,
사용 가이드와모바일버튼은 집중 보기를 끄면 다시 나타납니다. - 편집 바: 타입, 이름, 별칭 입력 줄을 접고, 저장과 MD 버튼이 있는 줄만 남깁니다. 그 줄 왼쪽의 문서 제목을 누르면 입력 줄이 펼쳐집니다.
새 문서를 누르면 이름을 입력해야 하므로 입력 줄이 자동으로 펼쳐집니다. - BardChat: 맨 아래에
BARDCHAT한 줄만 남습니다. 누르면 원래 크기로 펼쳐지고, 접어도 입력하던 내용과 실행 상태는 그대로 유지됩니다. - 유지: 집중 보기, 입력 줄 펼침, BardChat 펼침 상태가 저장되므로 앱을 다시 열어도 그대로입니다. 집중 보기를 끄면 예전 화면과 똑같이 돌아갑니다.
[추가] 봇 스크립트가 쓰는 전역 변수 (setGlobalVar)
봇의 Lua 스크립트는 전역 변수를 읽을 수만 있었고(getGlobalVar), 설정 값은 챗 변수(setChatVar)에만 저장할 수 있었습니다. 그래서 봇 안의 설정 버튼으로 고른 값은 그 챗에만 남고, 새 챗을 열면 처음 값으로 돌아갔습니다.
- 새 기능: Lua 스크립트에서
setGlobalVar(id, 키, 값)으로 전역 변수를 저장할 수 있습니다. 저장한 값은 다른 챗과 앱을 다시 연 뒤에도getGlobalVar로 읽힙니다. 값은 문자열로 저장됩니다. - 보호:
toggle_로 시작하는 키(프롬프트 프리셋과 모듈 토글)와 빈 키는 스크립트가 바꿀 수 없습니다. 토글은 지금처럼 사이드바에서만 바뀝니다. - 호환: 이 기능이 없는 RisuAI에서는 봇이
if setGlobalVar then으로 확인하고 챗 변수만 쓰면 그대로 동작합니다.
[변경] 캐릭터 디스플레이 탭 정리
- 캐릭터 디스플레이의
캐릭터 아이콘과추가적 캐릭터 스크린탭을아이콘과 스크린탭 하나로 합쳤습니다. 한 화면에서 아이콘 아래에 스크린 설정이 이어집니다.
[변경] 채팅 사이드바 모듈 목록에서 바로 편집과 삭제
채팅 사이드바의 모듈 버튼으로 연 목록에서는 켜고 끄기만 할 수 있어서, 모듈을 고치거나 지우려면 설정의 모듈 페이지로 찾아가야 했습니다.
- 각 모듈의 전체와 챗 버튼 오른쪽에
수정과삭제버튼이 생겼습니다. 수정을 누르면 목록이 닫히고 설정의모듈 수정화면이 그 모듈로 바로 열립니다. MCP 모듈은 설정 페이지와 같이 수정 버튼이 비활성입니다.삭제를 누르면 확인 창이 뜨고,예를 누르면 설정 페이지에서 지울 때와 똑같이 모듈과 그 활성화 상태, 폴더 배치, 페르소나 할당이 함께 정리됩니다.
[수정] Termux에서 서버가 메모리 부족으로 꺼지는 문제
Termux에서 데이터가 큰 사용자는 서버를 켤 때 JavaScript heap out of memory 오류로 서버가 바로 꺼질 수 있었습니다. 휴대폰의 Node는 기본 메모리 한도가 약 1GB라서 생긴 문제입니다.
- 예전 데이터 변환: 예전
risuai.db를 새 저장 방식으로 처음 옮길 때 모든 데이터를 한꺼번에 메모리에 올리지 않고, 한 항목씩 읽어서 바로 저장합니다. - 실행 명령: Termux 설치 안내와 빌드 완료 메시지의 실행 명령을
node --max-old-space-size=2048 server/node/server.cjs로 바꿨습니다. 이미 설치한 분도 이 명령으로 실행하면 메모리 한도가 2GB로 올라갑니다. RAM이 8GB 이상인 폰은4096까지 올려도 되지만, 폰의 실제 RAM보다 크게 잡으면 안드로이드가 Termux를 강제 종료합니다.
[수정] 바드페인터를 열 때 나던 오류
일부 챗에서 바드페인터를 열면 state_unsafe_mutation 오류가 나고 페인터가 열리지 않았습니다. 페인터를 한 번 연 뒤 챗이나 봇 데이터를 서버에서 다시 불러오면, 페인터 작업 기록이 없는 상태로 바뀌어 다시 열 때 오류가 났습니다. 이제는 작업 기록이 없으면 새로 만들어서 바로 엽니다.
[수정] 아카라이브 로그의 범위 숫자가 보이지 않던 문제
아카라이브 로그 만들기에서 페이지 범위나 턴 범위를 고르면 시작과 끝 칸이 너무 좁아져서, 위아래 화살표만 보이고 숫자는 보이지 않았습니다. 이제 왼쪽 패널이 좁을 때는 범위 칸이 한 줄을 다 쓰고 사용자 포함 버튼이 그 아래로 내려가므로, 숫자를 보면서 화살표나 직접 입력으로 범위를 정할 수 있습니다.
[수정] Gemini 모델에서 BardChat이 400 오류로 실패하는 문제
Gemini 3 Flash Preview 같은 Google 모델로 BardChat을 실행하면 Google이 Unknown name "const" 400 오류를 돌려주고 명령이 실행되지 않았습니다. BardChat이 보내는 응답 형식에 Gemini가 받지 않는 항목이 섞여 있었기 때문입니다.
- 이제 Google 요청으로 보내기 전에 응답 형식을 Gemini가 받는 형태로 바꿉니다. 고정값은 같은 뜻의 허용값 하나로, 여러 형식 중 하나를 고르는 항목은 Gemini 방식으로 바꾸고, Gemini가 모르는 항목은 뺍니다.
- OpenAI, Anthropic 등 다른 제공자로 보내는 요청은 바뀌지 않습니다.
[수정] 모듈 그림에 가까운 파일 찾기가 적용되지 않던 문제
설정의 에셋 허용 오차(작은 차이가 있어도 가까운 파일을 표시)가 캐릭터에 직접 넣은 에셋에만 적용되고, 모듈에 들어 있는 에셋은 찾지 않았습니다. 그래서 메시지의 그림 태그가 yaoyorozu_momo.uniform.neutral인데 모듈에 yaoyorozu_momo.uniform.neutral_1과 neutral_2만 있으면 아무 그림도 나오지 않았습니다.
- 이제 가까운 파일 찾기가 캐릭터 에셋과 켜진 모듈의 에셋을 함께 검색합니다.
- 차이가 똑같이 가장 작은 파일이 여러 개면(
neutral_1,neutral_2같은 변형) 모두 후보로 묶고, 이름이 같은 에셋 여러 개를 쓸 때처럼 메시지마다 그중 하나를 고릅니다. 같은 메시지는 다시 그려도 같은 그림이 나옵니다. - 이름이 정확히 맞는 에셋이 있을 때와 허용 오차를 넘을 때의 동작은 그대로입니다.
RisuBard v0.9.71
RisuBard v0.9.71
[추가] 캐릭터 비서 플레이 테스트
봇을 만든 뒤 직접 채팅하며 확인하던 일을 캐릭터 비서에게 맡길 수 있습니다. 비서가 유저 역할로 정한 턴 수만큼 채팅을 진행합니다.
- 시작: 캐릭터 비서 입력창 아래
플레이 테스트를 누르고 턴 수, 진행 방식, 채팅 맥락을 고른 뒤 지시문을 씁니다. 예:로어북 성능을 보려고 해. 주인공이 1-A 반 학생들 모두와 지하층에서 작전을 펼치는 챗을 진행해. - 새 채팅: 시작할 때마다 대상 봇에
플레이 테스트 N채팅을 새로 만들어 진행하므로, 기존 채팅은 그대로 남습니다. - 모델: 비서 설정의
메인/보조선택을 따릅니다. - 비서가 받는 자료: 페르소나, 지시문, 지시문으로 찾은 로어북 항목, 그리고 채팅 맥락입니다. 채팅 맥락은
최근 채팅(비서 설정의 최근 챗 수, 0이면 20개)과바드위키(지난 응답에 들어간 바드위키 문서와 최근 응답) 중에서 고릅니다. - 실제 채팅과 같은 경로: 비서가 쓴 입력은 사람이 입력할 때와 같이 입력 트리거와 정규식을 거쳐 전송되고, 프리셋과 로어북도 그대로 적용됩니다.
- 자동과 반자동: 자동은 끝까지 진행합니다. 반자동은 턴마다 비서의 관찰과 입력을 보여 주고, 고치거나 그대로 보낼 때까지 기다립니다.
- 기록: 턴마다 비서의 관찰, 보낸 입력, 봇 응답에 실제로 들어간 로어북 목록이 비서 대화에 카드로 남습니다. 다 끝난 뒤 비서에게 결과를 물어볼 수도 있습니다.
- 멈추는 경우:
중지버튼, 채팅 화면의 생성 중지, 요청 실패나 빈 응답, 테스트 채팅에 직접 입력하거나 다른 채팅으로 옮긴 경우에 멈추고 이유를 알려 줍니다. 시간 제한은 없습니다.
[수정] 저장 중에 바뀐 외부 파일이 확인 없이 덮어써지던 문제
- 증상: 앱이 열린 채로 봇 제작 도구 같은 다른 프로그램이 캐릭터 파일을 고쳤는데,
외부에서 파일이 바뀌었습니다창 대신서버 저장 실패 — 변경사항이 디스크에 반영되지 않습니다오류가 떴습니다. 그 뒤 다음 저장에서 앱 내용이 그 파일을 덮어써 외부 변경이 사라졌습니다. - 원인: 앱이 저장하는 도중(채팅 저장은 1초 미만)에 다른 프로그램이 파일을 쓰면, 저장이 끝날 때 그 변경까지 앱이 저장한 내용으로 처리했습니다. 그래서 외부 변경으로 감지되지 않았습니다.
- 변경: 저장이 시작된 뒤 다른 프로그램이 바꾼 파일은 앱 내용으로 덮어쓰지 않고, 저장이 끝나도 외부 변경으로 남겨 둡니다.
외부 파일 변경 확인이 켜져 있으면, 그 파일 때문에 저장이 멈춘 경우에도 오류 대신 확인 창이 떠서 받아들일지 고를 수 있습니다.
[수정] 요청 로그가 커지면 서버가 메모리 부족으로 꺼지던 문제
- 증상: 요청 로그와 사용량 통계 파일이 각각 수백 MB까지 쌓이면, 서버가 이 파일을 읽다가 JavaScript 메모리 한도(약 1GB)를 넘겨 종료되고 다시 시작되기를 반복할 수 있었습니다.
- 원인: 서버가 두 파일을 한 번에 통째로 메모리에 올렸고, 오래된 로그를 정리할 때도 남길 내용 전체를 메모리에서 다시 만들었습니다. 사용량 통계에도 요청과 응답 본문이 그대로 복사되어 있어서 통계 파일이 요청 로그만큼 커졌습니다.
- 변경: 로그 파일을 한 줄씩 나눠 읽고, 목록과 통계에 필요한 정보만 메모리에 둡니다. 요청 본문은 로그를 펼치거나 본문을 요청할 때 그 항목만 파일에서 읽습니다. 오래된 로그 정리도 파일을 조각 단위로 복사합니다. 264MB짜리 요청 로그와 통계 파일로 시험했을 때 메모리 사용량이 약 950MB에서 약 40MB로 줄었습니다.
- 사용량 통계: 이제 토큰 수, 모델, 시간 같은 집계용 정보만 저장합니다. 본문이 들어 있는 기존 통계 파일도 그대로 읽으며, 처음 읽을 때 본문을 뺀 형태로 한 번 정리해 파일 크기가 크게 줄어듭니다. 집계 결과는 바뀌지 않고, 요청 로그 화면의 본문은 지금처럼 볼 수 있습니다.
RisuBard v0.9.70
RisuBard v0.9.70
[수정] 응답을 받으면 챗 화면이 위로 튀던 문제
- 증상:
스크롤 위치 유지가 켜져 있을 때(기본값), 휴대폰처럼 화면을 그리는 속도가 느린 환경에서 응답을 받으면 챗 화면이 현재 페이지 맨 위나 이전 메시지로 올라갔습니다. 이 경우 하단의최신버튼을 누르거나 직접 스크롤해서 내려가야 했습니다. 서버에서 챗을 다시 받아 올 때도 같은 위치로 올라갔습니다. - 원인: 새 메시지가 추가되면 마지막 몇 개 메시지를 다시 그립니다. 다시 그리는 동안에는 본문이 아직 비어 있는데, 이때 읽던 위치를 새로 기억하면서 엉뚱한 메시지를 잡았습니다. 본문이 다 그려진 뒤에는 그 메시지를 제자리에 붙잡느라 화면을 위로 끌어올렸습니다.
- 변경: 최신 메시지를 보던 중에 새 메시지가 오면 화면 끝을 따라갑니다. 내가 보낸 메시지도 바로 보이고, 응답이 오면 지금처럼 응답 시작 부분으로 이동합니다. 챗을 다시 받아 오는 동안에는 읽던 위치와 페이지를 그대로 두었다가, 다 받으면 같은 자리로 돌아옵니다.
[수정] 캐릭터 비서가 자료만 읽다가 응답 실패로 끝나던 문제
- 증상: 캐릭터 비서가 자료를 여러 번 나눠 불러오고, 짧은 말을 출력한 뒤 다시 자료를 불러오기를 되풀이하다가
비서가 자료만 요청하고 답하지 못했습니다로 끝났습니다. - 원인: 긴 필드의 다른 부분을 읽으면 앞서 읽은 부분이 재료에서 빠졌습니다. 비서는 방금 읽은 내용을 잃어 같은 자료를 다시 요청했고, 요청 횟수를 다 쓰면 답 없이 실패했습니다.
- 변경: 같은 자료의 여러 부분을 읽으면 이어 붙여 함께 보냅니다. 이미 받은 자료를 다시 요청하면 이미 있다고 알려 줍니다. 마지막 요청에서는 더 읽지 말고 지금 자료로 답하라고 지시해, 질문은 항상 답변으로 끝납니다. 필요한 자료를 처음에 한꺼번에 요청하도록 비서의 지시도 고쳤습니다.
[수정] 캐릭터로 클론이 다른 페르소나를 복사하던 문제
- 증상: 채팅의 페르소나 창에서 글로벌 페르소나를 고르고
캐릭터로 클론을 누르면, 고른 페르소나가 아니라 환경설정의 기본 페르소나가 캐릭터 페르소나로 복사되었습니다. - 변경: 지금 화면에서 고른 페르소나를 복사합니다.
[수정] 전체화면 플러그인 위에서 권한 확인 창이 가려지던 문제
- 증상: 플러그인이 전체화면 창을 띄운 상태에서 인레이 읽기나 채팅 교체처럼 권한이 필요한 기능을 쓰면, 권한 확인 창이 플러그인 창 뒤에 떠서
예나아니오를 누를 수 없었습니다. 인레이 권한은 3일마다 다시 묻고 플러그인을 업데이트해도 다시 묻기 때문에 같은 일이 반복되었습니다. 플러그인이 띄운 알림과 확인 창도 같은 문제가 있었습니다. - 원인: 전체화면 플러그인 창이 앱의 모든 대화상자보다 위층에 있었습니다.
- 변경: 플러그인이 기다리는 확인 창이나 알림이 떠 있는 동안에는 플러그인 창을 대화상자 아래로 잠시 내립니다. 창을 닫으면 플러그인 화면이 원래대로 맨 위로 돌아옵니다. 플러그인 쪽에서 창을 숨겼다가 다시 띄우는 우회 처리는 더 필요하지 않습니다. (#40)
[추가] 캐릭터 비서에 전체 챗 저장, 포크, 답변 복사, 메시지 삭제
- 프롬프트 비서에 있던 기능을 캐릭터 비서에서도 씁니다. 두 비서가 같은 버튼과 동작을 공유합니다.
- 프로젝트 줄의 저장 버튼으로 대화 전체를 Markdown 파일로 저장합니다. 각 답변이 읽은 자료도 함께 적힙니다.
- 메시지 아래의
여기서 포크하기는 그 지점까지의 대화와 프로젝트 설정, 재료를 새 프로젝트로 복사합니다. 질문에서 포크하면 질문은 입력창에 들어갑니다.
[추가] 캐릭터 비서가 고칠 내용을 수정 카드로 제안
- 이제 캐릭터 비서가 고칠 곳을 찾으면, 답변 아래에 수정 카드로 보여 줍니다. 제안 내용을 편집기에 직접 옮겨 붙이지 않아도 됩니다.
- 카드에는 바꿀 위치와 함께, 바꾸기 전 내용과 바꾼 뒤 내용이 나옵니다.
적용이나건너뛰기를 누르고, 제안이 여러 개면남은 N개 모두 적용으로 한 번에 반영합니다. 카드 제목을 누르면 편집기에서 그 항목이 열립니다. - 적용한 수정은
되돌리기로 원래대로 돌립니다. 적용한 뒤 그 칸을 직접 고쳤다면, 그 변경을 버릴지 먼저 묻습니다. - 고칠 수 있는 것은 지금 다듬는 봇의 필드, 추가 인사말, 로어북의 본문과 키와 보조 키와 이름, 정규식의 IN과 OUT과 이름입니다. 참고 봇, 모듈, 프리셋, 블록 트리거, 항목 추가와 삭제는 지금처럼 답변에 제안만 하고 직접 반영합니다.
- 바꿀 부분이 본문에 없거나 여러 곳에 있으면, 아무것도 바꾸지 않고 카드에 이유를 표시합니다. 다음 질문을 보낼 때는 각 제안을 적용했는지, 건너뛰었는지, 실패했는지를 비서에게 함께 알려 줍니다.
[추가] 프롬프트 캐시가 덜 깨지는 캐싱 친화적 구조 옵션
- 배경: 바드위키 기억은 매 턴 바뀝니다. 지금까지는 이 기억을 프롬프트 맨 위(항상 포함 문서)와 캐릭터 설명 바로 뒤(검색된 기억)에 넣었습니다. 프롬프트 캐시는 앞에서부터 글자가 같은 구간까지만 적중하므로, 그 아래에 있는 프리셋 본문, 로어북, 지난 대화의 캐시가 매 턴 깨졌습니다. 프리셋의 메모리 슬롯을 옮겨도 위키 기억의 위치는 바뀌지 않았습니다.
- 변경:
환경설정 > 공통 설정 > 채팅 응답에캐싱 친화적 구조를 추가했습니다. 켜면 바드위키 기억을 최신 사용자 메시지 바로 앞으로 옮깁니다. 프리셋, 캐릭터 설명, 로어북, 지난 대화는 턴이 바뀌어도 똑같이 유지되어 캐시가 더 오래 적중합니다. - 현재 서사 기준선은 자주 바뀌지 않으므로 지금처럼 캐릭터 설명 자리에 둡니다.
- 기본값은 꺼짐이며, 끄면 이전 배치 그대로 보냅니다. 기억이 대화 끝쪽에 놓이므로 모델이 기억을 더 강하게 반영할 수 있습니다.
RisuBard v0.9.69
RisuBard v0.9.69
[기능] 외부 파일 변경 확인
앱이 열려 있는 동안 다른 프로그램(편집기, 봇 제작 도구 등)이 데이터 폴더의 파일을 고치면, 바뀐 내용을 보여 주고 어느 쪽을 남길지 고르게 합니다. 고를 때까지 저장을 멈춰서 어느 쪽 내용도 조용히 사라지지 않습니다.
- 확인하는 파일: 캐릭터, 전역 로어북, 설정, 프리셋, 모듈, 페르소나, 채팅 등 데이터 폴더의 모든 파일입니다. 파일을 고치면서 체크섬까지 함께 고치는 도구로 바꾼 경우도 찾아냅니다.
- 바뀐 내용 보기: 캐릭터마다 바뀐 필드와 추가, 삭제, 수정된 로어 항목을 보여 줍니다. 설정, 프리셋, 모듈, 페르소나는 바뀐 필드를, 채팅과 그 밖의 파일은 바뀐 파일을 보여 줍니다. API 키 같은 인증 정보는 값을 숨기고 바뀐 항목 이름만 보여 줍니다. 항목을 펼치면 앱 내용과 외부 파일을 줄 단위로 비교합니다. 형식이 깨진 파일은 몇 번째 줄, 몇 번째 칸이 잘못됐는지 알려 줍니다.
- 외부 변경 받아들이기: 캐릭터와 로어북만 바뀌었으면 그 항목만 외부 내용으로 바꿉니다. 이 창에서 아직 저장하지 않은 다른 편집은 그대로 남고, 같은 항목을 고친 내용은 브라우저 복구 기록에 보관합니다. 다른 파일도 바뀌었으면 모든 파일을 외부 내용으로 다시 불러온 뒤 페이지를 새로고침합니다. 이때 이 창에서 저장하지 않은 편집은 사라집니다.
- 앱 내용 유지: 바뀐 외부 파일을 모두 데이터 폴더의
trash/external-changes-*에 백업한 뒤 앱 내용으로 덮어씁니다. - 옵션:
설정 > 공통 설정 > 저장 및 불러오기 > 외부 파일 변경 확인. 기본값은 꺼짐입니다. 켜면 앱이 화면에 보이는 동안 몇 초마다 확인합니다. 데이터 폴더 전체를 감시하지 않고 파일 정보만 확인하므로 0.9.66에서 없앤 자동 감지처럼 서버를 붙잡지 않습니다.
[안정성] 열린 앱이 외부 수정을 덮어쓰던 문제
- 증상: 0.9.66부터 앱이 열려 있는 동안 캐릭터 파일을 외부에서 고치면, 앱이 다음에 저장할 때 외부에서 고친 내용을 조용히 덮어썼습니다.
- 원인: 저장 직전에 서버는 외부 파일을 반영했지만, 앱 화면은 그 내용을 받아 오지 못한 채 자기가 가진 이전 캐릭터 내용으로 다시 저장했습니다.
- 변경: 외부 파일 변경 확인 옵션을 꺼 두어도, 저장할 때 외부 변경을 발견하면 덮어쓰지 않고 저장을 멈춘 뒤 위의 확인 창을 띄웁니다. 앱을 닫은 상태에서 고친 파일은 이전처럼 다시 열 때 그대로 반영합니다.
[안정성] 자동 업데이트가 임시 폴더에 파일을 남기던 문제
- 증상: 윈도우에서 앱 안의 자동 업데이트를 쓸 때마다
%TEMP%\risu-update-*폴더에 압축을 푼 파일 약 3만 개가 남았습니다. 업데이트를 여러 번 하면 수십만 개가 쌓여 윈도우 로그인이 1분 넘게 멈출 수 있었습니다. 업데이트 도우미가 쓰는%TEMP%\risubard-updater-*폴더도 지워지지 않았습니다. - 원인: 서버가 임시 폴더 삭제를 시작한 직후 바로 종료되어 삭제가 중간에 끊겼습니다.
- 변경: 업데이트 도우미가 서버 종료 후 설치를 마치고 나서 다운로드 폴더를 지웁니다. 또 서버를 켜고 1분 뒤 별도 프로세스가 이전 업데이트에서 남은 이 두 종류의 폴더를 정리합니다. 다른 설치본이 업데이트 중일 수 있으므로 하루 이상 변경이 없는 폴더만 지우고, 실행 중인 업데이트 도우미의 폴더는 건드리지 않습니다. 이미 쌓인 폴더도 이 업데이트 후 서버를 켜면 정리됩니다.
[성능] 채팅 변수를 많이 쓰는 카드의 채팅 파일이 계속 커지던 문제
- 증상: 인물 호감도, 관계, 일정 등을 채팅 변수에 많이 저장하는 카드에서 채팅 하나가 수십 MB까지 커지고, 이런 채팅을 열면 브라우저 탭이 메모리 부족으로 꺼질 수 있었습니다.
- 원인: 0.9.37부터 리롤할 때 채팅 변수를 응답 전 상태로 되돌리려고, AI 응답마다 채팅 변수 전체를 응답 전과 응답 후로 두 번 복사해 저장했습니다. 리롤한 응답에는 스와이프마다 복사본이 더 붙었고, 지난 메시지의 기록도 지우지 않아 계속 쌓였습니다.
- 변경: 리롤할 수 있는 마지막 AI 응답에만 이 기록을 남기고, 새 응답이 오면 이전 메시지의 기록은 모두 지웁니다. 이미 커진 채팅도 다음 응답을 받을 때 줄어듭니다. 대화 내용, 이미지, 위키와 현재 채팅 변수는 그대로입니다. 단, 메시지를 지워 이전 응답이 다시 마지막이 된 경우에는 그 응답을 리롤해도 채팅 변수가 되돌아가지 않습니다. 이렇게 되돌리는 방식은 위키와 어긋날 수 있어 원래 권장하지 않습니다.
RisuBard v0.9.68
RisuBard v0.9.68
[수정] 사이드바 페르소나와 페르소나 창이 다르게 보이는 문제
- 채팅에 페르소나를 바인딩해 둔 상태에서 사이드바의 페르소나 아바타를 누르면, 아바타에 보이는 페르소나가 아니라 전역 기본 페르소나가 선택된 채로 열리던 문제를 고쳤습니다. 0.9.67에서 바인딩이 전역 선택을 바꾸지 않게 되면서 생긴 문제입니다.
- 이제 이 창은 채팅에 바인딩된 페르소나를 선택한 채로 열리고, 다른 페르소나를 고르면 그 채팅의 바인딩이 바뀌어 아바타도 함께 바뀝니다. 창 위쪽에 이 동작을 알려 주는 안내가 표시됩니다.
- 바인딩이 없는 채팅에서는 지금처럼 전역 기본 페르소나를 고릅니다. 바인딩이 있을 때 기본 페르소나를 바꾸려면 환경설정의 페르소나에서 바꿉니다.
- 다른 페르소나로 바인딩을 바꾸는 창에서 글로벌과 캐릭터 탭을 오가면 고른 페르소나 대신 전역 기본 페르소나로 돌아가던 문제도 고쳤습니다.