From 8b3b3be550307598e84c59e3d708e6ee9a3e1beb Mon Sep 17 00:00:00 2001 From: haoyuren <13851610112@163.com> Date: Fri, 13 Mar 2026 01:15:01 -0500 Subject: Add AGPL-3.0 license and copyright headers to all source files Co-Authored-By: Claude Opus 4.6 --- src/renderer/src/App.css | 3 +++ src/renderer/src/App.tsx | 3 +++ src/renderer/src/components/ChatPanel.tsx | 3 +++ src/renderer/src/components/Editor.tsx | 3 +++ src/renderer/src/components/FileTree.tsx | 3 +++ src/renderer/src/components/ModalProvider.tsx | 3 +++ src/renderer/src/components/PdfViewer.tsx | 3 +++ src/renderer/src/components/ProjectList.tsx | 3 +++ src/renderer/src/components/ReviewPanel.tsx | 3 +++ src/renderer/src/components/StatusBar.tsx | 3 +++ src/renderer/src/components/Terminal.tsx | 3 +++ src/renderer/src/components/Toolbar.tsx | 3 +++ src/renderer/src/data/latexCommands.ts | 3 +++ src/renderer/src/data/latexEnvironments.ts | 3 +++ src/renderer/src/extensions/addCommentTooltip.ts | 3 +++ src/renderer/src/extensions/commentHighlights.ts | 3 +++ src/renderer/src/extensions/latexAutocomplete.ts | 3 +++ src/renderer/src/extensions/otSyncExtension.ts | 3 +++ src/renderer/src/extensions/remoteCursors.ts | 3 +++ src/renderer/src/hooks/useModal.ts | 3 +++ src/renderer/src/main.tsx | 3 +++ src/renderer/src/ot/cmAdapter.ts | 3 +++ src/renderer/src/ot/otClient.ts | 3 +++ src/renderer/src/ot/overleafSync.ts | 3 +++ src/renderer/src/ot/transform.ts | 3 +++ src/renderer/src/ot/types.ts | 3 +++ src/renderer/src/stores/appStore.ts | 3 +++ 27 files changed, 81 insertions(+) (limited to 'src/renderer') diff --git a/src/renderer/src/App.css b/src/renderer/src/App.css index 2a681a5..760c333 100644 --- a/src/renderer/src/App.css +++ b/src/renderer/src/App.css @@ -1,3 +1,6 @@ +/* Copyright (c) 2026 Yuren Hao */ +/* Licensed under AGPL-3.0 - see LICENSE file */ + /* ── Reset & Base ─────────────────────────────────────────────── */ * { diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index fb24a36..88a351b 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useState, useEffect, useCallback, useRef, Component, type ReactNode } from 'react' import { PanelGroup, Panel, PanelResizeHandle } from 'react-resizable-panels' import { useAppStore } from './stores/appStore' diff --git a/src/renderer/src/components/ChatPanel.tsx b/src/renderer/src/components/ChatPanel.tsx index a0638bd..a4c5165 100644 --- a/src/renderer/src/components/ChatPanel.tsx +++ b/src/renderer/src/components/ChatPanel.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useState, useEffect, useRef, useCallback } from 'react' import { useAppStore } from '../stores/appStore' diff --git a/src/renderer/src/components/Editor.tsx b/src/renderer/src/components/Editor.tsx index 362c705..649b238 100644 --- a/src/renderer/src/components/Editor.tsx +++ b/src/renderer/src/components/Editor.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useEffect, useRef, useState, useCallback } from 'react' import { EditorView, keymap, lineNumbers, highlightActiveLine, highlightActiveLineGutter, drawSelection, rectangularSelection } from '@codemirror/view' import { EditorState } from '@codemirror/state' diff --git a/src/renderer/src/components/FileTree.tsx b/src/renderer/src/components/FileTree.tsx index e2f31f1..0dda560 100644 --- a/src/renderer/src/components/FileTree.tsx +++ b/src/renderer/src/components/FileTree.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useState, useCallback, useEffect, useRef } from 'react' import { useAppStore, type FileNode } from '../stores/appStore' diff --git a/src/renderer/src/components/ModalProvider.tsx b/src/renderer/src/components/ModalProvider.tsx index 75572d5..df8084f 100644 --- a/src/renderer/src/components/ModalProvider.tsx +++ b/src/renderer/src/components/ModalProvider.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useState, useEffect, useRef } from 'react' import { useModalStore } from '../hooks/useModal' diff --git a/src/renderer/src/components/PdfViewer.tsx b/src/renderer/src/components/PdfViewer.tsx index cbfc857..d4c5558 100644 --- a/src/renderer/src/components/PdfViewer.tsx +++ b/src/renderer/src/components/PdfViewer.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useEffect, useRef, useState, useCallback } from 'react' import * as pdfjsLib from 'pdfjs-dist' import { useAppStore } from '../stores/appStore' diff --git a/src/renderer/src/components/ProjectList.tsx b/src/renderer/src/components/ProjectList.tsx index ea71f2b..d5b382c 100644 --- a/src/renderer/src/components/ProjectList.tsx +++ b/src/renderer/src/components/ProjectList.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useState, useEffect, useCallback, useMemo } from 'react' import { useAppStore } from '../stores/appStore' diff --git a/src/renderer/src/components/ReviewPanel.tsx b/src/renderer/src/components/ReviewPanel.tsx index fe94867..7edac50 100644 --- a/src/renderer/src/components/ReviewPanel.tsx +++ b/src/renderer/src/components/ReviewPanel.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useState, useEffect, useCallback, useRef } from 'react' import { useAppStore } from '../stores/appStore' diff --git a/src/renderer/src/components/StatusBar.tsx b/src/renderer/src/components/StatusBar.tsx index f24e6d6..5b91833 100644 --- a/src/renderer/src/components/StatusBar.tsx +++ b/src/renderer/src/components/StatusBar.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useAppStore } from '../stores/appStore' export default function StatusBar() { diff --git a/src/renderer/src/components/Terminal.tsx b/src/renderer/src/components/Terminal.tsx index d84a00c..3781a53 100644 --- a/src/renderer/src/components/Terminal.tsx +++ b/src/renderer/src/components/Terminal.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useEffect, useRef, useState } from 'react' import { Terminal as XTerm } from '@xterm/xterm' import { FitAddon } from '@xterm/addon-fit' diff --git a/src/renderer/src/components/Toolbar.tsx b/src/renderer/src/components/Toolbar.tsx index c847a9d..b480ede 100644 --- a/src/renderer/src/components/Toolbar.tsx +++ b/src/renderer/src/components/Toolbar.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { useAppStore } from '../stores/appStore' interface ToolbarProps { diff --git a/src/renderer/src/data/latexCommands.ts b/src/renderer/src/data/latexCommands.ts index 2e183b1..2e2dad7 100644 --- a/src/renderer/src/data/latexCommands.ts +++ b/src/renderer/src/data/latexCommands.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // Static LaTeX command/snippet completions // Each entry: [command, snippet (with $1 tab stops), detail] // Snippet syntax: $1, $2 etc are tab stops, ${1:placeholder} has default text diff --git a/src/renderer/src/data/latexEnvironments.ts b/src/renderer/src/data/latexEnvironments.ts index ff6fab6..2838ad5 100644 --- a/src/renderer/src/data/latexEnvironments.ts +++ b/src/renderer/src/data/latexEnvironments.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // Static LaTeX environment names for \begin{} completion // Each entry: [name, detail, snippet body (optional)] diff --git a/src/renderer/src/extensions/addCommentTooltip.ts b/src/renderer/src/extensions/addCommentTooltip.ts index dc60bb1..c56df90 100644 --- a/src/renderer/src/extensions/addCommentTooltip.ts +++ b/src/renderer/src/extensions/addCommentTooltip.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + /** * CodeMirror extension: "Add comment" tooltip on text selection. * Inspired by Overleaf's review-tooltip.ts. diff --git a/src/renderer/src/extensions/commentHighlights.ts b/src/renderer/src/extensions/commentHighlights.ts index 3994060..3215026 100644 --- a/src/renderer/src/extensions/commentHighlights.ts +++ b/src/renderer/src/extensions/commentHighlights.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + /** * CodeMirror extension for highlighting commented text ranges. * Inspired by Overleaf's ranges.ts — renders Decoration.mark for each comment diff --git a/src/renderer/src/extensions/latexAutocomplete.ts b/src/renderer/src/extensions/latexAutocomplete.ts index d5f8c75..a151876 100644 --- a/src/renderer/src/extensions/latexAutocomplete.ts +++ b/src/renderer/src/extensions/latexAutocomplete.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { autocompletion, type CompletionContext, diff --git a/src/renderer/src/extensions/otSyncExtension.ts b/src/renderer/src/extensions/otSyncExtension.ts index 7ff2203..c4171a3 100644 --- a/src/renderer/src/extensions/otSyncExtension.ts +++ b/src/renderer/src/extensions/otSyncExtension.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // CM6 extension for OT sync: ViewPlugin + annotation to prevent echo loops import { Annotation } from '@codemirror/state' import { ViewPlugin, type ViewUpdate } from '@codemirror/view' diff --git a/src/renderer/src/extensions/remoteCursors.ts b/src/renderer/src/extensions/remoteCursors.ts index 522d15d..cf07857 100644 --- a/src/renderer/src/extensions/remoteCursors.ts +++ b/src/renderer/src/extensions/remoteCursors.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // CM6 extension for rendering remote collaborator cursors import { StateEffect, StateField } from '@codemirror/state' import { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view' diff --git a/src/renderer/src/hooks/useModal.ts b/src/renderer/src/hooks/useModal.ts index fdf6eb3..911f619 100644 --- a/src/renderer/src/hooks/useModal.ts +++ b/src/renderer/src/hooks/useModal.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { create } from 'zustand' interface ModalState { diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx index 136bef2..e6e2ba9 100644 --- a/src/renderer/src/main.tsx +++ b/src/renderer/src/main.tsx @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' diff --git a/src/renderer/src/ot/cmAdapter.ts b/src/renderer/src/ot/cmAdapter.ts index 852402d..87c23bf 100644 --- a/src/renderer/src/ot/cmAdapter.ts +++ b/src/renderer/src/ot/cmAdapter.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // Bidirectional conversion: CM6 ChangeSet <-> Overleaf OT ops import type { ChangeSet, Text, ChangeSpec } from '@codemirror/state' import type { OtOp, InsertOp, DeleteOp } from './types' diff --git a/src/renderer/src/ot/otClient.ts b/src/renderer/src/ot/otClient.ts index a491d23..4a0a873 100644 --- a/src/renderer/src/ot/otClient.ts +++ b/src/renderer/src/ot/otClient.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // OT state machine: Synchronized / AwaitingConfirm / AwaitingWithBuffer import type { OtOp, OtState } from './types' import { transformOps } from './transform' diff --git a/src/renderer/src/ot/overleafSync.ts b/src/renderer/src/ot/overleafSync.ts index e6169fc..787a458 100644 --- a/src/renderer/src/ot/overleafSync.ts +++ b/src/renderer/src/ot/overleafSync.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // Per-document orchestrator: ties CM6 adapter to OT client, IPC bridge import type { EditorView } from '@codemirror/view' import { ChangeSet, Transaction, type Text } from '@codemirror/state' diff --git a/src/renderer/src/ot/transform.ts b/src/renderer/src/ot/transform.ts index 846e312..d416a4a 100644 --- a/src/renderer/src/ot/transform.ts +++ b/src/renderer/src/ot/transform.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // OT transform functions for Overleaf's text operation format import type { OtOp } from './types' import { isInsert, isDelete, isComment } from './types' diff --git a/src/renderer/src/ot/types.ts b/src/renderer/src/ot/types.ts index 2732e4f..34e3ff5 100644 --- a/src/renderer/src/ot/types.ts +++ b/src/renderer/src/ot/types.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + // OT type definitions for Overleaf's text operation format /** Insert text at position p */ diff --git a/src/renderer/src/stores/appStore.ts b/src/renderer/src/stores/appStore.ts index 867026c..9e1e141 100644 --- a/src/renderer/src/stores/appStore.ts +++ b/src/renderer/src/stores/appStore.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Yuren Hao +// Licensed under AGPL-3.0 - see LICENSE file + import { create } from 'zustand' export interface FileNode { -- cgit v1.2.3