{"owner":"sohzm","repo":"cheating-daddy","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# Repo Guidelines\n\nThis repository is a fork of [`cheating-daddy`](https://github.com/sohzm/cheating-daddy).\nIt provides an Electron-based real‑time assistant which captures screen and audio\nfor contextual AI responses. The code is JavaScript and uses Electron Forge for\npackaging.\n\n## Getting started\n\nInstall dependencies and run the development app:\n\n```\n1. npm install\n2. npm start\n```\n\n## Style\n\nRun `npx prettier --write .` before committing. Prettier uses the settings in\n`.prettierrc` (four-space indentation, print width 150, semicolons and single\nquotes). `src/assets` and `node_modules` are ignored via `.prettierignore`.\nThe project does not provide linting; `npm run lint` simply prints\n\"No linting configured\".\n\n## Code standards\n\nDevelopment is gradually migrating toward a TypeScript/React codebase inspired by the\n[transcriber](https://github.com/Gatecrashah/transcriber) project. Keep the following\nrules in mind as new files are created:\n\n- **TypeScript strict mode** – avoid `any` and prefer explicit interfaces.\n- **React components** should be functional with hooks and wrapped in error\n  boundaries where appropriate.\n- **Secure IPC** – validate and sanitize all parameters crossing the renderer/main\n  boundary.\n- **Non‑blocking audio** – heavy processing must stay off the UI thread.\n- **Tests** – every new feature requires tests once the test suite is available.\n\n## Shadcn and Electron\n\nThe interface is being rebuilt with [shadcn/ui](https://ui.shadcn.com) components.\nFollow these guidelines when working on UI code:\n\n- **Component directory** – place generated files under `src/components/ui` and export them from that folder.\n- **Add components with the CLI** – run `npx shadcn@latest add <component>`; never hand-roll components.\n- **Component pattern** – use `React.forwardRef` with the `cn()` helper for class names.\n- **Path aliases** – import modules from `src` using the `@/` prefix.\n- **React 19 + Compiler** – target React 19 with the new compiler when available.\n- **Context isolation** – maintain Electron's context isolation pattern for IPC.\n- **TypeScript strict mode** – run `npm run typecheck` before claiming work complete.\n- **Tailwind theming** – rely on CSS variables and utilities in `@/utils/tailwind` for styling.\n- **Testing without running** – confirm `npm run typecheck` and module resolution with `node -e \"require('<file>')\"`.\n\n## Tests\n\nNo automated tests yet. When a suite is added, run `npm test` before each\ncommit. Until then, at minimum ensure `npm install` and `npm start` work after\nmerging upstream changes.\n\n## Merging upstream PRs\n\nPull requests from <https://github.com/sohzm/cheating-daddy> are commonly\ncherry‑picked here. When merging:\n\n1. Inspect the diff and keep commit messages short (`feat:` / `fix:` etc.).\n2. After merging, run the application locally to verify it still builds and\n   functions.\n\n## Strategy and Future Work\n\nWe plan to extend this project with ideas from the\n[`transcriber`](https://github.com/Gatecrashah/transcriber) project which also\nuses Electron. Key goals are:\n\n- **Local Transcription** – integrate `whisper.cpp` to allow offline speech-to-\n  text. Investigate the architecture used in `transcriber/src/main` for model\n  validation and GPU acceleration.\n- **Dual Audio Capture** – capture microphone and system audio simultaneously.\n  `transcriber` shows one approach using a native helper for macOS and\n  Electron's `getDisplayMedia` for other platforms.\n- **Speaker Diarization** – explore tinydiarize for identifying speakers in mono\n  audio streams.\n- **Voice Activity Detection** – skip silent or low‑quality segments before\n  sending to the AI service.\n- **Improved Note Handling** – store transcriptions locally and associate them\n  with meeting notes, similar to `transcriber`'s note management system.\n- **Testing Infrastructure** – adopt Jest and React Testing Library (if React is\n  introduced) to cover audio capture and transcription modules.\n\n### TODO\n\n1. Research and prototype local transcription using `whisper.cpp`.\n2. Add dual‑stream audio capture logic for cross‑platform support.\n3. Investigate speaker diarization options and integrate when feasible.\n4. Plan a migration path toward a proper testing setup (Jest or similar).\n5. Document security considerations for audio storage and processing.\n6. Rebuild the entire UI using shadcn components.\n\nThese plans are aspirational; implement them gradually while keeping the app\nfunctional.\n\n## Audio processing principles\n\nWhen implementing transcription features borrow the following rules from\n`transcriber`:\n\n- **16 kHz compatibility** – resample all audio before sending to whisper.cpp.\n- **Dual‑stream architecture** – capture microphone and system audio on separate\n  channels.\n- **Speaker diarization** – integrate tinydiarize (`--tinydiarize` flag) for mono\n  audio and parse `[SPEAKER_TURN]` markers to label speakers (Speaker A, B, C…).\n- **Voice activity detection** – pre‑filter silent segments to improve speed.\n- **Quality preservation** – keep sample fidelity and avoid blocking the UI\n  during heavy processing.\n- **Memory efficiency** – stream large audio files instead of loading them all at\n  once.\n- **Error recovery** – handle audio device failures gracefully.\n\n## Privacy by design\n\n- **Local processing** – transcriptions should happen locally whenever possible.\n- **User control** – provide clear options for data retention and deletion.\n- **Transparency** – document what is stored and where.\n- **Minimal data** – only persist what is required for functionality.\n\n## LLM plans\n\nThere are placeholder files for future LLM integration (e.g. Qwen models via\n`llama.cpp`). Continue development after the core transcription pipeline is\nstable and ensure tests cover this new functionality.\n"},"files":{"AGENTS.md":"# Repo Guidelines\n\nThis repository is a fork of [`cheating-daddy`](https://github.com/sohzm/cheating-daddy).\nIt provides an Electron-based real‑time assistant which captures screen and audio\nfor contextual AI responses. The code is JavaScript and uses Electron Forge for\npackaging.\n\n## Getting started\n\nInstall dependencies and run the development app:\n\n```\n1. npm install\n2. npm start\n```\n\n## Style\n\nRun `npx prettier --write .` before committing. Prettier uses the settings in\n`.prettierrc` (four-space indentation, print width 150, semicolons and single\nquotes). `src/assets` and `node_modules` are ignored via `.prettierignore`.\nThe project does not provide linting; `npm run lint` simply prints\n\"No linting configured\".\n\n## Code standards\n\nDevelopment is gradually migrating toward a TypeScript/React codebase inspired by the\n[transcriber](https://github.com/Gatecrashah/transcriber) project. Keep the following\nrules in mind as new files are created:\n\n- **TypeScript strict mode** – avoid `any` and prefer explicit interfaces.\n- **React components** should be functional with hooks and wrapped in error\n  boundaries where appropriate.\n- **Secure IPC** – validate and sanitize all parameters crossing the renderer/main\n  boundary.\n- **Non‑blocking audio** – heavy processing must stay off the UI thread.\n- **Tests** – every new feature requires tests once the test suite is available.\n\n## Shadcn and Electron\n\nThe interface is being rebuilt with [shadcn/ui](https://ui.shadcn.com) components.\nFollow these guidelines when working on UI code:\n\n- **Component directory** – place generated files under `src/components/ui` and export them from that folder.\n- **Add components with the CLI** – run `npx shadcn@latest add <component>`; never hand-roll components.\n- **Component pattern** – use `React.forwardRef` with the `cn()` helper for class names.\n- **Path aliases** – import modules from `src` using the `@/` prefix.\n- **React 19 + Compiler** – target React 19 with the new compiler when available.\n- **Context isolation** – maintain Electron's context isolation pattern for IPC.\n- **TypeScript strict mode** – run `npm run typecheck` before claiming work complete.\n- **Tailwind theming** – rely on CSS variables and utilities in `@/utils/tailwind` for styling.\n- **Testing without running** – confirm `npm run typecheck` and module resolution with `node -e \"require('<file>')\"`.\n\n## Tests\n\nNo automated tests yet. When a suite is added, run `npm test` before each\ncommit. Until then, at minimum ensure `npm install` and `npm start` work after\nmerging upstream changes.\n\n## Merging upstream PRs\n\nPull requests from <https://github.com/sohzm/cheating-daddy> are commonly\ncherry‑picked here. When merging:\n\n1. Inspect the diff and keep commit messages short (`feat:` / `fix:` etc.).\n2. After merging, run the application locally to verify it still builds and\n   functions.\n\n## Strategy and Future Work\n\nWe plan to extend this project with ideas from the\n[`transcriber`](https://github.com/Gatecrashah/transcriber) project which also\nuses Electron. Key goals are:\n\n- **Local Transcription** – integrate `whisper.cpp` to allow offline speech-to-\n  text. Investigate the architecture used in `transcriber/src/main` for model\n  validation and GPU acceleration.\n- **Dual Audio Capture** – capture microphone and system audio simultaneously.\n  `transcriber` shows one approach using a native helper for macOS and\n  Electron's `getDisplayMedia` for other platforms.\n- **Speaker Diarization** – explore tinydiarize for identifying speakers in mono\n  audio streams.\n- **Voice Activity Detection** – skip silent or low‑quality segments before\n  sending to the AI service.\n- **Improved Note Handling** – store transcriptions locally and associate them\n  with meeting notes, similar to `transcriber`'s note management system.\n- **Testing Infrastructure** – adopt Jest and React Testing Library (if React is\n  introduced) to cover audio capture and transcription modules.\n\n### TODO\n\n1. Research and prototype local transcription using `whisper.cpp`.\n2. Add dual‑stream audio capture logic for cross‑platform support.\n3. Investigate speaker diarization options and integrate when feasible.\n4. Plan a migration path toward a proper testing setup (Jest or similar).\n5. Document security considerations for audio storage and processing.\n6. Rebuild the entire UI using shadcn components.\n\nThese plans are aspirational; implement them gradually while keeping the app\nfunctional.\n\n## Audio processing principles\n\nWhen implementing transcription features borrow the following rules from\n`transcriber`:\n\n- **16 kHz compatibility** – resample all audio before sending to whisper.cpp.\n- **Dual‑stream architecture** – capture microphone and system audio on separate\n  channels.\n- **Speaker diarization** – integrate tinydiarize (`--tinydiarize` flag) for mono\n  audio and parse `[SPEAKER_TURN]` markers to label speakers (Speaker A, B, C…).\n- **Voice activity detection** – pre‑filter silent segments to improve speed.\n- **Quality preservation** – keep sample fidelity and avoid blocking the UI\n  during heavy processing.\n- **Memory efficiency** – stream large audio files instead of loading them all at\n  once.\n- **Error recovery** – handle audio device failures gracefully.\n\n## Privacy by design\n\n- **Local processing** – transcriptions should happen locally whenever possible.\n- **User control** – provide clear options for data retention and deletion.\n- **Transparency** – document what is stored and where.\n- **Minimal data** – only persist what is required for functionality.\n\n## LLM plans\n\nThere are placeholder files for future LLM integration (e.g. Qwen models via\n`llama.cpp`). Continue development after the core transcription pipeline is\nstable and ensure tests cover this new functionality.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# Repo Guidelines\n\nThis repository is a fork of [`cheating-daddy`](https://github.com/sohzm/cheating-daddy).\nIt provides an Electron-based real‑time assistant which captures screen and audio\nfor contextual AI responses. The code is JavaScript and uses Electron Forge for\npackaging.\n\n## Getting started\n\nInstall dependencies and run the development app:\n\n```\n1. npm install\n2. npm start\n```\n\n## Style\n\nRun `npx prettier --write .` before committing. Prettier uses the settings in\n`.prettierrc` (four-space indentation, print width 150, semicolons and single\nquotes). `src/assets` and `node_modules` are ignored via `.prettierignore`.\nThe project does not provide linting; `npm run lint` simply prints\n\"No linting configured\".\n\n## Code standards\n\nDevelopment is gradually migrating toward a TypeScript/React codebase inspired by the\n[transcriber](https://github.com/Gatecrashah/transcriber) project. Keep the following\nrules in mind as new files are created:\n\n- **TypeScript strict mode** – avoid `any` and prefer explicit interfaces.\n- **React components** should be functional with hooks and wrapped in error\n  boundaries where appropriate.\n- **Secure IPC** – validate and sanitize all parameters crossing the renderer/main\n  boundary.\n- **Non‑blocking audio** – heavy processing must stay off the UI thread.\n- **Tests** – every new feature requires tests once the test suite is available.\n\n## Shadcn and Electron\n\nThe interface is being rebuilt with [shadcn/ui](https://ui.shadcn.com) components.\nFollow these guidelines when working on UI code:\n\n- **Component directory** – place generated files under `src/components/ui` and export them from that folder.\n- **Add components with the CLI** – run `npx shadcn@latest add <component>`; never hand-roll components.\n- **Component pattern** – use `React.forwardRef` with the `cn()` helper for class names.\n- **Path aliases** – import modules from `src` using the `@/` prefix.\n- **React 19 + Compiler** – target React 19 with the new compiler when available.\n- **Context isolation** – maintain Electron's context isolation pattern for IPC.\n- **TypeScript strict mode** – run `npm run typecheck` before claiming work complete.\n- **Tailwind theming** – rely on CSS variables and utilities in `@/utils/tailwind` for styling.\n- **Testing without running** – confirm `npm run typecheck` and module resolution with `node -e \"require('<file>')\"`.\n\n## Tests\n\nNo automated tests yet. When a suite is added, run `npm test` before each\ncommit. Until then, at minimum ensure `npm install` and `npm start` work after\nmerging upstream changes.\n\n## Merging upstream PRs\n\nPull requests from <https://github.com/sohzm/cheating-daddy> are commonly\ncherry‑picked here. When merging:\n\n1. Inspect the diff and keep commit messages short (`feat:` / `fix:` etc.).\n2. After merging, run the application locally to verify it still builds and\n   functions.\n\n## Strategy and Future Work\n\nWe plan to extend this project with ideas from the\n[`transcriber`](https://github.com/Gatecrashah/transcriber) project which also\nuses Electron. Key goals are:\n\n- **Local Transcription** – integrate `whisper.cpp` to allow offline speech-to-\n  text. Investigate the architecture used in `transcriber/src/main` for model\n  validation and GPU acceleration.\n- **Dual Audio Capture** – capture microphone and system audio simultaneously.\n  `transcriber` shows one approach using a native helper for macOS and\n  Electron's `getDisplayMedia` for other platforms.\n- **Speaker Diarization** – explore tinydiarize for identifying speakers in mono\n  audio streams.\n- **Voice Activity Detection** – skip silent or low‑quality segments before\n  sending to the AI service.\n- **Improved Note Handling** – store transcriptions locally and associate them\n  with meeting notes, similar to `transcriber`'s note management system.\n- **Testing Infrastructure** – adopt Jest and React Testing Library (if React is\n  introduced) to cover audio capture and transcription modules.\n\n### TODO\n\n1. Research and prototype local transcription using `whisper.cpp`.\n2. Add dual‑stream audio capture logic for cross‑platform support.\n3. Investigate speaker diarization options and integrate when feasible.\n4. Plan a migration path toward a proper testing setup (Jest or similar).\n5. Document security considerations for audio storage and processing.\n6. Rebuild the entire UI using shadcn components.\n\nThese plans are aspirational; implement them gradually while keeping the app\nfunctional.\n\n## Audio processing principles\n\nWhen implementing transcription features borrow the following rules from\n`transcriber`:\n\n- **16 kHz compatibility** – resample all audio before sending to whisper.cpp.\n- **Dual‑stream architecture** – capture microphone and system audio on separate\n  channels.\n- **Speaker diarization** – integrate tinydiarize (`--tinydiarize` flag) for mono\n  audio and parse `[SPEAKER_TURN]` markers to label speakers (Speaker A, B, C…).\n- **Voice activity detection** – pre‑filter silent segments to improve speed.\n- **Quality preservation** – keep sample fidelity and avoid blocking the UI\n  during heavy processing.\n- **Memory efficiency** – stream large audio files instead of loading them all at\n  once.\n- **Error recovery** – handle audio device failures gracefully.\n\n## Privacy by design\n\n- **Local processing** – transcriptions should happen locally whenever possible.\n- **User control** – provide clear options for data retention and deletion.\n- **Transparency** – document what is stored and where.\n- **Minimal data** – only persist what is required for functionality.\n\n## LLM plans\n\nThere are placeholder files for future LLM integration (e.g. Qwen models via\n`llama.cpp`). Continue development after the core transcription pipeline is\nstable and ensure tests cover this new functionality.\n","category":"root","tokens":1446}]}