* feat: add conversations, desktop (Tauri), and offline sync Major new features: - conversations module: Slack-like channels, threads, reactions, pins - Tauri desktop app with local SQLite for offline-first operation - Hybrid logical clock sync engine with conflict resolution - DB provider abstraction (D1/Tauri/memory) with React context Conversations: - Text/voice/announcement channels with categories - Message threads, reactions, attachments, pinning - Real-time presence and typing indicators - Full-text search across messages Desktop (Tauri): - Local SQLite database with sync to cloud D1 - Offline mutation queue with automatic replay - Window management and keyboard shortcuts - Desktop shell with offline banner Sync infrastructure: - Vector clock implementation for causality tracking - Last-write-wins with semantic conflict resolution - Delta sync via checkpoints for bandwidth efficiency - Comprehensive test coverage Also adds e2e test setup with Playwright and CI workflows for desktop releases. * fix(tests): sync engine test schema and checkpoint logic - Add missing process_after column and sync_tombstone table to test schemas - Fix checkpoint update to save cursor even when records array is empty - Revert claude-code-review.yml workflow changes to match main --------- Co-authored-by: Nicholai <nicholaivogelfilms@gmail.com>
33 lines
939 B
TypeScript
Executable File
33 lines
939 B
TypeScript
Executable File
import type { NextConfig } from "next";
|
|
|
|
const nextConfig: NextConfig = {
|
|
eslint: {
|
|
ignoreDuringBuilds: true,
|
|
},
|
|
experimental: {
|
|
optimizePackageImports: [
|
|
"@tabler/icons-react",
|
|
"lucide-react",
|
|
"@radix-ui/react-icons",
|
|
"recharts",
|
|
"@workos-inc/node",
|
|
"date-fns",
|
|
"remeda",
|
|
"framer-motion",
|
|
],
|
|
},
|
|
// Node.js native modules that should not be bundled for edge/browser
|
|
serverExternalPackages: ["better-sqlite3"],
|
|
};
|
|
|
|
export default nextConfig;
|
|
|
|
// Enable calling `getCloudflareContext()` in `next dev`.
|
|
// See https://opennext.js.org/cloudflare/bindings#local-access-to-bindings.
|
|
// Only init in dev -- build and lint don't need the wrangler proxy.
|
|
if (process.env.NODE_ENV === "development") {
|
|
import("@opennextjs/cloudflare").then((mod) =>
|
|
mod.initOpenNextCloudflareForDev()
|
|
);
|
|
}
|