Infrastructure Sync: Initial migration to custom self-hosted Gitea

This commit is contained in:
2026-08-21 15:40:26 +09:00
parent a8574be2fb
commit 131a709186
47 changed files with 1228 additions and 1460 deletions
+6 -8
View File
@@ -40,7 +40,7 @@ export function TaskDetail({
const [dueDate, setDueDate] = useState(task.dueDate ? task.dueDate.split("T")[0] : "");
const [priority, setPriority] = useState(task.priority);
const [tags, setTags] = useState<{ tag: Tag }[]>(task.tags || []);
const [allAvailableTags, setAllAvailableTags] = useState<MockTag[]>([]);
const [allAvailableTags, setAllAvailableTags] = useState<MockTag[]>(() => (typeof window !== "undefined" ? getCustomTags() : []));
const [showTagPicker, setShowTagPicker] = useState(false);
const [showListPicker, setShowListPicker] = useState(false);
const [newTagName, setNewTagName] = useState("");
@@ -50,13 +50,13 @@ export function TaskDetail({
const blockOrder = prefs.detailBlockOrder;
const splitRatio = prefs.detailSplitRatio;
const setBlockOrder = (next: ("subtasks" | "note")[]) => {
const setBlockOrder = useCallback((next: ("subtasks" | "note")[]) => {
updatePrefs({ detailBlockOrder: next });
};
}, [updatePrefs]);
const setSplitRatio = (r: number) => {
const setSplitRatio = useCallback((r: number) => {
updatePrefs({ detailSplitRatio: r });
};
}, [updatePrefs]);
const [subtasksCollapsed, setSubtasksCollapsed] = useState(false);
const [noteCollapsed, setNoteCollapsed] = useState(false);
@@ -117,7 +117,6 @@ export function TaskDetail({
const handleMouseUp = () => {
if (isDraggingSplit) {
setIsDraggingSplit(false);
// splitRatio is already saved via updatePrefs in handleMouseMove
}
};
@@ -129,7 +128,7 @@ export function TaskDetail({
window.removeEventListener("mousemove", handleMouseMove);
window.removeEventListener("mouseup", handleMouseUp);
};
}, [isDraggingSplit, splitRatio]);
}, [isDraggingSplit, setSplitRatio]);
// Sync state when switching task
useEffect(() => {
@@ -144,7 +143,6 @@ export function TaskDetail({
setPriority(task.priority);
setTags(task.tags || []);
setSubtasks(task.children || []);
setAllAvailableTags(getCustomTags());
}, [task.id, task.title, task.note, task.dueDate, task.priority, task.children, task.tags]);
useEffect(() => {