@design.estate/dees-catalog 4.8.1 → 4.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_bundle/bundle.js +580 -95
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +18 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +23 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +10 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +575 -99
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +12 -1
- package/package.json +2 -2
- package/readme.md +3 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +17 -1
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +10 -0
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +615 -95
- package/ts_web/elements/00group-harness/interfaces.ts +13 -1
- package/dist_watch/bundle.js +0 -235637
- package/dist_watch/bundle.js.map +0 -7
- package/dist_watch/index.html +0 -28
package/dist_bundle/bundle.js
CHANGED
|
@@ -3901,23 +3901,23 @@ var init_innerFrom = __esm({
|
|
|
3901
3901
|
});
|
|
3902
3902
|
|
|
3903
3903
|
// node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js
|
|
3904
|
-
function executeSchedule(parentSubscription, scheduler, work, delay3,
|
|
3904
|
+
function executeSchedule(parentSubscription, scheduler, work, delay3, repeat6) {
|
|
3905
3905
|
if (delay3 === void 0) {
|
|
3906
3906
|
delay3 = 0;
|
|
3907
3907
|
}
|
|
3908
|
-
if (
|
|
3909
|
-
|
|
3908
|
+
if (repeat6 === void 0) {
|
|
3909
|
+
repeat6 = false;
|
|
3910
3910
|
}
|
|
3911
3911
|
var scheduleSubscription = scheduler.schedule(function() {
|
|
3912
3912
|
work();
|
|
3913
|
-
if (
|
|
3913
|
+
if (repeat6) {
|
|
3914
3914
|
parentSubscription.add(this.schedule(null, delay3));
|
|
3915
3915
|
} else {
|
|
3916
3916
|
this.unsubscribe();
|
|
3917
3917
|
}
|
|
3918
3918
|
}, delay3);
|
|
3919
3919
|
parentSubscription.add(scheduleSubscription);
|
|
3920
|
-
if (!
|
|
3920
|
+
if (!repeat6) {
|
|
3921
3921
|
return scheduleSubscription;
|
|
3922
3922
|
}
|
|
3923
3923
|
}
|
|
@@ -174440,7 +174440,12 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a81 = DeesElement,
|
|
|
174440
174440
|
<div class="roleRow">
|
|
174441
174441
|
${this.showRole ? b2`<span class="roleLabel">${message2.role}</span>` : ""}
|
|
174442
174442
|
${this.showTimestamp && message2.createdAt ? b2`<span class="timestamp">${harnessFormatClockTime(message2.createdAt)}</span>` : ""}
|
|
174443
|
-
${message2.model ? b2
|
|
174443
|
+
${message2.model ? b2`
|
|
174444
|
+
<span
|
|
174445
|
+
class="modelLabel"
|
|
174446
|
+
title=${message2.effort ? `${message2.model} \xB7 ${message2.effort}` : message2.model}
|
|
174447
|
+
>${message2.model}${message2.effort ? b2`<span class="effortLabel">${message2.effort}</span>` : ""}</span>
|
|
174448
|
+
` : ""}
|
|
174444
174449
|
</div>
|
|
174445
174450
|
` : ""}
|
|
174446
174451
|
${message2.reasoning?.length ? b2`
|
|
@@ -174694,6 +174699,15 @@ __publicField(_DeesHarnessMessage, "styles", [
|
|
|
174694
174699
|
|
|
174695
174700
|
/* Which model produced this message — trails the role/time so a
|
|
174696
174701
|
mid-conversation model switch is visible in the transcript. */
|
|
174702
|
+
/* reasoning effort rides with the model as a subtle pill */
|
|
174703
|
+
.effortLabel {
|
|
174704
|
+
margin-left: 5px;
|
|
174705
|
+
padding: 0 5px;
|
|
174706
|
+
border-radius: var(--dees-radius-full);
|
|
174707
|
+
background: var(--dees-color-fill-secondary);
|
|
174708
|
+
color: var(--dees-color-text-secondary);
|
|
174709
|
+
}
|
|
174710
|
+
|
|
174697
174711
|
.modelLabel {
|
|
174698
174712
|
margin-left: auto;
|
|
174699
174713
|
color: var(--dees-color-text-muted);
|
|
@@ -177025,8 +177039,14 @@ var demoSessions = Array.from({ length: 24 }, (_3, index3) => ({
|
|
|
177025
177039
|
createdAt: Date.now() - (index3 + 2) * 36e5,
|
|
177026
177040
|
updatedAt: Date.now() - (index3 + 1) * 35e5,
|
|
177027
177041
|
messageCount: 4 + index3 % 9,
|
|
177028
|
-
preview: "Latest: the regression test asserts the cache key stays stable across\u2026"
|
|
177042
|
+
preview: "Latest: the regression test asserts the cache key stays stable across\u2026",
|
|
177043
|
+
state: ["normal", "working", "finished", "attention", "error"][index3 % 5],
|
|
177044
|
+
working: index3 % 5 === 1
|
|
177029
177045
|
}));
|
|
177046
|
+
var demoGroups = [
|
|
177047
|
+
{ id: "active", name: "Active work", sessionIds: ["session-0", "session-1", "session-2"] },
|
|
177048
|
+
{ id: "review", name: "Review", sessionIds: ["session-3", "session-4"] }
|
|
177049
|
+
];
|
|
177030
177050
|
var openModal = /* @__PURE__ */ __name(async () => {
|
|
177031
177051
|
const { DeesModal: DeesModal2 } = await Promise.resolve().then(() => (init_dees_modal(), dees_modal_exports));
|
|
177032
177052
|
const content3 = document.createElement("dees-harness-session-list");
|
|
@@ -177061,6 +177081,9 @@ var demoFunc63 = /* @__PURE__ */ __name(() => b2`
|
|
|
177061
177081
|
<dees-button @clicked=${openModal}>Open in a DeesModal</dees-button>
|
|
177062
177082
|
<dees-harness-session-list
|
|
177063
177083
|
.sessions=${demoSessions}
|
|
177084
|
+
.groups=${demoGroups}
|
|
177085
|
+
.ungroupedSessionIds=${demoSessions.slice(5).map((session) => session.id)}
|
|
177086
|
+
.enableGrouping=${true}
|
|
177064
177087
|
selectedSessionId="session-2"
|
|
177065
177088
|
@harness-session-select=${(event) => console.log("select", event.detail.session)}
|
|
177066
177089
|
></dees-harness-session-list>
|
|
@@ -177071,9 +177094,10 @@ var demoFunc63 = /* @__PURE__ */ __name(() => b2`
|
|
|
177071
177094
|
init_dist_ts25();
|
|
177072
177095
|
init_theme();
|
|
177073
177096
|
init_dees_icon();
|
|
177074
|
-
var _collapsedGroupIds_dec, _dropSlot_dec, _draggingSessionId_dec, _search_dec, _enableGrouping_dec, _groups_dec2, _emptyText_dec2, _loading_dec4, _selectedSessionId_dec, _sessions_dec, _a89, _DeesHarnessSessionList_decorators, _init90, _sessions, _selectedSessionId, _loading4, _emptyText2, _groups2, _enableGrouping, _search, _draggingSessionId, _dropSlot, _collapsedGroupIds;
|
|
177097
|
+
var _collapsedGroupIds_dec, _expandedSessionIds_dec, _draggedItemHeight_dec, _dropSlot_dec, _draggingSessionId_dec, _search_dec, _ungroupedSessionIds_dec, _enableGrouping_dec, _groups_dec2, _emptyText_dec2, _loading_dec4, _selectedSessionId_dec, _sessions_dec, _a89, _DeesHarnessSessionList_decorators, _init90, _sessions, _selectedSessionId, _loading4, _emptyText2, _groups2, _enableGrouping, _ungroupedSessionIds, _search, _draggingSessionId, _dropSlot, _draggedItemHeight, _expandedSessionIds, _collapsedGroupIds;
|
|
177098
|
+
var { repeat: repeat5 } = directives_exports;
|
|
177075
177099
|
_DeesHarnessSessionList_decorators = [customElement("dees-harness-session-list")];
|
|
177076
|
-
var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = DeesElement, _sessions_dec = [n5({ attribute: false })], _selectedSessionId_dec = [n5()], _loading_dec4 = [n5({ type: Boolean })], _emptyText_dec2 = [n5()], _groups_dec2 = [n5({ attribute: false })], _enableGrouping_dec = [n5({ type: Boolean })], _search_dec = [r5()], _draggingSessionId_dec = [r5()], _dropSlot_dec = [r5()], _collapsedGroupIds_dec = [r5()], _a89) {
|
|
177100
|
+
var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = DeesElement, _sessions_dec = [n5({ attribute: false })], _selectedSessionId_dec = [n5()], _loading_dec4 = [n5({ type: Boolean })], _emptyText_dec2 = [n5()], _groups_dec2 = [n5({ attribute: false })], _enableGrouping_dec = [n5({ type: Boolean })], _ungroupedSessionIds_dec = [n5({ attribute: false })], _search_dec = [r5()], _draggingSessionId_dec = [r5()], _dropSlot_dec = [r5()], _draggedItemHeight_dec = [r5()], _expandedSessionIds_dec = [r5()], _collapsedGroupIds_dec = [r5()], _a89) {
|
|
177077
177101
|
constructor() {
|
|
177078
177102
|
super(...arguments);
|
|
177079
177103
|
__privateAdd(this, _sessions, __runInitializers(_init90, 8, this, [])), __runInitializers(_init90, 11, this);
|
|
@@ -177082,10 +177106,16 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177082
177106
|
__privateAdd(this, _emptyText2, __runInitializers(_init90, 20, this, "No conversations yet.")), __runInitializers(_init90, 23, this);
|
|
177083
177107
|
__privateAdd(this, _groups2, __runInitializers(_init90, 24, this, [])), __runInitializers(_init90, 27, this);
|
|
177084
177108
|
__privateAdd(this, _enableGrouping, __runInitializers(_init90, 28, this, false)), __runInitializers(_init90, 31, this);
|
|
177085
|
-
__privateAdd(this,
|
|
177086
|
-
__privateAdd(this,
|
|
177087
|
-
__privateAdd(this,
|
|
177088
|
-
__privateAdd(this,
|
|
177109
|
+
__privateAdd(this, _ungroupedSessionIds, __runInitializers(_init90, 32, this, [])), __runInitializers(_init90, 35, this);
|
|
177110
|
+
__privateAdd(this, _search, __runInitializers(_init90, 36, this, "")), __runInitializers(_init90, 39, this);
|
|
177111
|
+
__privateAdd(this, _draggingSessionId, __runInitializers(_init90, 40, this, "")), __runInitializers(_init90, 43, this);
|
|
177112
|
+
__privateAdd(this, _dropSlot, __runInitializers(_init90, 44, this)), __runInitializers(_init90, 47, this);
|
|
177113
|
+
__privateAdd(this, _draggedItemHeight, __runInitializers(_init90, 48, this, 0)), __runInitializers(_init90, 51, this);
|
|
177114
|
+
__privateAdd(this, _expandedSessionIds, __runInitializers(_init90, 52, this, /* @__PURE__ */ new Set())), __runInitializers(_init90, 55, this);
|
|
177115
|
+
__privateAdd(this, _collapsedGroupIds, __runInitializers(_init90, 56, this, /* @__PURE__ */ new Set())), __runInitializers(_init90, 59, this);
|
|
177116
|
+
__publicField(this, "reflowGeneration", 0);
|
|
177117
|
+
__publicField(this, "reflowAnimations", /* @__PURE__ */ new Set());
|
|
177118
|
+
__publicField(this, "dragSourceElement");
|
|
177089
177119
|
}
|
|
177090
177120
|
get sessionsById() {
|
|
177091
177121
|
return new Map(this.sessions.map((session) => [session.id, session]));
|
|
@@ -177097,12 +177127,25 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177097
177127
|
}
|
|
177098
177128
|
return ids;
|
|
177099
177129
|
}
|
|
177100
|
-
/**
|
|
177130
|
+
/** Pinned entries first, followed by explicitly ordered sortable sessions. */
|
|
177101
177131
|
get ungroupedSessions() {
|
|
177102
177132
|
const grouped = this.groupedSessionIds;
|
|
177103
|
-
|
|
177133
|
+
const available = this.sessions.filter((session) => !grouped.has(session.id));
|
|
177134
|
+
const pinned = available.filter((session) => session.draggable === false);
|
|
177135
|
+
const sortableById = new Map(
|
|
177136
|
+
available.filter((session) => session.draggable !== false).map((session) => [session.id, session])
|
|
177137
|
+
);
|
|
177138
|
+
const ordered = [];
|
|
177139
|
+
for (const sessionId of this.ungroupedSessionIds) {
|
|
177140
|
+
const session = sortableById.get(sessionId);
|
|
177141
|
+
if (!session) continue;
|
|
177142
|
+
ordered.push(session);
|
|
177143
|
+
sortableById.delete(sessionId);
|
|
177144
|
+
}
|
|
177145
|
+
const newSessions = [...sortableById.values()].sort(
|
|
177104
177146
|
(left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0)
|
|
177105
177147
|
);
|
|
177148
|
+
return [...pinned, ...ordered, ...newSessions];
|
|
177106
177149
|
}
|
|
177107
177150
|
get filteredSessions() {
|
|
177108
177151
|
const query3 = this.search.trim().toLowerCase();
|
|
@@ -177117,10 +177160,40 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177117
177160
|
focusSearch() {
|
|
177118
177161
|
this.shadowRoot?.querySelector(".searchRow input")?.focus();
|
|
177119
177162
|
}
|
|
177163
|
+
updated(changedProperties) {
|
|
177164
|
+
super.updated(changedProperties);
|
|
177165
|
+
if (this.draggingSessionId && !this.dragSourceElement?.isConnected) {
|
|
177166
|
+
this.clearDragState();
|
|
177167
|
+
}
|
|
177168
|
+
if (!changedProperties.has("sessions")) return;
|
|
177169
|
+
const previousSessions = changedProperties.get("sessions");
|
|
177170
|
+
const previousById = new Map((previousSessions ?? []).map((session) => [session.id, session]));
|
|
177171
|
+
const knownIds = new Set(this.sessions.map((session) => session.id));
|
|
177172
|
+
if (this.draggingSessionId && !knownIds.has(this.draggingSessionId)) {
|
|
177173
|
+
this.clearDragState();
|
|
177174
|
+
}
|
|
177175
|
+
const nextExpanded = new Set(
|
|
177176
|
+
[...this.expandedSessionIds].filter((sessionId) => knownIds.has(sessionId))
|
|
177177
|
+
);
|
|
177178
|
+
for (const session of this.sessions) {
|
|
177179
|
+
const previous3 = previousById.get(session.id);
|
|
177180
|
+
if (previous3 && previous3.working !== true && session.working === true) {
|
|
177181
|
+
nextExpanded.add(session.id);
|
|
177182
|
+
}
|
|
177183
|
+
}
|
|
177184
|
+
if (nextExpanded.size !== this.expandedSessionIds.size || [...nextExpanded].some((sessionId) => !this.expandedSessionIds.has(sessionId))) {
|
|
177185
|
+
this.expandedSessionIds = nextExpanded;
|
|
177186
|
+
}
|
|
177187
|
+
}
|
|
177188
|
+
async disconnectedCallback() {
|
|
177189
|
+
this.clearDragState();
|
|
177190
|
+
await super.disconnectedCallback();
|
|
177191
|
+
}
|
|
177120
177192
|
render() {
|
|
177121
177193
|
const groupingActive = this.enableGrouping && !this.search.trim();
|
|
177122
177194
|
return b2`
|
|
177123
177195
|
<div class="searchRow">
|
|
177196
|
+
<dees-icon class="searchIcon" icon="lucide:Search" iconSize="13"></dees-icon>
|
|
177124
177197
|
<input
|
|
177125
177198
|
placeholder="Search conversations"
|
|
177126
177199
|
.value=${this.search}
|
|
@@ -177160,7 +177233,15 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177160
177233
|
${this.sessions.length ? "No conversations match this search." : this.emptyText}
|
|
177161
177234
|
</div>`;
|
|
177162
177235
|
}
|
|
177163
|
-
return b2
|
|
177236
|
+
return b2`
|
|
177237
|
+
<div class="section">
|
|
177238
|
+
${repeat5(
|
|
177239
|
+
sessions,
|
|
177240
|
+
(session) => session.id,
|
|
177241
|
+
(session) => this.renderItem(session, null, -1)
|
|
177242
|
+
)}
|
|
177243
|
+
</div>
|
|
177244
|
+
`;
|
|
177164
177245
|
}
|
|
177165
177246
|
renderGroupedList() {
|
|
177166
177247
|
const byId = this.sessionsById;
|
|
@@ -177172,7 +177253,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177172
177253
|
${this.groups.map((group) => {
|
|
177173
177254
|
const members = group.sessionIds.map((id) => byId.get(id)).filter((session) => session !== void 0);
|
|
177174
177255
|
const collapsed = this.collapsedGroupIds.has(group.id);
|
|
177175
|
-
const isHeaderDrop = this.dropSlot?.groupId === group.id && this.dropSlot.index === members.length && collapsed;
|
|
177256
|
+
const isHeaderDrop = this.dropSlot?.groupId === group.id && this.dropSlot.index === this.sortableSessions(members).length && collapsed;
|
|
177176
177257
|
return b2`
|
|
177177
177258
|
<button
|
|
177178
177259
|
class="groupHeader ${collapsed ? "collapsed" : ""} ${isHeaderDrop ? "dropTarget" : ""}"
|
|
@@ -177190,8 +177271,16 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177190
177271
|
new CustomEvent("harness-group-context", { detail, bubbles: true, composed: true })
|
|
177191
177272
|
);
|
|
177192
177273
|
}}
|
|
177193
|
-
@dragover=${(event) => this.handleDragOverSlot(
|
|
177194
|
-
|
|
177274
|
+
@dragover=${(event) => this.handleDragOverSlot(
|
|
177275
|
+
event,
|
|
177276
|
+
group.id,
|
|
177277
|
+
this.sortableSessions(members).length
|
|
177278
|
+
)}
|
|
177279
|
+
@drop=${(event) => this.handleDrop(
|
|
177280
|
+
event,
|
|
177281
|
+
group.id,
|
|
177282
|
+
this.sortableSessions(members).length
|
|
177283
|
+
)}
|
|
177195
177284
|
>
|
|
177196
177285
|
<dees-icon class="chevron" icon="lucide:ChevronDown" iconSize="12"></dees-icon>
|
|
177197
177286
|
<span>${group.name}</span>
|
|
@@ -177200,7 +177289,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177200
177289
|
${collapsed ? "" : this.renderSection(members, group.id)}
|
|
177201
177290
|
`;
|
|
177202
177291
|
})}
|
|
177203
|
-
${this.groups.length && ungrouped.length ? b2`
|
|
177292
|
+
${this.groups.length && (ungrouped.length || this.draggingSessionId) ? b2`
|
|
177204
177293
|
<button
|
|
177205
177294
|
class="groupHeader"
|
|
177206
177295
|
type="button"
|
|
@@ -177217,29 +177306,69 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177217
177306
|
}
|
|
177218
177307
|
renderSection(sessions, groupId) {
|
|
177219
177308
|
const slot = this.dropSlot;
|
|
177309
|
+
const entries = [];
|
|
177310
|
+
let logicalIndex = 0;
|
|
177311
|
+
for (const session of sessions) {
|
|
177312
|
+
const isDragging = session.id === this.draggingSessionId;
|
|
177313
|
+
const sortable = session.draggable !== false;
|
|
177314
|
+
if (slot && slot.groupId === groupId && slot.index === logicalIndex && !isDragging && sortable) {
|
|
177315
|
+
entries.push({ type: "placeholder", key: `placeholder:${groupId ?? "ungrouped"}` });
|
|
177316
|
+
}
|
|
177317
|
+
entries.push({
|
|
177318
|
+
type: "session",
|
|
177319
|
+
key: `session:${session.id}`,
|
|
177320
|
+
session,
|
|
177321
|
+
logicalIndex: sortable ? logicalIndex : -1
|
|
177322
|
+
});
|
|
177323
|
+
if (sortable && !isDragging) logicalIndex += 1;
|
|
177324
|
+
}
|
|
177325
|
+
if (slot && slot.groupId === groupId && slot.index === logicalIndex) {
|
|
177326
|
+
entries.push({ type: "placeholder", key: `placeholder:${groupId ?? "ungrouped"}` });
|
|
177327
|
+
}
|
|
177328
|
+
const hasPlaceholder = entries.some((entry) => entry.type === "placeholder");
|
|
177220
177329
|
return b2`
|
|
177221
|
-
|
|
177222
|
-
|
|
177223
|
-
|
|
177224
|
-
|
|
177225
|
-
|
|
177330
|
+
<div class="section" data-group-id=${groupId ?? ""}>
|
|
177331
|
+
${repeat5(
|
|
177332
|
+
entries,
|
|
177333
|
+
(entry) => entry.key,
|
|
177334
|
+
(entry) => entry.type === "placeholder" ? this.renderDropPlaceholder(groupId, slot?.index ?? 0) : this.renderItem(entry.session, groupId, entry.logicalIndex)
|
|
177226
177335
|
)}
|
|
177227
|
-
|
|
177336
|
+
${this.draggingSessionId && !hasPlaceholder && this.sortableSessions(sessions).length === 0 ? b2`
|
|
177337
|
+
<div
|
|
177338
|
+
class="emptyDropZone"
|
|
177339
|
+
@dragover=${(event) => this.handleDragOverSlot(event, groupId, 0)}
|
|
177340
|
+
@drop=${(event) => this.handleDrop(event, groupId, 0)}
|
|
177341
|
+
></div>
|
|
177342
|
+
` : ""}
|
|
177343
|
+
</div>
|
|
177344
|
+
`;
|
|
177345
|
+
}
|
|
177346
|
+
renderDropPlaceholder(groupId, index3) {
|
|
177347
|
+
return b2`
|
|
177348
|
+
<div
|
|
177349
|
+
class="dropPlaceholder"
|
|
177350
|
+
style=${`height: ${Math.max(46, this.draggedItemHeight)}px`}
|
|
177351
|
+
@dragover=${(event) => this.handleDragOverSlot(event, groupId, index3)}
|
|
177352
|
+
@drop=${(event) => this.handleDrop(event, groupId, index3)}
|
|
177353
|
+
></div>
|
|
177228
177354
|
`;
|
|
177229
177355
|
}
|
|
177230
177356
|
renderItem(session, groupId, index3) {
|
|
177231
|
-
const draggable = this.enableGrouping && index3 >= 0;
|
|
177357
|
+
const draggable = this.enableGrouping && session.draggable !== false && index3 >= 0 && !globalThis.matchMedia?.("(pointer: coarse)").matches;
|
|
177358
|
+
const expanded = this.expandedSessionIds.has(session.id);
|
|
177359
|
+
const state5 = session.state ?? "normal";
|
|
177360
|
+
const detailsId = `session-details-${session.id}`;
|
|
177232
177361
|
return b2`
|
|
177233
|
-
<
|
|
177234
|
-
class="item ${session.id === this.selectedSessionId ? "selected" : ""} ${this.draggingSessionId === session.id ? "dragging" : ""}"
|
|
177235
|
-
|
|
177236
|
-
draggable=${draggable
|
|
177237
|
-
@
|
|
177238
|
-
|
|
177239
|
-
|
|
177240
|
-
if (event.key === "Enter") this.emit("harness-session-open", session);
|
|
177362
|
+
<article
|
|
177363
|
+
class="item state-${state5} ${expanded ? "expanded" : ""} ${session.id === this.selectedSessionId ? "selected" : ""} ${this.draggingSessionId === session.id ? "dragging" : ""}"
|
|
177364
|
+
data-session-id=${session.id}
|
|
177365
|
+
.draggable=${draggable}
|
|
177366
|
+
@dblclick=${(event) => {
|
|
177367
|
+
if (this.eventTargetsExpandToggle(event)) return;
|
|
177368
|
+
this.emit("harness-session-open", session);
|
|
177241
177369
|
}}
|
|
177242
177370
|
@contextmenu=${(event) => {
|
|
177371
|
+
if (this.eventTargetsExpandToggle(event)) return;
|
|
177243
177372
|
event.preventDefault();
|
|
177244
177373
|
const detail = {
|
|
177245
177374
|
session,
|
|
@@ -177252,38 +177381,99 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177252
177381
|
);
|
|
177253
177382
|
}}
|
|
177254
177383
|
@dragstart=${(event) => {
|
|
177255
|
-
|
|
177256
|
-
this.draggingSessionId = session.id;
|
|
177257
|
-
event.dataTransfer?.setData("text/plain", session.id);
|
|
177258
|
-
if (event.dataTransfer) event.dataTransfer.effectAllowed = "move";
|
|
177259
|
-
}}
|
|
177260
|
-
@dragend=${() => {
|
|
177261
|
-
this.draggingSessionId = "";
|
|
177262
|
-
this.dropSlot = void 0;
|
|
177384
|
+
this.handleDragStart(event, session, groupId, index3, draggable);
|
|
177263
177385
|
}}
|
|
177386
|
+
@dragend=${() => this.clearDragState()}
|
|
177264
177387
|
@dragover=${(event) => {
|
|
177265
|
-
if (!this.draggingSessionId || index3 < 0) return;
|
|
177388
|
+
if (!this.draggingSessionId || index3 < 0 || session.id === this.draggingSessionId) return;
|
|
177266
177389
|
event.preventDefault();
|
|
177267
177390
|
const rect = event.currentTarget.getBoundingClientRect();
|
|
177268
177391
|
const before = event.clientY < rect.top + rect.height / 2;
|
|
177269
177392
|
this.setDropSlot(groupId, before ? index3 : index3 + 1);
|
|
177270
177393
|
}}
|
|
177271
177394
|
@drop=${(event) => {
|
|
177272
|
-
if (index3 < 0) return;
|
|
177395
|
+
if (index3 < 0 || session.id === this.draggingSessionId) return;
|
|
177273
177396
|
const rect = event.currentTarget.getBoundingClientRect();
|
|
177274
177397
|
const before = event.clientY < rect.top + rect.height / 2;
|
|
177275
177398
|
this.handleDrop(event, groupId, before ? index3 : index3 + 1);
|
|
177276
177399
|
}}
|
|
177277
177400
|
>
|
|
177278
|
-
<
|
|
177279
|
-
|
|
177280
|
-
|
|
177281
|
-
|
|
177282
|
-
|
|
177283
|
-
|
|
177284
|
-
|
|
177401
|
+
<div class="itemHeader">
|
|
177402
|
+
<button
|
|
177403
|
+
class="itemPrimary"
|
|
177404
|
+
type="button"
|
|
177405
|
+
aria-current=${session.id === this.selectedSessionId ? "true" : "false"}
|
|
177406
|
+
@click=${() => this.emit("harness-session-select", session)}
|
|
177407
|
+
@keydown=${(event) => {
|
|
177408
|
+
if (event.key !== "Enter") return;
|
|
177409
|
+
event.preventDefault();
|
|
177410
|
+
this.emit("harness-session-open", session);
|
|
177411
|
+
}}
|
|
177412
|
+
>
|
|
177413
|
+
<span class="stateDot"></span>
|
|
177414
|
+
<span class="itemCopy">
|
|
177415
|
+
<span class="itemTitle">
|
|
177416
|
+
${session.icon ? b2`<dees-icon class="itemIcon" icon=${session.icon} iconSize="13"></dees-icon>` : ""}
|
|
177417
|
+
<span class="titleText">${session.title || session.id}</span>
|
|
177418
|
+
</span>
|
|
177419
|
+
<span class="itemTime">${harnessFormatRelativeTime(session.updatedAt ?? session.createdAt)}</span>
|
|
177420
|
+
<span class="visuallyHidden">Status: ${this.sessionStateLabel(state5)}</span>
|
|
177421
|
+
</span>
|
|
177422
|
+
</button>
|
|
177423
|
+
<button
|
|
177424
|
+
class="expandToggle"
|
|
177425
|
+
type="button"
|
|
177426
|
+
aria-expanded=${expanded ? "true" : "false"}
|
|
177427
|
+
aria-controls=${detailsId}
|
|
177428
|
+
title=${expanded ? "Collapse conversation card" : "Expand conversation card"}
|
|
177429
|
+
@click=${(event) => {
|
|
177430
|
+
event.stopPropagation();
|
|
177431
|
+
this.toggleSessionExpanded(session.id);
|
|
177432
|
+
}}
|
|
177433
|
+
>
|
|
177434
|
+
<dees-icon icon="lucide:ChevronDown" iconSize="15"></dees-icon>
|
|
177435
|
+
</button>
|
|
177436
|
+
</div>
|
|
177437
|
+
${expanded ? b2`
|
|
177438
|
+
<div class="itemDetails" id=${detailsId}>
|
|
177439
|
+
<div class="stateLine">
|
|
177440
|
+
<span class="stateDot"></span>
|
|
177441
|
+
<span>${this.sessionStateLabel(state5)}</span>
|
|
177442
|
+
</div>
|
|
177443
|
+
${session.preview ? b2`<div class="itemPreview">${session.preview}</div>` : ""}
|
|
177444
|
+
<div class="itemMeta">
|
|
177445
|
+
${session.messageCount ? `${session.messageCount} messages \xB7 ` : ""}${session.id}
|
|
177446
|
+
</div>
|
|
177447
|
+
</div>
|
|
177448
|
+
` : ""}
|
|
177449
|
+
</article>
|
|
177285
177450
|
`;
|
|
177286
177451
|
}
|
|
177452
|
+
eventTargetsExpandToggle(event) {
|
|
177453
|
+
return event.composedPath().some(
|
|
177454
|
+
(target) => target instanceof HTMLElement && target.classList.contains("expandToggle")
|
|
177455
|
+
);
|
|
177456
|
+
}
|
|
177457
|
+
sessionStateLabel(state5) {
|
|
177458
|
+
switch (state5) {
|
|
177459
|
+
case "working":
|
|
177460
|
+
return "Working";
|
|
177461
|
+
case "finished":
|
|
177462
|
+
return "Finished";
|
|
177463
|
+
case "attention":
|
|
177464
|
+
return "Needs attention";
|
|
177465
|
+
case "error":
|
|
177466
|
+
return "Error";
|
|
177467
|
+
default:
|
|
177468
|
+
return "Idle";
|
|
177469
|
+
}
|
|
177470
|
+
}
|
|
177471
|
+
toggleSessionExpanded(sessionIdArg) {
|
|
177472
|
+
const next2 = new Set(this.expandedSessionIds);
|
|
177473
|
+
if (next2.has(sessionIdArg)) next2.delete(sessionIdArg);
|
|
177474
|
+
else next2.add(sessionIdArg);
|
|
177475
|
+
this.expandedSessionIds = next2;
|
|
177476
|
+
}
|
|
177287
177477
|
toggleGroupCollapsed(groupIdArg) {
|
|
177288
177478
|
const next2 = new Set(this.collapsedGroupIds);
|
|
177289
177479
|
if (next2.has(groupIdArg)) {
|
|
@@ -177293,32 +177483,116 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
|
|
|
177293
177483
|
}
|
|
177294
177484
|
this.collapsedGroupIds = next2;
|
|
177295
177485
|
}
|
|
177486
|
+
sortableSessions(sessionsArg, excludeDraggingArg = true) {
|
|
177487
|
+
return sessionsArg.filter((session) => session.draggable !== false && (!excludeDraggingArg || session.id !== this.draggingSessionId));
|
|
177488
|
+
}
|
|
177489
|
+
sessionsForGroup(groupIdArg) {
|
|
177490
|
+
if (groupIdArg === null) return this.ungroupedSessions;
|
|
177491
|
+
const group = this.groups.find((candidate) => candidate.id === groupIdArg);
|
|
177492
|
+
if (!group) return [];
|
|
177493
|
+
const byId = this.sessionsById;
|
|
177494
|
+
return group.sessionIds.map((sessionId) => byId.get(sessionId)).filter((session) => session !== void 0);
|
|
177495
|
+
}
|
|
177496
|
+
handleDragStart(event, session, groupId, logicalIndex, draggable) {
|
|
177497
|
+
if (!draggable || logicalIndex < 0) {
|
|
177498
|
+
event.preventDefault();
|
|
177499
|
+
return;
|
|
177500
|
+
}
|
|
177501
|
+
const item = event.currentTarget;
|
|
177502
|
+
this.reflowGeneration += 1;
|
|
177503
|
+
this.cancelReflowAnimations();
|
|
177504
|
+
this.draggedItemHeight = Math.ceil(item.getBoundingClientRect().height);
|
|
177505
|
+
this.dragSourceElement = item;
|
|
177506
|
+
this.draggingSessionId = session.id;
|
|
177507
|
+
const remainingCount = this.sortableSessions(this.sessionsForGroup(groupId)).length;
|
|
177508
|
+
this.dropSlot = { groupId, index: Math.min(logicalIndex, remainingCount) };
|
|
177509
|
+
event.dataTransfer?.setData("text/plain", session.id);
|
|
177510
|
+
if (event.dataTransfer) event.dataTransfer.effectAllowed = "move";
|
|
177511
|
+
}
|
|
177296
177512
|
setDropSlot(groupIdArg, indexArg) {
|
|
177297
177513
|
const current = this.dropSlot;
|
|
177298
177514
|
if (current && current.groupId === groupIdArg && current.index === indexArg) return;
|
|
177515
|
+
const previousRects = this.captureCardRects();
|
|
177516
|
+
const generation = ++this.reflowGeneration;
|
|
177299
177517
|
this.dropSlot = { groupId: groupIdArg, index: indexArg };
|
|
177518
|
+
void this.animateCardReflow(previousRects, generation);
|
|
177300
177519
|
}
|
|
177301
177520
|
handleDragOverSlot(event, groupIdArg, indexArg) {
|
|
177302
177521
|
if (!this.draggingSessionId) return;
|
|
177303
177522
|
event.preventDefault();
|
|
177523
|
+
if (event.dataTransfer) event.dataTransfer.dropEffect = "move";
|
|
177304
177524
|
this.setDropSlot(groupIdArg, indexArg);
|
|
177305
177525
|
}
|
|
177306
177526
|
handleDrop(event, groupIdArg, indexArg) {
|
|
177307
177527
|
event.preventDefault();
|
|
177308
177528
|
event.stopPropagation();
|
|
177309
177529
|
const sessionId = this.draggingSessionId || event.dataTransfer?.getData("text/plain") || "";
|
|
177310
|
-
|
|
177311
|
-
|
|
177312
|
-
|
|
177530
|
+
if (!sessionId) {
|
|
177531
|
+
this.clearDragState();
|
|
177532
|
+
return;
|
|
177533
|
+
}
|
|
177534
|
+
const targetSessions = this.sortableSessions(this.sessionsForGroup(groupIdArg));
|
|
177535
|
+
const beforeSessionId = targetSessions[Math.max(0, indexArg)]?.id;
|
|
177536
|
+
const sourceGroupId = this.groups.find((group) => group.sessionIds.includes(sessionId))?.id ?? null;
|
|
177537
|
+
const sourceSessions = this.sortableSessions(this.sessionsForGroup(sourceGroupId), false);
|
|
177538
|
+
const sourceIndex = sourceSessions.findIndex((session) => session.id === sessionId);
|
|
177539
|
+
const compatibilityIndex = sourceGroupId === groupIdArg && sourceIndex >= 0 && indexArg > sourceIndex ? indexArg + 1 : indexArg;
|
|
177313
177540
|
const detail = {
|
|
177314
177541
|
sessionId,
|
|
177315
177542
|
groupId: groupIdArg,
|
|
177316
|
-
index: Math.max(0,
|
|
177543
|
+
index: Math.max(0, compatibilityIndex),
|
|
177544
|
+
...beforeSessionId ? { beforeSessionId } : {}
|
|
177317
177545
|
};
|
|
177546
|
+
this.clearDragState();
|
|
177318
177547
|
this.dispatchEvent(
|
|
177319
177548
|
new CustomEvent("harness-session-move", { detail, bubbles: true, composed: true })
|
|
177320
177549
|
);
|
|
177321
177550
|
}
|
|
177551
|
+
captureCardRects() {
|
|
177552
|
+
const result = /* @__PURE__ */ new Map();
|
|
177553
|
+
for (const item of this.shadowRoot?.querySelectorAll(".item[data-session-id]") ?? []) {
|
|
177554
|
+
if (item.dataset.sessionId === this.draggingSessionId) continue;
|
|
177555
|
+
result.set(item.dataset.sessionId ?? "", item.getBoundingClientRect());
|
|
177556
|
+
}
|
|
177557
|
+
return result;
|
|
177558
|
+
}
|
|
177559
|
+
async animateCardReflow(previousRectsArg, generationArg) {
|
|
177560
|
+
await this.updateComplete;
|
|
177561
|
+
if (generationArg !== this.reflowGeneration || !this.isConnected || globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches) return;
|
|
177562
|
+
this.cancelReflowAnimations();
|
|
177563
|
+
for (const item of this.shadowRoot?.querySelectorAll(".item[data-session-id]") ?? []) {
|
|
177564
|
+
const sessionId = item.dataset.sessionId ?? "";
|
|
177565
|
+
if (!sessionId || sessionId === this.draggingSessionId) continue;
|
|
177566
|
+
const previous3 = previousRectsArg.get(sessionId);
|
|
177567
|
+
if (!previous3) continue;
|
|
177568
|
+
const current = item.getBoundingClientRect();
|
|
177569
|
+
const deltaY = previous3.top - current.top;
|
|
177570
|
+
if (Math.abs(deltaY) < 0.5) continue;
|
|
177571
|
+
const animation = item.animate(
|
|
177572
|
+
[
|
|
177573
|
+
{ transform: `translateY(${deltaY}px)` },
|
|
177574
|
+
{ transform: "translateY(0)" }
|
|
177575
|
+
],
|
|
177576
|
+
{ duration: 180, easing: "cubic-bezier(0.22, 1, 0.36, 1)" }
|
|
177577
|
+
);
|
|
177578
|
+
this.reflowAnimations.add(animation);
|
|
177579
|
+
void animation.finished.catch(() => void 0).finally(() => {
|
|
177580
|
+
this.reflowAnimations.delete(animation);
|
|
177581
|
+
});
|
|
177582
|
+
}
|
|
177583
|
+
}
|
|
177584
|
+
cancelReflowAnimations() {
|
|
177585
|
+
for (const animation of this.reflowAnimations) animation.cancel();
|
|
177586
|
+
this.reflowAnimations.clear();
|
|
177587
|
+
}
|
|
177588
|
+
clearDragState() {
|
|
177589
|
+
this.reflowGeneration += 1;
|
|
177590
|
+
this.cancelReflowAnimations();
|
|
177591
|
+
this.draggingSessionId = "";
|
|
177592
|
+
this.draggedItemHeight = 0;
|
|
177593
|
+
this.dropSlot = void 0;
|
|
177594
|
+
this.dragSourceElement = void 0;
|
|
177595
|
+
}
|
|
177322
177596
|
emit(name, session) {
|
|
177323
177597
|
this.dispatchEvent(new CustomEvent(name, { detail: { session }, bubbles: true, composed: true }));
|
|
177324
177598
|
}
|
|
@@ -177330,9 +177604,12 @@ _loading4 = new WeakMap();
|
|
|
177330
177604
|
_emptyText2 = new WeakMap();
|
|
177331
177605
|
_groups2 = new WeakMap();
|
|
177332
177606
|
_enableGrouping = new WeakMap();
|
|
177607
|
+
_ungroupedSessionIds = new WeakMap();
|
|
177333
177608
|
_search = new WeakMap();
|
|
177334
177609
|
_draggingSessionId = new WeakMap();
|
|
177335
177610
|
_dropSlot = new WeakMap();
|
|
177611
|
+
_draggedItemHeight = new WeakMap();
|
|
177612
|
+
_expandedSessionIds = new WeakMap();
|
|
177336
177613
|
_collapsedGroupIds = new WeakMap();
|
|
177337
177614
|
__decorateElement(_init90, 4, "sessions", _sessions_dec, _DeesHarnessSessionList, _sessions);
|
|
177338
177615
|
__decorateElement(_init90, 4, "selectedSessionId", _selectedSessionId_dec, _DeesHarnessSessionList, _selectedSessionId);
|
|
@@ -177340,9 +177617,12 @@ __decorateElement(_init90, 4, "loading", _loading_dec4, _DeesHarnessSessionList,
|
|
|
177340
177617
|
__decorateElement(_init90, 4, "emptyText", _emptyText_dec2, _DeesHarnessSessionList, _emptyText2);
|
|
177341
177618
|
__decorateElement(_init90, 4, "groups", _groups_dec2, _DeesHarnessSessionList, _groups2);
|
|
177342
177619
|
__decorateElement(_init90, 4, "enableGrouping", _enableGrouping_dec, _DeesHarnessSessionList, _enableGrouping);
|
|
177620
|
+
__decorateElement(_init90, 4, "ungroupedSessionIds", _ungroupedSessionIds_dec, _DeesHarnessSessionList, _ungroupedSessionIds);
|
|
177343
177621
|
__decorateElement(_init90, 4, "search", _search_dec, _DeesHarnessSessionList, _search);
|
|
177344
177622
|
__decorateElement(_init90, 4, "draggingSessionId", _draggingSessionId_dec, _DeesHarnessSessionList, _draggingSessionId);
|
|
177345
177623
|
__decorateElement(_init90, 4, "dropSlot", _dropSlot_dec, _DeesHarnessSessionList, _dropSlot);
|
|
177624
|
+
__decorateElement(_init90, 4, "draggedItemHeight", _draggedItemHeight_dec, _DeesHarnessSessionList, _draggedItemHeight);
|
|
177625
|
+
__decorateElement(_init90, 4, "expandedSessionIds", _expandedSessionIds_dec, _DeesHarnessSessionList, _expandedSessionIds);
|
|
177346
177626
|
__decorateElement(_init90, 4, "collapsedGroupIds", _collapsedGroupIds_dec, _DeesHarnessSessionList, _collapsedGroupIds);
|
|
177347
177627
|
_DeesHarnessSessionList = __decorateElement(_init90, 0, "DeesHarnessSessionList", _DeesHarnessSessionList_decorators, _DeesHarnessSessionList);
|
|
177348
177628
|
__name(_DeesHarnessSessionList, "DeesHarnessSessionList");
|
|
@@ -177357,26 +177637,48 @@ __publicField(_DeesHarnessSessionList, "styles", [
|
|
|
177357
177637
|
flex-direction: column;
|
|
177358
177638
|
min-height: 0;
|
|
177359
177639
|
font-family: var(--dees-font-family);
|
|
177640
|
+
--session-normal: var(--dees-color-text-muted);
|
|
177641
|
+
--session-working: var(--dees-color-accent-primary);
|
|
177642
|
+
--session-finished: var(--dees-color-accent-success);
|
|
177643
|
+
--session-attention: #bf5af2;
|
|
177644
|
+
--session-error: var(--dees-color-accent-error);
|
|
177645
|
+
}
|
|
177646
|
+
|
|
177647
|
+
:host([gobright]) {
|
|
177648
|
+
--session-attention: #af52de;
|
|
177360
177649
|
}
|
|
177361
177650
|
|
|
177362
177651
|
.searchRow {
|
|
177652
|
+
position: relative;
|
|
177363
177653
|
flex: 0 0 auto;
|
|
177364
|
-
padding: var(--dees-spacing-sm);
|
|
177654
|
+
padding: var(--dees-spacing-sm) var(--dees-spacing-md) var(--dees-spacing-md);
|
|
177655
|
+
}
|
|
177656
|
+
|
|
177657
|
+
.searchIcon {
|
|
177658
|
+
position: absolute;
|
|
177659
|
+
top: 50%;
|
|
177660
|
+
left: calc(var(--dees-spacing-md) + 10px);
|
|
177661
|
+
color: var(--dees-color-text-muted);
|
|
177662
|
+
transform: translateY(-62%);
|
|
177663
|
+
pointer-events: none;
|
|
177365
177664
|
}
|
|
177366
177665
|
|
|
177367
177666
|
.searchRow input {
|
|
177368
177667
|
width: 100%;
|
|
177369
|
-
height: var(--dees-control-height-
|
|
177370
|
-
padding: 0 var(--dees-spacing-md);
|
|
177668
|
+
height: var(--dees-control-height-lg);
|
|
177669
|
+
padding: 0 var(--dees-spacing-md) 0 34px;
|
|
177371
177670
|
border: 1px solid var(--dees-color-border-default);
|
|
177372
|
-
border-radius: var(--dees-radius-
|
|
177671
|
+
border-radius: var(--dees-radius-lg);
|
|
177373
177672
|
corner-shape: var(--dees-corner-shape);
|
|
177374
|
-
background: var(--dees-color-bg-primary);
|
|
177673
|
+
background: color-mix(in srgb, var(--dees-color-bg-primary) 78%, transparent);
|
|
177375
177674
|
color: var(--dees-color-text-primary);
|
|
177376
177675
|
font-family: inherit;
|
|
177377
|
-
font-size: var(--dees-font-control-size,
|
|
177676
|
+
font-size: var(--dees-font-control-size-sm, 12px);
|
|
177378
177677
|
outline: none;
|
|
177379
177678
|
box-sizing: border-box;
|
|
177679
|
+
box-shadow: var(--dees-shadow-xs);
|
|
177680
|
+
transition: border-color var(--dees-transition-fast) var(--dees-ease-standard),
|
|
177681
|
+
box-shadow var(--dees-transition-fast) var(--dees-ease-standard);
|
|
177380
177682
|
}
|
|
177381
177683
|
|
|
177382
177684
|
.searchRow input:focus {
|
|
@@ -177390,46 +177692,146 @@ __publicField(_DeesHarnessSessionList, "styles", [
|
|
|
177390
177692
|
overflow-y: auto;
|
|
177391
177693
|
scrollbar-width: thin;
|
|
177392
177694
|
scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
|
|
177393
|
-
padding: 0 var(--dees-spacing-
|
|
177695
|
+
padding: 0 var(--dees-spacing-md) var(--dees-spacing-md);
|
|
177696
|
+
}
|
|
177697
|
+
|
|
177698
|
+
.section {
|
|
177699
|
+
position: relative;
|
|
177394
177700
|
display: grid;
|
|
177395
|
-
gap:
|
|
177701
|
+
gap: var(--dees-spacing-sm);
|
|
177396
177702
|
align-content: start;
|
|
177397
177703
|
}
|
|
177398
177704
|
|
|
177399
177705
|
.item {
|
|
177706
|
+
--card-accent: var(--session-normal);
|
|
177707
|
+
position: relative;
|
|
177400
177708
|
width: 100%;
|
|
177401
|
-
|
|
177402
|
-
|
|
177403
|
-
border:
|
|
177404
|
-
border-radius: var(--dees-radius-
|
|
177709
|
+
min-width: 0;
|
|
177710
|
+
overflow: hidden;
|
|
177711
|
+
border: 1px solid color-mix(in srgb, var(--card-accent) 24%, var(--dees-color-border-subtle));
|
|
177712
|
+
border-radius: var(--dees-radius-xl);
|
|
177405
177713
|
corner-shape: var(--dees-corner-shape);
|
|
177406
|
-
background: transparent;
|
|
177714
|
+
background: color-mix(in srgb, var(--dees-color-bg-primary) 90%, transparent);
|
|
177407
177715
|
color: var(--dees-color-text-primary);
|
|
177408
|
-
|
|
177409
|
-
|
|
177410
|
-
|
|
177411
|
-
|
|
177716
|
+
box-shadow:
|
|
177717
|
+
var(--dees-shadow-sm),
|
|
177718
|
+
inset 3px 0 0 var(--card-accent);
|
|
177719
|
+
box-sizing: border-box;
|
|
177720
|
+
transition:
|
|
177721
|
+
border-color var(--dees-transition-fast) var(--dees-ease-standard),
|
|
177722
|
+
background var(--dees-transition-fast) var(--dees-ease-standard),
|
|
177723
|
+
box-shadow var(--dees-transition-fast) var(--dees-ease-standard);
|
|
177412
177724
|
}
|
|
177413
177725
|
|
|
177414
177726
|
.item:hover {
|
|
177415
|
-
|
|
177727
|
+
border-color: color-mix(in srgb, var(--card-accent) 42%, var(--dees-color-border-default));
|
|
177728
|
+
background: color-mix(in srgb, var(--dees-color-bg-primary) 96%, var(--card-accent) 4%);
|
|
177416
177729
|
}
|
|
177417
177730
|
|
|
177418
177731
|
.item.selected {
|
|
177419
|
-
|
|
177420
|
-
box-shadow:
|
|
177732
|
+
border-color: color-mix(in srgb, var(--dees-color-accent-primary) 65%, var(--dees-color-border-default));
|
|
177733
|
+
box-shadow:
|
|
177734
|
+
0 0 0 2px color-mix(in srgb, var(--dees-color-accent-primary) 18%, transparent),
|
|
177735
|
+
var(--dees-shadow-sm),
|
|
177736
|
+
inset 3px 0 0 var(--card-accent);
|
|
177421
177737
|
}
|
|
177422
177738
|
|
|
177423
177739
|
.item.dragging {
|
|
177424
|
-
|
|
177740
|
+
position: absolute;
|
|
177741
|
+
inset-inline: 0;
|
|
177742
|
+
z-index: -1;
|
|
177743
|
+
opacity: 0;
|
|
177744
|
+
pointer-events: none;
|
|
177425
177745
|
}
|
|
177426
177746
|
|
|
177427
|
-
.
|
|
177747
|
+
.item.state-working {
|
|
177748
|
+
--card-accent: var(--session-working);
|
|
177749
|
+
}
|
|
177750
|
+
|
|
177751
|
+
.item.state-finished {
|
|
177752
|
+
--card-accent: var(--session-finished);
|
|
177753
|
+
}
|
|
177754
|
+
|
|
177755
|
+
.item.state-attention {
|
|
177756
|
+
--card-accent: var(--session-attention);
|
|
177757
|
+
}
|
|
177758
|
+
|
|
177759
|
+
.item.state-error {
|
|
177760
|
+
--card-accent: var(--session-error);
|
|
177761
|
+
}
|
|
177762
|
+
|
|
177763
|
+
@keyframes attentionPulse {
|
|
177764
|
+
0%, 100% {
|
|
177765
|
+
box-shadow:
|
|
177766
|
+
0 0 0 0 color-mix(in srgb, var(--session-attention) 0%, transparent),
|
|
177767
|
+
var(--dees-shadow-sm),
|
|
177768
|
+
inset 3px 0 0 var(--session-attention);
|
|
177769
|
+
}
|
|
177770
|
+
50% {
|
|
177771
|
+
box-shadow:
|
|
177772
|
+
0 0 0 4px color-mix(in srgb, var(--session-attention) 26%, transparent),
|
|
177773
|
+
0 7px 18px color-mix(in srgb, var(--session-attention) 16%, transparent),
|
|
177774
|
+
inset 3px 0 0 var(--session-attention);
|
|
177775
|
+
}
|
|
177776
|
+
}
|
|
177777
|
+
|
|
177778
|
+
.item.state-attention:not(.selected) {
|
|
177779
|
+
animation: attentionPulse 1.15s ease-in-out infinite;
|
|
177780
|
+
}
|
|
177781
|
+
|
|
177782
|
+
.itemHeader {
|
|
177783
|
+
display: grid;
|
|
177784
|
+
grid-template-columns: minmax(0, 1fr) 30px;
|
|
177785
|
+
min-height: 46px;
|
|
177786
|
+
}
|
|
177787
|
+
|
|
177788
|
+
.itemPrimary,
|
|
177789
|
+
.expandToggle {
|
|
177790
|
+
appearance: none;
|
|
177791
|
+
border: 0;
|
|
177792
|
+
background: transparent;
|
|
177793
|
+
color: inherit;
|
|
177794
|
+
font-family: inherit;
|
|
177795
|
+
}
|
|
177796
|
+
|
|
177797
|
+
.itemPrimary {
|
|
177428
177798
|
display: flex;
|
|
177429
|
-
|
|
177799
|
+
min-width: 0;
|
|
177800
|
+
align-items: center;
|
|
177430
177801
|
gap: var(--dees-spacing-sm);
|
|
177802
|
+
padding: var(--dees-spacing-sm) var(--dees-spacing-xs) var(--dees-spacing-sm) var(--dees-spacing-md);
|
|
177803
|
+
text-align: left;
|
|
177804
|
+
cursor: pointer;
|
|
177805
|
+
}
|
|
177806
|
+
|
|
177807
|
+
.itemPrimary:focus-visible,
|
|
177808
|
+
.expandToggle:focus-visible {
|
|
177809
|
+
outline: 2px solid var(--dees-color-accent-primary);
|
|
177810
|
+
outline-offset: -3px;
|
|
177811
|
+
border-radius: 9px;
|
|
177812
|
+
}
|
|
177813
|
+
|
|
177814
|
+
.stateDot {
|
|
177815
|
+
width: 8px;
|
|
177816
|
+
height: 8px;
|
|
177817
|
+
flex: 0 0 auto;
|
|
177818
|
+
border-radius: 50%;
|
|
177819
|
+
background: var(--card-accent);
|
|
177820
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--card-accent) 15%, transparent);
|
|
177821
|
+
}
|
|
177822
|
+
|
|
177823
|
+
.itemCopy {
|
|
177824
|
+
min-width: 0;
|
|
177825
|
+
flex: 1;
|
|
177826
|
+
}
|
|
177827
|
+
|
|
177828
|
+
.itemTitle {
|
|
177829
|
+
display: flex;
|
|
177830
|
+
min-width: 0;
|
|
177831
|
+
align-items: center;
|
|
177832
|
+
gap: 6px;
|
|
177431
177833
|
font-size: var(--dees-font-control-size-sm, 12px);
|
|
177432
|
-
font-weight:
|
|
177834
|
+
font-weight: 590;
|
|
177433
177835
|
}
|
|
177434
177836
|
|
|
177435
177837
|
.itemTitle .titleText {
|
|
@@ -177441,24 +177843,99 @@ __publicField(_DeesHarnessSessionList, "styles", [
|
|
|
177441
177843
|
|
|
177442
177844
|
.itemTitle .itemIcon {
|
|
177443
177845
|
flex: 0 0 auto;
|
|
177444
|
-
align-self: center;
|
|
177445
177846
|
color: var(--dees-color-text-secondary);
|
|
177446
177847
|
}
|
|
177447
177848
|
|
|
177448
177849
|
.itemTime {
|
|
177449
|
-
margin-
|
|
177450
|
-
flex: 0 0 auto;
|
|
177850
|
+
margin-top: 2px;
|
|
177451
177851
|
color: var(--dees-color-text-muted);
|
|
177452
177852
|
font-size: var(--dees-font-caption2-size, 10px);
|
|
177453
177853
|
}
|
|
177454
177854
|
|
|
177855
|
+
.expandToggle {
|
|
177856
|
+
display: grid;
|
|
177857
|
+
place-items: center;
|
|
177858
|
+
margin: 7px 7px 7px 0;
|
|
177859
|
+
border-radius: 9px;
|
|
177860
|
+
color: var(--dees-color-text-muted);
|
|
177861
|
+
cursor: pointer;
|
|
177862
|
+
}
|
|
177863
|
+
|
|
177864
|
+
.expandToggle:hover {
|
|
177865
|
+
background: color-mix(in srgb, var(--card-accent) 11%, transparent);
|
|
177866
|
+
color: var(--dees-color-text-primary);
|
|
177867
|
+
}
|
|
177868
|
+
|
|
177869
|
+
.expandToggle dees-icon {
|
|
177870
|
+
transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
|
|
177871
|
+
}
|
|
177872
|
+
|
|
177873
|
+
.item.expanded .expandToggle dees-icon {
|
|
177874
|
+
transform: rotate(180deg);
|
|
177875
|
+
}
|
|
177876
|
+
|
|
177877
|
+
.itemDetails {
|
|
177878
|
+
display: grid;
|
|
177879
|
+
gap: 6px;
|
|
177880
|
+
margin: 0 10px 10px 28px;
|
|
177881
|
+
padding: 9px 10px;
|
|
177882
|
+
border-top: 1px solid color-mix(in srgb, var(--card-accent) 20%, var(--dees-color-border-subtle));
|
|
177883
|
+
color: var(--dees-color-text-secondary);
|
|
177884
|
+
}
|
|
177885
|
+
|
|
177886
|
+
.stateLine {
|
|
177887
|
+
display: flex;
|
|
177888
|
+
align-items: center;
|
|
177889
|
+
gap: 6px;
|
|
177890
|
+
color: var(--card-accent);
|
|
177891
|
+
font-size: var(--dees-font-caption1-size, 11px);
|
|
177892
|
+
font-weight: 650;
|
|
177893
|
+
}
|
|
177894
|
+
|
|
177455
177895
|
.itemPreview {
|
|
177456
|
-
margin-top: 1px;
|
|
177457
177896
|
color: var(--dees-color-text-secondary);
|
|
177458
177897
|
font-size: var(--dees-font-caption1-size, 11px);
|
|
177459
177898
|
overflow: hidden;
|
|
177460
|
-
|
|
177899
|
+
display: -webkit-box;
|
|
177900
|
+
-webkit-line-clamp: 2;
|
|
177901
|
+
-webkit-box-orient: vertical;
|
|
177902
|
+
}
|
|
177903
|
+
|
|
177904
|
+
.itemMeta {
|
|
177905
|
+
color: var(--dees-color-text-muted);
|
|
177906
|
+
font-size: var(--dees-font-caption2-size, 10px);
|
|
177907
|
+
}
|
|
177908
|
+
|
|
177909
|
+
.visuallyHidden {
|
|
177910
|
+
position: absolute;
|
|
177911
|
+
width: 1px;
|
|
177912
|
+
height: 1px;
|
|
177913
|
+
padding: 0;
|
|
177914
|
+
margin: -1px;
|
|
177915
|
+
overflow: hidden;
|
|
177916
|
+
clip: rect(0, 0, 0, 0);
|
|
177461
177917
|
white-space: nowrap;
|
|
177918
|
+
border: 0;
|
|
177919
|
+
}
|
|
177920
|
+
|
|
177921
|
+
.dropPlaceholder,
|
|
177922
|
+
.emptyDropZone {
|
|
177923
|
+
display: grid;
|
|
177924
|
+
place-items: center;
|
|
177925
|
+
min-height: 46px;
|
|
177926
|
+
border: 1px dashed color-mix(in srgb, var(--dees-color-accent-primary) 68%, transparent);
|
|
177927
|
+
border-radius: var(--dees-radius-xl);
|
|
177928
|
+
background: color-mix(in srgb, var(--dees-color-accent-primary) 8%, transparent);
|
|
177929
|
+
color: var(--dees-color-accent-primary);
|
|
177930
|
+
box-sizing: border-box;
|
|
177931
|
+
}
|
|
177932
|
+
|
|
177933
|
+
.dropPlaceholder::after,
|
|
177934
|
+
.emptyDropZone::after {
|
|
177935
|
+
content: 'Drop conversation here';
|
|
177936
|
+
font-size: var(--dees-font-caption2-size, 10px);
|
|
177937
|
+
font-weight: 650;
|
|
177938
|
+
letter-spacing: 0.02em;
|
|
177462
177939
|
}
|
|
177463
177940
|
|
|
177464
177941
|
.emptyNote {
|
|
@@ -177473,8 +177950,8 @@ __publicField(_DeesHarnessSessionList, "styles", [
|
|
|
177473
177950
|
align-items: center;
|
|
177474
177951
|
gap: var(--dees-spacing-xs);
|
|
177475
177952
|
width: 100%;
|
|
177476
|
-
margin
|
|
177477
|
-
padding:
|
|
177953
|
+
margin: var(--dees-spacing-md) 0 7px;
|
|
177954
|
+
padding: var(--dees-spacing-xs) 6px;
|
|
177478
177955
|
border: 0;
|
|
177479
177956
|
border-radius: var(--dees-radius-md);
|
|
177480
177957
|
background: transparent;
|
|
@@ -177514,15 +177991,12 @@ __publicField(_DeesHarnessSessionList, "styles", [
|
|
|
177514
177991
|
}
|
|
177515
177992
|
|
|
177516
177993
|
.dropLine {
|
|
177517
|
-
|
|
177518
|
-
margin: 0 var(--dees-spacing-sm);
|
|
177519
|
-
border-radius: 1px;
|
|
177520
|
-
background: var(--dees-color-accent-primary);
|
|
177994
|
+
display: none;
|
|
177521
177995
|
}
|
|
177522
177996
|
|
|
177523
177997
|
.newGroupRow {
|
|
177524
177998
|
flex: 0 0 auto;
|
|
177525
|
-
padding:
|
|
177999
|
+
padding: 0 var(--dees-spacing-md) var(--dees-spacing-md);
|
|
177526
178000
|
}
|
|
177527
178001
|
|
|
177528
178002
|
.newGroupButton {
|
|
@@ -177530,10 +178004,12 @@ __publicField(_DeesHarnessSessionList, "styles", [
|
|
|
177530
178004
|
align-items: center;
|
|
177531
178005
|
gap: var(--dees-spacing-xs);
|
|
177532
178006
|
width: 100%;
|
|
178007
|
+
min-height: 34px;
|
|
178008
|
+
justify-content: center;
|
|
177533
178009
|
padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
|
|
177534
178010
|
border: 1px dashed var(--dees-color-border-default);
|
|
177535
|
-
border-radius:
|
|
177536
|
-
background: transparent;
|
|
178011
|
+
border-radius: 11px;
|
|
178012
|
+
background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
|
|
177537
178013
|
color: var(--dees-color-text-secondary);
|
|
177538
178014
|
cursor: pointer;
|
|
177539
178015
|
font-family: inherit;
|
|
@@ -177544,6 +178020,15 @@ __publicField(_DeesHarnessSessionList, "styles", [
|
|
|
177544
178020
|
border-color: var(--dees-color-accent-primary);
|
|
177545
178021
|
color: var(--dees-color-text-primary);
|
|
177546
178022
|
}
|
|
178023
|
+
|
|
178024
|
+
@media (prefers-reduced-motion: reduce) {
|
|
178025
|
+
.item,
|
|
178026
|
+
.item.state-attention,
|
|
178027
|
+
.expandToggle dees-icon {
|
|
178028
|
+
animation: none;
|
|
178029
|
+
transition: none;
|
|
178030
|
+
}
|
|
178031
|
+
}
|
|
177547
178032
|
`
|
|
177548
178033
|
]);
|
|
177549
178034
|
__runInitializers(_init90, 1, _DeesHarnessSessionList);
|
|
@@ -199625,7 +200110,7 @@ init_group_runtime();
|
|
|
199625
200110
|
// ts_web/00_commitinfo_data.ts
|
|
199626
200111
|
var commitinfo = {
|
|
199627
200112
|
name: "@design.estate/dees-catalog",
|
|
199628
|
-
version: "4.
|
|
200113
|
+
version: "4.10.0",
|
|
199629
200114
|
description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
|
|
199630
200115
|
};
|
|
199631
200116
|
|