feat(ui): aplicar y persistir inmediatamente las personalizaciones del widget
维护者通常 1 天内回复
@egdev6 已经在做这个了。
开始于 2026年10月12日。
评估
这个 Issue 还没有评估数据。
描述
Pre-flight checks
- I searched existing issues and found no duplicate.
- I understand that this proposal requires product review before implementation.
El asistente completó la búsqueda de issues abiertas/cerradas y contrastó el inventario y antecedentes. El mantenedor confirmó la revisión previa y aprobó la publicación de quorb-ui-ux-v1. Esto no asigna trabajo ni inicia implementación.
Problem to solve
Opacidad, modo de un anillo, borde, posición, ocultación automática y Siempre encima no tienen efecto inmediato al cambiarlos en Ajustes. Main aún los trata como borrador hasta Guardar, mientras tamaño/color se autoaplican y el arrastre de la tira ya persiste borde/posición. El mantenedor confirmó que estas personalizaciones deben aplicarse inmediatamente.
Proposed solution
Alinear los seis controles enumerados con una experiencia de aplicación y persistencia automática, sin pulsar Guardar. Conservar los campos manuales y autostart; resolver la cola/errores/cierre para que ampliar autosave no pierda datos ni anuncie un guardado falso.
Affected area
Application behavior
Scope and non-goals
Alcance exacto
opacity, compact (modo de un anillo), dockEdge, dockOffset, autoHide, alwaysOnTop. Conservar la autoaplicación existente de tamaño/color y la posición por arrastre.
Criterios de aceptación
- Cada control produce efecto en la tira/panel o ventana nativa correspondiente sin pulsar Guardar.
- Cambios persisten al reabrir Ajustes/reiniciar; no dependen de conservar el borrador de React.
- Modo compacto muestra el anillo previsto y actualiza tamaño/posición nativos sin oscilaciones ni operaciones redundantes evitables.
- Opacidad afecta las superficies de tira y panel previstas; comprobar también controles internos a baja opacidad sin prometer causa visual no reproducida.
- Borde y posición respetan geometría/monitor/escalado y mantienen coherencia entre Ajustes y arrastre.
- AutoHide expande/colapsa y recupera la tira como corresponde; Siempre encima funciona en tira y panel, incluido el caso combinado con ocultación.
- Escrituras de sliders acotadas y compuestas con el estado canónico más reciente; cambios rápidos/reversión o distintos controles no se pisan.
- Cerrar Ajustes con debounce pendiente no pierde silenciosamente el último cambio. Definir y probar el mecanismo de flush/confirmación/recuperación.
- Si falla persistencia o aplicación nativa, mostrar error recuperable y diferenciar lo aplicado de lo confirmado; no dejar un valor visible como éxito falso.
- Las personalizaciones autoaplicadas no activan el Guardar manual, antes/durante/después del guardado.
- No guardar accidentalmente otros borradores ni perder ediciones manuales realizadas durante operaciones en vuelo.
- Conservar autostart y resultados parciales del guardado mixto; no transformar opciones WSL, proveedores, cuentas ni todos los Ajustes en autosave.
- Tests deterministas de cola/races, cierre, errores, exclusión dirty y comportamiento de los seis campos; prueba desktop dev real de cada efecto/persistencia y regresión de posición/DPI pertinente.
Evidencia y orientación
Main inspeccionado: Settings mantiene estos campos en set(); Widget.tsx ya persiste posición por arrastre. El autosave actual limpia un timer pendiente al desmontar y mantiene borrador optimista ante fallo: riesgos que deben cubrirse, sin afirmar el fallo exacto del entorno del usuario después de Guardar.
Entradas: src/Settings.tsx, src/lib/settings-dirty.ts, src/lib/settings-save.ts, src/Widget.tsx, src/lib/dock.ts, src-tauri/src/config.rs y src-tauri/src/lib.rs. Decidir ruta de persistencia/aplicación: el patch actual no admite todos estos campos y un save completo tiene efectos laterales de atajos/cuentas/ventanas. No ampliar contratos a ciegas ni imponer una solución durante planificación.
Antecedentes y dependencias
Sin dependencia funcional externa. #9, #11 y #19 son regresiones a conservar, no issues a reabrir. Las opciones de #93 conservan explícitamente su borrador hasta Guardar. Coordinar con la retirada del bloque, adyacente en Settings; no escritores concurrentes sobre los mismos bloques.
Exclusiones
Sin autosave general, migración de autostart, cambio de visibilidad por cuenta, credenciales, comandos WSL ni rediseño general.
Coordinación, validación y límites
Parte de la propuesta aprobada quorb-ui-ux-v1, milestone «Coherencia visual y personalización». Trabajo por el flujo habitual; no se incorpora automáticamente a ODD ni altera prioridades de #45. Sin assignee ni nueva etiqueta status:approved. Antes de empezar revisar responsables, comentarios y PR, y coordinar las superficies compartidas.
Tests y documentación con cada unidad. Checks de implementación previstos, no ejecutados durante planificación: npm test, npm run typecheck, npm run build y cargo test en src-tauri cuando cambie comportamiento Rust; además prueba real de escritorio en modo desarrollo. No acreditar comportamiento Windows/WebView2 desde tests de lógica o fixtures de navegador. No se publica una versión ni se modifica el código al crear esta issue.
No editar directamente el DS vendorizado src/ds/egdev/* (ver su README); usar extensión de la app o coordinar el cambio upstream. Sin rediseño general, migración de cuentas, cambios de credenciales, firma, releases o nuevas versiones prometidas.
Alternatives considered
Mantener Guardar con mejor copy: no satisface la preferencia confirmada de aplicación inmediata. Añadir seis handlers live sin revisar persistencia/cierre/errores: puede extender pérdida silenciosa y efectos laterales. Hacer autosave de todo AppConfig: incluye borradores ajenos y contradice contratos manuales.
- 主要语言
- TypeScript
- 星标
- 10
- 派生
- 2
- 平均合并
- 16 分钟
- 30 天内合并 PR
- 51
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
egdev6/quorb 的其他 Issue
-
status:approved type:bug
难度 1/5 1 小时以内 新手友好度 70/100
维护者通常 1 天内回复
-
odd type:feature
难度 5/5 一周以上 新手友好度 15/100
维护者通常 1 天内回复
-
odd type:feature
难度 4/5 3-5 天 新手友好度 15/100
维护者通常 1 天内回复
-
odd type:feature
难度 4/5 3-5 天 新手友好度 25/100
维护者通常 1 天内回复
-
odd type:chore
难度 5/5 一周以上 新手友好度 22/100
维护者通常 1 天内回复
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 74/100
AvaProtocol/ava-sdk-js#276 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
apollographql/apollo-client#13493 ·
维护者通常 1 天内回复
-
Custom hosts written as trailing-dot FQDNs (`host.local.`) aren't detected as local backends可能已有人在做 @roboomp 今天认领。 未关闭bug prio:p2 providers triaged
难度 2/5 1-3 小时 新手友好度 82/100
can1357/oh-my-pi#15798 · 3 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
code-yeongyu/oh-my-openagent#10172 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100
PDFCraftTool/pdfcraft#189 ·