rooibos 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/.builds/ruby-3.2.yml +9 -5
  3. data/.builds/ruby-3.3.yml +9 -5
  4. data/.builds/ruby-3.4.yml +9 -5
  5. data/.builds/ruby-4.0.0.yml +9 -5
  6. data/AGENTS.md +1 -1
  7. data/CHANGELOG.md +57 -0
  8. data/README.md +2 -2
  9. data/README.rdoc +374 -0
  10. data/REUSE.toml +5 -0
  11. data/Rakefile +1 -1
  12. data/doc/best_practices/forms_and_validation.md +20 -0
  13. data/doc/best_practices/http_workflows.md +20 -0
  14. data/doc/best_practices/index.md +26 -0
  15. data/doc/best_practices/lists_and_tables.md +20 -0
  16. data/doc/best_practices/modal_dialogs.md +20 -0
  17. data/doc/best_practices/no_stateful_widgets.md +184 -0
  18. data/doc/best_practices/orchestration.md +20 -0
  19. data/doc/best_practices/streaming_data.md +20 -0
  20. data/doc/contributors/design/commands_and_outlets.md +1 -1
  21. data/doc/contributors/documentation_plan.md +616 -0
  22. data/doc/contributors/documentation_stub_audit.md +112 -0
  23. data/doc/contributors/documentation_style.md +275 -0
  24. data/doc/contributors/e2e_pty.md +168 -0
  25. data/doc/contributors/specs/earliest_tutorial_steps_per_story.md +70 -0
  26. data/doc/contributors/specs/file_browser.md +789 -0
  27. data/doc/contributors/specs/file_browser_stories.md +774 -0
  28. data/doc/contributors/specs/tutorials_to_stories.rb +167 -0
  29. data/doc/contributors/todo/scrollbar.md +118 -0
  30. data/doc/contributors/tutorial_old/01_project_setup.md +20 -0
  31. data/doc/contributors/tutorial_old/02_hello_world.md +24 -0
  32. data/doc/contributors/tutorial_old/03_adding_state.md +26 -0
  33. data/doc/contributors/tutorial_old/06_organizing_your_code.md +20 -0
  34. data/doc/contributors/tutorial_old/07_your_first_command.md +21 -0
  35. data/doc/contributors/tutorial_old/08_the_preview_pane.md +20 -0
  36. data/doc/contributors/tutorial_old/09_loading_states.md +20 -0
  37. data/doc/contributors/tutorial_old/10_testing_your_app.md +20 -0
  38. data/doc/contributors/tutorial_old/11_polish_and_refine.md +20 -0
  39. data/doc/contributors/tutorial_old/12_going_further.md +20 -0
  40. data/doc/contributors/tutorial_old/index.md +20 -0
  41. data/doc/essentials/commands.md +20 -0
  42. data/doc/essentials/index.md +31 -0
  43. data/doc/essentials/messages.md +21 -0
  44. data/doc/essentials/models.md +21 -0
  45. data/doc/essentials/shortcuts.md +19 -0
  46. data/doc/essentials/the_elm_architecture.md +24 -0
  47. data/doc/essentials/the_runtime.md +21 -0
  48. data/doc/essentials/update_functions.md +20 -0
  49. data/doc/essentials/views.md +22 -0
  50. data/doc/getting_started/for_go_developers.md +16 -0
  51. data/doc/getting_started/for_python_developers.md +16 -0
  52. data/doc/getting_started/for_rails_developers.md +17 -0
  53. data/doc/getting_started/for_ratatui_ruby_developers.md +17 -0
  54. data/doc/getting_started/for_react_developers.md +17 -0
  55. data/doc/getting_started/index.md +52 -0
  56. data/doc/getting_started/install.md +20 -0
  57. data/doc/getting_started/quickstart.md +9 -45
  58. data/doc/getting_started/ruby_primer.md +19 -0
  59. data/doc/getting_started/why_rooibos.md +20 -0
  60. data/doc/index.md +79 -11
  61. data/doc/scaling_up/async_patterns.md +20 -0
  62. data/doc/scaling_up/command_composition.md +20 -0
  63. data/doc/scaling_up/custom_commands.md +21 -0
  64. data/doc/scaling_up/fractal_architecture.md +20 -0
  65. data/doc/scaling_up/index.md +30 -0
  66. data/doc/scaling_up/message_routing.md +20 -0
  67. data/doc/scaling_up/ractor_safety.md +20 -0
  68. data/doc/scaling_up/testing.md +21 -0
  69. data/doc/troubleshooting/common_errors.md +20 -0
  70. data/doc/troubleshooting/debugging.md +21 -0
  71. data/doc/troubleshooting/index.md +23 -0
  72. data/doc/troubleshooting/performance.md +20 -0
  73. data/doc/tutorial/01_project_setup.md +44 -0
  74. data/doc/tutorial/02_hello_world.md +45 -0
  75. data/doc/tutorial/03_static_file_list.md +44 -0
  76. data/doc/tutorial/04_arrow_navigation.md +47 -0
  77. data/doc/tutorial/05_real_files.md +45 -0
  78. data/doc/tutorial/06_safe_refactoring.md +21 -0
  79. data/doc/tutorial/07_red_first_tdd.md +26 -0
  80. data/doc/tutorial/08_file_metadata.md +42 -0
  81. data/doc/tutorial/09_text_preview.md +44 -0
  82. data/doc/tutorial/10_directory_tree.md +42 -0
  83. data/doc/tutorial/11_pane_focus.md +40 -0
  84. data/doc/tutorial/12_sorting.md +41 -0
  85. data/doc/tutorial/13_filtering.md +43 -0
  86. data/doc/tutorial/14_toggle_hidden.md +41 -0
  87. data/doc/tutorial/15_text_input_widget.md +43 -0
  88. data/doc/tutorial/16_rename_files.md +42 -0
  89. data/doc/tutorial/17_confirmation_dialogs.md +43 -0
  90. data/doc/tutorial/18_progress_indicators.md +43 -0
  91. data/doc/tutorial/19_atomic_operations.md +42 -0
  92. data/doc/tutorial/20_external_editor.md +42 -0
  93. data/doc/tutorial/21_modal_overlays.md +41 -0
  94. data/doc/tutorial/22_error_handling.md +43 -0
  95. data/doc/tutorial/23_terminal_capabilities.md +53 -0
  96. data/doc/tutorial/24_mouse_events.md +43 -0
  97. data/doc/tutorial/25_resize_events.md +43 -0
  98. data/doc/tutorial/26_loading_states.md +42 -0
  99. data/doc/tutorial/27_performance.md +43 -0
  100. data/doc/tutorial/28_color_schemes.md +47 -0
  101. data/doc/tutorial/29_configuration.md +124 -0
  102. data/doc/tutorial/30_going_further.md +17 -0
  103. data/doc/tutorial/index.md +17 -0
  104. data/examples/app_file_browser/app.rb +40 -0
  105. data/examples/app_fractal_dashboard/dashboard/update_manual.rb +7 -7
  106. data/examples/app_fractal_dashboard/fragments/custom_shell_input.rb +5 -5
  107. data/examples/app_fractal_dashboard/fragments/custom_shell_modal.rb +1 -1
  108. data/examples/app_fractal_dashboard/fragments/disk_usage.rb +2 -2
  109. data/examples/app_fractal_dashboard/fragments/network_panel.rb +4 -4
  110. data/examples/app_fractal_dashboard/fragments/ping.rb +2 -2
  111. data/examples/app_fractal_dashboard/fragments/stats_panel.rb +4 -4
  112. data/examples/app_fractal_dashboard/fragments/system_info.rb +2 -2
  113. data/examples/app_fractal_dashboard/fragments/uptime.rb +2 -2
  114. data/examples/verify_website_first_app/app.rb +85 -0
  115. data/examples/verify_website_hello_mvu/app.rb +31 -0
  116. data/examples/widget_command_system/app.rb +15 -13
  117. data/exe/rooibos +10 -0
  118. data/generate_tutorial_stubs.rb +126 -0
  119. data/lib/rooibos/cli/commands/new.rb +373 -0
  120. data/lib/rooibos/cli/commands/run.rb +98 -0
  121. data/lib/rooibos/cli.rb +78 -0
  122. data/lib/rooibos/command/all.rb +76 -23
  123. data/lib/rooibos/command/batch.rb +61 -34
  124. data/lib/rooibos/command/custom.rb +84 -1
  125. data/lib/rooibos/command/http.rb +121 -55
  126. data/lib/rooibos/command/lifecycle.rb +5 -5
  127. data/lib/rooibos/command/open.rb +93 -0
  128. data/lib/rooibos/command/outlet.rb +105 -3
  129. data/lib/rooibos/command/wait.rb +9 -6
  130. data/lib/rooibos/command.rb +114 -89
  131. data/lib/rooibos/message/batch.rb +39 -0
  132. data/lib/rooibos/message/canceled.rb +51 -0
  133. data/lib/rooibos/message/error.rb +48 -0
  134. data/lib/rooibos/message/open.rb +30 -0
  135. data/lib/rooibos/message.rb +84 -4
  136. data/lib/rooibos/router.rb +11 -14
  137. data/lib/rooibos/runtime.rb +40 -43
  138. data/lib/rooibos/shortcuts.rb +47 -0
  139. data/lib/rooibos/test_helper.rb +71 -6
  140. data/lib/rooibos/version.rb +1 -1
  141. data/lib/rooibos/welcome.rb +237 -0
  142. data/lib/rooibos.rb +4 -3
  143. data/mise.toml +1 -1
  144. data/rbs_collection.lock.yaml +2 -2
  145. data/sig/concurrent.rbs +4 -0
  146. data/sig/gem.rbs +20 -0
  147. data/sig/rooibos/cli.rbs +42 -0
  148. data/sig/rooibos/command.rbs +59 -7
  149. data/sig/rooibos/message.rbs +66 -2
  150. data/sig/rooibos/shortcuts.rbs +14 -0
  151. data/sig/rooibos/test_helper.rbs +6 -2
  152. data/sig/rooibos/welcome.rbs +75 -0
  153. data/tasks/install.rake +29 -0
  154. data/tasks/resources/build.yml.erb +2 -0
  155. metadata +274 -38
  156. data/doc/concepts/application_architecture.md +0 -197
  157. data/doc/concepts/application_testing.md +0 -49
  158. data/doc/concepts/async_work.md +0 -164
  159. data/doc/concepts/commands.md +0 -530
  160. data/doc/concepts/message_processing.md +0 -51
  161. data/doc/contributors/WIP/decomposition_strategies_analysis.md +0 -258
  162. data/doc/contributors/WIP/implementation_plan.md +0 -409
  163. data/doc/contributors/WIP/init_callable_proposal.md +0 -344
  164. data/doc/contributors/WIP/runtime_refactoring_status.md +0 -47
  165. data/doc/contributors/WIP/task.md +0 -36
  166. data/doc/contributors/WIP/v0.4.0_todo.md +0 -468
  167. data/doc/contributors/kit-no-outlet.md +0 -238
  168. data/doc/contributors/priorities.md +0 -38
  169. data/doc/images/.gitkeep +0 -0
  170. data/exe/.gitkeep +0 -0
  171. /data/doc/contributors/{WIP → design}/mvu_tea_implementations_research.md +0 -0
