Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
923fd81
feat: scaffold Tauri v2 + React + TypeScript + Tailwind project
tomasmach Mar 30, 2026
3a32b3e
chore: clean up scaffold boilerplate
tomasmach Mar 30, 2026
529d1e8
feat: add error types with thiserror
tomasmach Mar 30, 2026
2883674
feat: add provider system with DataSource trait and registry
tomasmach Mar 30, 2026
ac1a7e3
feat: add SQLite database module with queries and tests
tomasmach Mar 30, 2026
d3042a3
fix: address code review findings for providers and db modules
tomasmach Mar 30, 2026
7243e78
feat: add Discord cache provider with path detection
tomasmach Mar 30, 2026
cf2eec1
feat: add custom directory provider
tomasmach Mar 30, 2026
598edd0
feat: add frontend core with typed API, theme, and cache hooks
tomasmach Mar 30, 2026
bb37876
feat: add sidebar and title bar components
tomasmach Mar 30, 2026
c19778c
feat: add gallery with thumbnails, filters, and infinite scroll
tomasmach Mar 30, 2026
76f905c
feat: add preview modal with actions and keyboard navigation
tomasmach Mar 30, 2026
eccf65f
feat: add settings panel with source management and theme toggle
tomasmach Mar 30, 2026
0c109ef
fix: improve clipboard, save filenames, and add thumbnail management
tomasmach Mar 30, 2026
673a7a8
fix: add scan toast, source filter, show in folder, and settings impr…
tomasmach Mar 30, 2026
7f406dc
fix: add missing settings module and Cargo.toml update
tomasmach Mar 30, 2026
6756fd7
docs: update style guide to match Peekache codebase
tomasmach Mar 30, 2026
354f59f
docs: add CLAUDE.md project configuration
tomasmach Mar 30, 2026
d8884ad
refactor: rename project from Peekache to Fossick
tomasmach Mar 30, 2026
af61ebf
feat: add Chromium cache parsing, content extraction, and scan logging
tomasmach Mar 30, 2026
95185fc
fix: support Chromium v9 cache entries and video thumbnails
tomasmach Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Dependencies
node_modules/

# Build outputs
dist/
dist-ssr/
build/

# Tauri build artifacts
src-tauri/target/
src-tauri/gen/

# Environment files
.env
.env.local
.env.*.local

# Editor directories
.vscode/
.idea/
*.swp
*.swo
*~

# OS files
.DS_Store
Thumbs.db

# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# TypeScript build info
*.tsbuildinfo
76 changes: 76 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Fossick

Tauri v2 desktop app for browsing, previewing, and managing cached media from Discord and other data sources.

## Quick Start

```bash
npm run tauri dev
```

## Tech Stack

- **Backend:** Rust (src-tauri/)
- **Frontend:** React 19 + TypeScript + Tailwind CSS v4 (src/)
- **Database:** SQLite via sqlx
- **Desktop:** Tauri v2 with plugins (dialog, clipboard-manager, shell)
- **Thumbnails:** `image` crate for images, `ffmpeg` for video frames

## Project Structure

```
src-tauri/src/ — Rust backend
lib.rs — app setup, module declarations
commands.rs — Tauri #[command] handlers
cache.rs — CacheEngine (scan, thumbnails, file ops)
db.rs — SQLite queries
error.rs — Error types
settings.rs — AppSettings JSON persistence
providers.rs — DataSource trait, registry
providers/ — Discord, Custom providers

src/ — React frontend
lib/tauri.ts — typed invoke wrappers
hooks/ — useCache, useTheme, useInfiniteScroll
components/ — Gallery, Preview, Settings, Sidebar, etc.
providers/ — frontend provider metadata
```

## Commands

```bash
# Development
npm run tauri dev

# Build
npm run tauri build

# Rust tests
cd src-tauri && cargo test

# TypeScript check
npx tsc --noEmit

# Rust lint
cd src-tauri && cargo clippy
```

## Code Style

Follow `RUST_STYLE_GUIDE.md` for all Rust code. Key rules:
- No `mod.rs` files — use `providers.rs` as module root
- `//!` doc comment at top of every Rust file
- Import order: crate-local, external, std (separated by blank lines)
- `thiserror` for error enums, `anyhow` for application-level errors
- `Arc<str>` for immutable string IDs
- `tracing` for logging (never `println!` or `dbg!`)
- No `.unwrap()` in production code

## Architecture

- **Providers** implement the `DataSource` trait — each owns its extraction logic
- **CacheEngine** orchestrates scanning across providers, stores entries in SQLite, generates thumbnails
- **Tauri commands** are thin wrappers delegating to CacheEngine and db module
- **Frontend** calls commands via typed `api` object in `lib/tauri.ts`
- **Settings** persisted as JSON in Tauri's app data directory
- **Entries** persisted in SQLite for instant gallery load on app launch
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Fossick

Desktop app for browsing, previewing, and managing cached media from Discord and other data sources. Built with Tauri v2, React, and Rust.

## Development

```bash
npm install
npm run tauri dev
```

## Build

```bash
npm run tauri build
```
Loading