From 9adf1410a31d1b4411aaf375ec50ab8af6148fb6 Mon Sep 17 00:00:00 2001 From: Pascal de Vink Date: Sat, 28 Jun 2025 14:55:32 +0200 Subject: [PATCH] Initial commit containing the first set up of a new rust application, vision doc, first ADRs, and first tasks --- .gitignore | 1 + Cargo.toml | 6 ++ docs/adr/001-rust_core_native_shell.md | 21 +++++ docs/adr/002-crux.md | 19 ++++ docs/adr/002-events.drawio | 85 ++++++++++++++++++ docs/adr/002-events.png | Bin 0 -> 82947 bytes docs/adr/003-nom_parser_generator.md | 10 +++ docs/tasks/0001-create_native_shell_app.md | 0 ...002-list_input_and_output_audio_devices.md | 0 .../0003-create_rules_dsl_interpreter.md | 0 docs/tasks/0004-display_rules_in_gui.md | 0 docs/tasks/0005-create_rules_via_gui.md | 0 docs/tasks/0006-store_rules_in_config_file.md | 0 docs/tasks/0007-read_config_file_on_start.md | 0 docs/tasks/0008-hide_in_menu_bar.md | 0 .../0009-execute_rules_on_device_change.md | 0 docs/vision/vision.md | 8 ++ src/main.rs | 3 + 18 files changed, 153 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 docs/adr/001-rust_core_native_shell.md create mode 100644 docs/adr/002-crux.md create mode 100644 docs/adr/002-events.drawio create mode 100644 docs/adr/002-events.png create mode 100644 docs/adr/003-nom_parser_generator.md create mode 100644 docs/tasks/0001-create_native_shell_app.md create mode 100644 docs/tasks/0002-list_input_and_output_audio_devices.md create mode 100644 docs/tasks/0003-create_rules_dsl_interpreter.md create mode 100644 docs/tasks/0004-display_rules_in_gui.md create mode 100644 docs/tasks/0005-create_rules_via_gui.md create mode 100644 docs/tasks/0006-store_rules_in_config_file.md create mode 100644 docs/tasks/0007-read_config_file_on_start.md create mode 100644 docs/tasks/0008-hide_in_menu_bar.md create mode 100644 docs/tasks/0009-execute_rules_on_device_change.md create mode 100644 docs/vision/vision.md create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..4d9dacd --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "audio_always_works" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/docs/adr/001-rust_core_native_shell.md b/docs/adr/001-rust_core_native_shell.md new file mode 100644 index 0000000..2a31589 --- /dev/null +++ b/docs/adr/001-rust_core_native_shell.md @@ -0,0 +1,21 @@ +# Rust core, native shell + +## Context and Problem Statement +The idea of this application is that it works on different platforms, via GUI and CLI, whilst still maintaining a native feel, and low resource usage. + +## Considered Options +- React native +- Electron/nodejs +- Tauri +- Rust core, native shell + +## Decision Outcome +Because this application needs access to low-level system APIs on different platforms, that might not be available via NodeJS/javascript, React native and Electron were not valid options. + +Quickly, Tauri came into view, because its Rust core allows for access to these low-level system APIs. However, its browser-based GUI rendering does not feel completely native, at least not without considerable effort. + +Finally, the author's aim is to also learn more about Rust and its ecosystem, so using Rust at the core, whilst integrating a native GUI shell seems like a good course at this time. + +### Consequences +There might be less boilerplate available for creating a cross-platform, native look-and-feel application, which might slow down development. +However, it does allow the scope to be limited to macOS and GUI first, before focussing on cross-compliation and extending further. diff --git a/docs/adr/002-crux.md b/docs/adr/002-crux.md new file mode 100644 index 0000000..4658d4a --- /dev/null +++ b/docs/adr/002-crux.md @@ -0,0 +1,19 @@ +# Crux as a framework for rust core, native shell + +## Context and Problem Statement +Upon diving deeper into the options to implement the core in rust, but the outer shell in native code, it became apparent that this is still a relatively new field. Often times, these implementations rely on non-native solutions in the outer shell, like tauri, and flutter. These are best developed, but were discarded in 001. + +## Considered Options +- Writing from scratch +- Crux + +## Decision Outcome +Although Mitchell Hashimoto has recently shown with his implementation of Ghostty, that it is perfectly possible to hand-roll a native shell for a different core (zig in his case), using a framework that is used by multiple other projects and people gives me more confidence in the approach. Although Crux is not perfect, and doesn't fully support Windows and Linux (yet), as they focus more heavily on mobile, it is a good enough starting point to build upon and learn more about both rust, and the development of this application. +Crux heavily relies on ports-and-adapters architecture, as well as event sourcing, which is a good fit for the rust core, native shell approach. + +### Consequences +It will not be immediately possible to build a Windows and/or Linux outer shell. This is acceptable for now. + +Crux's reliance on event sourcing means it's possible to define which events and subsequent commands need to be supported, as shown here: + +![002-events.png](002-events.png) diff --git a/docs/adr/002-events.drawio b/docs/adr/002-events.drawio new file mode 100644 index 0000000..a2ab459 --- /dev/null +++ b/docs/adr/002-events.drawio @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/adr/002-events.png b/docs/adr/002-events.png new file mode 100644 index 0000000000000000000000000000000000000000..259f38901846e9bba1cd2abff53311e50a59d133 GIT binary patch literal 82947 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¬_B=#_y`G@_hG( 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