Skip to content

Commit b29ba75

Browse files
author
committed
Deployed 389d7d1 with MkDocs version: 1.6.1
1 parent ba20b09 commit b29ba75

6 files changed

Lines changed: 275 additions & 21 deletions

File tree

cli-reference.html

Lines changed: 167 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,28 @@
640640
</span>
641641
</a>
642642

643+
</li>
644+
645+
<li class="md-nav__item">
646+
<a href="#web-pwa" class="md-nav__link">
647+
<span class="md-ellipsis">
648+
649+
Web PWA
650+
651+
</span>
652+
</a>
653+
654+
</li>
655+
656+
<li class="md-nav__item">
657+
<a href="#tui-dashboard-terminal" class="md-nav__link">
658+
<span class="md-ellipsis">
659+
660+
TUI Dashboard (terminal)
661+
662+
</span>
663+
</a>
664+
643665
</li>
644666

645667
</ul>
@@ -980,6 +1002,28 @@
9801002
</span>
9811003
</a>
9821004

1005+
</li>
1006+
1007+
<li class="md-nav__item">
1008+
<a href="#web-pwa" class="md-nav__link">
1009+
<span class="md-ellipsis">
1010+
1011+
Web PWA
1012+
1013+
</span>
1014+
</a>
1015+
1016+
</li>
1017+
1018+
<li class="md-nav__item">
1019+
<a href="#tui-dashboard-terminal" class="md-nav__link">
1020+
<span class="md-ellipsis">
1021+
1022+
TUI Dashboard (terminal)
1023+
1024+
</span>
1025+
</a>
1026+
9831027
</li>
9841028

