feat(ui): aplicar y persistir inmediatamente las personalizaciones del widget
Los mantenedores suelen responder en 1 día
@egdev6 ya está trabajando en esto.
Desde el 12/10/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
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.
- Lenguaje dominante
- TypeScript
- Estrellas
- 10
- Forks
- 2
- Merge medio
- 16 min
- PR fusionados (30 d)
- 51
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de egdev6/quorb
-
status:approved type:bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
egdev6/quorb#109 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
odd type:feature
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
Los mantenedores suelen responder en 1 día
-
odd type:feature
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
Los mantenedores suelen responder en 1 día
-
odd type:feature
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
-
odd type:chore
Dificultad 5/5 Más de una semana Aptitud para principiantes 22/100
egdev6/quorb#105 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de egdev6/quorb
Issues similares
-
useFragment does not require `variables` when the fragment's variables type has required fieldsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apollographql/apollo-client#13493 ·
Los mantenedores suelen responder en 1 día
-
Custom hosts written as trailing-dot FQDNs (`host.local.`) aren't detected as local backendsPosiblemente ocupada @roboomp la tomó hoy. Abiertobug prio:p2 providers triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
can1357/oh-my-pi#15798 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
code-yeongyu/oh-my-openagent#10172 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
PDFCraftTool/pdfcraft#189 ·
-
Add the Yahoo chart API duplicate last-day row (yfinance#573) to incidents.md (about 1 hour)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertodata docs good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 80/100
pacocartones/market-data-sanity-checker#160 ·
Los mantenedores suelen responder en 1 día