diff --git a/wiki/concepts/menu-bar-popover.md b/wiki/concepts/menu-bar-popover.md index c0787a85..2c244185 100644 --- a/wiki/concepts/menu-bar-popover.md +++ b/wiki/concepts/menu-bar-popover.md @@ -2,7 +2,7 @@ > **Kind:** concept > **Sources:** Bubo/Composition/App/App.swift, Bubo/Presentation/Views/MenuBar/MenuBarView.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+AutoDefer.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+RollForward.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+Pomodoro.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+Timeline.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+BacklogDrop.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+Strings.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+EventActions.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+Permissions.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+Focus.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+NavigationRoutes.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+MainContent.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+Lifecycle.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+EventRow.swift, Bubo/Presentation/Views/MenuBar/MenuBarView+DayGroup.swift, Bubo/Presentation/Views/Components/, Bubo/Application/Reminders/ReminderService.swift -> **Last ingest:** 2026-05-14 (rev: line refs into `App.swift` bumped +1 — `MenuBarExtra` scene `:316`, `drawOwl` `:45`, `MenuBarIconCache` `:5–14`, density bar `:206`, working-hours fallback `:199–200`; `BuboApp` struct itself `:18` with `@main` on `:17`) +> **Last ingest:** 2026-05-14 (rev: PR #547 — Command Bar replaces `PopoverHeader` at top of `mainContent`; `NowNextLine` removed; layout order updated) > **Related:** [`../modules/app.md`](../modules/app.md), [`../modules/views.md`](../modules/views.md), [`../architecture/event-pipeline.md`](../architecture/event-pipeline.md) ## What @@ -14,7 +14,7 @@ The menu-bar popover is Bubo's primary surface — one click on the owl icon ope - `BuboApp` (`Bubo/Composition/App/App.swift:18`, `@main` on `:17`) declares a `MenuBarExtra` scene (`:316`) with a Core-Graphics owl glyph (`:45`) plus a density bar (calendar-load indicator). - The scene's content is `MenuBarView` (`Bubo/Presentation/Views/MenuBar/MenuBarView.swift`). - `MenuBarView` reads `ReminderService.upcomingEvents` and `BacklogService.tasks` directly via `@Observable`. -- Sub-views: `DaySectionView`, `EventRowView`, `GhostEventRow` (optimizer ghost previews), `FreeSlotRow`, `NowNextLine`, `SmartActionsBar`. +- Sub-views: `DaySectionView`, `EventRowView`, `GhostEventRow` (optimizer ghost previews), `FreeSlotRow`, `SmartActionsBar`, `inlineStatusRow` (single-line network/sync/cache status). ## Density bar (J2) @@ -24,6 +24,18 @@ The thin bar under the owl is a 0–10 density bucket — fraction of today's wo The dock-tile and status-item badge count is governed by `ReminderSettings.badgeCountMode` (off, unread reminders, today's events, etc.). +## Main content layout + +`MenuBarView+MainContent.swift:128` (`mainContent`) stacks sub-views in this order: + +1. **Optimizer Command Bar** — full-width button ("What should we optimize?", sparkles icon, ⌘K badge). Tapping sets `paletteContext = MenuBarPaletteContext()` to open the command palette. Added in PR #547 as the command-first entry point; replaces the old `PopoverHeader` title block at the top. +2. **SmartActionsBar** — chip row of ranked quick actions (shown only when `optimizerService.backlogService` is non-nil). +3. **Date header** — inline `HStack` with `headerTitle` / `headerSubtitle` labels and `dayNavCluster` (day-navigation arrows, shown when `filteredEventsByDay.count > 1`). Replaces the former `PopoverHeader` component at this position. +4. **`inlineStatusRow`** — single quiet line for the highest-priority system issue (no network, sync error, cached data). +5. **`WorldClockStripView`** — shown only when `settings.worldClockCityIDs` is non-empty. +6. **`ColorFilterBar`** — shown only when `reminderService.nonDisintegratingEventCount > 0`. +7. **Events** — scrollable timeline (day-sections with event/free-slot/ghost rows). + ## Quick actions -`SmartActionsBar` surfaces the optimizer's current `shadowProposal` and a small set of contextual actions ranked by `QuickActionRanker` (in `Application/Intents/`). One-click accept applies the proposal via `OptimizerService`. +`SmartActionsBar` surfaces the optimizer's current `shadowProposal` and a small set of contextual actions ranked by `QuickActionRanker` (in `Application/Intents/`). One-click accept applies the proposal via `OptimizerService`. The Optimizer Command Bar above it is the primary ⌘K entry point for NL intent composition. diff --git a/wiki/log.md b/wiki/log.md index 7a3ce014..559b893d 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -909,3 +909,10 @@ Append-only chronological record of wiki operations. Newest at the bottom. See ` - **Minor line-ref drift** of 1–4 lines was tolerated on a handful of fitness-objective formula citations (`concepts/fitness-objectives.md`) where the formulas themselves were spot-checked and confirmed accurate; the cited lines still resolve into the right method. - `wiki/architecture/layered-structure.md` was **not touched** this pass — it is the longest architecture page (18 KB), no concrete drift was found in spot checks, and its prose is largely structural narrative rather than line-anchored facts. - `modules/utils.md` is a one-row retirement notice for the removed `Bubo/Utils/` directory; it carries no source citations and was deliberately left at its 2026-05-13 ingest date. + + +## [2026-05-14] ingest | PR #547 — feat(ui): complete visual overhaul with premium glassmorphism and richer backgrounds + +- **Trigger:** PR #547 (7caf0ed242c5) +- **Touched:** wiki/concepts/menu-bar-popover.md, wiki/modules/views.md +- **Notes:** MenuBarView+MainContent.swift replaced PopoverHeader at the top of mainContent with a new Optimizer Command Bar ("What should we optimize?" / ⌘K) and reordered the sub-view stack (Command Bar → SmartActions → date header → inlineStatusRow → WorldClock → FilterBar → events); NowNextLine corrected out of sub-views list (removed in earlier PR #535). EventRowView+HoverActions.swift gained a find-better-time button (wand.and.stars); +HoverActions.swift cluster updated 169→184 L. SkinDefinition material defaults (.thick/.regular→.thin/.ultraThin) and DS corner radii (12→16, 8→12, 4→8) are global numeric changes with no wiki-documented values to update. Skin JSON gradient tweaks (opacity, angle) and GADebugLog autoclosure refactor carry no wiki-documented facts. diff --git a/wiki/modules/views.md b/wiki/modules/views.md index 1d23166e..b944130e 100644 --- a/wiki/modules/views.md +++ b/wiki/modules/views.md @@ -2,7 +2,7 @@ > **Kind:** module > **Sources:** Bubo/Presentation/Views/ -> **Last ingest:** 2026-05-14 (rev: struct line/total-line refs resynced (+1 to +3 drift); `BacklogFullscreenView` shrank 952→765 L; `BacklogScrollOffsetKey.swift` row removed — the file no longer exists; MenuBar preference keys file now declares `OptimizerBottomKey` only) +> **Last ingest:** 2026-05-14 (rev: PR #547 — `+HoverActions.swift` 169→184 L; find-better-time button added to hover actions description) > **Related:** [`../concepts/menu-bar-popover.md`](../concepts/menu-bar-popover.md), [`../concepts/full-screen-alerts.md`](../concepts/full-screen-alerts.md), [`../concepts/design-principles.md`](../concepts/design-principles.md), [`skins.md`](skins.md) ## Layout @@ -138,7 +138,7 @@ Top SwiftUI files by line count. | `Backlog/BacklogFullscreenView.swift` | 765 | Body + computed properties + subview helpers + filter chrome. Three logic clusters split out 2026-05-12: `+BulkActions.swift`, `+Reorder.swift`, `+Actions.swift`. All `@State`/`@FocusState`/`@Environment` wrappers are internal so siblings can read/write. | | `CommandPalette/CommandPalette.swift` | 788 | NL intent / quick action search. Three clusters split out 2026-05-12: `+PowerMode.swift`, `+Status.swift`, `+Actions.swift`. | | `Components/Backlog/BacklogTaskRow.swift` | 730 | Single-row component. `BacklogTaskRow+Subviews.swift` (601) holds drag payload + checkbox/content/controls/background/focus-ring/scheduled-chip helpers; `OverduePulseDot.swift` (25) lifted to its own file. | -| `Components/Event/EventRowView.swift` | 721 | Single-row component. Three clusters split out 2026-05-12: `+Title.swift` (102, inline rename gate + commit/cancel), `+DragReschedule.swift` (134, vertical drag with minute snapping + preview badge), `+HoverActions.swift` (169, snooze/complete/disintegration-delete/reminder menu). | +| `Components/Event/EventRowView.swift` | 721 | Single-row component. Three clusters split out 2026-05-12: `+Title.swift` (102, inline rename gate + commit/cancel), `+DragReschedule.swift` (134, vertical drag with minute snapping + preview badge), `+HoverActions.swift` (184, find-better-time/snooze/complete/disintegration-delete/reminder menu). | | `Event/AddEventView.swift` | 652 | Event-creation form. Two clusters split out 2026-05-12: `+FindBestTime.swift` (117, optimizer-driven slot suggestion + helpers), `+Pomodoro.swift` (347, toggle + section + timeline preview + recurrence-rule builder). | Treat these as flagged for further decomposition only if needed — successive logic splits brought every "mega-file" below ~1000 lines. `MenuBarView.swift` is now composition only at 222 L; the remaining extension files are 200–450 L each, all single-concern and ready for direct edits.