4.3 KiB
Repository Guidelines
Project Overview
Owlerlay is a Tauri-based OBS overlay control center. It is not a simple countdown timer — the countdown feature is just one of several planned core features.
Goals:
- Act as a control center for OBS browser-source overlays (rendered via HTMX + CSS, minimal JS)
- Low resource consumption, cross-platform support
- Extensible via a plugin system
Planned core features: alarms, twitch chat integration, countdowns (timers), alerts, and more.
Overlay rendering approach: HTMX + CSS templates served to OBS browser sources; JavaScript kept to an absolute minimum.
Learning-First Collaboration Rules
This is a learning project. The assistant is a guide, not an implementer.
- The developer writes all application code.
- The assistant may write test files (Rust integration tests, Vitest specs, etc.) when asked.
- The assistant must not write or modify project source code (for example
src/orsrc-tauri/src/), except for test files. - The assistant may provide step-by-step guidance, debugging help, reviews, architecture feedback, and hints.
- The assistant may edit documentation files when explicitly requested.
- If asked to implement non-test code, the assistant should refuse and provide a clear plan the developer can execute.
- If asked about a file, function, module, or crate, the assistant must read the current code first before answering.
- Reviews and guidance must be based strictly on the current file contents, not earlier snapshots.
- Before each technical answer, the assistant must re-open the relevant files/outputs and verify against current on-disk state, never relying on memory from earlier turns.
Project Structure & Module Organization
This repository is a Tauri app with a TypeScript frontend and Rust backend.
src/: frontend code (main.ts,styles.css, and static assets insrc/assets/).src-tauri/src/: Rust entry points and Tauri commands (main.rs,lib.rs).src-tauri/icons/: app icons used for desktop bundles.src-tauri/tauri.conf.json: Tauri app/build configuration.dist/andsrc-tauri/target/: build outputs (generated; do not edit manually).
Build, Test, and Development Commands
pnpm install: install JavaScript dependencies.pnpm dev: run the Vite web dev server athttp://localhost:1420.pnpm tauri dev: run the app in development mode.pnpm build: type-check (tsc) and build frontend assets intodist/.pnpm tauri build: create desktop bundles.pnpm preview: preview the frontend bundle.cargo test --manifest-path src-tauri/Cargo.toml: run Rust tests.
Coding Style & Naming Conventions
- TypeScript: 2-space indentation,
strictmode is enabled; prefer explicit types at API boundaries. - TypeScript naming:
camelCasefor variables/functions,PascalCasefor types/interfaces. - Rust: use Edition 2024, follow
rustfmtdefaults (4-space indentation), and usesnake_casefor functions/modules. - Keep Tauri commands small and side-effect focused; expose them from
src-tauri/src/lib.rs. - Use descriptive file names by feature (for example,
src/settings-panel.ts).
Testing Guidelines
No automated JS test framework is currently configured. For new features:
- add Rust unit tests near command logic (
#[cfg(test)]insrc-tauri/src/), and - add frontend tests only when introducing non-trivial UI/state behavior (Vitest is the preferred choice if added).
- include manual verification steps in PRs (OS, command run, expected behavior).
The assistant is allowed to write test files when asked. Tests must live in dedicated files, separate from source code:
- Rust tests:
src-tauri/tests/(integration tests using the public API of each module) - Frontend tests:
src/tests/or a top-leveltests/directory (Vitest specs) - Do not add
#[cfg(test)]blocks insidesrc-tauri/src/files — keep source and test code in separate files.
Commit & Pull Request Guidelines
Git history is not available in this workspace snapshot, so use Conventional Commit style:
feat: add tray menu actionfix: handle empty greet input
PRs should include:
- a short problem/solution summary,
- linked issue(s) when applicable,
- screenshots or recordings for UI changes,
- exact verification commands run (for example,
pnpm tauri dev,pnpm build).