chore: auto-commit (23 archivos)

- app.md
- backend/auth.go
- backend/db.go
- backend/dist/assets/index-CPqSy0gZ.js
- backend/dist/index.html
- backend/handlers.go
- backend/main.go
- frontend/src/App.tsx
- frontend/src/api.ts
- frontend/src/components/KanbanCard.tsx
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-13 18:40:22 +02:00
parent f1ee116d3b
commit a34a8142cc
23 changed files with 2034 additions and 1184 deletions
+25 -11
View File
@@ -68,6 +68,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import * as api from "./api";
import { useAuth } from "./auth";
import { CardForm } from "./components/CardForm";
import { CardEditPanel } from "./components/CardEditPanel";
import { ChatPanel } from "./components/ChatPanel";
import { CalendarView } from "./components/CalendarView";
import { Dashboard } from "./components/Dashboard";
@@ -238,6 +239,13 @@ export function App() {
return () => clearInterval(t);
}, []);
useEffect(() => {
const t = setInterval(() => {
reload();
}, 30000);
return () => clearInterval(t);
}, [reload]);
useEffect(() => {
if (!activeSticker) return;
const onKey = (e: KeyboardEvent) => {
@@ -566,20 +574,14 @@ export function App() {
const openEditCard = useCallback((card: Card) => {
const id = modals.open({
title: "Editar tarjeta",
size: "md",
size: "85%",
children: (
<CardForm
<CardEditPanel
card={card}
users={users}
currentUserId={auth.user?.id}
requesterOptions={requesterOptions}
tagOptions={tagOptions}
initial={{
requester: card.requester,
title: card.title,
description: card.description,
assignee_id: card.assignee_id,
tags: card.tags || [],
}}
submitLabel="Guardar"
onCancel={() => modals.close(id)}
onSubmit={async (v) => {
try {
@@ -601,7 +603,17 @@ export function App() {
/>
),
});
}, [reload, users, requesterOptions, tagOptions]);
}, [reload, users, auth.user, requesterOptions, tagOptions]);
const handleDuplicateCard = useCallback(async (cardId: string) => {
try {
const dup = await api.duplicateCard(cardId);
await reload();
notifications.show({ color: "teal", message: `Duplicada: ${dup.title}` });
} catch (e) {
notifications.show({ color: "red", message: (e as Error).message });
}
}, [reload]);
const handleSetRequester = useCallback(async (id: string, requester: string) => {
setBoard((prev) => {
@@ -986,6 +998,7 @@ export function App() {
onToggleDone={handleToggleDone}
onEditCard={openEditCard}
onDeleteCard={handleDeleteCard}
onDuplicateCard={handleDuplicateCard}
onChangeCardColor={handleChangeCardColor}
onShowHistory={handleShowHistory}
onToggleCardLock={handleToggleCardLock}
@@ -1253,6 +1266,7 @@ export function App() {
onToggleDone={handleToggleDone}
onEditCard={openEditCard}
onDeleteCard={handleDeleteCard}
onDuplicateCard={handleDuplicateCard}
onChangeCardColor={handleChangeCardColor}
onShowHistory={handleShowHistory}
onToggleCardLock={handleToggleCardLock}