From d27a4aa20135e8866922f65b5d2f6a59673dbf8a Mon Sep 17 00:00:00 2001 From: brobert Date: Sun, 19 Oct 2025 13:49:49 +0200 Subject: [PATCH] mejora los copis --- apps/web/src/routes/app/+page.svelte | 549 ++++++++++++++------------- src/services/command.ts | 10 +- src/services/messages/help.ts | 6 +- 3 files changed, 303 insertions(+), 262 deletions(-) diff --git a/apps/web/src/routes/app/+page.svelte b/apps/web/src/routes/app/+page.svelte index 164ff78..979c27c 100644 --- a/apps/web/src/routes/app/+page.svelte +++ b/apps/web/src/routes/app/+page.svelte @@ -1,294 +1,335 @@ - Tareas - + Tareas +

Sesión: {data.userId}

- Orden: - Fecha - Grupo + Orden: + Fecha + Grupo
-

Mis tareas (abiertas)

+

Mis tareas

{#if openTasks.length === 0} -

No tienes tareas asignadas. Crea o reclama una para empezar.

+

No tienes tareas asignadas. Crea o reclama una para empezar.

{:else} - - - + + + {/if} {#if (data.page ?? 1) > 1 || data.hasMore} - 1 ? `/app?${buildQuery({ order: data.order, page: (data.page ?? 1) - 1 })}` : null} - nextHref={data.hasMore ? `/app?${buildQuery({ order: data.order, page: (data.page ?? 1) + 1 })}` : null} - /> + 1 + ? `/app?${buildQuery({ order: data.order, page: (data.page ?? 1) - 1 })}` + : null} + nextHref={data.hasMore + ? `/app?${buildQuery({ order: data.order, page: (data.page ?? 1) + 1 })}` + : null} + /> {/if}

Sin responsable de mis grupos

{#if unassignedOpen.length === 0} -

No hay tareas sin responsable en tus grupos. Crea una nueva o invita a tus compañeros.

+

+ No hay tareas sin responsable en tus grupos. Crea una nueva o invita a + alguien. +

+{:else if data.order === "group"} + {#each groupByGroup(unassignedOpen) as g (g.id)} +

{g.name}

+ +
    + {#each g.tasks as t (t.id)} + updateTaskInLists(e.detail)} + /> + {/each} +
+
+ {/each} {:else} - {#if data.order === 'group'} - {#each groupByGroup(unassignedOpen) as g (g.id)} -

{g.name}

- -
    - {#each g.tasks as t (t.id)} - updateTaskInLists(e.detail)} /> - {/each} -
-
- {/each} - {:else} - -
    - {#each unassignedOpen as t (t.id)} - updateTaskInLists(e.detail)} /> - {/each} -
-
- {/if} + +
    + {#each unassignedOpen as t (t.id)} + updateTaskInLists(e.detail)} + /> + {/each} +
+
{/if}

Completadas (últimas 24 h)

{#if recentTasks.length === 0} -

No hay tareas completadas recientemente.

+

No hay tareas completadas recientemente.

{:else} - -
    - {#each recentTasks as t (t.id)} - updateTaskInLists(e.detail)} - /> - {/each} -
-
+ +
    + {#each recentTasks as t (t.id)} + updateTaskInLists(e.detail)} + /> + {/each} +
+
{/if} -

- La cookie de sesión se renueva con cada visita (idle timeout). -

- diff --git a/src/services/command.ts b/src/services/command.ts index 4b59e98..f276d81 100644 --- a/src/services/command.ts +++ b/src/services/command.ts @@ -227,7 +227,7 @@ export class CommandService { ' · `/t configurar diario|l-v|semanal|off [HH:MM]` (por defecto _08:30_; semanal: _lunes_; l-v: lunes a viernes)', 'Notas:', ' · En grupos, el bot responde por DM (no publica en el grupo).', - ' · Si creas una tarea en un grupo y no mencionas a nadie → “sin responsable”; en DM → se asigna a quien la cree.', + ' · Si creas una tarea en un grupo y no mencionas a nadie → “sin responsable”; en DM → se asigna a quien la crea.', ' · Fechas dd/MM con ⚠️ si está vencida.', ' · Mostramos los IDs de las tareas con 4 dígitos, pero puedes escribirlos sin ceros (p. ej., 26).', ].join('\n'); @@ -462,7 +462,7 @@ export class CommandService { if (enforce && fresh && !GroupSyncService.isUserActiveInGroup(context.sender, context.groupId)) { return [{ recipient: context.sender, - message: 'No puedes ver las tareas de este grupo porque no apareces como miembro activo. Pide acceso a un admin si crees que es un error.' + message: 'No puedes ver las tareas de este grupo. Pide que te añadan si crees que es un error.' }]; } @@ -604,7 +604,7 @@ export class CommandService { if (task && task.group_id && GroupSyncService.isSnapshotFresh(task.group_id) && enforce && !GroupSyncService.isUserActiveInGroup(context.sender, task.group_id)) { return [{ recipient: context.sender, - message: 'No puedes completar esta tarea porque no apareces como miembro activo del grupo.' + message: 'No puedes completar esta tarea porque no eres de este grupo.' }]; } @@ -733,7 +733,7 @@ export class CommandService { if (task.group_id && GroupSyncService.isSnapshotFresh(task.group_id) && enforce && !GroupSyncService.isUserActiveInGroup(context.sender, task.group_id)) { return [{ recipient: context.sender, - message: 'No puedes tomar esta tarea: no apareces como miembro activo del grupo. Pide acceso a un admin si crees que es un error.' + message: 'No puedes tomar esta tarea porque no eres de este grupo.' }]; } @@ -859,7 +859,7 @@ export class CommandService { if (task.group_id && GroupSyncService.isSnapshotFresh(task.group_id) && enforce && !GroupSyncService.isUserActiveInGroup(context.sender, task.group_id)) { return [{ recipient: context.sender, - message: '⚠️ No puedes soltar esta tarea porque no apareces como miembro activo del grupo.' + message: '⚠️ No puedes soltar esta tarea porque no eres de este grupo.' }]; } diff --git a/src/services/messages/help.ts b/src/services/messages/help.ts index 0d16518..324f7b7 100644 --- a/src/services/messages/help.ts +++ b/src/services/messages/help.ts @@ -11,7 +11,7 @@ export function getQuickHelp(baseUrl?: string): string { parts.push( bullets([ `${code('/t n ...')} crear (acepta fecha y menciones)`, - `${code('/t ver')} en grupo · ${code('/t ver mis')} por DM · ${code('/t ver todos')}`, + `${code('/t ver mis')} por DM · ${code('/t ver todos')}`, `${code('/t x 26')} completar (máx. 10) · ${code('/t tomar 12')} · ${code('/t soltar 26')}`, `${code('/t configurar diario|l-v|semanal|off [HH:MM]')}`, `${code('/t web')}`, @@ -33,7 +33,7 @@ export function getFullHelp(baseUrl?: string): string { out.push( bullets([ `${code('/t n Descripción [YYYY-MM-DD|YY-MM-DD|hoy|mañana] [@menciones...]')}`, - 'En DM: sin menciones → asignada al creador.', + 'En DM: sin menciones → asignada a quien la crea.', 'En grupo: sin menciones → queda “sin responsable”.', 'Fechas: usa la última válida encontrada; no acepta pasadas.', ]) @@ -48,7 +48,7 @@ export function getFullHelp(baseUrl?: string): string { `${code('/t ver mis')} tus pendientes (por DM).`, `${code('/t ver todos')} tus pendientes + “sin responsable”.`, 'En grupo: “sin responsable” solo del grupo actual.', - 'En DM: “sin responsable” de grupos donde eres miembro activo (si la snapshot es fresca).', + 'En DM: “sin responsable” de tus grupos.', `${code('/t ver sin')} solo “sin responsable” del grupo actual (desde grupo).`, 'Máx. 10 elementos por sección; se añade “… y N más” si hay más.', 'Fechas en DD/MM y ⚠️ si están vencidas.',