feat: 登录设备管理与编辑器图片上传

- 新增登录设备列表与会话下线(ListLoginDevices/RevokeLoginDevice),按设备指纹识别当前会话
- Markdown 编辑器新增图片插入弹窗与图片上传(ImageInsertModal)
- 实时总线、账号守卫与用户事件适配
This commit is contained in:
2026-09-26 01:10:10 +08:00
parent 5270fee2b7
commit 31f5360c26
12 changed files with 706 additions and 165 deletions

View File

@@ -2088,6 +2088,100 @@ html.dark .j13-board-trigger.is-invalid .j13-board-trigger-hint {
background: var(--panel-2) !important;
color: var(--ink) !important;
}
/* 链接弹窗:高级选项折叠开关 + 站内帖子搜索区与结果行(标题 sans 字体 + 右侧标签) */
.j13-md-adv-toggle {
display: inline-flex;
align-items: center;
gap: 4px;
align-self: flex-start;
padding: 2px 0;
border: 0;
appearance: none;
-webkit-appearance: none;
background: transparent !important;
color: var(--ink-3);
font-size: 12px;
font-weight: 600;
cursor: pointer;
}
.j13-md-adv-toggle:hover {
color: var(--ink);
}
.j13-md-link-search {
display: flex;
flex-direction: column;
gap: 6px;
margin-top: 2px;
padding-top: 8px;
border-top: 1px solid var(--line);
}
.j13-md-popover-list button.j13-md-post-row {
display: flex;
align-items: center;
gap: 8px;
font-family: inherit;
font-size: 12.5px;
font-weight: 500;
}
.j13-md-post-tag {
flex-shrink: 0;
font-size: 11px;
font-weight: 500;
color: var(--ink-3);
}
/* 插图统一弹窗:tab 行、拖拽上传区、错误行 */
.j13-md-mode.j13-img-tabs {
display: flex;
width: 100%;
}
.j13-img-tabs button {
flex: 1;
justify-content: center;
}
.j13-img-tabs button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.j13-img-dropzone {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
width: 100%;
padding: 36px 16px;
border-radius: 14px;
border: 1.5px dashed var(--control-border);
background: var(--panel-2);
color: var(--ink-3);
cursor: pointer;
appearance: none;
-webkit-appearance: none;
transition: border-color 0.15s, background 0.15s;
}
.j13-img-dropzone:hover,
.j13-img-dropzone.is-dragover {
border-color: var(--accent);
color: var(--ink-2);
}
.j13-img-dropzone:disabled {
opacity: 0.6;
cursor: progress;
}
.j13-img-dropzone-title {
font-size: 13.5px;
font-weight: 600;
color: var(--ink);
}
.j13-img-dropzone-hint {
font-size: 12px;
color: var(--ink-3);
}
.j13-img-modal-error {
margin-top: 10px;
font-size: 12.5px;
color: var(--danger, #b42318);
}
.j13-md-field {
display: flex;
flex-direction: column;