feat: add macOS View menu with panel visibility items

- Create menu.rs module with View submenu
- Items: Editor Only (⌥1), Editor + Notes (⌥2), All Panels (⌥3)
- Emits 'menu-event' to frontend, handled by useViewMode hook
- Menu only created on desktop builds (#[cfg(desktop)])

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
lucaronin
2026-02-22 18:44:54 +01:00
parent c346fac855
commit eb8584f9da
2 changed files with 32 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ pub mod ai_chat;
pub mod frontmatter;
pub mod git;
pub mod github;
pub mod menu;
pub mod settings;
pub mod vault;
@@ -123,6 +124,7 @@ pub fn run() {
{
app.handle().plugin(tauri_plugin_updater::Builder::new().build())?;
app.handle().plugin(tauri_plugin_process::init())?;
menu::setup_menu(app)?;
}
// Purge trashed files older than 30 days on startup

30
src-tauri/src/menu.rs Normal file
View File

@@ -0,0 +1,30 @@
use tauri::{menu::SubmenuBuilder, App, Emitter};
const VIEW_ITEMS: [(&str, &str, &str); 3] = [
("view-editor-only", "Editor Only", "Alt+1"),
("view-editor-list", "Editor + Notes", "Alt+2"),
("view-all", "All Panels", "Alt+3"),
];
pub fn setup_menu(app: &App) -> Result<(), Box<dyn std::error::Error>> {
let mut view_menu = SubmenuBuilder::new(app, "View");
for (id, label, accel) in &VIEW_ITEMS {
view_menu = view_menu.text(*id, format!("{label} {accel}"));
}
let view_submenu = view_menu.build()?;
let menu = tauri::menu::MenuBuilder::new(app)
.item(&view_submenu)
.build()?;
app.set_menu(menu)?;
app.on_menu_event(|app_handle, event| {
let id = event.id().0.as_str();
if id.starts_with("view-") {
let _ = app_handle.emit("menu-event", id);
}
});
Ok(())
}