| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs: update paths for src/lib domain layout Document the new lib package layout and rewrite path references in AGENTS.md and development/backend/frontend docs. | 3 个月前 | |
docs(agent): update blank-window postmortem for the AI component migration - Point source lists at context-source-links and agent-citation-link - Note that openCitation routes HTTP(S) links through the opener plugin | 14 小时前 | |
refactor(agent): migrate AI interfaces to shadcn primitives | 18 小时前 | |
docs: record how arXiv HTML failures are classified Co-authored-by: Cursor <cursoragent@cursor.com> | 5 小时前 | |
fix(agent): repair ACP history sessions Fix #209 | 2 个月前 | |
docs: record compatibility cleanup decisions and verification | 13 天前 | |
docs: update paths for src/lib domain layout Document the new lib package layout and rewrite path references in AGENTS.md and development/backend/frontend docs. | 3 个月前 | |
docs: record the resize jank findings Adds the TOC observer retrospective and a survey of how comparable apps handle pane and window resizing, updates the sash jank writeup with the measured numbers and the corrected WebKit content-visibility conclusion, and adds the release-checklist rows for the rail and window-edge gestures. | 18 天前 | |
fix(agent): restore local Dsh history after restart | 25 天前 | |
fix(shortcuts): scope file-tree clipboard keys to the tree surface The file-tree actions registered ⌘X/⌘V/⌘⌫/⌘← globally and called preventDefault on every non-text target. That suppressed the native paste/cut events, so Excalidraw's canvas (which pastes clipboard images only from a real paste event) ignored ⌘V while the OS context-menu Paste still worked. Gate the tree-only shortcuts on the file tree being the last interacted surface (tracked via pointerdown/focusin on [data-file-tree], since WebKit does not focus <button> rows on click). Elsewhere the keystroke now falls through to native cut/paste. | 1 个月前 | |
docs: drop one-off bug notes and in-repo screenshots Keep bugfix writeups that record constraints likely to regress, and move the macOS signing guide next to the release docs. Co-authored-by: Cursor <cursoragent@cursor.com> | 11 天前 | |
refactor(agent): migrate AI interfaces to shadcn primitives | 18 小时前 | |
fix(import): race free-MT engines for NOTES abstract Translate paper abstracts with bing/huoshan/tencent in parallel and take the first success so worst-case wall time is one timeout (~5s) instead of three sequential waits. Omit the NOTES abstract blockquote when every engine fails. | 3 个月前 | |
docs: drop one-off bug notes and in-repo screenshots Keep bugfix writeups that record constraints likely to regress, and move the macOS signing guide next to the release docs. Co-authored-by: Cursor <cursoragent@cursor.com> | 11 天前 | |
fix(import): ship PDFium with the app so local PDF parsing works liteparse dlopens PDFium from the build machine's download cache path, so installed builds panicked instead of producing PAPER.md, and the parse job still reported success. Stage the library into the bundle, locate it from the executable at runtime, and surface real parse failures to the job center and the CLI. Fix #303 | 2 个月前 | |
fix(window): run macOS window tiling on the main thread NSWindow.setCollectionBehavior: traps in AppKit's window-management coordinator when called off the main thread. window_new / doc_window_open are async commands (needed so webview creation never runs inside the IPC callback), so enable_window_tiling crashed the whole app on every new window instead of opening it. Hop back to the main thread with run_on_main_thread before touching the NSWindow. Fix #897 | 9 小时前 | |
fix(agent): keep scratch fallback in a dedicated directory (#570) Use an Agentero-specific subdirectory when the data directory cannot be created. Propagate creation failures before launching an ACP agent instead of using the entire temporary directory. Add deterministic coverage for data-directory reuse, dedicated fallback, and failure at both locations; update the cwd documentation. | 1 个月前 | |
fix(window): restore macOS main window min size after config merge tauri.macos.conf.json replaced the whole app.windows array and dropped minWidth/minHeight (and dragDropEnabled). Repeat the base window fields so the main window stays at least 960×520. | 1 个月前 | |
perf(editor): skip offscreen Markdown blocks while reading Long notes reflowed and repainted the whole document on every pane resize and scroll, making reading and side-rail drags janky (#702). While the live editor is unfocused, apply content-visibility: auto to top-level block wrappers so Chromium skips layout and paint for offscreen blocks; contain-intrinsic-size: auto caches each block's real height after first render. Focus disables it, so editing, caret and IME keep their uncontained semantics. Gated to non-WebKit engines (WebView2 etc.) since per-element content-visibility is slower on WebKit. Fix #702 | 30 天前 | |
fix(pdf): preserve figures with missing or cross-page captions Preserve MinerU caption text and geometry, recover numbered PDF captions, and keep reliable uncaptioned figures. Backfill existing MinerU caches locally and keep cross-page coordinates separate. Refs #704 | 30 天前 | |
docs: record how ModelScope restores imported rows A reload asks the library which arXiv ids are already present instead of trusting the page. Co-authored-by: Cursor <cursoragent@cursor.com> | 15 小时前 | |
fix(editor): stop silently truncating notes on MDX brace errors Notes with LaTeX braces in prose (\(...\{...\}\), \max\{a,b\}) made remarkMdx throw; @platejs/markdown then fell back to splitIncompleteMdx, which treats inline math such as $\rho<1$ as an unclosed JSX tag, cuts the source there and silently drops every following block. A 250 KB NOTES.md rendered only the first ~11%, with no error in the log. Escape braces outside code/math to entities before deserialize so MDX never sees a JS expression, and when an MDX parse still fails, re-parse the whole body without MDX instead of accepting Plate's lossy two-part recovery. Count equation texExpression in the status-bar stats too, so math-heavy notes no longer read ~40% short and a truncated one cannot hide behind a plausible number. | 16 天前 | |
fix(editor): stop silently truncating notes on MDX brace errors Notes with LaTeX braces in prose (\(...\{...\}\), \max\{a,b\}) made remarkMdx throw; @platejs/markdown then fell back to splitIncompleteMdx, which treats inline math such as $\rho<1$ as an unclosed JSX tag, cuts the source there and silently drops every following block. A 250 KB NOTES.md rendered only the first ~11%, with no error in the log. Escape braces outside code/math to entities before deserialize so MDX never sees a JS expression, and when an MDX parse still fails, re-parse the whole body without MDX instead of accepting Plate's lossy two-part recovery. Count equation texExpression in the status-bar stats too, so math-heavy notes no longer read ~40% short and a truncated one cannot hide behind a plausible number. | 16 天前 | |
docs: record the resize jank findings Adds the TOC observer retrospective and a survey of how comparable apps handle pane and window resizing, updates the sash jank writeup with the measured numbers and the corrected WebKit content-visibility conclusion, and adds the release-checklist rows for the rail and window-edge gestures. | 18 天前 | |
fix(agent): keep opencode 2.0.22 custom model catalog Fix #638 opencode 2.0.22 returns a partial model catalog on session/new and pushes the complete one via config_option_update ~40ms later (2.0.3 returned it all at once). The warm result and the pooled slot snapshot recorded the initial partial list, then overwrote the richer push, so the picker lost providers. - Backend: the warm-idle connection now folds config_option_update into the catalog the warm result reads (store_richer_models), and setup writes back through the same richer-wins rule. - Frontend: applyModelsEvent keeps the richest catalog seen for an agent in this panel session (mergeModelChoices), so a stale warm result or pooled slot cannot shrink the picker. The record is in-memory only, so a catalog that legitimately removes models on a fresh start still wins. Verified against opencode 2.0.3 / 2.0.18 / 2.0.22 over ACP. | 30 天前 | |
| 26 天前 | ||
feat(file-tree): expand paper rows that have attachments Show a chevron on a paper leaf only when {paper}/attachments/ contains files, and lift those children under the paper. Clicking the row still opens the paper; internals stay hidden. | 2 个月前 | |
fix(pdf): keep highlight geometry aligned on rotated pages Highlights and the selection tint paint unrotated PDF points. On /Rotate pages that layer uses the same transform as the tiles, so zoom no longer walks the mark off the glyphs. Upright pages render with no extra frame. Refs #735 | 22 天前 | |
fix(pdf): flash internal-link landing and reword back chip (Ref #505) Two follow-ups to 7aef34a3: - getLinkDestination now also returns the destination's x anchor (XYZ params.x / FitR view[0], null when only a row is pinned) and the navigated callback carries it to the viewer - flashJumpTarget turns the anchor into a one-row highlight from the anchor x to the right margin and reuses the amber citation focus flash (hold, then fade), so the reader sees where the link landed; region jumps (figures/tables via scrollToLayoutRegion) already flash their region - chip label drops the page number ("Jump back" / "返回跳转前") — the landing flash answers "where am I", the chip only promises "go back" Co-Authored-By: Claude Code <noreply@anthropic.com> | 1 个月前 | |
refactor(workspace): split actions into navigation, persistence, and viewer The workspace action module had become the default place for tabs, saves, and PDF jumps. Those functions now live in three modules with a one-way import graph, and the old path re-exports the same public surface. Co-authored-by: Cursor <cursoragent@cursor.com> | 12 天前 | |
docs: record how a PDF's code repository is chosen The scan checks the abstract, first-page footnotes, and the ending before the rest of the paper. Co-authored-by: Cursor <cursoragent@cursor.com> | 14 小时前 | |
fix(viewer): register reloaded pdf buffers under a fresh document id The app-wide PDFium engine caches documents by documentId. A reloaded buffer kept the stable tab id, so the new bytes were rejected: EmbedPDF's registry destroy closes the old document only after the replacement open is queued (destroy is async; the worker queue ranks openDocumentBuffer above closeDocument), and PdfCache.setDocument re-uses the existing context for a known id while freeing the freshly loaded pointer. The pane therefore kept rendering the stale PDFium document until a full unmount. Fold a per-ArrayBuffer revision into the id so each re-read from disk registers a fresh document; URL sources keep the base id. | 1 个月前 | |
fix(pdf): release documents opened during teardown | 5 天前 | |
fix(pdf): keep the shared layout ONNX session across viewer teardown Switching papers released the runtime a headless layout job was still using, so inference failed with an invalid session id. Co-authored-by: Cursor <cursoragent@cursor.com> | 4 天前 | |
fix(pdf): make layout translation complete and retryable Preserve full layout source text, split oversized blocks into safe chunks, retry failed units without discarding successful translations, and keep incomplete jobs explicitly retryable. Guard cancelled runs from writing late results, and verify translated overlay fit against real DOM metrics. | 1 个月前 | |
fix(pdf): keep links out of annotation selection Lock only the Link annotation category and preserve its border with a passive renderer. Let annotation containers pass pointers through to the existing citation navigation layer so translated text stays selectable. Disable EmbedPDF's URI auto-opener to keep external navigation in the host opener. Validated with 57 focused tests, a real PDFium/EmbedPDF browser comparison, TypeScript/Biome checks, production build, and strict documentation build. Refs #690 | 1 个月前 | |
docs(pdf): record native performance and persistence validation | 5 天前 | |
fix(pdf): rotate tiling raster and placement for /Rotate pages The tiling plugin computed tile rects in unrotated content space and rendered them without rotation, so /Rotate 90 pages painted sideways portrait tiles over the fixed landscape base layer, overflowing the page shell and overlapping the next page. Extend the plugin-tiling patch: pass effective rotation to the engine in renderTile, include rotation in tile ids, and transform each tile screenRect into the rotated container via transformRect before CSS placement. Verified in an isolated-port harness: page 4 tiles raster landscape-upright with no overflow and no visual overlap. | 1 个月前 | |
fix(pdf): cancel stale layout analysis documents Fixes #252 | 2 个月前 | |
docs: drop one-off bug notes and in-repo screenshots Keep bugfix writeups that record constraints likely to regress, and move the macOS signing guide next to the release docs. Co-authored-by: Cursor <cursoragent@cursor.com> | 11 天前 | |
fix: prevent Windows PDF scroll endpoint jumps Coalesce deferred viewport scroll requests and cancel stale requests when an explicit wheel input starts. Keep programmatic scroll events from virtual page reordering, zoom/layout changes, and dual-pane synchronization out of the cancellation path, and disable scroll anchoring for the virtual PDF viewport. | 1 个月前 | |
fix(pdf): skip reading-position restore when user already scrolled (#427) On Windows/WebView2 with fractional DPR the EmbedPDF scroll plugin may report capability readiness after the user has already paged away from the first page. The restore effect then scrolled to the saved earlier page and yanked the view back while the user was actively scrolling. Guard the restore by reading the current scroll metrics: if currentPage > 1 the user has already moved past the first page, so mark the restore as done instead of jumping. Fix #427 | 2 个月前 | |
fix(agent): keep scratch fallback in a dedicated directory (#570) Use an Agentero-specific subdirectory when the data directory cannot be created. Propagate creation failures before launching an ACP agent instead of using the entire temporary directory. Add deterministic coverage for data-directory reuse, dedicated fallback, and failure at both locations; update the cwd documentation. | 1 个月前 | |
docs(docs): 重构与整理文档目录与内容结构 - 移除 docs/index.md,重构文档层级和章节安排 - 调整文档指向,新增和细化前端、后端、开发、使用、Bug 修复等目录 - 更新并规范 MkDocs 配置,重构导航与侧边栏结构 - 细化 Agent 相关文档,新增 backend/agent.md - 修正文档中多处链接指向,统一到新的文档路径 - 调整 README 中文档描述,匹配文档目录结构更新 - 统一文档中前端、后端文档引用,更明确区分职责边界 - 添加文档更新说明,明确修改 UI、数据契约须同步文档,并适配最新发布流程 | 3 个月前 | |
docs(docs): 重构与整理文档目录与内容结构 - 移除 docs/index.md,重构文档层级和章节安排 - 调整文档指向,新增和细化前端、后端、开发、使用、Bug 修复等目录 - 更新并规范 MkDocs 配置,重构导航与侧边栏结构 - 细化 Agent 相关文档,新增 backend/agent.md - 修正文档中多处链接指向,统一到新的文档路径 - 调整 README 中文档描述,匹配文档目录结构更新 - 统一文档中前端、后端文档引用,更明确区分职责边界 - 添加文档更新说明,明确修改 UI、数据契约须同步文档,并适配最新发布流程 | 3 个月前 | |
docs: record the unrelated re-render audit and fixes | 19 天前 | |
fix(import): strip staging prefix from path-less drop file names Path-less OS drops (macOS WKWebView has no File.path) are staged as ~/.agentero/import-tmp/<millis>-<uuid8>-<name>, and the staged path was used to derive the paper title/id, leaking the staging stamp into the title, paper id, folder name, and PDF file name. Derive title/id from the original name instead: strip the exact staging stamp only when the source path is inside the Host staging directory and the stem matches the stamp pattern, so ordinary local file names (arXiv ids, DOIs, user PDFs) are untouched. Already imported entries are not retro-renamed; metadata recognition still renames resolved papers to their canonical id. Fix #801 | 13 天前 | |
docs: record the resize jank findings Adds the TOC observer retrospective and a survey of how comparable apps handle pane and window resizing, updates the sash jank writeup with the measured numbers and the corrected WebKit content-visibility conclusion, and adds the release-checklist rows for the rail and window-edge gestures. | 18 天前 | |
Fix/translation links quickchat highlight (#751) * fix(translate): keep citation and ref links in layout translation Mask bracket citations, author-year cites, figure and section refs, URLs, and Markdown links before translation, then reattach the original targets to those tokens in the translated glyphs. Refs #732 * fix(translate): keep heading size aligned with source hierarchy Size section titles from the source box and grow the overlay downward when the translation is longer, instead of shrinking the glyphs to fit. Refs #732 * fix(pdf): keep quick-chat selection highlights visible Paint ask selections in the annotation yellow after the card closes, and use the translated boxes while a full-page translation is showing. Fix #732 * fix(translate): match spaced and translated author-year cites PDF text pads the parenthesis and the comma, and the translator then rewrites them to fullwidth brackets, a Chinese comma, and 等人. The old mask missed both forms, so the overlay had no clickable anchors. Refs #732 * fix(translate): size one-line headings from the raw box height A section-title strip is about one em tall. Subtracting paragraph padding collapsed those headings to the minimum size, below body text. Refs #732 * fix(translate): keep section titles slightly larger than page body Floor short heading strips to the same-page body size × 1.35 so translated section titles stay above paragraph text, while still sizing from the source layout box for hierarchy. Refs #732 * fix(pdf): keep quick-chat range highlight after card closes Empty ask drafts were discarded on dismiss and pins only tracked threads with a question, so the yellow selection vanished and only the gutter icon remained. Keep drafts and paint any ask with geometry. Fix #732 * fix(translate): match translated link ink and split adjacent cites Paint each preserved token with the original glyph fill and leave off the extra underline. A group such as [17,38] becomes one target per adjacent link, and repeated copies of the same rectangle count once. * fix(translate): keep grouped cites on their glyphs and open dual-pane links A bracket group such as [17,38] now splits only when each link center sits on that token. The dual-pane translation view scrolls to citation targets and opens URLs. * fix(translate): bind reordered citations to their source links A translated token keeps the link of the source token with the same label, so a clause written as [2] before [1] still opens each citation's own target. * fix(translate): keep the dual-pane link store out of viewer components The layout module imported a viewer text-link type, which breaks the lib-no-components dependency check. * fix(translate): keep unlinked spans and balanced URL parentheses An interval such as [0,1] was taking the next citation whenever glyph clustering could not split it. When the glyphs show no link center on that span, leave it plain. Bare and Markdown URLs keep a closing parenthesis that belongs to the address and still drop a prose one. * fix(pdf): sample mounted link glyphs and shift dual-pane jumps Full-document translation listed every page as pending, so both panes read every linked page before publishing any glyph. The source viewer now samples the scroller's mounted pages, publishes each page as it finishes, and the translation pane reuses that ink, those glyphs, and the visible-box origins. Citation jumps subtract the CropBox origin before converting into page coordinates. * fix(pdf): keep an unsent quick-chat draft when its card closes The hide button still deleted a draft with no question, so the pin and highlight vanished, while dismissing the card any other way kept them. Both paths now keep that draft until the next Ask starts. Update the #732 docs to match. * fix(translate): split bracket cites and prefetch visible link color Same-line citation rects differ by a fraction of a point, so a raw top-edge sort bound the whole bracket to one target. Queued links above or left of the token are skipped, and spaced PDF brackets stay citations. The visible page's glyph fill is read once while idle and cached, so translation can paint colored links without waiting on that read. A new link-map object does not cancel it. | 22 天前 | |
fix(sidebar): keep the tree painted across paper and note switches Opening a paper or note hydrates a paperMeta-less placeholder, so Paper Info briefly unmounted and resized the tree viewport; WKWebView could then clamp scrollTop without a scroll event and leave the virtualizer with an empty window. Resolve the owning paper from the tree/catalog while tabs hydrate, and add a watchdog that re-syncs the DOM offset when rows exist but the virtualizer reports none. Refs #738 | 16 天前 | |
fix(sidebar): keep file-tree scroll steady across rail toggle and reveals - reveal scrolls minimally (align "auto", VS Code List.reveal semantics) instead of centering, which dragged the tree back to the top whenever the selected row sat near the top of the list - the viewport resize handler re-syncs the virtualizer only on height changes; width-only changes (left-rail collapse/expand animation, manual resize) no longer write scrollTop every frame, and the scroll position is saved while the rail is 0-wide and restored on reopen - drop the full virtualizer remeasure on every expand/collapse: stable row keys keep cached heights valid, and WebKit has no native scroll anchoring to absorb the first-measure corrections - user-initiated folder collapses arm reveal suppression so the flatRows-driven auto-reveal cannot instantly re-expand them Fix #576 Co-Authored-By: Claude Code <noreply@anthropic.com> | 1 个月前 | |
fix(sync): support the Nutstore WebDAV root and verify probe writes Jianguoyun's documented WebDAV address is its account root (https://dav.jianguoyun.com/dav/), but that collection refuses file creation — every PUT answers 404 ObjectNotFound. The probe's first write hit the same 404 and the error was swallowed as "inconclusive", so the connection test passed and the failure only surfaced later on PUT vault.json during the first sync. - probe_conditional_writes: start with an unconditional PUT that must succeed; failures surface during sync_configure with the target directory named. Fail-open now covers only inconclusive conditional-header behavior (the second, stale If-Match PUT). - test_connection: build the probe client with conditional_writes=true so it measures the server instead of echoing a persisted verdict. - normalize_webdav_url: expand the Nutstore root to a dedicated agentero/ folder (fixed name, pure function). Shared by normalized() (saved configs echo the effective address) and WebdavClient::new() (configs persisted before this change heal on read). Fix #681 | 1 个月前 | |
fix(wiki): scope embed refresh to changed targets and stabilize link editing - Notify only embeds whose resolved target was touched by a watcher batch instead of re-rendering on every rebuild - Keep rendered wikilink node identity stable while editing its inline source, promoting to embed without replacing the node - Serialize edited stable source from the node child so stale link attributes never reach disk - Memoize the embedded Markdown projection and document the embed refresh and Spec 5 status | 3 个月前 | |
docs: fix mkdocs strict build failures Remove nav entries for deleted dev docs (roadmap/todo/bug), register new pages (backend doctor/telemetry, frontend onboarding, 8 bug_fix entries), and drop dead links to removed files so the strict docs build passes in CI. | 2 个月前 | |
fix(agent): restore SDK process spawning on Windows Remove the custom Windows Job transport that rejects inherited drive environment entries. Keep warm setup cancellation and pool shutdown, and cover SDK spawning with a Windows regression test. Fix #772. Refs #774 for the remaining Windows process-tree cleanup limitation. | 19 天前 | |
fix(agent): normalize bundled ACP entry paths on Windows | 1 个月前 | |
fix(agent): resolve native Claude binaries inside npm packages | 26 天前 | |
docs(windows): add console window flash retrospective Record the investigation and fix for the two console-window sites on Windows (startup device probe and Diagnostics pane probes): symptom, root cause, changes, verification, and the reusable reg.exe shim technique that proves the absence of a console window deterministically. | 1 个月前 | |
fix(agent): handle Windows Dsh runtime and npm ownership | 25 天前 | |
fix(pdf): enable Windows touchpad pinch zoom | 17 天前 | |
Merge pull request #920 from Aschenbath/windows-atomic-write Co-authored-by: Cursor <cursoragent@cursor.com> | 7 小时前 | |
docs: record the writing split native-selection leak Document the #895 investigation: how a CodeMirror contenteditable anchor let a PDF drag paint a same-height native selection back in the source pane, the fixes, verification, and the checks that keep the PDFium and DOM selection layers separate. | 7 小时前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 14 小时前 | ||
| 18 小时前 | ||
| 5 小时前 | ||
| 2 个月前 | ||
| 13 天前 | ||
| 3 个月前 | ||
| 18 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 11 天前 | ||
| 18 小时前 | ||
| 3 个月前 | ||
| 11 天前 | ||
| 2 个月前 | ||
| 9 小时前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 15 小时前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 18 天前 | ||
| 30 天前 | ||
| 26 天前 | ||
| 2 个月前 | ||
| 22 天前 | ||
| 1 个月前 | ||
| 12 天前 | ||
| 14 小时前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 19 天前 | ||
| 13 天前 | ||
| 18 天前 | ||
| 22 天前 | ||
| 16 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 19 天前 | ||
| 1 个月前 | ||
| 26 天前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 17 天前 | ||
| 7 小时前 | ||
| 7 小时前 |