9851029
</ul>
@@ -1066,6 +1110,7 @@ <h2 id="studyctl">studyctl<a class="headerlink" href="#studyctl" title="Permanen
10661110
studyctl<span class="w"> </span>docs<span class="w"> </span>serve<span class="w"> </span><span class="o">[</span>--port<span class="w"> </span>PORT<span class="o">]</span><span class="w"> </span><span class="c1"># Serve docs site locally</span>
10671111
studyctl<span class="w"> </span>docs<span class="w"> </span>open<span class="w"> </span><span class="c1"># Build and open docs in browser</span>
10681112
studyctl<span class="w"> </span>docs<span class="w"> </span>list<span class="w"> </span><span class="c1"># List available doc pages</span>
1113+
studyctl<span class="w"> </span>tui<span class="w"> </span><span class="c1"># Launch interactive TUI dashboard</span>
10691114
studyctl<span class="w"> </span>docs<span class="w"> </span><span class="nb">read</span><span class="w"> </span>PAGE<span class="w"> </span><span class="c1"># Read a page aloud via study-speak</span>
10701115
</code></pre></div>
10711116
<h3 id="confidence-levels">Confidence Levels<a class="headerlink" href="#confidence-levels" title="Permanent link">&para;</a></h3>
@@ -1099,6 +1144,127 @@ <h3 id="confidence-levels">Confidence Levels<a class="headerlink" href="#confide
10991144
<h3 id="spaced-repetition-intervals">Spaced Repetition Intervals<a class="headerlink" href="#spaced-repetition-intervals" title="Permanent link">&para;</a></h3>
11001145
<p>Review schedule: <strong>1 → 3 → 7 → 14 → 30 days</strong></p>
11011146
<p><code>studyctl review</code> shows what's due based on when you last recorded progress.</p>
1147+
<h3 id="web-pwa">Web PWA<a class="headerlink" href="#web-pwa" title="Permanent link">&para;</a></h3>
1148+
<p><code>studyctl web</code> launches a progressive web app for flashcard and quiz review. No extra dependencies. LAN accessible by default.</p>
1149+
<div class="highlight"><pre><span></span><code>studyctl<span class="w"> </span>web<span class="w"> </span><span class="c1"># Serve on 0.0.0.0:8567</span>
1150+
studyctl<span class="w"> </span>web<span class="w"> </span>--port<span class="w"> </span><span class="m">9000</span><span class="w"> </span><span class="c1"># Custom port</span>
1151+
studyctl<span class="w"> </span>web<span class="w"> </span>--host<span class="w"> </span>localhost<span class="w"> </span><span class="c1"># Local only</span>
1152+
</code></pre></div>
1153+
<table>
1154+
<thead>
1155+
<tr>
1156+
<th>Key</th>
1157+
<th>Action</th>
1158+
<th>When</th>
1159+
</tr>
1160+
</thead>
1161+
<tbody>
1162+
<tr>
1163+
<td><code>Space</code>/<code>Enter</code></td>
1164+
<td>Flip card</td>
1165+
<td>Flashcard, before reveal</td>
1166+
</tr>
1167+
<tr>
1168+
<td><code>Y</code></td>
1169+
<td>I knew it</td>
1170+
<td>Flashcard, after reveal</td>
1171+
</tr>
1172+
<tr>
1173+
<td><code>N</code></td>
1174+
<td>Didn't know</td>
1175+
<td>Flashcard, after reveal</td>
1176+
</tr>
1177+
<tr>
1178+
<td><code>A</code>-<code>D</code></td>
1179+
<td>Select quiz option</td>
1180+
<td>Quiz mode</td>
1181+
</tr>
1182+
<tr>
1183+
<td><code>S</code></td>
1184+
<td>Skip card</td>
1185+
<td>During review</td>
1186+
</tr>
1187+
<tr>
1188+
<td><code>T</code></td>
1189+
<td>Read aloud (once)</td>
1190+
<td>During review</td>
1191+
</tr>
1192+
<tr>
1193+
<td><code>V</code></td>
1194+
<td>Toggle auto-voice</td>
1195+
<td>During review</td>
1196+
</tr>
1197+
<tr>
1198+
<td><code>R</code></td>
1199+
<td>Retry wrong answers</td>
1200+
<td>After session</td>
1201+
</tr>
1202+
<tr>
1203+
<td><code>Esc</code></td>
1204+
<td>Back to home</td>
1205+
<td>Anywhere</td>
1206+
</tr>
1207+
</tbody>
1208+
</table>
1209+
<p><strong>Features:</strong> Source/chapter filter, card count limiter (10/20/50/100/All), due cards badge, session history, 90-day study heatmap, Pomodoro timer (25min/5min), OpenDyslexic font toggle, dark/light theme, PWA installable.</p>
1210+
<p><strong>Voice:</strong> Uses Web Speech API (browser built-in). Two modes:
1211+
- <strong>Read once</strong> — speaker icon on card or <code>T</code> key
1212+
- <strong>Auto-voice</strong> — header toggle or <code>V</code> key (reads everything automatically)</p>
1213+
<p>For best voice quality, download enhanced voices in OS settings (Accessibility → Spoken Content → Voices).</p>
1214+
<h3 id="tui-dashboard-terminal">TUI Dashboard (terminal)<a class="headerlink" href="#tui-dashboard-terminal" title="Permanent link">&para;</a></h3>
1215+
<p><code>studyctl tui</code> launches a terminal dashboard. Requires <code>uv pip install studyctl[tui]</code>.</p>
1216+
<table>
1217+
<thead>
1218+
<tr>
1219+
<th>Key</th>
1220+
<th>Action</th>
1221+
<th>When</th>
1222+
</tr>
1223+
</thead>
1224+
<tbody>
1225+
<tr>
1226+
<td><code>d</code>/<code>r</code>/<code>c</code>/<code>s</code></td>
1227+
<td>Switch tabs</td>
1228+
<td>Always</td>
1229+
</tr>
1230+
<tr>
1231+
<td><code>f</code>/<code>z</code></td>
1232+
<td>Start flashcards/quiz</td>
1233+
<td>Always</td>
1234+
</tr>
1235+
<tr>
1236+
<td><code>Space</code></td>
1237+
<td>Flip card</td>
1238+
<td>During review</td>
1239+
</tr>
1240+
<tr>
1241+
<td><code>y</code>/<code>n</code></td>
1242+
<td>Correct/incorrect</td>
1243+
<td>After flip</td>
1244+
</tr>
1245+
<tr>
1246+
<td><code>r</code></td>
1247+
<td>Retry wrong answers</td>
1248+
<td>After session</td>
1249+
</tr>
1250+
<tr>
1251+
<td><code>v</code></td>
1252+
<td>Toggle voice</td>
1253+
<td>During review</td>
1254+
</tr>
1255+
<tr>
1256+
<td><code>o</code></td>
1257+
<td>Toggle OpenDyslexic</td>
1258+
<td>Always</td>
1259+
</tr>
1260+
<tr>
1261+
<td><code>q</code></td>
1262+
<td>Quit</td>
1263+
<td>Always</td>
1264+
</tr>
1265+
</tbody>
1266+
</table>
1267+
<p><strong>Course picker:</strong> Modal appears when multiple directories configured. <strong>Retry mode:</strong> SM-2 scheduling not updated during retry.</p>
11021268
<hr />
11031269
<h2 id="agent-session-tools">agent-session-tools<a class="headerlink" href="#agent-session-tools" title="Permanent link">&para;</a></h2>
11041270
<p>AI session export, search, and management.</p>
@@ -1159,7 +1325,7 @@ <h3 id="supported-sources">Supported Sources<a class="headerlink" href="#support
11591325
<h3 id="optional-extras">Optional Extras<a class="headerlink" href="#optional-extras" title="Permanent link">&para;</a></h3>
11601326
<div class="highlight"><pre><span></span><code>uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>agent-session-tools<span class="o">[</span>semantic<span class="o">]</span><span class="w"> </span><span class="c1"># Vector embeddings search</span>
11611327
uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>agent-session-tools<span class="o">[</span>tokens<span class="o">]</span><span class="w"> </span><span class="c1"># Token counting</span>
1162-
uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>agent-session-tools<span class="o">[</span>tui<span class="o">]</span><span class="w"> </span><span class="c1"># TUI interface</span>
1328+
uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>studyctl<span class="o">[</span>tui<span class="o">]</span><span class="w"> </span><span class="c1"># TUI interface</span>
11631329
</code></pre></div>
11641330

