Skip to content
Merged
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
36 changes: 36 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@ let package = Package(
name: "SwiftASB",
targets: ["SwiftASB"]
),
.library(
name: "ASBPresentation",
targets: ["ASBPresentation"]
),
.library(
name: "ASBAppKit",
targets: ["ASBAppKit"]
),
.library(
name: "ASBSwiftUI",
targets: ["ASBSwiftUI"]
),
],
dependencies: [
.package(url: "https://github.com/apple/swift-async-algorithms", from: "1.1.0"),
Expand All @@ -27,10 +39,34 @@ let package = Package(
.product(name: "AsyncAlgorithms", package: "swift-async-algorithms"),
]
),
.target(
name: "ASBPresentation",
dependencies: ["SwiftASB"]
),
.target(
name: "ASBAppKit",
dependencies: ["ASBPresentation", "SwiftASB"]
),
.target(
name: "ASBSwiftUI",
dependencies: ["ASBAppKit", "ASBPresentation", "SwiftASB"]
),
.testTarget(
name: "SwiftASBTests",
dependencies: ["SwiftASB"]
),
.testTarget(
name: "ASBPresentationTests",
dependencies: ["ASBPresentation"]
),
.testTarget(
name: "ASBAppKitTests",
dependencies: ["ASBAppKit", "ASBPresentation"]
),
.testTarget(
name: "ASBSwiftUITests",
dependencies: ["ASBAppKit", "ASBPresentation", "ASBSwiftUI"]
),
],
swiftLanguageModes: [.v6]
)
16 changes: 10 additions & 6 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -471,12 +471,16 @@ workflow earns them in a later feature release.
package docs and DocC as the source of truth for SwiftASB behavior, then sync
the plugin when public API, examples, compatibility windows, diagnostics,
approval handling, validation, or recommended integration shape changes.
- [ ] Basic SwiftUI component library for SwiftASB consumers. Start with small,
copyable components that demonstrate the stable observable companions:
dashboard status, turn minimap call snapshots, recent turns, recent files,
recent commands, diagnostics, and approval/elicitation prompts. Keep this as a
development aide and example surface first; do not let it blur the core
package API or force an app-specific design system into the library.
- [ ] Hybrid presentation and UI component targets for SwiftASB consumers. The
package now has `ASBPresentation`, `ASBAppKit`, and `ASBSwiftUI` targets, and
`ASBPresentation` now has the framework-neutral foundation for sidebar, turn
timeline, recent activity, agenda, dashboard, selection state, viewport hints,
and typed UI intents. Next, add `ASBAppKit` dense macOS renderers such as
thread sidebars and turn timelines, then add `ASBSwiftUI` native light panels
plus SwiftUI wrappers around AppKit-backed dense components. Keep `SwiftASB`
as the runtime source of truth and avoid letting AppKit or SwiftUI own
separate thread-list, timeline, cache, or action models. See
[`docs/maintainers/presentation-ui-targets-plan.md`](docs/maintainers/presentation-ui-targets-plan.md).

### Public API Curation

Expand Down
7 changes: 7 additions & 0 deletions Sources/ASBAppKit/ASBAppKitModule.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import AppKit
import ASBPresentation
import SwiftASB

struct ASBAppKitModule: Sendable {
static let name = "ASBAppKit"
}
Loading
Loading