@delt/claude-alarm 0.3.5 → 0.3.6

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.
@@ -98,6 +98,10 @@
98
98
  letter-spacing: 0.5px;
99
99
  color: var(--text-dim);
100
100
  padding: 8px 8px 12px;
101
+ position: sticky;
102
+ top: 0;
103
+ background: var(--bg);
104
+ z-index: 1;
101
105
  }
102
106
  .session-card {
103
107
  background: var(--surface);
@@ -207,6 +211,28 @@
207
211
  margin-top: 4px;
208
212
  }
209
213
 
214
+ /* Scroll to bottom button */
215
+ .scroll-bottom {
216
+ position: absolute;
217
+ bottom: 80px;
218
+ right: 30px;
219
+ width: 36px;
220
+ height: 36px;
221
+ border-radius: 50%;
222
+ background: var(--surface);
223
+ border: 1px solid var(--border);
224
+ color: var(--text);
225
+ cursor: pointer;
226
+ font-size: 16px;
227
+ display: none;
228
+ align-items: center;
229
+ justify-content: center;
230
+ z-index: 5;
231
+ transition: border-color 0.15s;
232
+ }
233
+ .scroll-bottom:hover { border-color: var(--accent); }
234
+ .scroll-bottom.visible { display: flex; }
235
+
210
236
  /* Image preview */
211
237
  .image-preview {
212
238
  border-top: 1px solid var(--border);
@@ -314,6 +340,10 @@
314
340
  letter-spacing: 0.5px;
315
341
  color: var(--text-dim);
316
342
  padding: 8px 8px 12px;
343
+ position: sticky;
344
+ top: 0;
345
+ background: var(--bg);
346
+ z-index: 1;
317
347
  }
318
348
  .notif-item {
319
349
  background: var(--surface);
@@ -455,6 +485,7 @@
455
485
  <div class="messages-list" id="messagesList">
456
486
  <div class="empty-state">Select a session to view messages</div>
457
487
  </div>
488
+ <button class="scroll-bottom" id="scrollBottom" title="Scroll to bottom">&#8595;</button>
458
489
  <div class="drag-overlay" id="dragOverlay">Drop image here</div>
459
490
  <div class="image-preview" id="imagePreview">
460
491
  <img id="previewImg" src="" alt="preview">
@@ -870,6 +901,17 @@
870
901
  return html;
871
902
  }
872
903
 
904
+ // Scroll to bottom button
905
+ const msgList = $('#messagesList');
906
+ const scrollBtn = $('#scrollBottom');
907
+ msgList.addEventListener('scroll', () => {
908
+ const gap = msgList.scrollHeight - msgList.scrollTop - msgList.clientHeight;
909
+ scrollBtn.classList.toggle('visible', gap > 100);
910
+ });
911
+ scrollBtn.addEventListener('click', () => {
912
+ msgList.scrollTo({ top: msgList.scrollHeight, behavior: 'smooth' });
913
+ });
914
+
873
915
  state.token = getToken();
874
916
  connect();
875
917
  })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delt/claude-alarm",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "description": "Monitor and get notifications from multiple Claude Code sessions via MCP Channels",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -98,6 +98,10 @@
98
98
  letter-spacing: 0.5px;
99
99
  color: var(--text-dim);
100
100
  padding: 8px 8px 12px;
101
+ position: sticky;
102
+ top: 0;
103
+ background: var(--bg);
104
+ z-index: 1;
101
105
  }
102
106
  .session-card {
103
107
  background: var(--surface);
@@ -207,6 +211,28 @@
207
211
  margin-top: 4px;
208
212
  }
209
213
 
214
+ /* Scroll to bottom button */
215
+ .scroll-bottom {
216
+ position: absolute;
217
+ bottom: 80px;
218
+ right: 30px;
219
+ width: 36px;
220
+ height: 36px;
221
+ border-radius: 50%;
222
+ background: var(--surface);
223
+ border: 1px solid var(--border);
224
+ color: var(--text);
225
+ cursor: pointer;
226
+ font-size: 16px;
227
+ display: none;
228
+ align-items: center;
229
+ justify-content: center;
230
+ z-index: 5;
231
+ transition: border-color 0.15s;
232
+ }
233
+ .scroll-bottom:hover { border-color: var(--accent); }
234
+ .scroll-bottom.visible { display: flex; }
235
+
210
236
  /* Image preview */
211
237
  .image-preview {
212
238
  border-top: 1px solid var(--border);
@@ -314,6 +340,10 @@
314
340
  letter-spacing: 0.5px;
315
341
  color: var(--text-dim);
316
342
  padding: 8px 8px 12px;
343
+ position: sticky;
344
+ top: 0;
345
+ background: var(--bg);
346
+ z-index: 1;
317
347
  }
318
348
  .notif-item {
319
349
  background: var(--surface);
@@ -455,6 +485,7 @@
455
485
  <div class="messages-list" id="messagesList">
456
486
  <div class="empty-state">Select a session to view messages</div>
457
487
  </div>
488
+ <button class="scroll-bottom" id="scrollBottom" title="Scroll to bottom">&#8595;</button>
458
489
  <div class="drag-overlay" id="dragOverlay">Drop image here</div>
459
490
  <div class="image-preview" id="imagePreview">
460
491
  <img id="previewImg" src="" alt="preview">
@@ -870,6 +901,17 @@
870
901
  return html;
871
902
  }
872
903
 
904
+ // Scroll to bottom button
905
+ const msgList = $('#messagesList');
906
+ const scrollBtn = $('#scrollBottom');
907
+ msgList.addEventListener('scroll', () => {
908
+ const gap = msgList.scrollHeight - msgList.scrollTop - msgList.clientHeight;
909
+ scrollBtn.classList.toggle('visible', gap > 100);
910
+ });
911
+ scrollBtn.addEventListener('click', () => {
912
+ msgList.scrollTo({ top: msgList.scrollHeight, behavior: 'smooth' });
913
+ });
914
+
873
915
  state.token = getToken();
874
916
  connect();
875
917
  })();