11651331

search/search_index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

setup-guide.html

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,28 @@
467467
</span>
468468
</a>
469469

470+
</li>
471+
472+
<li class="md-nav__item">
473+
<a href="#web-pwa-recommended" class="md-nav__link">
474+
<span class="md-ellipsis">
475+
476+
Web PWA (recommended)
477+
478+
</span>
479+
</a>
480+
481+
</li>
482+
483+
<li class="md-nav__item">
484+
<a href="#tui-dashboard-terminal" class="md-nav__link">
485+
<span class="md-ellipsis">
486+
487+
TUI Dashboard (terminal)
488+
489+
</span>
490+
</a>
491+
470492
</li>
471493

472494
<li class="md-nav__item">
@@ -1401,6 +1423,28 @@
14011423
</span>
14021424
</a>
14031425

1426+
</li>
1427+
1428+
<li class="md-nav__item">
1429+
<a href="#web-pwa-recommended" class="md-nav__link">
1430+
<span class="md-ellipsis">
1431+
1432+
Web PWA (recommended)
1433+
1434+
</span>
1435+
</a>
1436+
1437+
</li>
1438+
1439+
<li class="md-nav__item">
1440+
<a href="#tui-dashboard-terminal" class="md-nav__link">
1441+
<span class="md-ellipsis">
1442+
1443+
TUI Dashboard (terminal)
1444+
1445+
</span>
1446+
</a>
1447+
14041448
</li>
14051449

