feat: add LifeOps executive assistant scaffold#137
Closed
jbcrane13 wants to merge 2 commits into
Closed
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds the initial “LifeOps” executive-assistant scaffold to AgentBoard (macOS + iOS), introducing a new personal/admin task surface that’s intentionally separated from existing Work/Sessions/Agents workflows and backed by fixtures (no external integrations yet).
Changes:
- Adds LifeOps domain models, fixtures, and a fixture-backed
LifeOpsStoreinAgentBoardCore. - Adds shared SwiftUI LifeOps dashboard/sections and wires navigation into the macOS sidebar and iOS tab shell.
- Adds model/store/interface tests plus PRD/spec/plan docs and ADR-014.
Reviewed changes
Copilot reviewed 23 out of 24 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/superpowers/specs/2026-05-27-lifeops-executive-assistant-design.md | Adds LifeOps design spec (module boundaries, models, store/UI expectations). |
| docs/superpowers/plans/2026-05-27-lifeops-mvp-implementation.md | Adds implementation plan/guardrails for scaffold-first approach. |
| docs/PRD-lifeops-executive-assistant.md | Adds PRD defining goals, scope, workflows, and MVP acceptance criteria. |
| docs/ADR.md | Adds ADR-014 documenting the LifeOps module decision. |
| AGENTS.md | References ADR-014 and logs planning activity. |
| AgentBoardUI/Screens/LifeOpsScreen.swift | Implements shared LifeOps screen (dashboard + compact layout). |
| AgentBoardUI/Components/LifeOpsTaskRow.swift | Adds task row component (priority + metadata + Sarah label). |
| AgentBoardUI/Components/LifeOpsQuickCaptureView.swift | Adds quick capture component with accessibility identifiers. |
| AgentBoardUI/Components/LifeOpsPriorityBadge.swift | Adds priority badge component with accessibility identifier. |
| AgentBoardUI/Components/DesktopSidebar.swift | Adds LifeOps tab badge count. |
| AgentBoardTests/LifeOpsStoreTests.swift | Adds store filtering/mutation tests. |
| AgentBoardTests/LifeOpsModelsTests.swift | Adds Codable + fixture integrity tests. |
| AgentBoardTests/LifeOpsInterfaceTests.swift | Adds interface/contract tests for navigation + accessibility IDs. |
| AgentBoardTests/AppDestinationTests.swift | Updates stable destination ordering tests to include LifeOps. |
| AgentBoardMobile/MobileRootView.swift | Adds LifeOps tab routing to LifeOpsScreen in compact mode. |
| AgentBoardCore/Stores/LifeOpsStore.swift | Adds LifeOps store, protocols, and fixture services. |
| AgentBoardCore/Stores/AgentBoardAppModel.swift | Wires lifeOpsStore into app model + bootstrap. |
| AgentBoardCore/Services/LifeOpsFixtures.swift | Adds seed/fixture data for tasks/approvals/jobs/family requests. |
| AgentBoardCore/Models/LifeOpsModels.swift | Adds LifeOps models/enums (Codable/Sendable). |
| AgentBoardCore/Models/AppDestination.swift | Adds .lifeOps destination, label, icon, and desktop tab inclusion. |
| AgentBoard/DesktopRootView.swift | Routes .lifeOps destination to LifeOpsScreen dashboard mode. |
| AgentBoard.xcodeproj/project.pbxproj | Adds new LifeOps files to build phases/targets. |
| .swiftlint.yml | Enables SwiftLint caching via cache_path. |
| .gitignore | Ignores SwiftLint cache directory. |
Comments suppressed due to low confidence (1)
AgentBoardUI/Components/DesktopSidebar.swift:167
- The LifeOps sidebar badge is computed from
nowTasks.count, butnowTasksis capped to 3 items. This makes the badge undercount when there are more than 3 P0/P1 tasks.
private func tabCount(_ tab: AppDestination) -> Int? {
switch tab {
case .lifeOps: appModel.lifeOpsStore.nowTasks.count
case .work: appModel.workStore.items.count
case .agents: appModel.agentsStore.summaries.count
case .sessions: appModel.sessionsStore.sessions.count
case .chat, .settings: nil
}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+88
to
+102
| public var nowTasks: [LifeTask] { | ||
| Array(visibleTasks | ||
| .filter { $0.priority == .p0 || $0.priority == .p1 } | ||
| .sorted(by: priorityDueUrgencySort) | ||
| .prefix(3)) | ||
| } | ||
|
|
||
| public var todayTasks: [LifeTask] { | ||
| visibleTasks | ||
| .filter { task in | ||
| task.priority == .p1 || task.dueAt.map(isTodayOrOverdue) == true | ||
| } | ||
| .sorted(by: priorityDueUrgencySort) | ||
| } | ||
|
|
Comment on lines
+197
to
+200
| ## ADR-014: LifeOps executive assistant module | ||
| **Date:** 2026-05-27 | ||
| **Status:** Planned | ||
| **Decision:** Add a LifeOps module inside AgentBoard rather than starting a separate app for Blake's ADHD-oriented executive-function assistant workflow. |
Comment on lines
+115
to
+124
| public var familyTasks: [LifeTask] { | ||
| tasks | ||
| .filter { task in | ||
| task.owner == .family || | ||
| task.owner == .sarah || | ||
| task.category == .family || | ||
| task.source?.originActor == .sarah | ||
| } | ||
| .sorted(by: priorityDueUrgencySort) | ||
| } |
Owner
Author
|
Closing as superseded: LifeOps should be a separate app/repo, not an AgentBoard module. Keeping the branch as reference material only. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
LifeOpsStorefor ADHD-oriented task views, approvals, job-search follow-ups, and Sarah/family request support.Scope boundaries
Quality gates
swiftlint lint --strictswiftformat --lint --config .swiftformat AgentBoard AgentBoardTestsxcodebuild test -scheme AgentBoard -destination 'platform=macOS'xcodebuild -scheme AgentBoardMobile -destination 'generic/platform=iOS Simulator' buildCloses #136.