@design.estate/dees-catalog 6.12.0 → 7.0.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.
Files changed (45) hide show
  1. package/.smartconfig.json +5 -1
  2. package/dist_bundle/bundle.js +24090 -1235
  3. package/dist_bundle/bundle.js.map +1 -0
  4. package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/.tsbundle-artifacts.json +7 -0
  5. package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/worker-KZQQYSUG.js +58301 -0
  6. package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/worker-KZQQYSUG.js.map +1 -0
  7. package/dist_bundle/third-party-notices.md +190 -0
  8. package/dist_ts_web/00_commitinfo_data.js +2 -2
  9. package/dist_ts_web/elements/00group-chart/dees-chart-area/component.js +3 -3
  10. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +4 -1
  11. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +29 -2
  12. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.d.ts +4 -1
  13. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +65 -8
  14. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +1 -0
  15. package/dist_ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.d.ts +1 -0
  16. package/dist_ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.js +15 -1
  17. package/dist_ts_web/elements/00group-media/dees-pdf-shared/PdfManager.d.ts +6 -4
  18. package/dist_ts_web/elements/00group-media/dees-pdf-shared/PdfManager.js +183 -21
  19. package/dist_ts_web/elements/00group-media/dees-pdf-shared/utils.d.ts +3 -0
  20. package/dist_ts_web/elements/00group-media/dees-pdf-shared/utils.js +67 -1
  21. package/dist_ts_web/elements/00group-media/dees-pdf-viewer/component.d.ts +25 -1
  22. package/dist_ts_web/elements/00group-media/dees-pdf-viewer/component.js +693 -285
  23. package/dist_ts_web/elements/00group-media/dees-pdf-viewer/demo.js +7 -7
  24. package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/component.d.ts +20 -1
  25. package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/component.js +379 -116
  26. package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/demo.js +2 -2
  27. package/dist_ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.d.ts +1 -0
  28. package/dist_ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.js +7 -1
  29. package/package.json +5 -4
  30. package/readme.hints.md +26 -19
  31. package/readme.md +104 -53
  32. package/third-party-notices.md +190 -0
  33. package/ts_web/00_commitinfo_data.ts +1 -1
  34. package/ts_web/elements/00group-chart/dees-chart-area/component.ts +2 -2
  35. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +13 -0
  36. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +51 -6
  37. package/ts_web/elements/00group-harness/interfaces.ts +2 -0
  38. package/ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.ts +15 -1
  39. package/ts_web/elements/00group-media/dees-pdf-shared/PdfManager.ts +214 -24
  40. package/ts_web/elements/00group-media/dees-pdf-shared/utils.ts +77 -1
  41. package/ts_web/elements/00group-media/dees-pdf-viewer/component.ts +774 -327
  42. package/ts_web/elements/00group-media/dees-pdf-viewer/demo.ts +7 -7
  43. package/ts_web/elements/00group-media/dees-thumbnail-pdf/component.ts +427 -128
  44. package/ts_web/elements/00group-media/dees-thumbnail-pdf/demo.ts +1 -1
  45. package/ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.ts +5 -0
