Workspace is now a thin host adapter. Engine owns sessions and notebook entries (via store observation), GitHub auth + OAuth device flow, hook-pack discovery, address annotations and address actions, the disassembler cache, and all instrument lifecycle. EventLog is @Observable so SwiftUI tracks it directly; the host no longer mirrors event arrays or version counters. R2 (live disassembly + trace inspection) lives entirely in LumaCore as concrete Disassembler / TraceDisassembler classes returning portable StyledText spans. ProcessNodeViewModel and InstrumentRuntime are gone; views read engine.processNodes / node.instruments / engine.descriptor(for:) directly. Reorganize Luma/Models/ — instrument UI dispatch lives under Luma/Instruments/, Monaco editor glue under Luma/Editor/, and the remaining UI types sit at the top of Luma/.
16 lines
266 B
Swift
16 lines
266 B
Swift
import SwiftUI
|
|
import LumaCore
|
|
|
|
struct InstrumentEventMenuItem: Identifiable {
|
|
enum Role {
|
|
case normal
|
|
case destructive
|
|
}
|
|
|
|
let id = UUID()
|
|
let title: String
|
|
let systemImage: String?
|
|
let role: Role
|
|
let action: () -> Void
|
|
}
|