diff --git a/CharacterWorldBook/cwb_settings.html b/CharacterWorldBook/cwb_settings.html new file mode 100644 index 0000000..b7e5b4a --- /dev/null +++ b/CharacterWorldBook/cwb_settings.html @@ -0,0 +1,194 @@ +
+
+
+ 角色世界书 +
+ +
+
+ +
+ 最高权限 +
+ + +
+

+ 这是最高优先级的总开关。关闭后,CharacterWorldBook的所有功能(包括自动更新、查看器等)都将被禁用。 +

+
+ +
+ 中枢决策室 + +
+ + + +
+ +
+ +
+
+ + + + + + + + + + +
+ + +
+ + + +
+
+
+ + +
+
+ +
+
+ 破限提示 +
+ +
+ + +
+
+
+
+ 更新预设 +
+ +
+ + +
+
+
+
+ +
+
+ 基础功能开关 + +
+ + +
+

基于已有世界书内容进行增量更新,而非完全覆盖

+ +
+ + +
+

达到消息阈值时自动触发AI更新角色卡

+ +
+ +
+ + +
+
+ +
+ + +
+

在主界面显示可拖动的角色卡查看按钮

+
+ +
+ 存储目标 + +
+
+ + + + +
+
+ + +
+ +
+ 更新操作 + +
+ + + + + +
+ +
+ + + +
+ +
+
+ +
+
+
+
+
+
+
+
diff --git a/CharacterWorldBook/cwb_style.css b/CharacterWorldBook/cwb_style.css new file mode 100644 index 0000000..8b592d0 --- /dev/null +++ b/CharacterWorldBook/cwb_style.css @@ -0,0 +1,560 @@ + +:root { + --cwb-cyber-bg: #0d0c1d; + --cwb-cyber-primary: #7f5af0; + --cwb-cyber-secondary: #2cb67d; + --cwb-cyber-text: #ffffff; + --cwb-cyber-border: rgba(127, 90, 240, 0.5); + --cwb-cyber-shadow: 0 0 15px rgba(127, 90, 240, 0.7); + --cwb-cyber-danger: #ff3d71; + --cwb-cyber-font: 'Roboto', 'Segoe UI', sans-serif; +} + +.cwb-settings-container { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + gap: 10px; + padding: 8px 5px; + box-sizing: border-box; +} +.cwb-settings-container .cwb-header { + display: flex; + justify-content: space-between; + align-items: center; +} +.cwb-settings-container .cwb-title { + font-size: 1.1em; + font-weight: bold; + color: #e0e0e0; +} +.cwb-settings-container .cwb-title i { + margin-right: 8px; + color: #9e8aff; +} +.cwb-settings-container .header-divider { + margin-top: 5px; + margin-bottom: 10px; + border-color: rgba(255, 255, 255, 0.2); +} +.cwb-settings-container .settings-group { + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 12px; + padding: 12px; + margin: 0; +} +.cwb-settings-container .settings-group > legend { + color: #e0e0e0; + font-weight: bold; + padding: 0 10px; + margin-left: 10px; + font-size: 1.1em; +} +.cwb-settings-container .settings-group > legend > i { + margin-right: 8px; + color: #9e8aff; +} +.cwb-settings-container .sinan-navigation-deck { + display: flex; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + margin-bottom: 15px; +} +.cwb-settings-container .sinan-nav-item { + padding: 10px 20px; + cursor: pointer; + border: none; + background-color: transparent; + color: #ccc; + font-size: 1em; + border-bottom: 3px solid transparent; + transition: all 0.3s ease; +} +.cwb-settings-container .sinan-nav-item:hover { + background-color: rgba(255, 255, 255, 0.05); + color: #fff; +} +.cwb-settings-container .sinan-nav-item.active { + color: #9e8aff; + border-bottom-color: #9e8aff; + font-weight: bold; +} +.cwb-settings-container .sinan-nav-item i { + margin-right: 8px; +} +.cwb-settings-container .sinan-content-wrapper { + padding: 10px; +} +.cwb-settings-container .sinan-tab-pane { + display: none; + animation: cwb-fadeIn 0.5s; +} +.cwb-settings-container .sinan-tab-pane.active { + display: block; +} +@keyframes cwb-fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} +.cwb-settings-container .inline-settings-grid { + display: grid; + grid-template-columns: auto 1fr; + gap: 8px 12px; + align-items: center; +} +.cwb-settings-container .inline-settings-grid label { + font-weight: bold; + text-align: right; + white-space: nowrap; +} +.cwb-settings-container .cwb-input-with-button { + display: flex; + gap: 8px; +} +.cwb-settings-container .cwb-input-with-button .text_pole { + flex-grow: 1; +} +.cwb-settings-container .prompt-editor-area { + display: flex; + flex-direction: column; + gap: 8px; +} +.cwb-settings-container .editor-buttons-panel { + display: flex; + justify-content: flex-end; + gap: 8px; +} +.cwb-settings-container .update-buttons-panel { + display: flex; + justify-content: center; + gap: 10px; + flex-wrap: wrap; +} +.cwb-settings-container .update-buttons-panel .menu_button { + flex: 1; + min-width: 140px; + max-width: 200px; +} +.cwb-settings-container .quick-update-wrapper { + display: flex; + justify-content: center; + margin-top: 10px; +} +.cwb-settings-container .control-block-with-switch { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px; + background-color: rgba(255, 255, 255, 0.05); + border-radius: 8px; + margin-bottom: 10px; +} +.cwb-settings-container .control-block-with-switch label { + font-weight: bold; + color: #ddd; +} +.cwb-settings-container .toggle-switch { + position: relative; + display: inline-block; + width: 50px; + height: 28px; +} +.cwb-settings-container .toggle-switch input { + opacity: 0; + width: 0; + height: 0; +} +.cwb-settings-container .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #555; + transition: .4s; + border-radius: 28px; +} +.cwb-settings-container .slider:before { + position: absolute; + content: ""; + height: 20px; + width: 20px; + left: 4px; + bottom: 4px; + background-color: white; + transition: .4s; + border-radius: 50%; +} +.cwb-settings-container input:checked + .slider { + background-color: #8a72ff; +} +.cwb-settings-container input:focus + .slider { + box-shadow: 0 0 1px #8a72ff; +} +.cwb-settings-container input:checked + .slider:before { + transform: translateX(22px); +} +.cwb-settings-container .notes { + font-size: 0.9em; + color: #aaa; + margin-top: 5px; +} + +/* --- 世界书选择列表容器样式 --- */ +.cwb-scrollable-container { + max-height: 250px; + overflow-y: auto; + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 6px; + padding: 8px; + background-color: rgba(255, 255, 255, 0.02); +} +.cwb-scrollable-container::-webkit-scrollbar { + width: 8px; +} +.cwb-scrollable-container::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); + border-radius: 4px; +} +.cwb-scrollable-container::-webkit-scrollbar-thumb { + background: rgba(158, 138, 255, 0.5); + border-radius: 4px; +} +.cwb-scrollable-container::-webkit-scrollbar-thumb:hover { + background: rgba(158, 138, 255, 0.8); +} + +/* --- Floating Viewer Button (Cyberpunk Theme) --- */ +#cwb-viewer-button { + position: fixed; + z-index: 1001; + width: 45px; + height: 45px; + background-color: var(--cwb-cyber-primary); + color: var(--cwb-cyber-text); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 20px; + cursor: grab; + box-shadow: var(--cwb-cyber-shadow), 0 2px 10px rgba(0,0,0,0.5); + transition: all 0.3s ease; + border: 2px solid var(--cwb-cyber-border); + user-select: none; +} +#cwb-viewer-button:hover { + transform: scale(1.1); + box-shadow: 0 0 25px rgba(127, 90, 240, 1); +} +#cwb-viewer-button:active { + cursor: grabbing; +} + +.cwb-cyber-popup { + position: fixed; + z-index: 2000; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 90vw; + max-width: 1200px; + height: 85vh; + background: var(--cwb-cyber-bg); + border: 2px solid var(--cwb-cyber-primary); + box-shadow: var(--cwb-cyber-shadow); + color: var(--cwb-cyber-text); + font-family: var(--cwb-cyber-font); + display: flex; + flex-direction: column; + backdrop-filter: blur(5px); + border-radius: 8px; + overflow: hidden; +} + +.cwb-cyber-popup__header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 15px; + background: rgba(0,0,0,0.3); + border-bottom: 1px solid var(--cwb-cyber-border); + flex-shrink: 0; +} +.cwb-cyber-popup__title { + font-size: 1.2em; + font-weight: bold; + text-shadow: 0 0 5px var(--cwb-cyber-primary); + margin: 0; +} +.cwb-cyber-popup__actions { + display: flex; + gap: 10px; +} +.cwb-viewer-popup-close-button { + background: none; + border: none; + color: var(--cwb-cyber-text); + font-size: 24px; + cursor: pointer; + padding: 0 10px; + transition: color 0.2s; +} +.cwb-viewer-popup-close-button:hover { + color: var(--cwb-cyber-danger); +} + +.cwb-cyber-popup__main-content { + display: flex; + flex-grow: 1; + overflow: hidden; +} + +.cwb-cyber-tabs { + display: flex; + flex-direction: column; + flex-shrink: 0; + width: 200px; + background: rgba(0,0,0,0.2); + border-right: 1px solid var(--cwb-cyber-border); + overflow-y: auto; + padding: 5px; +} +.cwb-cyber-tab { + display: flex; + align-items: center; + margin-bottom: 5px; + border-radius: 4px; + transition: background-color 0.2s; +} +.cwb-cyber-tab.active { + background-color: rgba(127, 90, 240, 0.3); +} +.cwb-cyber-tab:hover { + background-color: rgba(127, 90, 240, 0.2); +} +.cwb-cyber-tab__button { + flex-grow: 1; + background: none; + border: none; + color: var(--cwb-cyber-text); + padding: 10px; + text-align: left; + cursor: pointer; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.cwb-cyber-tab__delete { + background: none; + border: none; + color: var(--cwb-cyber-text); + padding: 0 10px; + cursor: pointer; + opacity: 0.5; + transition: opacity 0.2s, color 0.2s; +} +.cwb-cyber-tab__delete:hover { + opacity: 1; + color: var(--cwb-cyber-danger); +} +/* --- Content Body --- */ +.cwb-cyber-popup__body { + flex-grow: 1; + padding: 15px; + overflow-y: auto; +} +.cwb-cyber-popup__body--empty { + display: flex; + align-items: center; + justify-content: center; + text-align: center; + font-size: 1.1em; + color: rgba(255,255,255,0.7); +} +.cwb-cyber-content-pane { + display: none; +} +.cwb-cyber-content-pane.active { + display: block; +} + +.cwb-cyber-card { + background: rgba(0,0,0,0.2); + border: 1px solid var(--cwb-cyber-border); + border-radius: 6px; + margin-bottom: 15px; +} +.cwb-cyber-card__title { + padding: 8px 12px; + margin: 0; + font-size: 1em; + background: rgba(127, 90, 240, 0.1); + border-bottom: 1px solid var(--cwb-cyber-border); + text-shadow: 0 0 3px var(--cwb-cyber-primary); +} +.cwb-cyber-card__content { + padding: 12px; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 10px; +} +.cwb-cyber-card--nested { + margin-top: 10px; +} +.cwb-cyber-field { + display: flex; + flex-direction: column; +} +.cwb-cyber-field__label { + font-size: 0.8em; + margin-bottom: 4px; + color: rgba(255,255,255,0.7); + text-transform: uppercase; +} +.cwb-cyber-field__input { + background: rgba(0,0,0,0.4); + border: 1px solid var(--cwb-cyber-border); + border-radius: 4px; + color: var(--cwb-cyber-text); + padding: 8px; + font-family: inherit; + width: 100%; + box-sizing: border-box; + transition: border-color 0.2s, box-shadow 0.2s; +} +.cwb-cyber-field__input:focus { + outline: none; + border-color: var(--cwb-cyber-primary); + box-shadow: 0 0 5px var(--cwb-cyber-primary); +} + +.cwb-cyber-button { + background: rgba(127, 90, 240, 0.2); + border: 1px solid var(--cwb-cyber-primary); + color: var(--cwb-cyber-text); + padding: 8px 12px; + border-radius: 4px; + cursor: pointer; + transition: all 0.2s; + font-family: inherit; +} +.cwb-cyber-button:hover { + background: var(--cwb-cyber-primary); + box-shadow: var(--cwb-cyber-shadow); +} +.cwb-cyber-button:disabled { + opacity: 0.5; + cursor: not-allowed; +} +.cwb-cyber-button--danger { + background: rgba(255, 61, 113, 0.2); + border-color: var(--cwb-cyber-danger); +} +.cwb-cyber-button--danger:hover { + background: var(--cwb-cyber-danger); + box-shadow: 0 0 15px var(--cwb-cyber-danger); +} +.cwb-cyber-button--primary { + background: var(--cwb-cyber-secondary); + border-color: var(--cwb-cyber-secondary); +} +.cwb-cyber-button--primary:hover { + box-shadow: 0 0 15px var(--cwb-cyber-secondary); +} +.cwb-cyber-content-pane__footer { + margin-top: 20px; + text-align: right; +} +@media (max-width: 768px) { + .cwb-cyber-popup { + width: 100vw; + height: 100vh; + top: 0; + left: 0; + transform: none; + border-radius: 0; + } + .cwb-cyber-popup__main-content { + flex-direction: column; + } + .cwb-cyber-tabs { + flex-direction: row; + width: 100%; + border-right: none; + border-bottom: 1px solid var(--cwb-cyber-border); + overflow-x: auto; + overflow-y: hidden; + } + .cwb-cyber-tab { + flex-shrink: 0; + } + .cwb-cyber-card__content { + grid-template-columns: 1fr; + } +} +.cwb-worldbook-selection-container { + display: flex; + gap: 15px; + margin-top: 10px; +} + +.cwb-worldbook-column { + flex: 1; + display: flex; + flex-direction: column; + min-width: 0; +} + +.cwb-scrollable-container .worldbook-radio-item { + display: block; + margin-bottom: 8px; + padding: 5px; + border-radius: 4px; + background-color: rgba(255, 255, 255, 0.02); + transition: background-color 0.2s; +} + +.cwb-scrollable-container .worldbook-radio-item:hover { + background-color: rgba(255, 255, 255, 0.05); +} + +.cwb-scrollable-container .worldbook-radio-item input[type="radio"] { + margin-right: 8px; + vertical-align: middle; +} + +.cwb-scrollable-container .worldbook-radio-item label { + cursor: pointer; + font-size: 0.9em; + color: #ddd; + vertical-align: middle; + display: inline; +} + +.cwb-scrollable-container .checkbox-item { + display: block; + margin-bottom: 8px; + padding: 5px; + border-radius: 4px; + background-color: rgba(255, 255, 255, 0.02); + transition: background-color 0.2s; +} + +.cwb-scrollable-container .checkbox-item:hover { + background-color: rgba(255, 255, 255, 0.05); +} + +.cwb-scrollable-container .checkbox-item input[type="checkbox"] { + margin-right: 8px; + vertical-align: middle; +} + +.cwb-scrollable-container .checkbox-item label { + cursor: pointer; + font-size: 0.9em; + color: #ddd; + vertical-align: middle; + display: inline; +}