Skip to content

Fix/linux build#11

Merged
AnishSarkar22 merged 26 commits into
mainfrom
fix/linux-build
Apr 28, 2026
Merged

Fix/linux build#11
AnishSarkar22 merged 26 commits into
mainfrom
fix/linux-build

Conversation

@AnishSarkar22

Copy link
Copy Markdown
Owner

Description

Motivation and Context

FIX #

Screenshots

API Changes

  • This PR includes API changes

Change Type

  • Bug fix
  • New feature
  • Performance improvement
  • Refactoring
  • Documentation
  • Dependency/Build system
  • Breaking change
  • Other (specify):

Testing Performed

  • Tested locally
  • Manual/QA verification

Checklist

  • Follows project coding standards and conventions
  • Documentation updated as needed
  • Dependencies updated as needed
  • No lint/build errors or new warnings
  • All relevant tests are passing

AnishSarkar22 and others added 26 commits April 25, 2026 04:11
The announcements page is a public, crawlable route but its page.tsx is
'use client', so it can't export metadata itself and falls back to the
root app/layout.tsx. Add a server-component layout.tsx under
app/(home)/announcements/ that exports route-specific metadata (title,
description, canonical, OpenGraph, Twitter) in the same shape as the
neighboring /blog, /changelog, /contact, /privacy, /terms routes.
page.tsx is unchanged.

Canonical URL matches app/layout.tsx's metadataBase
(https://surfsense.com).

Fixes MODSetter#1244
…s components

- Updated icon imports and usages in AssistantMessage, CommentItem, CommentSheet, CommentThread, and InboxSidebar components.
- Enhanced visual consistency by standardizing the reply icon throughout the chat-related UI elements.
Closes MODSetter#1295

The connector indexing route's `_run_indexing_with_notifications` set the
Redis heartbeat key once at the start of indexing and relied on
`on_heartbeat_callback` (only fired in Phase 2 per-document loops) to
refresh it. The GitHub connector's Phase 1 runs `gitingest` as a blocking
subprocess via `asyncio.to_thread`, so for any repo larger than the
2-minute TTL, the key expires before Phase 2 starts. The
`cleanup_stale_indexing_notifications_task` then marks the document as
failed with the misleading "Sync was interrupted unexpectedly. Please
retry." message — even though the indexing thread is still running and
gitingest's own subprocess timeout is 900 seconds.

Add a background asyncio coroutine that refreshes the Redis key every
60 seconds for the duration of the indexing call. Same pattern already
in use at app/tasks/celery_tasks/document_tasks.py:_run_heartbeat_loop,
just adapted to use the route's get_heartbeat_redis_client() and
_get_heartbeat_key() helpers.

Cancellation runs in the `finally` block BEFORE the heartbeat-key
delete so the loop cannot race and re-create the key after we have
deleted it. The new `HEARTBEAT_REFRESH_INTERVAL = 60` constant mirrors
the celery task module's value.
…er addition, improving user feedback on folder limits
…ling & preserved incremental UX for local folder mode
…lization, and implement caching for filesystem settings
… chokidar for real-time updates on local folder changes
…rsor-based pagination and enhancing path normalization methods
… standardize fallback filename to 'notes.md'
…nsions and enhance folder expansion persistence in the UI
…-metadata-dev

feat(announcements): add SEO metadata via server layout.tsx
…e number display, disabling folding, and modifying whitespace rendering options
…ctor-heartbeat

fix(connectors): refresh Redis heartbeat during long Phase 1 indexing
…lesystem

fix: improve swappable filesystem architecture
…ugin

feat: introduce Obsidian vault sync plugin
@AnishSarkar22 AnishSarkar22 merged commit 88f3737 into main Apr 28, 2026
9 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants