Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
117b87b
light and dark themed titlebar
thetronjohnson Aug 4, 2025
ba60b63
custom navbar
thetronjohnson Aug 4, 2025
4c261db
move icons to the titlebar
thetronjohnson Aug 6, 2025
8fc476a
ui updates to project and session listings
thetronjohnson Aug 6, 2025
50321b4
made changes to session creation flow and fixed duplicate tab opening
thetronjohnson Aug 6, 2025
65e2d7a
update the sessions ui
thetronjohnson Aug 6, 2025
ed06049
change new tab behaviour to open a new session chat
thetronjohnson Aug 6, 2025
19ff260
cleaned up settings page ui
thetronjohnson Aug 6, 2025
357a697
fix padding in settings page
thetronjohnson Aug 6, 2025
0f3624b
added minor border separation to the ui
thetronjohnson Aug 6, 2025
b47ffd6
move titlebar items to a menu
thetronjohnson Aug 7, 2025
bbac47d
update the project lisiting ui ux
thetronjohnson Aug 7, 2025
a9ec771
changed behavior of new tab icon and removed specifying project path …
thetronjohnson Aug 7, 2025
f85e52b
ui changes to agent creation and usage dashboard
thetronjohnson Aug 7, 2025
e10f39b
update design strutures of MCP and Claude.md Page
thetronjohnson Aug 8, 2025
b76916c
improved visual contrast for themes
thetronjohnson Aug 8, 2025
5ec2371
use font inter
thetronjohnson Aug 8, 2025
a2de063
typography updates
thetronjohnson Aug 8, 2025
05435d2
micro interactions for buttons
thetronjohnson Aug 8, 2025
b010bc3
move privacy settings to the general tab
thetronjohnson Aug 8, 2025
71cb2b2
make heading and font colors more consistent
thetronjohnson Aug 8, 2025
41de78a
update usage dashboard design and performance improvements
thetronjohnson Aug 8, 2025
5832404
inspecting issue with cc agents
thetronjohnson Aug 8, 2025
f6df280
fix issue with cc agents
thetronjohnson Aug 8, 2025
4142174
improve ui and fix agent metrics display
thetronjohnson Aug 8, 2025
f5e6cd5
added custom tooltips
thetronjohnson Aug 8, 2025
752ea3f
implement tab and session persistence
thetronjohnson Aug 8, 2025
5bdd9da
fix corners and added titlebar drag
thetronjohnson Aug 8, 2025
5cc5b83
refactor(ui): remove unused props/imports and delegate project path s…
123vivekr Aug 8, 2025
11ef1b0
chore(session): simplify restored SessionSummary fields
123vivekr Aug 8, 2025
9baaac2
feat(ui): transparent window and rounded corners for Tauri
123vivekr Aug 10, 2025
600d1e3
feat(titlebar): macOS-style traffic light controls and action dropdown
123vivekr Aug 10, 2025
c469951
feat(titlebar): integrate custom titlebar UI; update app entry and gl…
123vivekr Aug 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
custom navbar
  • Loading branch information
thetronjohnson authored and 123vivekr committed Aug 10, 2025
commit ba60b63cdeee1b08b105e789540ac63a81f0e6d1
85 changes: 70 additions & 15 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ crate-type = ["lib", "cdylib", "staticlib"]
tauri-build = { version = "2", features = [] }

