# PR Checklist
- [x] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [x] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [x] Have you added type definitions?
# Description
- fix: handle null case for firstMessage in HypaV3 modal
- fix: resolve mobile dual-action translation in HypaV3 modal
- Implements shift+click (desktop) and double tap (mobile) for
regenerating translations while maintaining regular click/tap for cached
translations.
- feat: add auto-scroll to translations in HypaV3 modal
- feat: add settings button to HypaV3 modal header
- feat: add cut-after button in HypaV3 summary header
- feat: add HypaV2 to V3 conversion in HypaV3 modal
- feat: add process regex script option in HypaV3 modal
- when enabled, reroll function will process regex script.
- fix: improve HypaV3 modal responsive for mobile
- feat: add search button in HypaV3 modal
# PR Checklist
- [ ] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [ ] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [ ] Have you added type definitions?
# Description
It would be nice if plugins could change their settings directly in the
db.
This PR introduces an API that makes this simple.
# PR Checklist
- [x] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [x] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [x] Have you added type definitions?
# Description
- feat: add translate button to HypaV3 modal
- feat: add dual-action translation (cached/regenerate) in HypaV3 modal
- Implements shift+click (desktop) and double tap (mobile) for
regenerating translations while maintaining regular click/tap for cached
translations.
- feat: improve ratio sliders interaction in HypaV3 settings
- feat: add lastSelectedSummaries property to store selected memory
indices
- feat: display next message to be summarized in HypaV3 modal
# PR Checklist
- [ ] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [x] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [x] Have you added type definitions?
# Description
This PR adds a small improvement to the prompt comparison functionality.
When the two prompts are different, the tooltip overview now enables
clicking on modified parts to navigate directly to the corresponding
lines.
Previously, finding the modified parts required manual scrolling. With
this update, it becomes much easier to locate and review the changes,
even for very long prompts.
When navigating to a modified part, the target line is highlighted in
yellow for 1 second to indicate the clicked location.
https://github.com/user-attachments/assets/577973cc-18d0-4e73-814e-7ba01bb9950c
For mobile devices, this functionality has been tested on iOS 16.7.
If there are any suggestions for improvement or concerns about the
implementation, feedback is greatly appreciated. It’s completely
understandable if this PR needs to be rejected or revised further.
Thank you for taking the time to review this!
# PR Checklist
- [ ] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [ ] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [ ] Have you added type definitions?
# Description
This PR ensures that the 'position' lorebook decorator is correctly
applied to alternate (replaced) GlobalNotes.
Thank you for your time and consideration.
# PR Checklist
- [ ] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [ ] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [ ] Have you added type definitions?
# Description
This PR addresses an issue where the `{{chat_index}}` cbs does not work
correctly in regex scripts of the 'Modify Request Data' (editprocess)
type. To work around this issue, I propose changing the function used in
this section to `processScriptFull()`.
If you have any other suggestions, such as modifying the arguments
instead, please feel free to let me know.
Thanks for your time and consideration.
# PR Checklist
- [x] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [x] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [ ] Have you added type definitions?
# Preview

# Description
- refactor: improve array conversion and sorting syntax
- fix: resolve summarize function issues with instruct35
- fix: adjust memory selection order
- fix: restore undefined value from null after importing hypaDataV3
- feat: add expandable chat memo in HypaV3 Data modal
- feat: add important button in HypaV3 Data modal
- fix: message line break display in HypaV3 Data modal
- refactor: extract HypaV3 modal into separate component
# PR Checklist
- [ ] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [x] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [x] Have you added type definitions?
# Description
This PR introduces a couple of usability improvements to the prompt
comparison functionality.
1. If the two prompts are identical
Instead of showing the content right away, an alert is displayed saying
the two prompts are the same. Only when the user clicks "Yes" the
content will be shown. This avoids unnecessary confirmation of identical
prompts.
<img width="519" alt="a"
src="https://github.com/user-attachments/assets/bf48420e-bf69-4c8a-b700-754e1c38b6a6"
/>
2. If the two prompts are different
A summary of the number of modified, added, and removed lines is
displayed.
<img width="598" alt="b"
src="https://github.com/user-attachments/assets/c3269ee8-25e7-4ba9-957d-4e377d523795"
/>
When hovering over the summary, a quick overview of the changes appears.
When only a single word or character is modified, it was previously hard
to identify the line that was changed. Now, the overview improves
clarity, making it easier to understand the changes.
<img width="595" alt="e"
src="https://github.com/user-attachments/assets/1b55a3bc-70d2-43fa-ab4c-754e6fd4a85d"
/>
On mobile devices (tested on iOS 16.7), tapping on the 'Differences
detected. Please review the changes.' section will display the changes.
---
As a future improvement, it might be useful to display line numbers or
allow users to click and navigate to the specific parts of the
differences.
I hope these changes make it easier to use, but feel free to reject this
PR if you find it unnecessary or if the code feels too messy. I
completely understand and appreciate your feedback.
Thank you for your time!
# PR Checklist
- [x] Have you checked if it works normally in all models? *Ignore this
if it doesn't use models.*
- [x] Have you checked if it works normally in all web, local, and node
hosted versions? If it doesn't, have you blocked it in those versions?
- [x] Have you added type definitions?
# Preview

# Description
Implemented HypaV3, a variation of the HypaV2 memory.
---
Key Changes:
- Ratio-based token management instead of fixed token counts
(memoryTokensRatio, extraSummarizationRatio)
- Improved memory selection with adjustable ratios
(recent/similar/random memory)
- Similar memory selection now uses parent summaries instead of
individual chunks
- Selected memories are chronologically ordered
- Control over summary units (maxChatsPerSummary)
- Added orphaned memory preservation option (preserveOrphanedMemory)
---
New Settings:
- memoryTokensRatio: Ratio of memory prompt in max context size
- extraSummarizationRatio: Extra margin ratio of max context size to
keep more free space when summarizing begins
- maxChatsPerSummary: Maximum chats per summary
- similarMemoryRatio: Ratio for similarity-based memory selection
- randomMemoryRatio: Ratio for random memory selection
- enableSimilarityCorrection: Compare chunks with both raw and
summarized version of last 3 chats for better similarity matching
- preserveOrphanedMemory: Keep summaries even when original chats are
deleted
---
Summarization Conditions:
- Start: When current tokens exceed max context size
- End: When either:
- Current tokens drop below maxContextTokens * (1 - memoryTokensRatio -
extraSummarizationRatio)
- Current tokens are within max context size and only minimum required
messages (3) remain
---
Memory Selection Process:
- Recent: Newest summaries up to recentMemoryRatio (1 -
similarMemoryRatio - randomMemoryRatio)
- Random: Unused summaries selected randomly up to randomMemoryRatio
- Similar: Unused summaries selected by similarity to last 3 messages
- Each summary is split into chunks and compared with raw recent
messages for similarity scoring
- When similarity correction enabled, also compares with summarized
version of recent messages
- Parent summaries of the most similar chunks are selected
- Unused token space from recent and random selections is added to
similar memory's token limit
---
Key Differences from HypaV2:
- Flexible ratio-based memory management instead of absolute values
- Selects parent summaries instead of individual chunks for similar
memory
- UI shows original chat's memos linked to each summary