|
495 | 495 | </span> |
496 | 496 | </a> |
497 | 497 |
|
| 498 | +</li> |
| 499 | + |
| 500 | + <li class="md-nav__item"> |
| 501 | + <a href="#remote-study-ipad-on-the-bus" class="md-nav__link"> |
| 502 | + <span class="md-ellipsis"> |
| 503 | + |
| 504 | + Remote Study (iPad on the Bus) |
| 505 | + |
| 506 | + </span> |
| 507 | + </a> |
| 508 | + |
498 | 509 | </li> |
499 | 510 |
|
500 | 511 | <li class="md-nav__item"> |
|
556 | 567 | </span> |
557 | 568 | </a> |
558 | 569 |
|
| 570 | +</li> |
| 571 | + |
| 572 | + <li class="md-nav__item"> |
| 573 | + <a href="#web-terminal-settings" class="md-nav__link"> |
| 574 | + <span class="md-ellipsis"> |
| 575 | + |
| 576 | + Web Terminal Settings |
| 577 | + |
| 578 | + </span> |
| 579 | + </a> |
| 580 | + |
559 | 581 | </li> |
560 | 582 |
|
561 | 583 | <li class="md-nav__item"> |
|
1535 | 1557 | </span> |
1536 | 1558 | </a> |
1537 | 1559 |
|
| 1560 | +</li> |
| 1561 | + |
| 1562 | + <li class="md-nav__item"> |
| 1563 | + <a href="#remote-study-ipad-on-the-bus" class="md-nav__link"> |
| 1564 | + <span class="md-ellipsis"> |
| 1565 | + |
| 1566 | + Remote Study (iPad on the Bus) |
| 1567 | + |
| 1568 | + </span> |
| 1569 | + </a> |
| 1570 | + |
1538 | 1571 | </li> |
1539 | 1572 |
|
1540 | 1573 | <li class="md-nav__item"> |
|
1596 | 1629 | </span> |
1597 | 1630 | </a> |
1598 | 1631 |
|
| 1632 | +</li> |
| 1633 | + |
| 1634 | + <li class="md-nav__item"> |
| 1635 | + <a href="#web-terminal-settings" class="md-nav__link"> |
| 1636 | + <span class="md-ellipsis"> |
| 1637 | + |
| 1638 | + Web Terminal Settings |
| 1639 | + |
| 1640 | + </span> |
| 1641 | + </a> |
| 1642 | + |
1599 | 1643 | </li> |
1600 | 1644 |
|
1601 | 1645 | <li class="md-nav__item"> |
@@ -1999,6 +2043,7 @@ <h2 id="prerequisites">Prerequisites<a class="headerlink" href="#prerequisites" |
1999 | 2043 | <li><strong>Obsidian</strong> — for study notes (any vault structure works)</li> |
2000 | 2044 | <li><strong>Optional</strong>: <code>notebooklm-py</code> for Google NotebookLM sync</li> |
2001 | 2045 | <li><strong>Optional</strong>: <code>sentence-transformers</code> for semantic search</li> |
| 2046 | +<li><strong>Optional</strong>: <code>ttyd</code> — enables web terminal access from browser or iPad (<code>brew install ttyd</code> on macOS, <code>apt install ttyd</code> on Linux)</li> |
2002 | 2047 | </ul> |
2003 | 2048 | <blockquote> |
2004 | 2049 | <p><strong>tmux-resurrect / tmux-continuum users</strong>: studyctl automatically cleans up |
@@ -2109,6 +2154,21 @@ <h3 id="web-pwa-recommended">Web PWA (recommended)<a class="headerlink" href="#w |
2109 | 2154 | - <strong>Read once</strong> — tap the speaker icon on a card, or press <code>T</code>. Reads the current content once. |
2110 | 2155 | - <strong>Auto-voice</strong> — toggle the header speaker icon, or press <code>V</code>. Reads everything automatically as you navigate.</p> |
2111 | 2156 | <p><strong>Accessibility:</strong> The <code>Aa</code> button toggles <a href="https://opendyslexic.org">OpenDyslexic</a> font. The sun icon toggles light/dark theme. Both are persisted across sessions.</p> |
| 2157 | +<h3 id="remote-study-ipad-on-the-bus">Remote Study (iPad on the Bus)<a class="headerlink" href="#remote-study-ipad-on-the-bus" title="Permanent link">¶</a></h3> |
| 2158 | +<p>Use <code>--lan</code> to make the web dashboard and terminal accessible from any device on your network — phone, iPad, second laptop:</p> |
| 2159 | +<div class="highlight"><pre><span></span><code>studyctl<span class="w"> </span>study<span class="w"> </span><span class="s2">"Python Decorators"</span><span class="w"> </span>--energy<span class="w"> </span><span class="m">7</span><span class="w"> </span>--lan |
| 2160 | +<span class="c1"># Auto-generates password and saves LAN info to session state:</span> |
| 2161 | +<span class="c1"># Dashboard: http://192.168.1.42:8567/session</span> |
| 2162 | +<span class="c1"># Password: <auto-generated></span> |
| 2163 | + |
| 2164 | +<span class="c1"># Or set a known password:</span> |
| 2165 | +studyctl<span class="w"> </span>study<span class="w"> </span><span class="s2">"Python Decorators"</span><span class="w"> </span>--energy<span class="w"> </span><span class="m">7</span><span class="w"> </span>--lan<span class="w"> </span>--password<span class="w"> </span>mysecret |
| 2166 | +</code></pre></div> |
| 2167 | +<p>Access the live dashboard and embedded terminal from your iPad at <code>http://<mac-ip>:8567/session</code>. Enter any username and the displayed password when prompted. The terminal panel (ttyd iframe) is proxied through the web server on the same origin, so pop-out/return works seamlessly. ttyd must be installed for the terminal panel to work (<code>brew install ttyd</code>).</p> |
| 2168 | +<p><strong>Password sources</strong> (checked in order): |
| 2169 | +1. <code>--password</code> CLI flag |
| 2170 | +2. <code>lan_password</code> in <code>~/.config/studyctl/config.yaml</code> |
| 2171 | +3. Auto-generated (displayed in terminal output, saved to session state)</p> |
2112 | 2172 | <h3 id="hosts-cross-machine-sync">Hosts — Cross-Machine Sync<a class="headerlink" href="#hosts-cross-machine-sync" title="Permanent link">¶</a></h3> |
2113 | 2173 | <h4 id="prerequisites-passwordless-ssh">Prerequisites: Passwordless SSH<a class="headerlink" href="#prerequisites-passwordless-ssh" title="Permanent link">¶</a></h4> |
2114 | 2174 | <p>Cross-machine sync uses SSH and rsync under the hood. <strong>Passwordless SSH must be configured</strong> between all machines before sync will work. If you're prompted for a password, sync will hang or fail.</p> |
@@ -2272,6 +2332,13 @@ <h3 id="database-search-settings">Database & Search Settings<a class="header |
2272 | 2332 | - <code>DATABASE_PATH</code> — override database location |
2273 | 2333 | - <code>LOG_LEVEL</code> — set logging level (DEBUG, INFO, WARNING, ERROR) |
2274 | 2334 | - <code>EMBEDDING_MODEL</code> — override embedding model</p> |
| 2335 | +<h3 id="web-terminal-settings">Web Terminal Settings<a class="headerlink" href="#web-terminal-settings" title="Permanent link">¶</a></h3> |
| 2336 | +<div class="highlight"><pre><span></span><code><span class="c1"># Web terminal (optional — requires ttyd installed)</span> |
| 2337 | +<span class="nt">ttyd_port</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">7681</span><span class="w"> </span><span class="c1"># ttyd listens on this port (default 7681)</span> |
| 2338 | +<span class="nt">web_port</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">8567</span><span class="w"> </span><span class="c1"># web dashboard port (default 8567)</span> |
| 2339 | +<span class="nt">browser</span><span class="p">:</span><span class="w"> </span><span class="s">""</span><span class="w"> </span><span class="c1"># auto-open browser: chrome, safari, firefox, brave, or empty for system default</span> |
| 2340 | +<span class="nt">lan_password</span><span class="p">:</span><span class="w"> </span><span class="s">""</span><span class="w"> </span><span class="c1"># persistent LAN password (auto-generated per session if empty)</span> |
| 2341 | +</code></pre></div> |
2275 | 2342 | <h3 id="tts-voice-settings">TTS Voice Settings<a class="headerlink" href="#tts-voice-settings" title="Permanent link">¶</a></h3> |
2276 | 2343 | <div class="highlight"><pre><span></span><code><span class="nt">tts</span><span class="p">:</span> |
2277 | 2344 | <span class="w"> </span><span class="nt">voice</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">am_michael</span><span class="w"> </span><span class="c1"># kokoro voice (am_michael, af_heart, bf_emma, etc.)</span> |
|
0 commit comments