在同一查询中获取父信件以删除回复 N+1
异名 m.msg 和 LEFT JOIN FETCH msg. parent 这样,线性回复 信件在初始查询中加载了父信件而不是 触发单独的 SELECT 每一份回复
改进聊天消息加载性能
- 缓存获取CurrentMemberId () 生成一个可避免重复/ api/ user- info 的校对 调用每个 WebSocket 信件和打字指示器 - 将信息历史获取和用户信息获取与承诺并行。 减少初始负载延迟 - 在.map()内去掉每个消息控制台.log(每次发射100次) - 从代理路由日志中删除全部...
删除聊天信件端点的每个信件记录
删除信件流图中的System.out.println通话 每个消息发射一次(每个请求100个一/O操作),最后 日志,将所有信件再次流出,只是为了收集记录成员身份
修复 N+1 查询并添加聊天信件加载的复合索引
- 将LEFT JOIN FETCH m.msg添加到两个寄存器查询中,以便急于加载 同一查询中的 MediaObjMsg, 最多取消100个额外的 SQL 查询 每个聊天窗口打开 - 增加综合指数(SESSION ID、IS REMOVED、DATE CREATED)以涵盖 以单个有效的索引扫描方式获取查询模式
强制灯光模式来覆盖外部暗模式 CSS
- 将 Tailwind 暗模式设置为“ 类” , 防止操作系统偏好触发暗公用设施 添加 ! 在 Global.cs 中锁定光模式变量的重要覆盖 - 在DynamicMetaLoader的外部CSS负载后注入内线样式,以防止外部暗模式规则生效
解决水平重叠、 跟踪盲点和计时错误
- fly ToHomeRow:计算每个跟踪器的实际dx范围以获得右缓冲/左缓冲 独立地放置锚,以防止环形追随者与 相邻的家排头( 仅留下 19px 间隙对 77px 需要) - 解析组合:包括被取消的团体追随者作为只读障碍,这样可以自由头 而其他单位则不能再被安排在跟随者位置之上 - 在Make Room / 在Wr...
无论OS 色彩方案偏好如何, 强制灯光模式
删除了偏好- color- scheme 暗媒体查询, 因此网站总是以光线模式制作 .
Bake 大小滑动器通过视图框裁剪放大为已保存的 SVG
阿凡达造物主的内部尺度 放大了SVG内部的阿凡达体 帆布,但效果在小显示尺寸(例如a)时是无法察觉的。 140x140 Avatar组件). 预览使用冗余 CSS 变换: 缩放( ) 以显示缩放, 但 CSS 绝不是其中的一部分 保存了 SVG,所以预览和保存总是看起来不同. 新方法: - 从可选变形器中去除缩放( ...
从 Avatar 预览中删除冗余 CSS 缩放转换
Avatar 创建器的缩放选项已经作为 SVG 组应用了缩放( N/ 100) 变相体上. 预览容器也在应用中 CSS变换:分级(N/100),复合效应(2.5×2.5=6.25x) (以250%计) 这让预览看起来与 保存了 SVG, 特别是在滑动器最大值被提升到250后特别显著 。 删除 CSS 变换使预览准确匹...
执行 make Room 和后碰撞分辨率
以真正的处理器替换无操作的六角头: make Room listener 在新工具窗口的 DOM 矩形后运行解析度 稳定。 修复收听者泄露(匿名,从未清理). 包装后还要运行解析度 。 最终在停靠的窗户后面被重新定位.
Fly ToHomeRow 中的组意识槽宽度
组现在保留与其跟踪者成比例的横向槽 环范围(使用正确的平顶轴公式),防止群 来自入侵相邻锚地空间的追随者. 还添加a 双RAF解析器在安放后作为安全网通过.
使用 Callback 添加解析度
探测到头到头和头到脚的Window空间违规情况 然后把头移到最近的干净位置 螺旋搜索器。 必须通过双RAF调用以避免读取 中动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能动能...
添加 MIN GAP 常数和螺旋搜索助手
添加 5px 最小间隙的变异常数和螺旋搜索 函数查找最近的无相撞像素位置 一个六分头,检查 头对头和头对工具 Window 清除.
Add hexhead collision fixes implementation plan
5-task plan covering: spiralSearch helper, resolveCollisions useCallback, group-aware flyToHomeRow, onUp non-snap/swarm wiring, and makeRoom/ wrapAroundDock eve...
Remove z-index DOM sort to prevent click events being dropped on focus
Sorting windows by zIndex in ToolDock caused DOM node reordering on every focus event (mousedown). Browsers drop the click event when its target element moves b...
Add hexhead collision fixes design spec
Spec covers three hexhead UX bugs: horizontal bottom-row vertex overlap, bottom-right stacking when dropping without snap, and hexheads ending up behind tool wi...
Bake background color/gradient into saved Avatar Creator avatar SVG
Avatar Creator generates transparent-background SVGs by default. The background was only applied as a CSS wrapper on the preview container, so the stored MinIO ...
Dispatch member-panel-toggle via useEffect to avoid stale Framer Motion closure
onAnimationStart/Complete hold the last rendered props, so the exit animation always saw isOpen=true and windows never relayed to the right on close. Using a us...
Correct member-panel-toggle event property so tool windows respect panel offset
The event was dispatching `{ isOpen }` but ToolWindowsContext read `detail.open`, causing memberPanelOpenRef to always be falsy and the 500px panel offset to ne...
Eliminate hexhead spawn overlap by computing unique column positions
Each head now initialises its MotionValue at its own home-row column X and below the viewport (h + SIZE), then springs up to its final slot. Previously all head...
Use inline style for icon colors to prevent CSS specificity override
sx-generated color classes were being overridden by Tab card context styles. Switching color to inline style prop ensures icons always render with the correct c...
Add kamo.commerce.enabled=true to k8s configmap
This is the file the CI pipeline actually applies (k8s/configmap.yaml). Required for CommerceService and EngagementLifecycle to load under the new @ConditionalO...
Add KAMO_COMMERCE_ENABLED=true to k8s configmap
Required for CommerceService and EngagementLifecycle to load now that they use @ConditionalOnProperty instead of @ConditionalOnBean.
添加匹配( If Missing = false) 到商业豆类的有条件财产
明确商业服务和参与周期 当 kamo. commerce. 启用未设置时, 默认禁用 。 任何不配置地产的服务都会跳过这些豆子.
Enable commerce beans via kamo.commerce.enabled property
CommerceService and EngagementLifecycle now use @ConditionalOnProperty instead of @ConditionalOnBean. Set kamo.commerce.enabled=true so they load in SecuritySer...
将条件Bean替换为商业服务条件Bean
QQ 在春天之前被评估 Data JPA 注册用户定义的寄存器豆,使其不可靠. 替换为 QQ 在财产解决阶段进行评价,并始终可靠。 需要商业服务的服务(保安服务)通过应用程序.yml进行选择。 不使用(MediaService)的服务使财产不设(默认为假).
Prevent overflow:hidden on tab card from clipping status widget
Move overflow:hidden from the Card to the Tabs wrapper Box so scrollable tabs are contained but the right-aligned status/substatus widget remains fully visible.
Correct hexhead geometry, z-index layering, and viewport clamping
- Fix axialToPixel to use flat-top hex formula (was pointy-top) so honeycomb aligns flat-edge to flat-edge as the hex SVG shape requires - Fix generateRing to...
Batch-load custom form data in getAllLeads (eliminate N+1)
Replace per-lead getCustomFormDataForLead calls (N+1 queries) with a single batch load via getCustomFormDataForLeads, grouped by lead ID using a Map lookup when...
取消关于线索端点的全表扫描和N+1查询
- 铅存储器:添加 findByOrganizationId JPQL 查询(使用ORG ID索引) 而不是装入整个 LEADS 表格并在 Java 中过滤 - 铅海关表格数据库:为批量装入添加查找ByLeadIn 一个查询中多个线索的自定义格式数据 - **************** 使用新 Repo 查询; 批量...
Add status/substatus widget to lead view tab bar
- Extract LEAD_STATUS_TYPES, getStatusIcon, getSubStatusIcon to shared app/lib/leadStatuses.tsx utility; update LeadManager to import from it - Add inline sta...
Rewrite HexHead system with framer-motion physics
Replace the broken 1800-line HexHeadGroup with a clean physics-based implementation using framer-motion springs and motion values. Key changes: - Remove wiggle...
Use Next.js client-side navigation for all MUI Link components
MUI Link without component={NextLink} renders as a plain <a> tag, causing full page reloads that reset all React state including tool windows. Added component={...
Replace window.location hard navigations with router.push/refresh
All window.location.href, window.location.assign(), and window.location.reload() calls in page components caused full page reloads, wiping all React state inclu...
Flat-top honeycomb layout, 5px gaps, cluster-aware groups, tool window relayout
HexHeadGroup: - Switch to flat-top hex geometry (HEX_INRADIUS/HEX_STEP) — hexes now share flat top/bottom edges with adjacent group members, giving a proper h...
Move ToolDock above auth gate to prevent tool window wipe on navigation
PresenceWrapper switches its component tree structure when auth resolves (Fragment > children → ChatWebSocketProvider > PresenceProvider > children). This unmou...