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.
- checksums.yaml +4 -4
- data/.builds/ruby-3.2.yml +9 -5
- data/.builds/ruby-3.3.yml +9 -5
- data/.builds/ruby-3.4.yml +9 -5
- data/.builds/ruby-4.0.0.yml +9 -5
- data/AGENTS.md +1 -1
- data/CHANGELOG.md +57 -0
- data/README.md +2 -2
- data/README.rdoc +374 -0
- data/REUSE.toml +5 -0
- data/Rakefile +1 -1
- data/doc/best_practices/forms_and_validation.md +20 -0
- data/doc/best_practices/http_workflows.md +20 -0
- data/doc/best_practices/index.md +26 -0
- data/doc/best_practices/lists_and_tables.md +20 -0
- data/doc/best_practices/modal_dialogs.md +20 -0
- data/doc/best_practices/no_stateful_widgets.md +184 -0
- data/doc/best_practices/orchestration.md +20 -0
- data/doc/best_practices/streaming_data.md +20 -0
- data/doc/contributors/design/commands_and_outlets.md +1 -1
- data/doc/contributors/documentation_plan.md +616 -0
- data/doc/contributors/documentation_stub_audit.md +112 -0
- data/doc/contributors/documentation_style.md +275 -0
- data/doc/contributors/e2e_pty.md +168 -0
- data/doc/contributors/specs/earliest_tutorial_steps_per_story.md +70 -0
- data/doc/contributors/specs/file_browser.md +789 -0
- data/doc/contributors/specs/file_browser_stories.md +774 -0
- data/doc/contributors/specs/tutorials_to_stories.rb +167 -0
- data/doc/contributors/todo/scrollbar.md +118 -0
- data/doc/contributors/tutorial_old/01_project_setup.md +20 -0
- data/doc/contributors/tutorial_old/02_hello_world.md +24 -0
- data/doc/contributors/tutorial_old/03_adding_state.md +26 -0
- data/doc/contributors/tutorial_old/06_organizing_your_code.md +20 -0
- data/doc/contributors/tutorial_old/07_your_first_command.md +21 -0
- data/doc/contributors/tutorial_old/08_the_preview_pane.md +20 -0
- data/doc/contributors/tutorial_old/09_loading_states.md +20 -0
- data/doc/contributors/tutorial_old/10_testing_your_app.md +20 -0
- data/doc/contributors/tutorial_old/11_polish_and_refine.md +20 -0
- data/doc/contributors/tutorial_old/12_going_further.md +20 -0
- data/doc/contributors/tutorial_old/index.md +20 -0
- data/doc/essentials/commands.md +20 -0
- data/doc/essentials/index.md +31 -0
- data/doc/essentials/messages.md +21 -0
- data/doc/essentials/models.md +21 -0
- data/doc/essentials/shortcuts.md +19 -0
- data/doc/essentials/the_elm_architecture.md +24 -0
- data/doc/essentials/the_runtime.md +21 -0
- data/doc/essentials/update_functions.md +20 -0
- data/doc/essentials/views.md +22 -0
- data/doc/getting_started/for_go_developers.md +16 -0
- data/doc/getting_started/for_python_developers.md +16 -0
- data/doc/getting_started/for_rails_developers.md +17 -0
- data/doc/getting_started/for_ratatui_ruby_developers.md +17 -0
- data/doc/getting_started/for_react_developers.md +17 -0
- data/doc/getting_started/index.md +52 -0
- data/doc/getting_started/install.md +20 -0
- data/doc/getting_started/quickstart.md +9 -45
- data/doc/getting_started/ruby_primer.md +19 -0
- data/doc/getting_started/why_rooibos.md +20 -0
- data/doc/index.md +79 -11
- data/doc/scaling_up/async_patterns.md +20 -0
- data/doc/scaling_up/command_composition.md +20 -0
- data/doc/scaling_up/custom_commands.md +21 -0
- data/doc/scaling_up/fractal_architecture.md +20 -0
- data/doc/scaling_up/index.md +30 -0
- data/doc/scaling_up/message_routing.md +20 -0
- data/doc/scaling_up/ractor_safety.md +20 -0
- data/doc/scaling_up/testing.md +21 -0
- data/doc/troubleshooting/common_errors.md +20 -0
- data/doc/troubleshooting/debugging.md +21 -0
- data/doc/troubleshooting/index.md +23 -0
- data/doc/troubleshooting/performance.md +20 -0
- data/doc/tutorial/01_project_setup.md +44 -0
- data/doc/tutorial/02_hello_world.md +45 -0
- data/doc/tutorial/03_static_file_list.md +44 -0
- data/doc/tutorial/04_arrow_navigation.md +47 -0
- data/doc/tutorial/05_real_files.md +45 -0
- data/doc/tutorial/06_safe_refactoring.md +21 -0
- data/doc/tutorial/07_red_first_tdd.md +26 -0
- data/doc/tutorial/08_file_metadata.md +42 -0
- data/doc/tutorial/09_text_preview.md +44 -0
- data/doc/tutorial/10_directory_tree.md +42 -0
- data/doc/tutorial/11_pane_focus.md +40 -0
- data/doc/tutorial/12_sorting.md +41 -0
- data/doc/tutorial/13_filtering.md +43 -0
- data/doc/tutorial/14_toggle_hidden.md +41 -0
- data/doc/tutorial/15_text_input_widget.md +43 -0
- data/doc/tutorial/16_rename_files.md +42 -0
- data/doc/tutorial/17_confirmation_dialogs.md +43 -0
- data/doc/tutorial/18_progress_indicators.md +43 -0
- data/doc/tutorial/19_atomic_operations.md +42 -0
- data/doc/tutorial/20_external_editor.md +42 -0
- data/doc/tutorial/21_modal_overlays.md +41 -0
- data/doc/tutorial/22_error_handling.md +43 -0
- data/doc/tutorial/23_terminal_capabilities.md +53 -0
- data/doc/tutorial/24_mouse_events.md +43 -0
- data/doc/tutorial/25_resize_events.md +43 -0
- data/doc/tutorial/26_loading_states.md +42 -0
- data/doc/tutorial/27_performance.md +43 -0
- data/doc/tutorial/28_color_schemes.md +47 -0
- data/doc/tutorial/29_configuration.md +124 -0
- data/doc/tutorial/30_going_further.md +17 -0
- data/doc/tutorial/index.md +17 -0
- data/examples/app_file_browser/app.rb +40 -0
- data/examples/app_fractal_dashboard/dashboard/update_manual.rb +7 -7
- data/examples/app_fractal_dashboard/fragments/custom_shell_input.rb +5 -5
- data/examples/app_fractal_dashboard/fragments/custom_shell_modal.rb +1 -1
- data/examples/app_fractal_dashboard/fragments/disk_usage.rb +2 -2
- data/examples/app_fractal_dashboard/fragments/network_panel.rb +4 -4
- data/examples/app_fractal_dashboard/fragments/ping.rb +2 -2
- data/examples/app_fractal_dashboard/fragments/stats_panel.rb +4 -4
- data/examples/app_fractal_dashboard/fragments/system_info.rb +2 -2
- data/examples/app_fractal_dashboard/fragments/uptime.rb +2 -2
- data/examples/verify_website_first_app/app.rb +85 -0
- data/examples/verify_website_hello_mvu/app.rb +31 -0
- data/examples/widget_command_system/app.rb +15 -13
- data/exe/rooibos +10 -0
- data/generate_tutorial_stubs.rb +126 -0
- data/lib/rooibos/cli/commands/new.rb +373 -0
- data/lib/rooibos/cli/commands/run.rb +98 -0
- data/lib/rooibos/cli.rb +78 -0
- data/lib/rooibos/command/all.rb +76 -23
- data/lib/rooibos/command/batch.rb +61 -34
- data/lib/rooibos/command/custom.rb +84 -1
- data/lib/rooibos/command/http.rb +121 -55
- data/lib/rooibos/command/lifecycle.rb +5 -5
- data/lib/rooibos/command/open.rb +93 -0
- data/lib/rooibos/command/outlet.rb +105 -3
- data/lib/rooibos/command/wait.rb +9 -6
- data/lib/rooibos/command.rb +114 -89
- data/lib/rooibos/message/batch.rb +39 -0
- data/lib/rooibos/message/canceled.rb +51 -0
- data/lib/rooibos/message/error.rb +48 -0
- data/lib/rooibos/message/open.rb +30 -0
- data/lib/rooibos/message.rb +84 -4
- data/lib/rooibos/router.rb +11 -14
- data/lib/rooibos/runtime.rb +40 -43
- data/lib/rooibos/shortcuts.rb +47 -0
- data/lib/rooibos/test_helper.rb +71 -6
- data/lib/rooibos/version.rb +1 -1
- data/lib/rooibos/welcome.rb +237 -0
- data/lib/rooibos.rb +4 -3
- data/mise.toml +1 -1
- data/rbs_collection.lock.yaml +2 -2
- data/sig/concurrent.rbs +4 -0
- data/sig/gem.rbs +20 -0
- data/sig/rooibos/cli.rbs +42 -0
- data/sig/rooibos/command.rbs +59 -7
- data/sig/rooibos/message.rbs +66 -2
- data/sig/rooibos/shortcuts.rbs +14 -0
- data/sig/rooibos/test_helper.rbs +6 -2
- data/sig/rooibos/welcome.rbs +75 -0
- data/tasks/install.rake +29 -0
- data/tasks/resources/build.yml.erb +2 -0
- metadata +274 -38
- data/doc/concepts/application_architecture.md +0 -197
- data/doc/concepts/application_testing.md +0 -49
- data/doc/concepts/async_work.md +0 -164
- data/doc/concepts/commands.md +0 -530
- data/doc/concepts/message_processing.md +0 -51
- data/doc/contributors/WIP/decomposition_strategies_analysis.md +0 -258
- data/doc/contributors/WIP/implementation_plan.md +0 -409
- data/doc/contributors/WIP/init_callable_proposal.md +0 -344
- data/doc/contributors/WIP/runtime_refactoring_status.md +0 -47
- data/doc/contributors/WIP/task.md +0 -36
- data/doc/contributors/WIP/v0.4.0_todo.md +0 -468
- data/doc/contributors/kit-no-outlet.md +0 -238
- data/doc/contributors/priorities.md +0 -38
- data/doc/images/.gitkeep +0 -0
- data/exe/.gitkeep +0 -0
- /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)
|