This repository was archived by the owner on Apr 22, 2026. It is now read-only.
Merge dev into main#1
Merged
Merged
Conversation
- Created pnpm-workspace.yaml to manage workspace packages. - Added tsconfig.base.json for TypeScript compiler options. - Introduced turbo.json for task management with Turbo.
Owner
Author
|
@codex review |
|
To use Codex here, create a Codex account and connect to github. |
There was a problem hiding this comment.
Pull request overview
This pull request merges the complete development history from the dev branch into an empty main branch, introducing a full-featured local-first news reader application called "Dispatch" built with Electron, React, and a Node.js backend.
Changes:
- Added complete monorepo structure with workspace configuration (pnpm, turbo)
- Implemented backend server with tRPC API, RSS scraping, LLM-powered summarization, and scheduled refresh
- Created Electron desktop application with React frontend and three-pane UI (sources, articles, reader)
Reviewed changes
Copilot reviewed 78 out of 86 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| turbo.json, pnpm-workspace.yaml, tsconfig.base.json | Monorepo configuration for build orchestration and TypeScript |
| packages/db/* | Database layer with SQLite, Drizzle ORM, schema, migrations, and seed data |
| packages/lib/* | Shared library with AI client abstractions for LLM providers |
| packages/server/* | Backend server with tRPC routes, RSS scraper, LLM integration, scheduler, and tests |
| packages/api/* | Type-safe API client package exporting server router types |
| apps/desktop/* | Electron desktop app with React UI, tRPC client, and IPC communication |
| scripts/check-secrets.sh | Security script to detect API key leaks in repository |
| .gitignore, package.json | Root workspace configuration and ignore rules |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Implement Phase 2.1 advanced scraping: - L2 scraping via fetch + JSDOM + @mozilla/readability for static HTML - L3 scraping via Playwright headless browser for SPAs - Automatic fallback chain: RSS → HTML → SPA with strategy caching - p-queue concurrency limiter (max 3 concurrent scrapes) - New scrapingStrategy column on sources table (via migration) - Scheduler and routes updated to use fallback chain + queue - 7 automated tests covering extraction, fallback, concurrency, and browser lifecycle Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…date LLM integration
…ores UI with sliders
…extraction and scraping processes
…ge and GeneralTab components
…er and add related API method
… format detection
- Added `grammy` package for Telegram bot integration. - Introduced `notificationsRouter` for managing notification settings. - Implemented notification service to handle sending digests and breaking news alerts. - Updated settings schema to include notification configurations. - Enhanced digest generation to send notifications if enabled. - Added procedures for managing pairing codes and delivery status. - Integrated notification checks in article processing workflow.
- Introduced a shared schedule shape for fetch, pipeline, and digest tasks in `dispatch.settings.json`, consolidating `fetchSchedule`, `pipelineSchedule`, and digest scheduling fields into a single `schedules` key. - Refactored the scheduler service to utilize a unified cron resolution logic, replacing individual functions for each task with a single `resolveScheduleCron`. - Updated frontend components to read and write the new `schedules` structure, ensuring compatibility with the updated settings schema. - Removed deprecated settings keys and adjusted related schemas in Zod for validation. - Enhanced the `getSchedulerSnapshot()` function to reflect the new unified structure, providing a consistent interface for scheduled task data. - Updated tests and documentation to align with the new configuration and functionality.
- Implemented an onboarding wizard to guide users through provider setup and adding their first source. - Created `ErrorBoundary` component to handle rendering errors gracefully. - Updated settings schema to include `onboardingComplete` flag. - Added server bundling script to package the server as a standalone process within the Electron app. - Integrated auto-update functionality using `electron-updater` and configured macOS code signing. - Established release infrastructure with versioning, LICENSE file, and CI/CD workflows for signed releases.
- Refactor SourcesPage to display SourceList and SourceArticlesPanel side by side. - Implement article count display for each source in SourceList. - Create SourceArticlesPanel to show articles for the selected source with management actions. - Add delete and reprocess functionality for articles, including bulk operations. - Enhance navigation to allow returning to Sources page from article viewer. - Update server-side routes to support new article management mutations.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MVP