@@ -0,0 +1,42 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Rename Files
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 13: Rename Files and Directories
18
+
19
+ **As a** terminal user
20
+ **I want to** rename the selected file or directory
21
+ **So that** I can fix typos or improve organization
22
+
23
+ ### Acceptance Criteria
24
+ - `r` key prompts for new name
25
+ - Input pre-populated with current name
26
+ - Enter confirms rename
27
+ - File list updates to show new name
28
+ - Error shown if name conflicts or is invalid
29
+ - Esc cancels operation
30
+
31
+ ### Notes
32
+ - Introduces pre-populated input
33
+ - Introduces conflict detection
34
+ - Introduces name validation
35
+
36
+ ---
37
+
38
+
39
+
40
+ ---
41
+
42
+ [**Previous:** Text Input Widget](./15_text_input_widget.md) | [**Next:** Confirmation Dialogs](./17_confirmation_dialogs.md)
@@ -0,0 +1,43 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Confirmation Dialogs
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 14: Delete Files and Directories
18
+
19
+ **As a** terminal user
20
+ **I want to** delete the selected file or directory
21
+ **So that** I can remove unwanted items
22
+
23
+ ### Acceptance Criteria
24
+ - `d` key prompts for confirmation
25
+ - Confirmation dialog shows item name and size
26
+ - `Y` confirms deletion, `N` cancels
27
+ - Warning message for directory deletion
28
+ - File list refreshes after deletion
29
+ - Error shown if deletion fails
30
+
31
+ ### Notes
32
+ - Introduces confirmation dialogs
33
+ - Introduces destructive operations
34
+ - Introduces modal UI elements
35
+ - Critical to get right - no undo!
36
+
37
+ ---
38
+
39
+
40
+
41
+ ---
42
+
43
+ [**Previous:** Rename Files](./16_rename_files.md) | [**Next:** Progress Indicators](./18_progress_indicators.md)
@@ -0,0 +1,43 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Progress Indicators
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 15: Copy Files and Directories
18
+
19
+ **As a** terminal user
20
+ **I want to** copy files to another location
21
+ **So that** I can duplicate content
22
+
23
+ ### Acceptance Criteria
24
+ - `c` key prompts for destination path
25
+ - User types destination and presses Enter
26
+ - File/directory copied to destination
27
+ - Progress indicator for large operations
28
+ - Error shown if copy fails
29
+ - File list refreshes if copying to current directory
30
+
31
+ ### Notes
32
+ - Introduces path input
33
+ - Introduces progress indicators
34
+ - Introduces recursive directory copying
35
+ - Performance considerations for large files
36
+
37
+ ---
38
+
39
+
40
+
41
+ ---
42
+
43
+ [**Previous:** Confirmation Dialogs](./17_confirmation_dialogs.md) | [**Next:** Atomic Operations](./19_atomic_operations.md)
@@ -0,0 +1,42 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Atomic Operations
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 16: Move Files and Directories
18
+
19
+ **As a** terminal user
20
+ **I want to** move files to another location
21
+ **So that** I can reorganize my filesystem
22
+
23
+ ### Acceptance Criteria
24
+ - `m` key prompts for destination path
25
+ - User types destination and presses Enter
26
+ - File/directory moved to destination
27
+ - File list refreshes to remove moved item
28
+ - Error shown if move fails
29
+ - Handles cross-filesystem moves
30
+
31
+ ### Notes
32
+ - Similar to copy but removes source
33
+ - May need to fall back to copy+delete for cross-filesystem
34
+ - Introduces atomic operation handling
35
+
36
+ ---
37
+
38
+
39
+
40
+ ---
41
+
42
+ [**Previous:** Progress Indicators](./18_progress_indicators.md) | [**Next:** External Editor](./20_external_editor.md)
@@ -0,0 +1,42 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # External Editor
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 17: Open in External Editor
18
+
19
+ **As a** terminal user
20
+ **I want to** open the selected file in my $EDITOR
21
+ **So that** I can edit files
22
+
23
+ ### Acceptance Criteria
24
+ - `e` key opens file in $EDITOR
25
+ - File browser suspends while editor runs
26
+ - File browser resumes when editor closes
27
+ - File list refreshes to show any changes
28
+ - Error shown if $EDITOR not set or fails
29
+
30
+ ### Notes
31
+ - Introduces external process spawning
32
+ - Introduces suspend/resume cycle
33
+ - Introduces environment variable reading
34
+ - Tests integration with external tools
35
+
36
+ ---
37
+
38
+
39
+
40
+ ---
41
+
42
+ [**Previous:** Atomic Operations](./19_atomic_operations.md) | [**Next:** Modal Overlays](./21_modal_overlays.md)
@@ -0,0 +1,41 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Modal Overlays
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 18: Help Overlay
18
+
19
+ **As a** terminal user
20
+ **I want to** see a list of keyboard shortcuts
21
+ **So that** I can learn how to use the application
22
+
23
+ ### Acceptance Criteria
24
+ - `?` key shows help overlay
25
+ - Help displays all keyboard shortcuts organized by category
26
+ - Help overlay is modal (blocks other input)
27
+ - Any key closes help overlay
28
+ - Help is scrollable if content is long
29
+
30
+ ### Notes
31
+ - Introduces modal overlays
32
+ - Introduces help content management
33
+ - Critical for discoverability
34
+
35
+ ---
36
+
37
+
38
+
39
+ ---
40
+
41
+ [**Previous:** External Editor](./20_external_editor.md) | [**Next:** Error Handling](./22_error_handling.md)
@@ -0,0 +1,43 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Error Handling
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 19: Error Handling and Messages
18
+
19
+ **As a** terminal user
20
+ **I want to** see clear error messages when operations fail
21
+ **So that** I understand what went wrong and how to fix it
22
+
23
+ ### Acceptance Criteria
24
+ - Permission errors show specific message and suggestion
25
+ - File not found errors are handled gracefully
26
+ - Invalid input shows validation errors
27
+ - Errors displayed in status bar or dialog
28
+ - Errors auto-dismiss after 5 seconds or on next action
29
+ - Error messages are actionable, not generic
30
+
31
+ ### Notes
32
+ - Introduces comprehensive error handling
33
+ - Introduces error message system
34
+ - Introduces auto-dismiss timers
35
+ - Polish pass on all error paths
36
+
37
+ ---
38
+
39
+
40
+
41
+ ---
42
+
43
+ [**Previous:** Modal Overlays](./21_modal_overlays.md) | [**Next:** Terminal Capabilities](./23_terminal_capabilities.md)
@@ -0,0 +1,53 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Terminal Capabilities
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 23: Visual Polish and Theming
18
+
19
+ **As a** terminal user
20
+ **I want to** see a polished, professional interface
21
+ **So that** the application is pleasant to use
22
+
23
+ ### Acceptance Criteria
24
+ - Consistent color scheme throughout:
25
+ - Directories: Blue (bold)
26
+ - Regular files: Default terminal color
27
+ - Executable files: Green
28
+ - Hidden files: Dim/gray when shown
29
+ - Selected item: Inverted colors or highlighted background
30
+ - Error messages: Red
31
+ - Success messages: Green
32
+ - Information messages: Yellow
33
+ - File type icons (📁 📄 🔗) where appropriate
34
+ - Smooth animations for state transitions
35
+ - Proper spacing and alignment
36
+ - Visual hierarchy clear
37
+ - Works in both light and dark terminal themes
38
+
39
+ ### Notes
40
+ - Polish pass on all UI elements
41
+ - Introduces color management
42
+ - Introduces Unicode symbols
43
+ - Introduces animation system
44
+ - Final aesthetic improvements
45
+ - Implements all color requirements from specification section 2.2
46
+
47
+ ---
48
+
49
+
50
+
51
+ ---
52
+
53
+ [**Previous:** Error Handling](./22_error_handling.md) | [**Next:** Mouse Events](./24_mouse_events.md)
@@ -0,0 +1,43 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Mouse Events
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 20: Mouse Support
18
+
19
+ **As a** terminal user with mouse-enabled terminal
20
+ **I want to** use my mouse to click and scroll
21
+ **So that** I have an alternative to keyboard navigation
22
+
23
+ ### Acceptance Criteria
24
+ - Click on pane to focus it
25
+ - Click on item to select it
26
+ - Click on expand/collapse indicators
27
+ - Mouse wheel scrolls in focused pane
28
+ - All functionality remains keyboard-accessible
29
+ - Mouse events don't break text selection
30
+
31
+ ### Notes
32
+ - Optional enhancement
33
+ - Introduces mouse event handling
34
+ - Must not compromise keyboard experience
35
+ - Terminal capability detection
36
+
37
+ ---
38
+
39
+
40
+
41
+ ---
42
+
43
+ [**Previous:** Terminal Capabilities](./23_terminal_capabilities.md) | [**Next:** Resize Events](./25_resize_events.md)
@@ -0,0 +1,43 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Resize Events
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 21: Terminal Resize Handling
18
+
19
+ **As a** terminal user
20
+ **I want to** resize my terminal window
21
+ **So that** the application adapts to the new size
22
+
23
+ ### Acceptance Criteria
24
+ - Application detects terminal resize events
25
+ - Layout adjusts proportionally to new size
26
+ - Content reflows to fit new dimensions
27
+ - Selection and scroll position preserved
28
+ - No flickering during resize
29
+ - Graceful degradation at small sizes (hide panes)
30
+
31
+ ### Notes
32
+ - Introduces resize event handling
33
+ - Introduces responsive layout logic
34
+ - Introduces graceful degradation
35
+ - Performance critical - must be smooth
36
+
37
+ ---
38
+
39
+
40
+
41
+ ---
42
+
43
+ [**Previous:** Mouse Events](./24_mouse_events.md) | [**Next:** Loading States](./26_loading_states.md)
@@ -0,0 +1,42 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Loading States
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 22: Loading States for Large Directories
18
+
19
+ **As a** terminal user
20
+ **I want to** see a loading indicator for large directories
21
+ **So that** I know the application is working
22
+
23
+ ### Acceptance Criteria
24
+ - Loading indicator shown when reading large directories
25
+ - Spinner animation with item count
26
+ - User can cancel loading with Esc
27
+ - Partial results shown as they load
28
+ - Performance remains responsive during load
29
+
30
+ ### Notes
31
+ - Introduces async loading
32
+ - Introduces loading indicators
33
+ - Introduces cancellation
34
+ - Performance optimization for 10,000+ files
35
+
36
+ ---
37
+
38
+
39
+
40
+ ---
41
+
42
+ [**Previous:** Resize Events](./25_resize_events.md) | [**Next:** Performance](./27_performance.md)
@@ -0,0 +1,43 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Performance
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 24: Performance Optimization
18
+
19
+ **As a** terminal user
20
+ **I want to** experience fast, responsive performance
21
+ **So that** the application doesn't slow me down
22
+
23
+ ### Acceptance Criteria
24
+ - Startup time under 500ms
25
+ - Keyboard input response under 50ms
26
+ - Directory listing under 200ms for typical directories
27
+ - Preview rendering under 100ms
28
+ - No memory leaks during extended use
29
+ - Efficient rendering (only redraw changed areas)
30
+
31
+ ### Notes
32
+ - Performance profiling and optimization
33
+ - Introduces benchmarking
34
+ - Introduces efficient rendering strategies
35
+ - May require caching and memoization
36
+
37
+ ---
38
+
39
+
40
+
41
+ ---
42
+
43
+ [**Previous:** Loading States](./26_loading_states.md) | [**Next:** Color Schemes](./28_color_schemes.md)
@@ -0,0 +1,47 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
3
+ SPDX-License-Identifier: CC-BY-SA-4.0
4
+ -->
5
+
6
+ # Color Schemes
7
+
8
+
9
+ By the end of this guide, you will:
10
+
11
+ - TODO: Write learning objectives
12
+
13
+ > ⚠️ **This page is a stub.** Help us write it! See the [Documentation Plan](../contributors/documentation_plan.md) and [Style Guide](../contributors/documentation_style.md).
14
+
15
+ ## User Stories
16
+
17
+ ## Story 26: Configurable Color Schemes
18
+
19
+ **As a** user with color blindness
20
+ **I want to** configure the color scheme
21
+ **So that** I can distinguish different file types
22
+
23
+ ### Acceptance Criteria
24
+ - Configuration file for color preferences (~/.config/file_browser/colors.yml)
25
+ - Multiple built-in themes:
26
+ - Default (current colors)
27
+ - High contrast (black/white with bold)
28
+ - Colorblind-friendly (uses patterns + colors)
29
+ - Monochrome (no colors, uses bold/dim/underline)
30
+ - Colors can be customized per file type
31
+ - Theme selection persists between sessions
32
+ - Theme can be changed via command-line flag
33
+ - Preview of theme before applying
34
+
35
+ ### Notes
36
+ - Addresses specification section 2.3 (Accessibility)
37
+ - Introduces configuration file system
38
+ - May be deferred to 1.1 release
39
+ - Should validate color values
40
+
41
+ ---
42
+
43
+
44
+
45
+ ---
46
+
47
+ [**Previous:** Performance](./27_performance.md) | [**Next:** Configuration](./29_configuration.md)