[dependencies]
tauri = { version = "2", features = ["protocol-asset", "tray-icon", "image-png"] }
tauri = { version = "2", features = [ "macos-private-api", "protocol-asset", "tray-icon", "image-png"] }
tauri-plugin-shell = "2"
tauri-plugin-dialog = "2"
tauri-plugin-fs = "2"
Expand All @@ -30,6 +30,7 @@ tauri-plugin-notification = "2"
tauri-plugin-clipboard-manager = "2"
tauri-plugin-global-shortcut = "2"
tauri-plugin-http = "2"
window-vibrancy = "0.5"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["full"] }
Expand Down
7 changes: 6 additions & 1 deletion src-tauri/capabilities/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@
"notification:default",
"clipboard-manager:default",
"global-shortcut:default",
"updater:default"
"updater:default",
"core:window:allow-minimize",
"core:window:allow-maximize",
"core:window:allow-unmaximize",
"core:window:allow-close",
"core:window:allow-is-maximized"
]
}
30 changes: 12 additions & 18 deletions src-tauri/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,22 +45,11 @@ use commands::storage::{
use commands::proxy::{get_proxy_settings, save_proxy_settings, apply_proxy_settings};
use process::ProcessRegistryState;
use std::sync::Mutex;
use tauri::{Manager, Theme};
use tauri::Manager;

#[cfg(target_os = "macos")]
use window_vibrancy::{apply_vibrancy, NSVisualEffectMaterial};

#[tauri::command]
async fn set_window_theme(window: tauri::Window, theme: String) -> Result<(), String> {
let theme_enum = match theme.as_str() {
"dark" => Some(Theme::Dark),
"light" => Some(Theme::Light),
_ => None,
};

if let Some(theme) = theme_enum {
window.set_theme(Some(theme)).map_err(|e| e.to_string())?;
}

Ok(())
}

fn main() {
// Initialize logger
Expand Down Expand Up @@ -151,6 +140,14 @@ fn main() {
// Initialize Claude process state
app.manage(ClaudeProcessState::default());

// Apply window vibrancy with rounded corners on macOS
#[cfg(target_os = "macos")]
{
let window = app.get_webview_window("main").unwrap();
apply_vibrancy(&window, NSVisualEffectMaterial::HudWindow, None, Some(12.0))
.expect("Failed to apply window vibrancy");
}

Ok(())
})
.invoke_handler(tauri::generate_handler![
Expand Down Expand Up @@ -264,9 +261,6 @@ fn main() {
// Proxy Settings
get_proxy_settings,
save_proxy_settings,

// Window Theme
set_window_theme,
])
.run(tauri::generate_context!())
.expect("error while running tauri application");
Expand Down
6 changes: 4 additions & 2 deletions src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
"frontendDist": "../dist"
},
"app": {
"macOSPrivateApi": true,
"windows": [
{
"title": "Claudia",
"width": 800,
"height": 600,
"titleBarStyle": "transparent",
"theme": "dark"
"decorations": false,
"transparent": true,
"shadow": true
}
],
"security": {
Expand Down
17 changes: 14 additions & 3 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { ProjectList } from "@/components/ProjectList";
import { SessionList } from "@/components/SessionList";
import { RunningClaudeSessions } from "@/components/RunningClaudeSessions";
import { Topbar } from "@/components/Topbar";
import { CustomTitlebar } from "@/components/CustomTitlebar";
import { MarkdownEditor } from "@/components/MarkdownEditor";
import { ClaudeFileEditor } from "@/components/ClaudeFileEditor";
import { Settings } from "@/components/Settings";
Expand Down Expand Up @@ -476,15 +477,25 @@ function AppContent() {

return (
<div className="h-screen bg-background flex flex-col">
{/* Topbar */}
<Topbar
{/* Custom Titlebar */}
<CustomTitlebar
onAgentsClick={() => setShowAgentsModal(true)}
onUsageClick={() => createUsageTab()}
onClaudeClick={() => createClaudeMdTab()}
onMCPClick={() => createMCPTab()}
onSettingsClick={() => createSettingsTab()}
onInfoClick={() => setShowNFO(true)}
/>

{/* Topbar - Commented out since navigation moved to titlebar */}
{/* <Topbar
onClaudeClick={() => createClaudeMdTab()}
onSettingsClick={() => createSettingsTab()}
onUsageClick={() => createUsageTab()}
onMCPClick={() => createMCPTab()}
onInfoClick={() => setShowNFO(true)}
onAgentsClick={() => setShowAgentsModal(true)}
/>
/> */}

{/* Analytics Consent Banner */}
<AnalyticsConsentBanner />
Expand Down
16 changes: 15 additions & 1 deletion src/components/App.cleaned.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { Toast, ToastContainer } from "@/components/ui/toast";
import { TabManager } from "@/components/TabManager";
import { TabContent } from "@/components/TabContent";
import { AgentsModal } from "@/components/AgentsModal";
import { CustomTitlebar } from "@/components/CustomTitlebar";
import { useTabState } from "@/hooks/useTabState";

/**
Expand Down Expand Up @@ -111,8 +112,21 @@ function AppContent() {
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
className="min-h-screen bg-background flex flex-col"
className="min-h-screen bg-background flex flex-col rounded-xl overflow-hidden shadow-2xl border border-border/20"
>
{/* Custom Titlebar */}
<CustomTitlebar
onSettingsClick={() => {
// Open settings tab or modal
window.dispatchEvent(new CustomEvent('create-settings-tab'));
}}
onAgentsClick={() => setShowAgentsModal(true)}
onMenuClick={() => {
// Could open a command palette or menu
console.log('Menu clicked');
}}
/>

{/* Tab-based interface */}
<div className="flex-1 flex flex-col">
<TabManager />
Expand Down
Loading