Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 15 additions & 3 deletions wiki/concepts/menu-bar-popover.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)

Expand All @@ -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.
7 changes: 7 additions & 0 deletions wiki/log.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
4 changes: 2 additions & 2 deletions wiki/modules/views.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down