14061450
<li class="md-nav__item">
@@ -1846,6 +1890,50 @@ <h3 id="interactive-setup-recommended">Interactive Setup (recommended)<a class="
18461890
<p>The wizard creates or updates <code>~/.config/studyctl/config.yaml</code> with your choices. You can re-run it at any time to change settings.</p>
18471891
<h3 id="manual-configuration">Manual Configuration<a class="headerlink" href="#manual-configuration" title="Permanent link">&para;</a></h3>
18481892
<p>All configuration lives in a single file: <code>~/.config/studyctl/config.yaml</code>. This file is shared between <code>studyctl</code> and all <code>session-*</code> tools — use the same file on every machine.</p>
1893+
<h3 id="web-pwa-recommended">Web PWA (recommended)<a class="headerlink" href="#web-pwa-recommended" title="Permanent link">&para;</a></h3>
1894+
<p>The study web app requires no extra dependencies — just run:</p>
1895+
<div class="highlight"><pre><span></span><code>studyctl<span class="w"> </span>web
1896+
</code></pre></div>
1897+
<p>This starts a web server on <code>http://0.0.0.0:8567</code> accessible from any device on your network. Open it on your phone, tablet, or laptop.</p>
1898+
<p><strong>Install as PWA (iOS/Android):</strong> Open in Safari → Share → Add to Home Screen. The app then works full-screen like a native app.</p>
1899+
<p>Configure flashcard/quiz directories:</p>
1900+
<div class="highlight"><pre><span></span><code><span class="c1"># ~/.config/studyctl/config.yaml</span>
1901+
<span class="nt">review</span><span class="p">:</span>
1902+
<span class="w"> </span><span class="nt">directories</span><span class="p">:</span>
1903+
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">~/Desktop/ZTM-DE/downloads</span>
1904+
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">~/Desktop/Python/downloads</span>
1905+
</code></pre></div>
1906+
<p><strong>Voice output</strong> uses the Web Speech API (built into all browsers). For best quality voices:</p>
1907+
<ul>
1908+
<li><strong>macOS</strong>: System Settings → Accessibility → Spoken Content → System Voice → Manage Voices → download Samantha (Enhanced) or Ava (Premium)</li>
1909+
<li><strong>iOS</strong>: Settings → Accessibility → Spoken Content → Voices → English → download Siri voices</li>
1910+
<li><strong>Windows</strong>: Settings → Time &amp; Language → Speech → Manage voices</li>
1911+
</ul>
1912+
<p>Two voice modes in the PWA:
1913+
- <strong>Read once</strong> — tap the speaker icon on a card, or press <code>T</code>. Reads the current content once.
1914+
- <strong>Auto-voice</strong> — toggle the header speaker icon, or press <code>V</code>. Reads everything automatically as you navigate.</p>
1915+
<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>
1916+
<h3 id="tui-dashboard-terminal">TUI Dashboard (terminal)<a class="headerlink" href="#tui-dashboard-terminal" title="Permanent link">&para;</a></h3>
1917+
<p>The terminal TUI requires the <code>[tui]</code> extra:</p>
1918+
<div class="highlight"><pre><span></span><code>uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>studyctl<span class="o">[</span>tui<span class="o">]</span>
1919+
studyctl<span class="w"> </span>tui
1920+
</code></pre></div>
1921+
<p>Optional TUI settings:</p>
1922+
<div class="highlight"><pre><span></span><code><span class="c1"># ~/.config/studyctl/config.yaml</span>
1923+
<span class="nt">tui</span><span class="p">:</span>
1924+
<span class="w"> </span><span class="nt">theme</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dracula</span><span class="w"> </span><span class="c1"># Any Textual theme (dracula, nord, tokyo-night, etc.)</span>
1925+
<span class="w"> </span><span class="nt">dyslexic_friendly</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"> </span><span class="c1"># Wider spacing, more padding (also toggle with o key)</span>
1926+
</code></pre></div>
1927+
<p>Voice output in the TUI requires the <code>[tts]</code> extra on <code>agent-session-tools</code>:</p>
1928+
<div class="highlight"><pre><span></span><code>uv<span class="w"> </span>tool<span class="w"> </span>install<span class="w"> </span><span class="s2">&quot;./packages/agent-session-tools[tts]&quot;</span>
1929+
</code></pre></div>
1930+
<p><strong>Dyslexic-friendly mode</strong> in the terminal — for best results, set your terminal font to <a href="https://opendyslexic.org">OpenDyslexic</a>:</p>
1931+
<ul>
1932+
<li><strong>iTerm2</strong>: Preferences → Profiles → Text → Font → select OpenDyslexic</li>
1933+
<li><strong>Terminal.app</strong>: Preferences → Profiles → Font → Change → select OpenDyslexic</li>
1934+
<li><strong>Windows Terminal</strong>: Settings → Profiles → Appearance → Font face → OpenDyslexic</li>
1935+
<li><strong>VS Code terminal</strong>: <code>"terminal.integrated.fontFamily": "OpenDyslexic"</code></li>
1936+
</ul>
18491937
<h3 id="hosts-cross-machine-sync">Hosts — Cross-Machine Sync<a class="headerlink" href="#hosts-cross-machine-sync" title="Permanent link">&para;</a></h3>
18501938
<h4 id="prerequisites-passwordless-ssh">Prerequisites: Passwordless SSH<a class="headerlink" href="#prerequisites-passwordless-ssh" title="Permanent link">&para;</a></h4>
18511939
<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>

0 commit comments

Comments
 (0)