@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.
@@ -56,6 +56,8 @@ export interface IHarnessMessage {
56
56
  error?: string;
57
57
  /** model that produced this message, e.g. "anthropic/claude-opus-5" */
58
58
  model?: string;
59
+ /** reasoning-effort variant this message ran with, e.g. "high" */
60
+ effort?: string;
59
61
  /** consumer passthrough; never interpreted by the components */
60
62
  meta?: Record<string, unknown>;
61
63
  }
@@ -191,6 +193,7 @@ export interface IHarnessPermissionResponseDetail {
191
193
  remember: boolean;
192
194
  request: IHarnessPermissionRequest;
193
195
  }
196
+ export type THarnessSessionCardState = 'normal' | 'working' | 'finished' | 'attention' | 'error';
194
197
  export interface IHarnessSessionMeta {
195
198
  id: string;
196
199
  title: string;
@@ -200,6 +203,12 @@ export interface IHarnessSessionMeta {
200
203
  preview?: string;
201
204
  /** Optional dees-icon name (e.g. 'lucide:Terminal') shown before the title. */
202
205
  icon?: string;
206
+ /** Visual card state. Defaults to `normal`. */
207
+ state?: THarnessSessionCardState;
208
+ /** Independent activity signal used for idle-to-working auto-expansion. */
209
+ working?: boolean;
210
+ /** Set false for pinned, non-sortable entries such as terminals. Defaults to true. */
211
+ draggable?: boolean;
203
212
  }
204
213
  /** Detail of `harness-session-context`, fired on right-click of a session item. */
205
214
  export interface IHarnessSessionContextDetail {
@@ -221,8 +230,10 @@ export interface IHarnessSessionMoveDetail {
221
230
  sessionId: string;
222
231
  /** Target group, or null for the ungrouped section. */
223
232
  groupId: string | null;
224
- /** Insertion index within the target section's current display order. */
233
+ /** Compatibility insertion index using the pre-drag order for same-section moves. */
225
234
  index: number;
235
+ /** Stable target anchor in the dragged-card-excluded order; absent means append. */
236
+ beforeSessionId?: string;
226
237
  }
227
238
  /** Detail of `harness-group-context`, fired on right-click of a group header. */
228
239
  export interface IHarnessGroupContextDetail {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "4.8.1",
3
+ "version": "4.10.0",
4
4
  "private": false,
5
5
  "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
6
6
  "main": "dist_ts_web/index.js",
@@ -56,7 +56,7 @@
56
56
  "ts/**/*",
57
57
  "ts_web/**/*",
58
58
  "dist/**/*",
59
- "dist_*/**/*",
59
+ "dist_bundle/**/*",
60
60
  "dist_ts/**/*",
61
61
  "dist_ts_web/**/*",
62
62
  "assets/**/*",
package/readme.md CHANGED
@@ -1861,7 +1861,9 @@ Token usage chip (`in · out · total`, `compact` shows the total only); cache r
1861
1861
 
1862
1862
  #### `DeesHarnessSessionList`
1863
1863
 
1864
- Searchable conversation list for sidebars or a `DeesModal` (`harness-session-select` on click, `harness-session-open` on double-click/Enter). Sorts by recency; filters over title, preview, and id.
1864
+ Searchable, card-based conversation column for sidebars or a `DeesModal` (`harness-session-select` on click, `harness-session-open` on double-click/Enter). Cards are collapsed by default, expose an independent accessible expansion control, and auto-expand only when an already-rendered session changes from not working to `working: true`. Selection does not affect expansion.
1865
+
1866
+ `IHarnessSessionMeta.state` accepts `normal`, `working`, `finished`, `attention`, or `error`; `working` remains an independent activity signal for expansion transitions. With `enableGrouping`, sortable cards can move within and between groups. Dragging opens a full-card drop slot and animates surrounding cards; `harness-session-move` includes both the compatibility `index` and a stable optional `beforeSessionId` anchor. Set `draggable: false` for pinned entries such as terminals. Pass `ungroupedSessionIds` to control the order outside groups; omitted or unknown entries fall back to recency order.
1865
1867
 
1866
1868
  ---
1867
1869
 
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '4.8.1',
6
+ version: '4.10.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -174,6 +174,15 @@ export class DeesHarnessMessage extends DeesElement {
174
174
 
175
175
  /* Which model produced this message — trails the role/time so a
176
176
  mid-conversation model switch is visible in the transcript. */
177
+ /* reasoning effort rides with the model as a subtle pill */
178
+ .effortLabel {
179
+ margin-left: 5px;
180
+ padding: 0 5px;
181
+ border-radius: var(--dees-radius-full);
182
+ background: var(--dees-color-fill-secondary);
183
+ color: var(--dees-color-text-secondary);
184
+ }
185
+
177
186
  .modelLabel {
178
187
  margin-left: auto;
179
188
  color: var(--dees-color-text-muted);
@@ -385,7 +394,14 @@ export class DeesHarnessMessage extends DeesElement {
385
394
  ? html`<span class="timestamp">${harnessFormatClockTime(message.createdAt)}</span>`
386
395
  : ''}
387
396
  ${message.model
388
- ? html`<span class="modelLabel" title=${message.model}>${message.model}</span>`
397
+ ? html`
398
+ <span
399
+ class="modelLabel"
400
+ title=${message.effort ? `${message.model} · ${message.effort}` : message.model}
401
+ >${message.model}${message.effort
402
+ ? html`<span class="effortLabel">${message.effort}</span>`
403
+ : ''}</span>
404
+ `
389
405
  : ''}
390
406
  </div>
391
407
  `
@@ -15,8 +15,15 @@ const demoSessions: IHarnessSessionMeta[] = Array.from({ length: 24 }, (_, index
15
15
  updatedAt: Date.now() - (index + 1) * 3_500_000,
16
16
  messageCount: 4 + (index % 9),
17
17
  preview: 'Latest: the regression test asserts the cache key stays stable across…',
18
+ state: (['normal', 'working', 'finished', 'attention', 'error'] as const)[index % 5],
19
+ working: index % 5 === 1,
18
20
  }));
19
21
 
22
+ const demoGroups = [
23
+ { id: 'active', name: 'Active work', sessionIds: ['session-0', 'session-1', 'session-2'] },
24
+ { id: 'review', name: 'Review', sessionIds: ['session-3', 'session-4'] },
25
+ ];
26
+
20
27
  const openModal = async () => {
21
28
  const { DeesModal } = await import('../../00group-overlay/dees-modal/dees-modal.js');
22
29
  const content = document.createElement('dees-harness-session-list');
@@ -52,6 +59,9 @@ export const demoFunc = () => html`
52
59
  <dees-button @clicked=${openModal}>Open in a DeesModal</dees-button>
53
60
  <dees-harness-session-list
54
61
  .sessions=${demoSessions}
62
+ .groups=${demoGroups}
63
+ .ungroupedSessionIds=${demoSessions.slice(5).map((session) => session.id)}
64
+ .enableGrouping=${true}
55
65
  selectedSessionId="session-2"
56
66
  @harness-session-select=${(event: CustomEvent) => console.log('select', event.detail.session)}
57
67
  ></dees-harness-session-list>