@@ -112,7 +112,7 @@ export const demo = () => {
112
112
  <h3>Non-Clickable</h3>
113
113
  <dees-thumbnail-pdf
114
114
  pdfUrl="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf"
115
- clickable="false"
115
+ .clickable=${false}
116
116
  ></dees-thumbnail-pdf>
117
117
  </div>
118
118
 
@@ -125,4 +125,4 @@ export const demo = () => {
125
125
  </div>
126
126
  `;
127
127
  };
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLW1lZGlhL2RlZXMtdGh1bWJuYWlsLXBkZi9kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtJQUN2QixNQUFNLFVBQVUsR0FBRztRQUNqQiw0RkFBNEY7UUFDNUYsa0dBQWtHO0tBQ25HLENBQUM7SUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDMUMsTUFBTSxLQUFLLEdBQThCLEVBQUUsQ0FBQztRQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7O29CQUVELE1BQU07Ozt3QkFHRixDQUFDLENBQWMsRUFBRSxFQUFFO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsUUFBUSxDQUFDLENBQUM7WUFDcEQsQ0FBQzs7T0FFSixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixPQUFPLElBQUksQ0FBQTs7OztzQkFJUyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7Ozs7Ozs7O2lCQVc3QyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQW9CeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQThEN0MsaUJBQWlCLENBQUMsRUFBRSxDQUFDOzs7O0dBSTlCLENBQUM7QUFDSixDQUFDLENBQUMifQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLW1lZGlhL2RlZXMtdGh1bWJuYWlsLXBkZi9kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtJQUN2QixNQUFNLFVBQVUsR0FBRztRQUNqQiw0RkFBNEY7UUFDNUYsa0dBQWtHO0tBQ25HLENBQUM7SUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDMUMsTUFBTSxLQUFLLEdBQThCLEVBQUUsQ0FBQztRQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7O29CQUVELE1BQU07Ozt3QkFHRixDQUFDLENBQWMsRUFBRSxFQUFFO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsUUFBUSxDQUFDLENBQUM7WUFDcEQsQ0FBQzs7T0FFSixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixPQUFPLElBQUksQ0FBQTs7OztzQkFJUyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7Ozs7Ozs7O2lCQVc3QyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQW9CeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCQXVEbEMsS0FBSzs7Ozs7OztZQU9oQixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7Ozs7R0FJOUIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
@@ -9,6 +9,7 @@ export declare abstract class DeesThumbnailBase extends DeesElement {
9
9
  accessor label: string;
10
10
  private observer;
11
11
  private _visible;
12
+ private observerConnectionEpoch;
12
13
  /** Whether this tile is currently visible in the viewport */
13
14
  protected get isVisible(): boolean;
14
15
  render(): TemplateResult;
@@ -85,6 +85,7 @@ let DeesThumbnailBase = (() => {
85
85
  set label(value) { this.#label_accessor_storage = value; }
86
86
  observer = __runInitializers(this, _label_extraInitializers);
87
87
  _visible = false;
88
+ observerConnectionEpoch = 0;
88
89
  /** Whether this tile is currently visible in the viewport */
89
90
  get isVisible() {
90
91
  return this._visible;
@@ -123,15 +124,20 @@ let DeesThumbnailBase = (() => {
123
124
  return '';
124
125
  }
125
126
  async connectedCallback() {
127
+ const connectionEpoch = ++this.observerConnectionEpoch;
126
128
  await super.connectedCallback();
129
+ if (!this.isConnected || connectionEpoch !== this.observerConnectionEpoch)
130
+ return;
127
131
  this.setupIntersectionObserver();
128
132
  }
129
133
  async disconnectedCallback() {
134
+ this.observerConnectionEpoch += 1;
130
135
  await super.disconnectedCallback();
131
136
  if (this.observer) {
132
137
  this.observer.disconnect();
133
138
  this.observer = undefined;
134
139
  }
140
+ this._visible = false;
135
141
  }
136
142
  setupIntersectionObserver() {
137
143
  this.observer = new IntersectionObserver((entries) => {
@@ -171,4 +177,4 @@ let DeesThumbnailBase = (() => {
171
177
  };
172
178
  })();
173
179
  export { DeesThumbnailBase };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVlc1RodW1ibmFpbEJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1tZWRpYS9kZWVzLXRodW1ibmFpbC1zaGFyZWQvRGVlc1RodW1ibmFpbEJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsR0FHVCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLDhDQUE4QyxDQUFDO0lBRWhDLGlCQUFpQjtzQkFBUyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O2lCQUFyQyxpQkFBa0IsU0FBUSxXQUFXOzs7cUNBR3hELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzttQ0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2lDQUczQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0NBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2lDQUd6QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFYM0IsZ0xBQVMsU0FBUyw2QkFBVCxTQUFTLDZGQUFpQjtZQUduQywwS0FBUyxPQUFPLDZCQUFQLE9BQU8seUZBQWtCO1lBR2xDLG9LQUFTLEtBQUssNkJBQUwsS0FBSyxxRkFBa0I7WUFHaEMsaUtBQVMsSUFBSSw2QkFBSixJQUFJLG1GQUE0QztZQUd6RCxvS0FBUyxLQUFLLDZCQUFMLEtBQUsscUZBQWM7OztRQWZyQixNQUFNLENBQUMsTUFBTSxHQUFnQixtQkFBMEIsQ0FBQztRQUcvRCwrRUFBOEIsSUFBSSxFQUFD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
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVlc1RodW1ibmFpbEJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1tZWRpYS9kZWVzLXRodW1ibmFpbC1zaGFyZWQvRGVlc1RodW1ibmFpbEJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsR0FHVCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLDhDQUE4QyxDQUFDO0lBRWhDLGlCQUFpQjtzQkFBUyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O2lCQUFyQyxpQkFBa0IsU0FBUSxXQUFXOzs7cUNBR3hELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzttQ0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2lDQUczQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0NBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2lDQUd6QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFYM0IsZ0xBQVMsU0FBUyw2QkFBVCxTQUFTLDZGQUFpQjtZQUduQywwS0FBUyxPQUFPLDZCQUFQLE9BQU8seUZBQWtCO1lBR2xDLG9LQUFTLEtBQUssNkJBQUwsS0FBSyxxRkFBa0I7WUFHaEMsaUtBQVMsSUFBSSw2QkFBSixJQUFJLG1GQUE0QztZQUd6RCxvS0FBUyxLQUFLLDZCQUFMLEtBQUsscUZBQWM7OztRQWZyQixNQUFNLENBQUMsTUFBTSxHQUFnQixtQkFBMEIsQ0FBQztRQUcvRCwrRUFBOEIsSUFBSSxFQUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "6.12.0",
3
+ "version": "7.0.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",
@@ -39,14 +39,14 @@
39
39
  "lightweight-charts": "^5.1.0",
40
40
  "lucide": "^1.8.0",
41
41
  "monaco-editor": "0.55.1",
42
- "pdfjs-dist": "^4.10.38",
42
+ "pdfjs-dist": "4.10.38",
43
43
  "xterm": "^5.3.0",
44
44
  "xterm-addon-fit": "^0.8.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@design.estate/dees-wcctools": "^3.9.3",
48
48
  "@git.zone/tsbuild": "^4.4.2",
49
- "@git.zone/tsbundle": "^2.11.4",
49
+ "@git.zone/tsbundle": "^2.13.0",
50
50
  "@git.zone/tstest": "^4.0.0",
51
51
  "@git.zone/tswatch": "^3.3.5",
52
52
  "@push.rocks/projectinfo": "^5.1.0",
@@ -63,7 +63,8 @@
63
63
  "scripts/**/*",
64
64
  "cli.js",
65
65
  ".smartconfig.json",
66
- "readme.md"
66
+ "readme.md",
67
+ "third-party-notices.md"
67
68
  ],
68
69
  "browserslist": [
69
70
  "last 1 chrome versions"
package/readme.hints.md CHANGED
@@ -22,6 +22,13 @@
22
22
  - `DeesHarnessOverflowText` owns the shared 40px right-edge fade and overflow-only reveal animation used by tool-card subtitles and Tools & Subagents activity text. It runs on hover and once after the initial two-second delay.
23
23
  - The session sidebar derives Tools & Subagents from top-level tool messages in the current retained transcript window; it never caches evicted history or includes tools inside child projections.
24
24
 
25
+ ## PDF Components
26
+
27
+ - `PdfManager` creates one local module `Worker` per load and acquires the `PDFWorker` and loading task as that load progresses. Failures and aborts release every level acquired so far; successful callers release the returned document on URL change, replacement, or disconnect.
28
+ - Keep PDF.js imported from the installed `pdfjs-dist` package. Runtime CDN imports and worker fallbacks are not allowed.
29
+ - `DeesPdfViewer` uses the PDF.js `TextLayer` class. Cleanup closes render admission, starts document release to interrupt PDF.js operations, and settles release and tracked pipelines together within a bounded deadline.
30
+ - PDF component loads are keyed by connection epoch and URL so stale loads cannot update detached, reconnected, or repurposed elements.
31
+
25
32
  ## Chart Components
26
33
 
27
34
  ### dees-chart-area
@@ -956,7 +963,7 @@ New media viewer components and a unified preview composite component.
956
963
 
957
964
  ### dees-preview (Composite Component)
958
965
  - Auto-detects content type and delegates to the appropriate viewer
959
- - Directory: `ts_web/elements/dees-preview/`
966
+ - Directory: `ts_web/elements/00group-media/dees-preview/`
960
967
  - Properties: `url`, `file` (File object), `base64`, `textContent`, `contentType` (override), `language`, `mimeType`, `filename`, `showToolbar`, `showFilename`
961
968
  - Content type detection priority: explicit override → MIME type → file extension → fallback
962
969
  - Renders: image→DeesImageViewer, pdf→DeesPdfViewer, code→DeesDataviewCodebox, audio→DeesAudioViewer, video→DeesVideoViewer, text→pre, unknown→placeholder
@@ -972,13 +979,13 @@ New media viewer components and a unified preview composite component.
972
979
  - Placeholder/error icons: `font-size: 32px`
973
980
  - Pattern: `.button-class dees-icon { font-size: 16px; }`
974
981
 
975
- ## Tile Component System (2026-01-27)
982
+ ## Thumbnail Component System (2026-01-27)
976
983
 
977
984
  A family of 200×260px content preview cards with a shared abstract base class. All tiles support lazy loading (IntersectionObserver with 200px margin), hover lift effect, click events, loading/error states, and three sizes (small: 150×195, default: 200×260, large: 250×325).
978
985
 
979
986
  ### Architecture
980
987
 
981
- - **DeesTileBase** (`dees-tile-shared/DeesTileBase.ts`) — Abstract base class extending DeesElement
988
+ - **DeesThumbnailBase** (`dees-thumbnail-shared/DeesThumbnailBase.ts`) — Abstract base class extending DeesElement
982
989
  - Common properties: `clickable`, `loading`, `error`, `size`, `label`
983
990
  - IntersectionObserver lazy loading via `onBecameVisible()` hook
984
991
  - Click dispatch via `tile-click` CustomEvent (detail from `getTileClickDetail()`)
@@ -988,30 +995,30 @@ A family of 200×260px content preview cards with a shared abstract base class.
988
995
 
989
996
  | Tag | Class | Description |
990
997
  |-----|-------|-------------|
991
- | `dees-tile-pdf` | `DeesTilePdf` | PDF page thumbnail with hover-to-browse pages. Canvas-rendered via PDF.js/CanvasPool. |
992
- | `dees-tile-image` | `DeesTileImage` | Image thumbnail with `object-fit: cover`, dimension detection on load |
993
- | `dees-tile-audio` | `DeesTileAudio` | Music icon + mini waveform (AudioContext decode), duration badge |
994
- | `dees-tile-video` | `DeesTileVideo` | Auto-captured first frame, duration badge, hover muted auto-preview |
995
- | `dees-tile-note` | `DeesTileNote` | First ~12 lines of text in monospace, gradient fade, optional language badge |
996
- | `dees-tile-folder` | `DeesTileFolder` | 2×2 grid of mini-previews (thumbnails or type icons), item count badge |
998
+ | `dees-thumbnail-pdf` | `DeesThumbnailPdf` | PDF page thumbnail with hover-to-browse pages. Canvas-rendered via PDF.js/CanvasPool. |
999
+ | `dees-thumbnail-image` | `DeesThumbnailImage` | Image thumbnail with `object-fit: cover`, dimension detection on load |
1000
+ | `dees-thumbnail-audio` | `DeesThumbnailAudio` | Music icon + mini waveform (AudioContext decode), duration badge |
1001
+ | `dees-thumbnail-video` | `DeesThumbnailVideo` | Auto-captured first frame, duration badge, hover muted auto-preview |
1002
+ | `dees-thumbnail-note` | `DeesThumbnailNote` | First ~12 lines of text in monospace, gradient fade, optional language badge |
1003
+ | `dees-thumbnail-folder` | `DeesThumbnailFolder` | 2×2 grid of mini-previews (thumbnails or type icons), item count badge |
997
1004
 
998
- ### Deprecations
1005
+ ### Removed Legacy Names
999
1006
 
1000
- - `dees-pdf-preview` Use `dees-tile-pdf` instead. Old tag still works as a thin wrapper with console warning.
1001
- - `dees-pdf` deprecation comment updated to reference `DeesTilePdf`.
1007
+ - `dees-pdf-preview`, `dees-pdf`, and `dees-tile-pdf` are removed and have no compatibility wrappers.
1008
+ - Use `dees-pdf-viewer` for full documents and `dees-thumbnail-pdf` for grid previews.
1002
1009
 
1003
1010
  ### File Structure
1004
1011
 
1005
- All tile components live in `ts_web/elements/00group-media/dees-tile-*/`:
1012
+ All thumbnail components live in `ts_web/elements/00group-media/dees-thumbnail-*/`:
1006
1013
  - `component.ts` — Main component class
1007
1014
  - `demo.ts` — Demo function
1008
1015
  - `index.ts` — Re-export
1009
- - `styles.ts` — (PDF tile only) Component-specific styles
1010
- - Shared base: `dees-tile-shared/{DeesTileBase,styles,index}.ts`
1016
+ - `styles.ts` — (PDF thumbnail only) Component-specific styles
1017
+ - Shared base: `dees-thumbnail-shared/{DeesThumbnailBase,styles,index}.ts`
1011
1018
 
1012
- ### Interface: ITileFolderItem
1019
+ ### Interface: IThumbnailFolderItem
1013
1020
  ```typescript
1014
- interface ITileFolderItem {
1021
+ interface IThumbnailFolderItem {
1015
1022
  type: 'pdf' | 'image' | 'audio' | 'video' | 'note' | 'folder' | 'unknown';
1016
1023
  thumbnailSrc?: string;
1017
1024
  name: string;
@@ -1096,7 +1103,7 @@ All components are organized into `00group-*` directories with 14 groups visible
1096
1103
  | `00group-form` | Form | 2 |
1097
1104
  | `00group-input` | Input | 18 |
1098
1105
  | `00group-layout` | Layout | 7 |
1099
- | `00group-media` | Media | 14 (viewers + PDF + tiles) |
1106
+ | `00group-media` | Media | 11 (viewers + PDF + thumbnails) |
1100
1107
  | `00group-overlay` | Overlay | 4 |
1101
1108
  | `00group-simple` | Simple | 3 |
1102
1109
  | `00group-utility` | Utility | 5 |
@@ -1111,7 +1118,7 @@ Some components appear in multiple groups via `demoGroups = ['Primary', 'Seconda
1111
1118
  - `dees-input-wysiwyg`: Input, Workspace
1112
1119
  - `dees-form-submit`: Form, Button
1113
1120
  - `dees-preview`: Media, Data View
1114
- - `dees-pdf*` / `dees-tile-pdf`: Media, PDF
1121
+ - `dees-pdf-viewer` / `dees-thumbnail-pdf`: Media, PDF
1115
1122
  - `dees-stepper`: Layout, Form
1116
1123
  - `dees-label`: Layout, Input
1117
1124
  - `dees-toast`: Feedback, Overlay
package/readme.md CHANGED
@@ -18,7 +18,7 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
18
18
  - 🔧 **TypeScript-First** — Fully typed APIs with excellent IDE support
19
19
  - 🧩 **Modular** — Use only what you need, tree-shakeable architecture
20
20
  - 🏗️ **Full App Shell** — `dees-appui` provides a complete application framework with menus, routing, activity log, and bottom bar
21
- - 🎬 **Media Components** — Rich tile-based previews for PDFs, images, audio, video, notes, and folders
21
+ - 🎬 **Media Components** — Rich thumbnail previews for PDFs, images, audio, video, notes, and folders
22
22
  - 💻 **IDE Workspace** — Full workspace component with Monaco editor, file tree, terminal, and diff viewer
23
23
 
24
24
  ## 📦 Installation
@@ -58,8 +58,8 @@ For developers working on this library, please refer to the [UI Components Playb
58
58
  | **Core UI** | [`DeesButton`](#deesbutton), [`DeesButtonExit`](#deesbuttonexit), [`DeesButtonGroup`](#deesbuttongroup), [`DeesBadge`](#deesbadge), [`DeesChips`](#deeschips), [`DeesHeading`](#deesheading), [`DeesHint`](#deeshint), [`DeesIcon`](#deesicon), [`DeesLabel`](#deeslabel), [`DeesPanel`](#deespanel), [`DeesSearchbar`](#deessearchbar), [`DeesSpinner`](#deesspinner), [`DeesToast`](#deestoast), [`DeesWindowcontrols`](#deeswindowcontrols), [`DeesActionbar`](#deesactionbar) |
59
59
  | **Forms** | [`DeesForm`](#deesform), [`DeesInputText`](#deesinputtext), [`DeesInputCheckbox`](#deesinputcheckbox), [`DeesInputDropdown`](#deesinputdropdown), [`DeesInputRadiogroup`](#deesinputradiogroup), [`DeesInputFileupload`](#deesinputfileupload), [`DeesInputIban`](#deesinputiban), [`DeesInputPhone`](#deesinputphone), [`DeesInputQuantitySelector`](#deesinputquantityselector), [`DeesInputMultitoggle`](#deesinputmultitoggle), [`DeesInputToggle`](#deesinputtoggle), [`DeesInputTags`](#deesinputtags), [`DeesInputTypelist`](#deesinputtypelist), [`DeesInputList`](#deesinputlist), [`DeesInputProfilepicture`](#deesinputprofilepicture), [`DeesInputRichtext`](#deesinputrichtext), [`DeesInputWysiwyg`](#deesinputwysiwyg), [`DeesInputDatepicker`](#deesinputdatepicker), [`DeesInputSearchselect`](#deesinputsearchselect), [`DeesInputCode`](#deesinputcode), [`DeesFormSubmit`](#deesformsubmit) |
60
60
  | **App Shell (Layout)** | [`DeesMosaic`](#deesmosaic), [`DeesAppui`](#deesappui-️), [`DeesAppuiMainmenu`](#deesappuimainmenu), [`DeesAppuiSecondarymenu`](#deesappuisecondarymenu), [`DeesAppuiMaincontent`](#deesappuimaincontent), [`DeesAppuiAppbar`](#deesappuiappbar), [`DeesAppuiActivitylog`](#deesappuiactivitylog), [`DeesAppuiBottombar`](#deesappuibottombar), [`DeesAppuiProfiledropdown`](#deesappuiprofiledropdown), [`DeesAppuiTabs`](#deesappuitabs), [`DeesMobileNavigation`](#deesmobilenavigation), [`DeesDashboardGrid`](#deesdashboardgrid) |
61
- | **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesPdf`](#deespdf), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination), [`DeesStorageBrowser`](#deesstorgebrowser) |
62
- | **Media & Thumbnails** | [`DeesThumbnailPdf`](#deesthumbnailpdf), [`DeesThumbnailImage`](#deesthumbnailimage), [`DeesThumbnailAudio`](#deesthumbnailaudio), [`DeesThumbnailVideo`](#deesthumbnalvideo), [`DeesThumbnailNote`](#deesthumbnailnote), [`DeesThumbnailFolder`](#deesthumbnailfolder), [`DeesPreview`](#deespreview), [`DeesPdfViewer`](#deespdfviewer), [`DeesImageViewer`](#deesimageviewer), [`DeesAudioViewer`](#deesaudioviewer), [`DeesVideoViewer`](#deesvideoviewer) |
61
+ | **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination), [`DeesStorageBrowser`](#deesstorgebrowser) |
62
+ | **Media & Thumbnails** | [`DeesThumbnailPdf`](#deesthumbnailpdf), [`DeesThumbnailImage`](#deesthumbnailimage), [`DeesThumbnailAudio`](#deesthumbnailaudio), [`DeesThumbnailVideo`](#deesthumbnailvideo), [`DeesThumbnailNote`](#deesthumbnailnote), [`DeesThumbnailFolder`](#deesthumbnailfolder), [`DeesPreview`](#deespreview), [`DeesPdfViewer`](#deespdfviewer), [`DeesImageViewer`](#deesimageviewer), [`DeesAudioViewer`](#deesaudioviewer), [`DeesVideoViewer`](#deesvideoviewer) |
63
63
  | **Visualization** | [`DeesChartArea`](#deeschartarea), [`DeesChartBar`](#deeschartbar), [`DeesChartDonut`](#deeschartdonut), [`DeesChartGauge`](#deeschartgauge), [`DeesChartRadar`](#deeschartradar), [`DeesChartLog`](#deeschartlog) |
64
64
  | **Dialogs & Overlays** | [`DeesModal`](#deesmodal), [`DeesContextmenu`](#deescontextmenu), [`DeesSpeechbubble`](#deesspeechbubble), [`DeesWindowlayer`](#deeswindowlayer) |
65
65
  | **Navigation** | [`DeesStepper`](#deesstepper), [`DeesProgressbar`](#deesprogressbar) |
@@ -1221,19 +1221,6 @@ Status display component for complex objects with nested status indicators.
1221
1221
  ></dees-dataview-statusobject>
1222
1222
  ```
1223
1223
 
1224
- #### `DeesPdf`
1225
- PDF viewer component with navigation and zoom controls.
1226
-
1227
- ```typescript
1228
- <dees-pdf
1229
- source="path/to/document.pdf" // URL or base64 encoded PDF
1230
- page={1} // Current page number
1231
- scale={1.0} // Zoom level
1232
- .controls=${['zoom', 'download', 'print', 'navigation']}
1233
- @page-change=${handlePageChange}
1234
- ></dees-pdf>
1235
- ```
1236
-
1237
1224
  #### `DeesStatsGrid`
1238
1225
  A responsive grid component for displaying statistical data with various visualization types.
1239
1226
 
@@ -1311,59 +1298,65 @@ Pagination component for navigating through large datasets.
1311
1298
 
1312
1299
  ---
1313
1300
 
1314
- ### Media & Tile Components 🎬
1301
+ ### Media & Thumbnail Components 🎬
1315
1302
 
1316
- A rich collection of tile-based preview components for displaying media files in grids. All tiles share a consistent base class (`DeesTileBase`) with lazy loading via `IntersectionObserver`, hover interactions, click events, context menus, and three size variants (`small`, `default`, `large`).
1303
+ A rich collection of thumbnail components for displaying media files in grids. All thumbnails share a consistent base class (`DeesThumbnailBase`) with lazy loading via `IntersectionObserver`, hover interactions, click events, and three size variants (`small`, `default`, `large`). `DeesThumbnailPdf` also supplies PDF-specific context-menu actions.
1317
1304
 
1318
- All tile badges use a unified styling system with label-awareness — when a `label` is set, bottom badges automatically shift up to avoid overlapping.
1305
+ Thumbnail metadata and labels share one fixed bottom information bar.
1319
1306
 
1320
- #### `DeesTilePdf`
1321
- PDF document tile with live page preview on hover.
1307
+ #### `DeesThumbnailPdf`
1308
+ PDF document thumbnail with a locally rendered page preview.
1322
1309
 
1323
1310
  ```typescript
1324
- <dees-tile-pdf
1325
- pdfUrl="/documents/report.pdf"
1311
+ <dees-thumbnail-pdf
1312
+ .pdfUrl=${'/documents/report.pdf'}
1326
1313
  label="Annual Report"
1327
- clickable
1314
+ .clickable=${true}
1328
1315
  @tile-click=${handleClick}
1329
- ></dees-tile-pdf>
1316
+ ></dees-thumbnail-pdf>
1330
1317
  ```
1331
1318
 
1332
1319
  **Key Features:**
1333
1320
  - Renders first page as canvas preview
1334
1321
  - Hover to scrub through pages (mouse X position maps to page number)
1335
- - Shows page count badge, hover page indicator
1322
+ - Shows page count, file size, and hover page indicator
1336
1323
  - Detects A4/Letter vs non-standard aspect ratios
1324
+ - Bundles the PDF.js worker locally and releases it when the URL changes or the component disconnects
1325
+
1326
+ Public properties include `pdfUrl`, `currentPreviewPage`, `pageCount`, `rendered`,
1327
+ `fileSize`, `clickable`, `loading`, `error`, `size`, and `label`. Loading starts within
1328
+ the thumbnail observer's 200px viewport preload margin. URL replacement, failed loads, and disconnection all
1329
+ release the current PDF document and worker.
1337
1330
 
1338
- #### `DeesTileImage`
1339
- Image tile with lazy loading and dimension display.
1331
+ #### `DeesThumbnailImage`
1332
+ Image thumbnail with lazy loading and dimension display.
1340
1333
 
1341
1334
  ```typescript
1342
- <dees-tile-image
1335
+ <dees-thumbnail-image
1343
1336
  src="/photos/landscape.jpg"
1344
1337
  alt="Mountain landscape"
1345
1338
  label="landscape.jpg"
1346
1339
  clickable
1347
1340
  @tile-click=${handleClick}
1348
- ></dees-tile-image>
1341
+ ></dees-thumbnail-image>
1349
1342
  ```
1350
1343
 
1351
1344
  **Key Features:**
1352
1345
  - Lazy loads image on scroll into view
1353
- - Shows image dimensions on hover (e.g. "1920 × 1080")
1346
+ - Shows image dimensions after loading (e.g. "1920 × 1080")
1354
1347
  - Checkerboard background for transparent images
1355
1348
 
1356
- #### `DeesTileAudio`
1349
+ #### `DeesThumbnailAudio`
1357
1350
  Audio file tile with waveform visualization.
1358
1351
 
1359
1352
  ```typescript
1360
- <dees-tile-audio
1353
+ <dees-thumbnail-audio
1361
1354
  src="/music/track.mp3"
1362
1355
  title="Summer Vibes"
1363
1356
  artist="DJ Example"
1364
1357
  clickable
1365
1358
  @tile-click=${handleClick}
1366
- ></dees-tile-audio>
1359
+ ></dees-thumbnail-audio>
1367
1360
  ```
1368
1361
 
1369
1362
  **Key Features:**
@@ -1372,17 +1365,17 @@ Audio file tile with waveform visualization.
1372
1365
  - Displays title and artist metadata
1373
1366
  - Play overlay on hover
1374
1367
 
1375
- #### `DeesTileVideo`
1368
+ #### `DeesThumbnailVideo`
1376
1369
  Video tile with thumbnail capture and hover preview.
1377
1370
 
1378
1371
  ```typescript
1379
- <dees-tile-video
1372
+ <dees-thumbnail-video
1380
1373
  src="/videos/intro.mp4"
1381
1374
  poster="/thumbs/intro.jpg"
1382
1375
  label="Introduction"
1383
1376
  clickable
1384
1377
  @tile-click=${handleClick}
1385
- ></dees-tile-video>
1378
+ ></dees-thumbnail-video>
1386
1379
  ```
1387
1380
 
1388
1381
  **Key Features:**
@@ -1391,31 +1384,30 @@ Video tile with thumbnail capture and hover preview.
1391
1384
  - Shows duration badge
1392
1385
  - Play button overlay
1393
1386
 
1394
- #### `DeesTileNote`
1395
- Code/text snippet tile with syntax-aware display.
1387
+ #### `DeesThumbnailNote`
1388
+ Plain-text note thumbnail with a monospace preview.
1396
1389
 
1397
1390
  ```typescript
1398
- <dees-tile-note
1391
+ <dees-thumbnail-note
1399
1392
  title="config.ts"
1400
1393
  language="TypeScript"
1401
1394
  .content=${codeString}
1402
1395
  clickable
1403
1396
  @tile-click=${handleClick}
1404
- ></dees-tile-note>
1397
+ ></dees-thumbnail-note>
1405
1398
  ```
1406
1399
 
1407
1400
  **Key Features:**
1408
- - Monospace font with line numbers
1409
- - Language badge (top-right)
1401
+ - Monospace plain-text preview
1402
+ - Optional language metadata in the bottom information bar
1410
1403
  - Scrollable content on hover (mouse X position controls scroll)
1411
- - Line indicator badge while scrolling
1412
1404
  - Gradient fade at bottom
1413
1405
 
1414
- #### `DeesTileFolder`
1406
+ #### `DeesThumbnailFolder`
1415
1407
  Folder tile with 2×2 content preview grid.
1416
1408
 
1417
1409
  ```typescript
1418
- <dees-tile-folder
1410
+ <dees-thumbnail-folder
1419
1411
  name="Project Assets"
1420
1412
  .items=${[
1421
1413
  { type: 'image', name: 'logo.png', thumbnailSrc: '/thumbs/logo.png' },
@@ -1425,7 +1417,7 @@ Folder tile with 2×2 content preview grid.
1425
1417
  ]}
1426
1418
  clickable
1427
1419
  @tile-click=${handleClick}
1428
- ></dees-tile-folder>
1420
+ ></dees-thumbnail-folder>
1429
1421
  ```
1430
1422
 
1431
1423
  **Key Features:**
@@ -1435,10 +1427,53 @@ Folder tile with 2×2 content preview grid.
1435
1427
  - Supports: `pdf`, `image`, `audio`, `video`, `note`, `folder`, `unknown` types
1436
1428
 
1437
1429
  #### `DeesPreview`
1438
- Unified preview component that auto-selects the right tile type based on content.
1430
+ Unified preview component that selects the appropriate media viewer or renderer based on content.
1431
+
1432
+ #### `DeesPdfViewer`
1433
+ Full PDF viewer with page navigation, zoom, fit modes, selectable text, downloads,
1434
+ printing, and an optional thumbnail sidebar. PDF.js and its module worker are bundled
1435
+ locally; the component owns and releases each worker as documents are replaced or the
1436
+ viewer disconnects.
1437
+
1438
+ ```typescript
1439
+ <dees-pdf-viewer
1440
+ .pdfUrl=${'/documents/report.pdf'}
1441
+ .initialPage=${1}
1442
+ .initialZoom=${'page-fit'}
1443
+ .showSidebar=${true}
1444
+ ></dees-pdf-viewer>
1445
+ ```
1446
+
1447
+ Public properties include `pdfUrl`, `initialPage`, `initialZoom`, `showToolbar`,
1448
+ `showSidebar`, `sidebarPosition`, `currentPage`, `totalPages`, `currentZoom`, `loading`,
1449
+ and `pdfFileSize`. URL replacement, failed loads, and disconnection cancel active work,
1450
+ remove observers and listeners, and release the current PDF document and worker.
1451
+
1452
+ #### `PdfManager`
1453
+ Use `PdfManager` when loading a PDF outside the supplied components. Always release the
1454
+ returned document. An abort signal cancels an in-flight load and triggers bounded worker
1455
+ cleanup.
1439
1456
 
1440
- #### `DeesPdfViewer` / `DeesPdfPreview`
1441
- Full PDF viewing components with navigation controls.
1457
+ When migrating from 6.x, pass the `PDFDocumentProxy` returned by `loadDocument()` to
1458
+ `releaseDocument()` instead of passing the source URL.
1459
+
1460
+ `PdfManager.initialize()` is retained as an asynchronous no-op for existing callers;
1461
+ static PDF.js imports require no initialization step.
1462
+
1463
+ ```typescript
1464
+ import { PdfManager } from '@design.estate/dees-catalog';
1465
+
1466
+ const abortController = new AbortController();
1467
+ const pdfDocument = await PdfManager.loadDocument(pdfUrl, abortController.signal);
1468
+
1469
+ try {
1470
+ const firstPage = await pdfDocument.getPage(1);
1471
+ // Render or inspect the page.
1472
+ firstPage.cleanup();
1473
+ } finally {
1474
+ await PdfManager.releaseDocument(pdfDocument);
1475
+ }
1476
+ ```
1442
1477
 
1443
1478
  #### `DeesImageViewer`
1444
1479
  Full-screen image viewer with zoom and pan.
@@ -1834,7 +1869,7 @@ chat.refreshMessages();
1834
1869
  chat.refreshMessages([]);
1835
1870
  ```
1836
1871
 
1837
- Key props: `messages`, `permissions`, `questions`, `status`, `transcriptKey`, `hasEarlierMessages`/`loadingEarlier`, `usage`, `todos`/`todosAuthoritative`/`showTodosPanel`, `sessionMetrics`, `scratchpad`/`scratchpadBusy`/`scratchpadError`, `sessionIntelligenceEnabled`/`intelligenceExchanges`/`intelligenceBusy`/`intelligenceError`, `showSessionSidebar`, `heading`, `subheading`, `toolbarActions`, `showToolbar`, `busy`, `queuedCount`, `steeringEnabled`, `disabled`, `suggestions`, `account`/`accountOptions`, `model`/`modelOptions`, `reasoningEffort`/`effortOptions`, `mode`/`modeOptions`, `markdownWhileStreaming`, `toolRegistry`. `toolbarActions` accepts `IHarnessChatToolbarAction[]`; each action has `id`, human-readable `label`, `iconName`, `action`, and optional `tooltip`/`disabled`, and renders immediately before the session-details toggle. `disabled: true` makes only that toolbar action inert and prevents its callback without changing the chat-level `disabled` state. `markdownWhileStreaming` defaults to `true`; setting it to `false` keeps active outer and nested subtask markdown as plain text, then performs the final markdown parse when `message-end` arrives. `suggestions` is forwarded unchanged to the controlled composer. Account options use human-readable `label` values and opaque stable `value` identifiers. The status line renders inside the transcript column (it never pushes between the session panel and the composer), and both the toolbar and the docked composer cast a subtle shadow over the scrolling messages.
1872
+ Key props: `messages`, `permissions`, `questions`, `status`, `transcriptKey`, `hasEarlierMessages`/`loadingEarlier`, `usage`, `todos`/`todosAuthoritative`/`showTodosPanel`, `sessionMetrics`, `scratchpad`/`scratchpadBusy`/`scratchpadError`, `sessionIntelligenceEnabled`/`intelligenceExchanges`/`intelligenceBusy`/`intelligenceError`/`intelligenceAvailabilityStatus`/`intelligenceUnavailableReason`/`intelligenceHeading`, `showSessionSidebar`, `heading`, `subheading`, `toolbarActions`, `showToolbar`, `busy`, `queuedCount`, `steeringEnabled`, `disabled`, `suggestions`, `account`/`accountOptions`, `model`/`modelOptions`, `reasoningEffort`/`effortOptions`, `mode`/`modeOptions`, `markdownWhileStreaming`, `toolRegistry`. `toolbarActions` accepts `IHarnessChatToolbarAction[]`; each action has `id`, human-readable `label`, `iconName`, `action`, and optional `tooltip`/`disabled`, and renders immediately before the session-details toggle. `disabled: true` makes only that toolbar action inert and prevents its callback without changing the chat-level `disabled` state. `markdownWhileStreaming` defaults to `true`; setting it to `false` keeps active outer and nested subtask markdown as plain text, then performs the final markdown parse when `message-end` arrives. `suggestions` is forwarded unchanged to the controlled composer. Account options use human-readable `label` values and opaque stable `value` identifiers. The status line renders inside the transcript column (it never pushes between the session panel and the composer), and both the toolbar and the docked composer cast a subtle shadow over the scrolling messages.
1838
1873
 
1839
1874
  After mutating canonical message objects in place, call `refreshMessages(ids?)`. Pass IDs for targeted content corrections, omit them after structural mutations, and pass an empty array for a no-op. `DeesHarnessChat.refreshMessages(ids?)` uses the list semantics and, except for `[]`, also recomputes transcript-derived sidebar state. The list and individual message components expose the corresponding `refreshMessages(ids?)` and `refreshMessage()` methods.
1840
1875
 
@@ -1842,6 +1877,8 @@ A **session side panel** shows Tasks, Tools & Subagents, Tokens, Session Scratch
1842
1877
 
1843
1878
  Set `.todosAuthoritative=${true}` when an empty host-owned task list must suppress transcript-derived fallback. A changed `transcriptKey` also clears the previous session's unsent Session Intelligence question while preserving the existing scratchpad revision handling.
1844
1879
 
1880
+ Session Intelligence availability is host-controlled through `intelligenceAvailabilityStatus` (`THarnessIntelligenceAvailabilityStatus`, exported as `'checking' | 'available' | 'unavailable'`), `intelligenceUnavailableReason`, and `intelligenceHeading`. Their compatibility defaults are `available`, an empty reason, and `Session Intelligence`. A blank heading also falls back to `Session Intelligence`, and unavailable state without a reason renders `<heading> is unavailable.` `sessionIntelligenceEnabled` remains the visibility switch. Checking and unavailable states keep exchange history visible and disable only the intelligence composer, while the main chat composer remains usable. Availability copy is rendered as text in a polite live status region; `intelligenceError` remains the separate operation-error channel.
1881
+
1845
1882
  History paging adds the composed child event `harness-load-earlier`.
1846
1883
 
1847
1884
  #### `DeesHarnessMessageList`
@@ -1953,6 +1990,8 @@ Generic session-detail panel that composes Tasks, Tools & Subagents, Tokens, Ses
1953
1990
 
1954
1991
  Scratchpad edits emit `harness-scratchpad-save` with `{ text, expectedRevision }`. A newer incoming revision preserves a dirty local draft and offers explicit **Discard draft** and **Keep draft on latest** actions before saving can continue. Intelligence questions emit `harness-session-intelligence-ask` with `{ question }`; exchanges and busy/error states remain host-controlled. Direct sidebar hosts should update `sessionKey` when changing sessions; `DeesHarnessChat` forwards `transcriptKey` automatically.
1955
1992
 
1993
+ Direct sidebar hosts can set `intelligenceAvailabilityStatus`, `intelligenceUnavailableReason`, and `intelligenceHeading`; `intelligenceEnabled` still controls whether the section exists. The properties default to `available`, an empty reason, and `Session Intelligence`. A blank heading falls back to `Session Intelligence`, and unavailable state without a reason renders `<heading> is unavailable.` Only `available` permits `harness-session-intelligence-ask`; checking and unavailable states retain history and expose accessible status text. The availability union is exported as `THarnessIntelligenceAvailabilityStatus`.
1994
+
1956
1995
  #### `DeesHarnessSessionList`
1957
1996
 
1958
1997
  Searchable, card-based conversation column for sidebars or a `DeesModal` (`harness-session-select` on click, `harness-session-open` on double-click/Enter). Cards stay collapsed until their independent accessible expansion control is used. Selection and working-state changes do not affect expansion.
@@ -2199,8 +2238,8 @@ interface IViewActivationContext {
2199
2238
  params?: Record<string, string>;
2200
2239
  }
2201
2240
 
2202
- // Tile folder item (for DeesTileFolder)
2203
- interface ITileFolderItem {
2241
+ // Thumbnail folder item (for DeesThumbnailFolder)
2242
+ interface IThumbnailFolderItem {
2204
2243
  type: 'pdf' | 'image' | 'audio' | 'video' | 'note' | 'folder' | 'unknown';
2205
2244
  thumbnailSrc?: string;
2206
2245
  name: string;
@@ -2209,6 +2248,18 @@ interface ITileFolderItem {
2209
2248
 
2210
2249
  ---
2211
2250
 
2251
+ ## Third-Party Notices
2252
+
2253
+ `DeesChartArea` uses [TradingView Lightweight Charts](https://www.tradingview.com/lightweight-charts/) under the Apache License 2.0. Its built-in TradingView attribution link remains enabled.
2254
+
2255
+ > TradingView Lightweight Charts™<br>
2256
+ > Copyright (с) 2025 TradingView, Inc. https://www.tradingview.com/
2257
+
2258
+ `DeesPdfViewer` and `DeesThumbnailPdf` bundle Mozilla PDF.js 4.10.38 and its
2259
+ module worker under the Apache License 2.0. The attribution and complete license text are
2260
+ provided in [third-party-notices.md](./third-party-notices.md) and copied into
2261
+ `dist_bundle/` for standalone bundle distributions.
2262
+
2212
2263
  ## License and Legal Information
2213
2264
 
2214
2265
  This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license](./license) file.