@hmduc16031996/claude-mb-bridge 2.3.5 → 2.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.
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ const program = new Command();
6
6
  program
7
7
  .name('claude-mobile-bridge')
8
8
  .description('Bridge Claude Code CLI to mobile via WebView')
9
- .version('2.3.5')
9
+ .version('2.3.6')
10
10
  .option('--token <token>', 'Pairing token from mobile app')
11
11
  .option('--server <url>', 'Backend server URL', 'http://127.0.0.1:3110')
12
12
  .option('--path <path>', 'Working directory', process.cwd())
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hmduc16031996/claude-mb-bridge",
3
- "version": "2.3.5",
3
+ "version": "2.3.6",
4
4
  "description": "Bridge between Claude Code CLI and your mobile app via WebView",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/public/app.js CHANGED
@@ -127,6 +127,10 @@ class ClaudeBridge {
127
127
  terminalContainer: document.getElementById('terminal-container'),
128
128
  mobileKeys: document.getElementById('mobile-keys'),
129
129
  header: document.getElementById('header'),
130
+ toggleHeaderBtn: document.getElementById('toggle-header-btn'),
131
+ toggleHeaderBtnDesktop: document.getElementById('toggle-header-btn-desktop'),
132
+ expandHeaderBtn: document.getElementById('expand-header-btn'),
133
+ scrollBottomBtn: document.getElementById('scroll-bottom-btn'),
130
134
  };
131
135
  }
132
136
 
@@ -172,7 +176,16 @@ class ClaudeBridge {
172
176
  }
173
177
  });
174
178
 
175
- window.addEventListener('resize', () => this.fitAddon.fit());
179
+ window.addEventListener('resize', () => {
180
+ this.fitAddon.fit();
181
+ });
182
+
183
+ this.terminal.onScroll((e) => {
184
+ const buffer = this.terminal.buffer.active;
185
+ const isAtBottom = buffer.viewportY >= buffer.baseY;
186
+ this.elements.scrollBottomBtn.classList.toggle('hidden', isAtBottom);
187
+ });
188
+
176
189
  new TouchScrollManager(this.terminal, this.elements.terminalContainer);
177
190
  }
178
191
 
@@ -191,6 +204,35 @@ class ClaudeBridge {
191
204
  }
192
205
  });
193
206
  });
207
+
208
+ // Header Toggle
209
+ const handleToggleHeader = () => {
210
+ const isCollapsed = this.elements.header.classList.toggle('collapsed');
211
+ this.elements.expandHeaderBtn.classList.toggle('hidden', !isCollapsed);
212
+ this.elements.toggleHeaderBtn.setAttribute('aria-expanded', !isCollapsed);
213
+ this.elements.toggleHeaderBtnDesktop.setAttribute('aria-expanded', !isCollapsed);
214
+ setTimeout(() => this.fitAddon.fit(), 200);
215
+ };
216
+
217
+ this.elements.toggleHeaderBtn.addEventListener('click', handleToggleHeader);
218
+ this.elements.toggleHeaderBtnDesktop.addEventListener('click', handleToggleHeader);
219
+ this.elements.expandHeaderBtn.addEventListener('click', handleToggleHeader);
220
+
221
+ // Scroll to Bottom
222
+ this.elements.scrollBottomBtn.addEventListener('click', () => {
223
+ this.terminal.scrollToBottom();
224
+ this.elements.scrollBottomBtn.classList.add('hidden');
225
+ });
226
+
227
+ // Stubs for other buttons
228
+ ['new-session-btn', 'attach-btn', 'preview-btn', 'settings-btn'].forEach(id => {
229
+ const btn = document.getElementById(id);
230
+ if (btn) {
231
+ btn.addEventListener('click', () => {
232
+ console.log(`Button ${id} clicked (not implemented in bridge)`);
233
+ });
234
+ }
235
+ });
194
236
  }
195
237
 
196
238
  setCtrlActive(active) {