Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
f8ed2f4
Restructure codebase into modular architecture
claude Dec 10, 2025
3c84b42
Fix consistency issues from restructuring review
claude Dec 10, 2025
c4001be
Add Sway compositor support
claude Dec 10, 2025
53ad968
Initial plan
Copilot Dec 11, 2025
256c748
Add Wayland protocol implementations (wlr-toplevel and plasma)
Copilot Dec 11, 2025
dd12fec
Remove old IPC files and update documentation for Wayland protocol su…
Copilot Dec 11, 2025
020ef02
Improve error handling and connection robustness in Wayland event loops
Copilot Dec 11, 2025
62bbffe
Merge pull request #2 from ledati16/copilot/replace-ipc-with-wayland
ledati16 Dec 11, 2025
df25cc8
Initial plan
Copilot Dec 11, 2025
9b72ee8
Fix critical bugs: channel closure detection, race condition, remove …
Copilot Dec 11, 2025
2ee6352
Improve documentation and standardize logging across protocol impleme…
Copilot Dec 11, 2025
9e1f57d
Optimize protocol detection and remove unnecessary connection clone
Copilot Dec 11, 2025
531b83a
Fix clippy warnings - use derive Default and simplify match
Copilot Dec 11, 2025
67666f1
Merge pull request #3 from ledati16/copilot/fix-channel-closed-detection
ledati16 Dec 11, 2025
fe85357
Add graceful shutdown for Wayland event threads
claude Dec 11, 2025
6db9bc8
Rename project from NASW to PWSW (PipeWire Switcher)
claude Dec 11, 2025
180bb1d
Merge pull request #4 from ledati16/claude/rename-nasw-to-pwsw-01Uzyx…
ledati16 Dec 11, 2025
ffd5466
Initial plan
Copilot Dec 11, 2025
8361fe2
Initial plan: Fix Cargo.toml keywords to meet crates.io 5 keyword limit
Copilot Dec 11, 2025
0b58b03
Fix: Reduce Cargo.toml keywords from 7 to 5 for crates.io compliance
Copilot Dec 11, 2025
2d0616f
Initial plan
Copilot Dec 11, 2025
ffbde77
Initial commit - planning IPC and CLI restructure
Copilot Dec 11, 2025
ee5d27f
Merge pull request #5 from ledati16/copilot/update-cargo-keywords
ledati16 Dec 11, 2025
848282f
Implement IPC infrastructure and CLI restructure
Copilot Dec 11, 2025
b5d1fc1
Update README.md with new subcommand documentation
Copilot Dec 11, 2025
298bcd2
Address code review feedback
Copilot Dec 11, 2025
624df0b
Security and code quality improvements
Copilot Dec 11, 2025
79b557d
Fix Wayland protocol detection and dispatch handling
ledati16 Dec 11, 2025
fe2b713
Improve daemon startup UX and error handling
ledati16 Dec 11, 2025
6f07a25
Enhance CLI commands and improve user experience
ledati16 Dec 11, 2025
62aac9f
Add manual sink control commands and improve status output
ledati16 Dec 12, 2025
abcbcfa
Merge pull request #6 from ledati16/copilot/restructure-cli-subcommands
ledati16 Dec 12, 2025
61eb305
Fix critical security and compatibility issues
ledati16 Dec 12, 2025
62308ef
Phase 2: Critical bug fixes and error handling improvements
ledati16 Dec 12, 2025
48f0d17
Phase 2 (Part 2): Complete remaining high-priority fixes
ledati16 Dec 12, 2025
7dfb8c4
Phase 3: Code quality and consistency improvements
ledati16 Dec 12, 2025
e15b1da
Final polish: API improvements and documentation
ledati16 Dec 12, 2025
bafe855
Additional polish: Extract constants and improve error context
ledati16 Dec 12, 2025
03846d5
Extract time constants in format_uptime function
ledati16 Dec 12, 2025
8ac617e
Fix clippy warnings and extract BUG constant
ledati16 Dec 12, 2025
574673f
Pedantic clippy fixes batch 1: Format strings, must_use, and casts
ledati16 Dec 12, 2025
c00a5aa
Pedantic fix: Simplify single-pattern match to if-let
ledati16 Dec 12, 2025
a6025d6
Pedantic clippy fixes: Add backticks to documentation
ledati16 Dec 12, 2025
61a4055
Pedantic clippy fixes: code quality improvements (batch 1)
ledati16 Dec 12, 2025
0ed2186
Pedantic clippy fixes: documentation and minor improvements (batch 2)
ledati16 Dec 12, 2025
f3a7105
Add # Panics documentation to defensive expect calls
ledati16 Dec 12, 2025
b141776
Security fixes: Address code review critical issues
ledati16 Dec 12, 2025
e89bcb9
Increase health check timeout to 500ms
ledati16 Dec 12, 2025
9fc918d
docs: Comprehensive CLAUDE.md update with code quality standards
ledati16 Dec 12, 2025
cd89d34
chore: Apply cargo fmt formatting
ledati16 Dec 12, 2025
5acdbc8
fix: Replace kill command with try_wait() for process checking
ledati16 Dec 12, 2025
065d2f5
feat: Add match_by_index setting and refactor notification settings
ledati16 Dec 13, 2025
dfb198b
docs: Comprehensive README.md rewrite for better UX
ledati16 Dec 13, 2025
8f0a77b
docs: Fix README inaccuracies and reduce verbosity
ledati16 Dec 13, 2025
57aee1a
docs: Fix comment alignment and improve compositor clarity
ledati16 Dec 13, 2025
9feaec9
docs: Fix comment alignment within all code blocks
ledati16 Dec 13, 2025
4cffe05
docs: Restructure README to eliminate inline comments
ledati16 Dec 13, 2025
9f5c4a6
fix: Update tracked window titles on change events
ledati16 Dec 13, 2025
2501c55
refactor: Remove KDE Plasma protocol support
ledati16 Dec 13, 2025
ba3f428
test: Add comprehensive test suite with 54 tests
ledati16 Dec 13, 2025
4dbbcc4
refactor: Fix edge cases and optimize performance
ledati16 Dec 13, 2025
2b1ddf9
feat: Add Terminal User Interface (TUI) with ratatui
ledati16 Dec 14, 2025
1b6db1a
fix: Prevent global shortcuts from blocking modal input
ledati16 Dec 14, 2025
4627d11
feat: Add build versioning with git commit hash
ledati16 Dec 14, 2025
bb4e59f
tui: auto-retrigger previews on window changes; add windows_fingerpri…
ledati16 Dec 14, 2025
c15ed0b
tui: render optimizations for rules list and text field; add windows_…
ledati16 Dec 14, 2025
20f7e79
tui: add cursor-based editing for RuleEditor (left/right/home/end, in…
ledati16 Dec 14, 2025
3ab7e97
tui: horizontal scrolling for text fields; show cursor centered when …
ledati16 Dec 14, 2025
6090db8
tui: add compute_display_window helper and unit tests for text field …
ledati16 Dec 14, 2025
aa2f754
refactor(tui): centralize textfield renderer and add UTF-8 editor hel…
ledati16 Dec 14, 2025
e713ef6
refactor(tui): use shared textfield directly; remove rules wrapper
ledati16 Dec 14, 2025
4d7a7d0
style: run cargo fmt across workspace
ledati16 Dec 14, 2025
8be352a
style: tidy imports and add more editor helper tests
ledati16 Dec 14, 2025
9da7413
tui: fix textfield returns, mouse click mapping and add SimpleEditor …
ledati16 Dec 14, 2025
600f3ea
test(tui): add mouse mapping unit tests for grapheme-aware textfields
ledati16 Dec 14, 2025
9b24cfe
tui: enable mouse capture on init and disable on restore
ledati16 Dec 14, 2025
08d5517
tui(input): handle only left-button clicks; optional mouse debug via …
ledati16 Dec 14, 2025
1b9eb31
tui(input): optional file logging for raw mouse events (PWSW_TUI_LOG_…
ledati16 Dec 14, 2025
b4f8644
tui: remove mouse support and cleanup (changelog)
ledati16 Dec 14, 2025
5fbac07
chore(tui): remove unnecessary CHANGELOG.md
ledati16 Dec 14, 2025
7a55098
tui: revert tick to 80ms; update TEMP_TUI_REFACTOR.md (dirty-driven r…
ledati16 Dec 14, 2025
8f084c8
tui(refactor): update TEMP_TUI_REFACTOR.md with actual Phase 2 progre…
ledati16 Dec 14, 2025
adf4fd7
tui: migrate compiled regex caches to Arc<Regex> and improve preview …
ledati16 Dec 14, 2025
64b4e38
refactor(tui): finalize render/regex optimizations and add cached pad…
ledati16 Dec 14, 2025
ee3466a
docs: update AGENTS.md with TUI refactor contributor checklist and TE…
ledati16 Dec 14, 2025
10d7527
docs: sync AGENTS.md with CLAUDE.md policies and TEMP_TUI_REFACTOR.md…
ledati16 Dec 14, 2025
249046e
chore(docs): require agents to read CLAUDE.md; add docs sync verifier…
ledati16 Dec 14, 2025
820c459
ci(docs): add docs sync workflow to verify AGENTS.md <> CLAUDE.md
ledati16 Dec 14, 2025
a68b7ed
chore(docs): tighten docs-sync verifier and ensure CLAUDE.md mentions…
ledati16 Dec 14, 2025
67d854d
refactor(tui): remove render-time allocations and TEMP_TUI_REFACTOR note
ledati16 Dec 14, 2025
226d146
docs(tui): mark Phase 2 complete in TEMP_TUI_REFACTOR.md
ledati16 Dec 14, 2025
a876083
docs(tui): defer low-ROI Phase 2 items to Phase 3
ledati16 Dec 14, 2025
8e43ea3
tui(editor): add word navigation and delete helpers (Ctrl+Left/Right,…
ledati16 Dec 14, 2025
4a399c7
test(tui): add editor word-navigation tests
ledati16 Dec 14, 2025
cbc185c
test(tui): expand editor word-nav tests; doc: note work completed for…
ledati16 Dec 14, 2025
1e35feb
test(tui): add input integration tests and simulate wrapper
ledati16 Dec 14, 2025
99c1914
tui(ui): improve modal navigation and focus visuals
ledati16 Dec 14, 2025
da724c7
tui(ui): add focus rectangle, colored indicators, and tighten modal s…
ledati16 Dec 14, 2025
2bb59ca
tui(ui): switch to left-side focus indicator and tighten field spacing
ledati16 Dec 14, 2025
8b90b8f
tui(ui): improve focus visuals, modal navigation, and input handling\…
ledati16 Dec 14, 2025
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
17 changes: 17 additions & 0 deletions .github/workflows/docs-sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Docs Sync Check

on:
push:
branches: [ '**' ]
pull_request:
branches: [ '**' ]

jobs:
docs-sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run docs sync verifier
run: |
chmod +x scripts/verify_docs_sync.sh
scripts/verify_docs_sync.sh
54 changes: 54 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# AGENTS.md

This file gives explicit instructions for automated agents and human contributors working on the repository, and must be kept in sync with `CLAUDE.md` (the authoritative project guidance).

Scope
- The scope of this file is the entire repository. Agents must follow these rules when touching any files, and must pay special attention when editing files under `src/tui/`.
- Agents must read `CLAUDE.md` at the start of any session and treat it as the authoritative project policy; `AGENTS.md` is a concise operational checklist derived from it.
- Before making changes that touch the TUI, consult `TEMP_TUI_REFACTOR.md` for the current plan and progress. `TEMP_TUI_REFACTOR.md` is the canonical progress log for the TUI refactor and must be updated for each minor step.

Quick checklist (required before committing any changes that touch source code)
- Run the unit test suite: `cargo test` (all tests must pass).
- Run Clippy: `cargo clippy --all-targets` (fix warnings). Then run pedantic checks: `cargo clippy --all-targets -- -W clippy::pedantic` and ensure only the acceptably documented pedantic warnings from `CLAUDE.md` are present.
- Format code: `cargo fmt`.
- Update `TEMP_TUI_REFACTOR.md` with a concise entry describing what changed and the next small steps for TUI-related work.
- Ensure public functions that return `Result` have `# Errors` doc sections per `CLAUDE.md` guidance.
- Avoid adding per-frame allocations or compiling regexes in render paths. Use cached `Arc<regex::Regex>` from editor state or from the background worker.
- Use precomputed padded-display patterns: `SinksScreen::update_display_descs()` and `SettingsScreen.padded_names` (or similar) when repeated rendering and alignment are required.
- Do not push to remote or open a pull request without explicit approval from the repository owner (unless the user explicitly asked). Follow the Git Push Policy in `CLAUDE.md`.

Behavioral rules for agents
- Keep changes small and focused; prefer surgical edits over large refactors.
- When modifying a TUI render function, include a brief explanation in the commit/PR or in `TEMP_TUI_REFACTOR.md` detailing why the change avoids allocations and how it was validated (tests, clippy, or manual check).
- If you add new caches (e.g., padded strings), ensure they are initialized in `App::new()` and updated in any code path that mutates the underlying data.
- Follow `CLAUDE.md` conventions for documentation, error handling, and modern Rust idioms.

Documentation & progress tracking
- `TEMP_TUI_REFACTOR.md` is the canonical progress log for the TUI refactor. Update it at every successful minor milestone (e.g., "added cached padded settings names", "removed Regex::new from render", "added preview debounce tests").
- Keep `TEMP_TUI_REFACTOR.md` short, factual and actionable: what was changed, validation performed, and the next step.
- Before committing any TUI-related edits, add a short entry to `TEMP_TUI_REFACTOR.md` describing the change.

Security & safety notes
- Do not construct shell commands with user input. Use `serde_json` and structured APIs for external tool invocations.
- When creating files or sockets, ensure user-only permissions where appropriate (refer to `CLAUDE.md` for socket permission guidance: `0o600`).

Commit / Push policy
- Use conventional commits per `CLAUDE.md`: `<type>: <subject>`, include a body, and append the generator/co-author lines only when appropriate.
- NEVER push changes to remote without explicit user approval. The normal flow is:
1. Make a local commit.
2. Notify the user of the commit and provide a short summary.
3. Wait for explicit push approval (e.g., "push it").
4. If approved, push with `git push` (or `git push -u origin <branch>` for a new branch).

Automation notes for agent implementers
- If you are an automated agent performing edits:
- Follow the checks above before committing.
- Always write a short, one-line `TEMP_TUI_REFACTOR.md` entry describing the edit and the next small step.
- Do not open PRs or push without human approval.

Where AGENTS.md and CLAUDE.md must remain in sync
- `CLAUDE.md` is the comprehensive project policy. `AGENTS.md` is a concise operational checklist derived from it for agents and contributors.
- Whenever a policy in `CLAUDE.md` changes (e.g., new clippy rules, additional pedantic exceptions, or push policy changes), update `AGENTS.md` to reflect the change.
- Before making releases or merging large changes, cross-verify `AGENTS.md` and `CLAUDE.md` for consistency.

-- End of AGENTS.md
Loading