feat(ui): aplicar y persistir inmediatamente las personalizaciones del widget
Maintainer thường phản hồi trong vòng 1 ngày
@egdev6 đang làm issue này rồi.
Từ ngày 12/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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.
- Ngôn ngữ chính
- TypeScript
- Star
- 10
- Fork
- 2
- Merge trung bình
- 3 giờ 17 phút
- Pull request đã merge (30 ngày)
- 77
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của egdev6/quorb
-
status:approved type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
status:approved type:bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 53/100
Maintainer thường phản hồi trong vòng 1 ngày
-
status:approved type:feature
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
Maintainer thường phản hồi trong vòng 1 ngày
-
status:approved type:feature
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
-
status:approved type:feature
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
Maintainer thường phản hồi trong vòng 1 ngày
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
jessepollak/home#2223 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
grep fixture corpus test follows the corpus's loop symlink under the receipt runner (fails on main)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
code-yeongyu/senpi#3756 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
org:external package:deepagents priority:triage topic:memory topic:middleware type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
langchain-ai/deepagents#7059 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
osmlab/name-suggestion-index#12992 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
hemilabs/ui-monorepo#2506 ·
Maintainer thường phản hồi trong vòng 1 ngày