diff --git a/CHANGELOG.md b/CHANGELOG.md index a616cf8..7f9f25f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,14 +8,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +- Emoji icon picker in SettingsTab: 24 project-relevant emoji in 8-column grid popup, replaces plain text icon input - Native directory picker for CWD fields: custom `pick_directory` Tauri command using `rfd` crate with `set_parent(&window)` for modal behavior on Linux; browse buttons added to Default CWD, existing project CWD, and Add Project path inputs in SettingsTab - `rfd = { version = "0.16", default-features = false, features = ["gtk3"] }` direct dependency for modal file dialogs (zero extra compile β€” already built transitively via tauri-plugin-dialog) - CSS relative units rule (`.claude/rules/18-relative-units.md`): enforces rem/em for layout CSS, px only for icons/borders/shadows +### Changed +- ProjectBox layout: switched from flex to CSS grid (`grid-template-rows: auto 1fr auto`) β€” header (auto) | Claude session (fills remaining) | terminal (16rem fixed) +- AgentPane prompt area: anchored to bottom (`justify-content: flex-end`) instead of vertical center, removed `max-width: 600px` constraint β€” uses full panel width +- ProjectGrid.svelte CSS converted from px to rem: gap 0.25rem, padding 0.25rem, min-width 30rem +- TerminalTabs.svelte CSS converted from px to rem: tab bar, tabs, close/add buttons, empty state + ### Removed +- Nerd Font codepoints for project icons β€” replaced with emoji (`πŸ“` default) for cross-platform compatibility +- Nerd Font `font-family` declarations from ProjectHeader and TerminalTabs - Stub `pick_directory` Tauri command (replaced by `tauri-plugin-dialog` frontend API) ### Fixed +- Project icons showing "?" β€” Nerd Font codepoint `\uf120` not rendering without font installed; switched to emoji - Native directory picker not opening: added missing `"dialog:default"` permission to `v2/src-tauri/capabilities/default.json` β€” Tauri's IPC security layer silently blocked `invoke()` calls without this capability - Native directory picker not modal on Linux: replaced `@tauri-apps/plugin-dialog` `open()` with custom `pick_directory` Tauri command using `rfd::AsyncFileDialog::set_parent(&window)` β€” the plugin skips `set_parent` on Linux via `cfg(any(windows, target_os = "macos"))` gate - Native directory picker not dark-themed: set `GTK_THEME=Adwaita:dark` via `std::env::set_var` at Tauri startup to force dark theme on native GTK dialogs diff --git a/TODO.md b/TODO.md index 1f871a8..7c857cf 100644 --- a/TODO.md +++ b/TODO.md @@ -11,6 +11,7 @@ ## Completed +- [x] **Project workspace layout redesign** -- CSS grid layout for ProjectBox (header|session|terminal), bottom-anchored AgentPane prompt, emoji icons replacing Nerd Font, pxβ†’rem conversions across 4 components. | Done: 2026-03-08 - [x] **Native directory picker** -- Added tauri-plugin-dialog for native OS folder picker on CWD fields (Default CWD, project CWD, Add Project path). Removed stub pick_directory command. | Done: 2026-03-08 - [x] **Fix sidebar drawer content-driven width** -- Root cause: leftover v2 grid layout on #app in app.css (`grid-template-columns: var(--sidebar-width) 1fr`) constrained .app-shell to 260px. Removed grid; JS $effect measurement now works correctly, all 4 tabs scale to content. | Done: 2026-03-08 - [x] **CSS relative units rule** -- Added .claude/rules/18-relative-units.md enforcing rem/em for layout CSS. Converted GlobalTabBar.svelte + App.svelte sidebar styles from px to rem. | Done: 2026-03-08 diff --git a/docs/v3-progress.md b/docs/v3-progress.md index b698196..c9c1f3e 100644 --- a/docs/v3-progress.md +++ b/docs/v3-progress.md @@ -325,3 +325,25 @@ All editor themes map to the same `--ctp-*` CSS custom property names (26 vars). - [x] Fix: `std::env::set_var("GTK_THEME", "Adwaita:dark")` at start of `run()` in lib.rs β€” dark-themed dialog - [x] Added `rfd = { version = "0.16", default-features = false, features = ["gtk3"] }` as direct dep β€” MUST disable defaults to avoid gtk3+xdg-portal feature conflict - [x] Switched SettingsTab from `@tauri-apps/plugin-dialog` `open()` to `invoke('pick_directory')` + +### Session: 2026-03-08 β€” Project Workspace Layout Redesign + Icon Fix + +#### Icon Fix +- [x] Replaced Nerd Font codepoints (`\uf120`) with emoji (`πŸ“` default) β€” Nerd Font not installed, showed "?" +- [x] Added emoji picker grid (24 project-relevant emoji, 8-column popup) in SettingsTab instead of plain text input +- [x] Removed `font-family: 'NerdFontsSymbols Nerd Font'` from ProjectHeader and TerminalTabs + +#### ProjectBox Layout Redesign +- [x] Switched ProjectBox from flex to CSS grid (`grid-template-rows: auto 1fr auto`) β€” header | session | terminal zones +- [x] Terminal area: explicit `height: 16rem` instead of collapsing to content +- [x] Session area: `min-height: 0` for proper flex child overflow + +#### AgentPane Prompt Layout +- [x] Prompt area anchored to bottom (`justify-content: flex-end`) instead of vertical center +- [x] Removed `max-width: 600px` constraint on form and toolbar β€” uses full panel width +- [x] Toolbar sits directly above textarea + +#### CSS px β†’ rem Conversions +- [x] ProjectGrid.svelte: gap 4px β†’ 0.25rem, padding 4px β†’ 0.25rem, min-width 480px β†’ 30rem +- [x] TerminalTabs.svelte: tab bar, tabs, close/add buttons all converted to rem +- [x] ProjectBox.svelte: min-width 480px β†’ 30rem