Commit 927f777
feat: Process ui (#2)
* Add Phase 2 processes table design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Update spec: all user-facing text in English
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add Phase 2 processes table implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(platform): add process_list() to SwapBackend, implement in LinuxBackend
* feat(actions): add SortColumn, SortDir, navigation and filter actions
* feat(app): add processes sort/filter/navigation state and reducer
* feat(collector): parallel smaps collection via processes_active flag
* feat(main): context-aware keyboard routing and processes_active wiring
* feat(ui): wire processes tab, context-aware statusbar, user docs
* refactor(processes): build_layout returns Rc<[Rect]> with indexed footer slot
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(processes): add render_footer with key_span/desc_span context-aware hints
* refactor(statusbar): global-only keybindings; context hints moved to processes panel
* fix(review): address critical and minor code review issues
- Use spawn_blocking for smaps I/O (was blocking async executor)
- Remove duplicate process_swap from trait and all backends
- Add Copy to SortColumn/SortDir; drop redundant .clone() calls
- Add next_sort_column unit tests in main.rs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: add statusbar refactor implementation plan
* docs: add processes screen performance fix design spec
Replace smaps-based per-process swap collection with lightweight /proc
reader using /proc/{pid}/status + /proc/{pid}/stat for 90%+ CPU reduction.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: add processes performance fix implementation plan
8-task TDD plan: ProcReader module with /proc/{pid}/status + stat
parsing, LinuxBackend delegation, Collector simplification.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(proc_reader): add parse_status with tests
Introduces src/platform/proc_reader.rs with StatusInfo struct,
parse_status() and parse_kb_value() helpers, and 4 unit tests
covering normal fields, missing name, kernel threads, and zero swap.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(proc_reader): add parse_stat_cpu_ticks with tests
Parse /proc/{pid}/stat to extract utime+stime CPU ticks. Uses rfind(')')
to correctly handle comm fields containing spaces or nested parentheses.
* feat(proc_reader): add ProcReader struct with collect() method
Adds ProcReader with new(), collect(), and resolve_user() that reads
/proc/{pid}/status + /proc/{pid}/stat sequentially — replacing the
per-process spawn_blocking approach for CPU-efficient process listing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(linux): delegate process_list() to ProcReader
Wire ProcReader into LinuxBackend: add proc_reader field, remove sysinfo-based process collection, and replace process_list() body with proc_reader.collect(). Drop unused Users field and sysinfo::Users import. Suppress dead_code on is_kernel_thread (removal is Task 6).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(collector): remove smaps/spawn_blocking, use direct process_list()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore(linux): remove duplicated is_kernel_thread (now in proc_reader)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* test(proc_reader): add is_kernel_thread tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 3874652 commit 927f777
File tree
18 files changed
+3914
-83
lines changed- docs
- superpowers
- plans
- specs
- src
- platform
- ui
18 files changed
+3914
-83
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
0 commit comments