Add Linux scaffold and PipeWire documentation with ZoomitForMac bundles - #50
Open
Barki Mustapha (devops2626) wants to merge 32 commits into
Open
Add Linux scaffold and PipeWire documentation with ZoomitForMac bundles#50Barki Mustapha (devops2626) wants to merge 32 commits into
Barki Mustapha (devops2626) wants to merge 32 commits into
Conversation
…admap (Issues currently disabled on repo)
…ited/ZoomitForMac-instincts.yaml)
Linux scaffold: platform-agnostic core + detailed PipeWire capture skeleton
…02357 feat: add ZoomitForMac ECC bundle
Copilot started reviewing on behalf of
Barki Mustapha (devops2626)
August 13, 2026 07:00
View session
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a Linux port “scaffold” (Rust workspace + core/capture abstractions) and accompanying documentation that analyzes the existing macOS architecture and outlines a PipeWire/Skia-based Linux roadmap, plus agent/config bundles to support that work.
Changes:
- Add
linux/Rust workspace withzoomit-core(modes + annotations) andzoomit-capture(capture trait + stub backends). - Add architecture/roadmap/investigation docs for PipeWire capture and Skia/tiny-skia rendering.
- Add README pointers and repo-local Codex/Claude agent configuration scaffolding.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Adds fork note linking to new architecture/roadmap docs. |
| linux/README.md | Documents Linux workspace layout, build commands, and PipeWire approach. |
| linux/Cargo.toml | Introduces Linux Rust workspace members. |
| linux/.gitignore | Ignores Linux workspace build artifacts and lockfile. |
| linux/linux-core/Cargo.toml | Defines zoomit-core crate and serde dependency. |
| linux/linux-core/src/lib.rs | Exposes core modules and re-exports types. |
| linux/linux-core/src/mode.rs | Adds mode FSM and coordinator + unit tests. |
| linux/linux-core/src/annotation.rs | Adds annotation model + store + unit tests. |
| linux/linux-capture/Cargo.toml | Defines zoomit-capture crate with optional PipeWire feature deps. |
| linux/linux-capture/src/lib.rs | Wires capture modules and public re-exports. |
| linux/linux-capture/src/traits.rs | Defines ScreenCapture trait and CaptureError. |
| linux/linux-capture/src/frame.rs | Adds captured frame representation and pixel format enum. |
| linux/linux-capture/src/portal.rs | Adds Portal/PipeWire backend skeleton + tests. |
| linux/linux-capture/src/x11.rs | Adds X11 capture placeholder backend. |
| ARCHITECTURE.md | Summarizes macOS architecture and cross-platform path (PipeWire/Skia). |
| docs/LINUX_ROADMAP.md | Defines phased plan and recommended stack for Linux port. |
| docs/PIPEWIRE_INVESTIGATION.md | Captures PipeWire/portal investigation notes and references. |
| docs/SKIA_INVESTIGATION.md | Captures Skia/tiny-skia investigation and recommendation. |
| docs/ISSUES.md | Provides planned issue templates for the Linux roadmap. |
| .codex/config.toml | Adds repo-local Codex CLI + MCP baseline configuration. |
| .codex/AGENTS.md | Documents Codex multi-agent setup and skill locations. |
| .codex/agents/explorer.toml | Adds explorer agent configuration. |
| .codex/agents/reviewer.toml | Adds reviewer agent configuration. |
| .codex/agents/docs-researcher.toml | Adds docs-researcher agent configuration. |
| .agents/skills/ZoomitForMac/SKILL.md | Adds Codex-facing repo skill content. |
| .agents/skills/ZoomitForMac/agents/openai.yaml | Registers the repo skill for the OpenAI agent interface. |
| .claude/skills/ZoomitForMac/SKILL.md | Adds Claude-facing repo skill content. |
| .claude/identity.json | Adds suggested Claude identity baseline. |
| .claude/homunculus/instincts/inherited/ZoomitForMac-instincts.yaml | Adds inherited “instincts” derived from repo analysis. |
| .claude/ecc-tools.json | Adds ECC tools metadata and managed-file inventory. |
Suppressed comments (2)
.agents/skills/ZoomitForMac/SKILL.md:137
- The “Preferred import/export style” examples are TypeScript, but this repository is Swift + Rust. Consider replacing these snippets with Rust (or Swift) examples to avoid confusing guidance.
*Preferred import style*
```typescript
// Use relative imports
import { Button } from '../components/Button'
import { useAuth } from './hooks/useAuth'
Preferred export style
// Use named exports
export function calculateTotal() { ... }
export const TAX_RATE = 0.1
export interface Order { ... }**.claude/skills/ZoomitForMac/SKILL.md:137**
* The “Preferred import/export style” examples are TypeScript, but this repository is Swift + Rust. Consider replacing these snippets with Rust (or Swift) examples to avoid confusing guidance.
Preferred import style
// Use relative imports
import { Button } from '../components/Button'
import { useAuth } from './hooks/useAuth'Preferred export style
// Use named exports
export function calculateTotal() { ... }
export const TAX_RATE = 0.1
export interface Order { ... }</details>
---
💡 <a href="/microsoft/ZoomitForMac/new/main?filename=.github/skills/code-review/SKILL.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add a `code-review` agent skill</a> or configure MCP servers for context-aware, tailored reviews. <a href="https://docs.github.com/en/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review#mcp-servers-and-agent-skills" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn more in the docs.</a>
Comment on lines
+38
to
+43
| #[derive(Debug, Default)] | ||
| pub struct ModeCoordinator { | ||
| mode: AppMode, | ||
| } | ||
|
|
||
| impl ModeCoordinator { |
Comment on lines
+1
to
+20
| [package] | ||
| name = "zoomit-capture" | ||
| version = "0.1.0" | ||
| edition = "2021" | ||
| description = "Screen capture backends for ZoomIt Linux (PipeWire + portal, X11 fallback)" | ||
| license = "MIT" | ||
|
|
||
| [dependencies] | ||
| zoomit-core = { path = "../linux-core" } | ||
| thiserror = "1" | ||
| async-trait = "0.1" | ||
| tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync"], optional = true } | ||
| # Optional real backends – enable with features | ||
| ashpd = { version = "0.9", optional = true } | ||
| # pipewire = { version = "0.8", optional = true } # enable when integrating real PipeWire | ||
|
|
||
| [features] | ||
| default = [] | ||
| # Enable for real portal + PipeWire (requires libpipewire, xdg-desktop-portal at runtime) | ||
| pipewire = ["dep:ashpd", "dep:tokio"] |
Comment on lines
+9
to
+10
| pub use mode::{AppMode, AppCommand}; | ||
| pub use annotation::{Annotation, AnnotationTool, AnnotationColor, AnnotationStyle}; |
Comment on lines
+106
to
+115
| ### Language: Rust | ||
|
|
||
| ### Naming Conventions | ||
|
|
||
| | Element | Convention | | ||
| |---------|------------| | ||
| | Files | camelCase | | ||
| | Functions | camelCase | | ||
| | Classes | PascalCase | | ||
| | Constants | SCREAMING_SNAKE_CASE | |
Comment on lines
+106
to
+115
| ### Language: Rust | ||
|
|
||
| ### Naming Conventions | ||
|
|
||
| | Element | Convention | | ||
| |---------|------------| | ||
| | Files | camelCase | | ||
| | Functions | camelCase | | ||
| | Classes | PascalCase | | ||
| | Constants | SCREAMING_SNAKE_CASE | |
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.