Update documentation 2026-01-06
This commit is contained in:
parent
777c8f67e0
commit
5af32e9e92
2
404.html
2
404.html
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="Docusaurus v3.9.2">
|
||||
<title data-rh="true">Development Hub</title><meta data-rh="true" property="og:title" content="Development Hub"><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pages.brrd.tech/rob/development-hub/404.html"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><link data-rh="true" rel="icon" href="/rob/development-hub/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pages.brrd.tech/rob/development-hub/404.html"><link data-rh="true" rel="alternate" href="https://pages.brrd.tech/rob/development-hub/404.html" hreflang="en"><link data-rh="true" rel="alternate" href="https://pages.brrd.tech/rob/development-hub/404.html" hreflang="x-default"><link rel="stylesheet" href="/rob/development-hub/assets/css/styles.6095798e.css">
|
||||
<script src="/rob/development-hub/assets/js/runtime~main.20c2acbd.js" defer="defer"></script>
|
||||
<script src="/rob/development-hub/assets/js/runtime~main.95ff8c89.js" defer="defer"></script>
|
||||
<script src="/rob/development-hub/assets/js/main.4d3a13f1.js" defer="defer"></script>
|
||||
</head>
|
||||
<body class="navigation-with-keyboard">
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
(()=>{"use strict";var e,r,t,a,o,n={},i={};function l(e){var r=i[e];if(void 0!==r)return r.exports;var t=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(t.exports,t,t.exports,l),t.loaded=!0,t.exports}l.m=n,l.c=i,e=[],l.O=(r,t,a,o)=>{if(!t){var n=1/0;for(d=0;d<e.length;d++){for(var[t,a,o]=e[d],i=!0,c=0;c<t.length;c++)(!1&o||n>=o)&&Object.keys(l.O).every(e=>l.O[e](t[c]))?t.splice(c--,1):(i=!1,o<n&&(n=o));if(i){e.splice(d--,1);var u=a();void 0!==u&&(r=u)}}return r}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[t,a,o]},l.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return l.d(r,{a:r}),r},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);l.r(o);var n={};r=r||[null,t({}),t([]),t(t)];for(var i=2&a&&e;("object"==typeof i||"function"==typeof i)&&!~r.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(r=>n[r]=()=>e[r]);return n.default=()=>e,l.d(o,n),o},l.d=(e,r)=>{for(var t in r)l.o(r,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((r,t)=>(l.f[t](e,r),r),[])),l.u=e=>"assets/js/"+({48:"a94703ab",98:"a7bd4aaa",143:"674bbca5",401:"17896441",413:"1db64337",647:"5e95c892",742:"aba21aa0"}[e]||e)+"."+{48:"b8c77466",98:"3ba34601",143:"1ea8ce94",237:"447ba118",401:"a2525508",413:"e2b8ddcf",647:"a3b66919",742:"4a552a5c"}[e]+".js",l.miniCssF=e=>{},l.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),a={},o="project-public-docs:",l.l=(e,r,t,n)=>{if(a[e])a[e].push(r);else{var i,c;if(void 0!==t)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var f=u[d];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==o+t){i=f;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",l.nc&&i.setAttribute("nonce",l.nc),i.setAttribute("data-webpack",o+t),i.src=e),a[e]=[r];var s=(r,t)=>{i.onerror=i.onload=null,clearTimeout(b);var o=a[e];if(delete a[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(e=>e(t)),r)return r(t)},b=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),c&&document.head.appendChild(i)}},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.p="/rob/development-hub/",l.gca=function(e){return e={17896441:"401",a94703ab:"48",a7bd4aaa:"98","674bbca5":"143","1db64337":"413","5e95c892":"647",aba21aa0:"742"}[e]||e,l.p+l.u(e)},(()=>{var e={354:0,869:0};l.f.j=(r,t)=>{var a=l.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else if(/^(354|869)$/.test(r))e[r]=0;else{var o=new Promise((t,o)=>a=e[r]=[t,o]);t.push(a[2]=o);var n=l.p+l.u(r),i=new Error;l.l(n,t=>{if(l.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var o=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+n+")",i.name="ChunkLoadError",i.type=o,i.request=n,a[1](i)}},"chunk-"+r,r)}},l.O.j=r=>0===e[r];var r=(r,t)=>{var a,o,[n,i,c]=t,u=0;if(n.some(r=>0!==e[r])){for(a in i)l.o(i,a)&&(l.m[a]=i[a]);if(c)var d=c(l)}for(r&&r(t);u<n.length;u++)o=n[u],l.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return l.O(d)},t=globalThis.webpackChunkproject_public_docs=globalThis.webpackChunkproject_public_docs||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
||||
(()=>{"use strict";var e,r,t,a,o,n={},i={};function l(e){var r=i[e];if(void 0!==r)return r.exports;var t=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(t.exports,t,t.exports,l),t.loaded=!0,t.exports}l.m=n,l.c=i,e=[],l.O=(r,t,a,o)=>{if(!t){var n=1/0;for(d=0;d<e.length;d++){for(var[t,a,o]=e[d],i=!0,c=0;c<t.length;c++)(!1&o||n>=o)&&Object.keys(l.O).every(e=>l.O[e](t[c]))?t.splice(c--,1):(i=!1,o<n&&(n=o));if(i){e.splice(d--,1);var u=a();void 0!==u&&(r=u)}}return r}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[t,a,o]},l.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return l.d(r,{a:r}),r},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);l.r(o);var n={};r=r||[null,t({}),t([]),t(t)];for(var i=2&a&&e;("object"==typeof i||"function"==typeof i)&&!~r.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(r=>n[r]=()=>e[r]);return n.default=()=>e,l.d(o,n),o},l.d=(e,r)=>{for(var t in r)l.o(r,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((r,t)=>(l.f[t](e,r),r),[])),l.u=e=>"assets/js/"+({48:"a94703ab",98:"a7bd4aaa",143:"674bbca5",401:"17896441",413:"1db64337",647:"5e95c892",742:"aba21aa0"}[e]||e)+"."+{48:"b8c77466",98:"3ba34601",143:"1ea8ce94",237:"447ba118",401:"a2525508",413:"2ac055a2",647:"a3b66919",742:"4a552a5c"}[e]+".js",l.miniCssF=e=>{},l.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),a={},o="project-public-docs:",l.l=(e,r,t,n)=>{if(a[e])a[e].push(r);else{var i,c;if(void 0!==t)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var f=u[d];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==o+t){i=f;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",l.nc&&i.setAttribute("nonce",l.nc),i.setAttribute("data-webpack",o+t),i.src=e),a[e]=[r];var s=(r,t)=>{i.onerror=i.onload=null,clearTimeout(b);var o=a[e];if(delete a[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(e=>e(t)),r)return r(t)},b=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),c&&document.head.appendChild(i)}},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.p="/rob/development-hub/",l.gca=function(e){return e={17896441:"401",a94703ab:"48",a7bd4aaa:"98","674bbca5":"143","1db64337":"413","5e95c892":"647",aba21aa0:"742"}[e]||e,l.p+l.u(e)},(()=>{var e={354:0,869:0};l.f.j=(r,t)=>{var a=l.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else if(/^(354|869)$/.test(r))e[r]=0;else{var o=new Promise((t,o)=>a=e[r]=[t,o]);t.push(a[2]=o);var n=l.p+l.u(r),i=new Error;l.l(n,t=>{if(l.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var o=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+n+")",i.name="ChunkLoadError",i.type=o,i.request=n,a[1](i)}},"chunk-"+r,r)}},l.O.j=r=>0===e[r];var r=(r,t)=>{var a,o,[n,i,c]=t,u=0;if(n.some(r=>0!==e[r])){for(a in i)l.o(i,a)&&(l.m[a]=i[a]);if(c)var d=c(l)}for(r&&r(t);u<n.length;u++)o=n[u],l.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return l.O(d)},t=globalThis.webpackChunkproject_public_docs=globalThis.webpackChunkproject_public_docs||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
||||
15
index.html
15
index.html
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="Docusaurus v3.9.2">
|
||||
<title data-rh="true">Development Hub</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pages.brrd.tech/rob/development-hub/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Development Hub"><meta data-rh="true" name="description" content="Central orchestration project for managing Rob's multi-project development ecosystem."><meta data-rh="true" property="og:description" content="Central orchestration project for managing Rob's multi-project development ecosystem."><link data-rh="true" rel="icon" href="/rob/development-hub/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pages.brrd.tech/rob/development-hub/"><link data-rh="true" rel="alternate" href="https://pages.brrd.tech/rob/development-hub/" hreflang="en"><link data-rh="true" rel="alternate" href="https://pages.brrd.tech/rob/development-hub/" hreflang="x-default"><script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/rob/development-hub/</span> </p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),o=window.location.pathname,s="/"===o.substr(-1)?o:o+"/";e.innerHTML=s}document.addEventListener("DOMContentLoaded",function(){void 0===window.docusaurus&&insertBanner()})</script><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development Hub","item":"https://pages.brrd.tech/rob/development-hub/"}]}</script><link rel="stylesheet" href="/rob/development-hub/assets/css/styles.6095798e.css">
|
||||
<script src="/rob/development-hub/assets/js/runtime~main.20c2acbd.js" defer="defer"></script>
|
||||
<script src="/rob/development-hub/assets/js/runtime~main.95ff8c89.js" defer="defer"></script>
|
||||
<script src="/rob/development-hub/assets/js/main.4d3a13f1.js" defer="defer"></script>
|
||||
</head>
|
||||
<body class="navigation-with-keyboard">
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
<li class=""><strong>New Project Dialog</strong> - Create projects with optional Ramble voice input</li>
|
||||
</ul>
|
||||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="keyboard-shortcuts">Keyboard Shortcuts<a href="#keyboard-shortcuts" class="hash-link" aria-label="Direct link to Keyboard Shortcuts" title="Direct link to Keyboard Shortcuts" translate="no"></a></h3>
|
||||
<table><thead><tr><th>Shortcut</th><th>Action</th></tr></thead><tbody><tr><td><code>Ctrl+Shift+T</code></td><td>New terminal tab</td></tr><tr><td><code>Ctrl+Shift+W</code></td><td>Close current tab</td></tr><tr><td><code>Ctrl+Shift+D</code></td><td>Split horizontal</td></tr><tr><td><code>Ctrl+Shift+E</code></td><td>Split vertical</td></tr><tr><td><code>Ctrl+Alt+Left/Right</code></td><td>Switch panes</td></tr><tr><td><code>Ctrl+B</code></td><td>Toggle project panel</td></tr><tr><td><code>Ctrl+N</code></td><td>New project dialog</td></tr></tbody></table>
|
||||
<table><thead><tr><th>Shortcut</th><th>Action</th></tr></thead><tbody><tr><td><code>Ctrl+Shift+T</code></td><td>New terminal tab</td></tr><tr><td><code>Ctrl+Shift+W</code></td><td>Close current tab</td></tr><tr><td><code>Ctrl+Shift+D</code></td><td>Split horizontal</td></tr><tr><td><code>Ctrl+Shift+E</code></td><td>Split vertical</td></tr><tr><td><code>Ctrl+Shift+P</code></td><td>Close active pane</td></tr><tr><td><code>Ctrl+Alt+Left/Right</code></td><td>Switch panes</td></tr><tr><td><code>Ctrl+B</code></td><td>Toggle project panel</td></tr><tr><td><code>Ctrl+N</code></td><td>New project dialog</td></tr><tr><td><code>F5</code></td><td>Refresh project list</td></tr></tbody></table>
|
||||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-new-project-script">The <code>new-project</code> Script<a href="#the-new-project-script" class="hash-link" aria-label="Direct link to the-new-project-script" title="Direct link to the-new-project-script" translate="no"></a></h2>
|
||||
<p>The main tool is <code>new-project</code>, which automates creating a new project in the ecosystem:</p>
|
||||
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">new-project my-tool --title "My Tool" --tagline "Does useful things"</span><br></span></code></pre></div></div>
|
||||
|
|
@ -55,8 +55,12 @@
|
|||
</ol>
|
||||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="usage">Usage<a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" translate="no"></a></h3>
|
||||
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Full specification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">new-project myproject --title "My Project" --tagline "Short description"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Interactive mode (prompts for title/tagline)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">new-project myproject</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Options</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">--dry-run Show what would happen without making changes</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">--skip-gitea Skip Gitea repo creation (for offline use)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">--help Show help</span><br></span></code></pre></div></div>
|
||||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="architecture">Architecture<a href="#architecture" class="hash-link" aria-label="Direct link to Architecture" title="Direct link to Architecture" translate="no"></a></h2>
|
||||
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">src/development_hub/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── __init__.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── __main__.py # Entry point</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── app.py # QApplication subclass</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── main_window.py # Main window with menus</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── project_list.py # Left panel - project discovery & context menu</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── workspace.py # Right panel - splittable panes with tabs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── terminal_widget.py # PTY terminal with pyte emulation</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── project_discovery.py # Parse projects from build-public-docs.sh</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── dialogs.py # New Project (with Ramble), Settings dialogs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── settings.py # JSON persistence for settings & session</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── styles.py # Dark theme stylesheet</span><br></span></code></pre></div></div>
|
||||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-classes">Key Classes<a href="#key-classes" class="hash-link" aria-label="Direct link to Key Classes" title="Direct link to Key Classes" translate="no"></a></h3>
|
||||
<table><thead><tr><th>Class</th><th>File</th><th>Purpose</th></tr></thead><tbody><tr><td><code>MainWindow</code></td><td>main_window.py</td><td>QMainWindow with menus, splitter layout</td></tr><tr><td><code>ProjectListWidget</code></td><td>project_list.py</td><td>Project list with context menu actions</td></tr><tr><td><code>WorkspaceManager</code></td><td>workspace.py</td><td>Manages splittable pane layout</td></tr><tr><td><code>PaneWidget</code></td><td>workspace.py</td><td>Tab container within a pane</td></tr><tr><td><code>TerminalWidget</code></td><td>terminal_widget.py</td><td>PTY-based terminal with pyte screen emulation</td></tr></tbody></table>
|
||||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="project-structure">Project Structure<a href="#project-structure" class="hash-link" aria-label="Direct link to Project Structure" title="Direct link to Project Structure" translate="no"></a></h2>
|
||||
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">development-hub/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── src/development_hub/ # GUI application</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── main_window.py # Main window with menus</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── project_list.py # Project discovery & context menu</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── workspace.py # Splittable pane layout</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── terminal_widget.py # PTY terminal with pyte</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── dialogs.py # New Project, Settings dialogs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── bin/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── new-project # CLI scaffolding script</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── templates/ # Project templates</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── docs/ # Symlink to this folder</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── pyproject.toml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── CLAUDE.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── README.md</span><br></span></code></pre></div></div>
|
||||
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">development-hub/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── src/development_hub/ # GUI application (see Architecture above)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── bin/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── new-project # CLI scaffolding script</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── templates/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── gitignore.template # Python .gitignore with docs exclusion</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── CLAUDE.md.template # AI context file</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── README.md.template # Basic README</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── pyproject.toml.template</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── overview.md.template # Docs overview</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── updating-documentation.md.template</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── docs/ # Symlink to project-docs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── pyproject.toml # Python packaging with PyQt6 dep</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── CLAUDE.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── README.md</span><br></span></code></pre></div></div>
|
||||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration" translate="no"></a></h2>
|
||||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="gitea-api-token">Gitea API Token<a href="#gitea-api-token" class="hash-link" aria-label="Direct link to Gitea API Token" title="Direct link to Gitea API Token" translate="no"></a></h3>
|
||||
<p>The script needs a Gitea API token to create repositories automatically.</p>
|
||||
|
|
@ -72,9 +76,12 @@
|
|||
<li class="">Generate a new token with 'repo' scope</li>
|
||||
<li class="">Copy the token when prompted</li>
|
||||
</ol>
|
||||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="template-placeholders">Template Placeholders<a href="#template-placeholders" class="hash-link" aria-label="Direct link to Template Placeholders" title="Direct link to Template Placeholders" translate="no"></a></h2>
|
||||
<p>When creating new projects, templates use these placeholders:</p>
|
||||
<table><thead><tr><th>Placeholder</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><code>{{PROJECT_NAME}}</code></td><td>Lowercase project name</td><td><code>my-tool</code></td></tr><tr><td><code>{{PROJECT_TITLE}}</code></td><td>Display title</td><td><code>My Tool</code></td></tr><tr><td><code>{{PROJECT_TAGLINE}}</code></td><td>Short description</td><td><code>Does useful things</code></td></tr><tr><td><code>{{YEAR}}</code></td><td>Current year</td><td><code>2026</code></td></tr><tr><td><code>{{DATE}}</code></td><td>Creation date</td><td><code>2026-01-06</code></td></tr><tr><td><code>{{GITEA_URL}}</code></td><td>Gitea server URL</td><td><code>https://gitea.brrd.tech</code></td></tr><tr><td><code>{{GITEA_OWNER}}</code></td><td>Repository owner</td><td><code>rob</code></td></tr></tbody></table>
|
||||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="related-projects">Related Projects<a href="#related-projects" class="hash-link" aria-label="Direct link to Related Projects" title="Direct link to Related Projects" translate="no"></a></h2>
|
||||
<p>Development Hub manages these projects:</p>
|
||||
<table><thead><tr><th>Project</th><th>Description</th></tr></thead><tbody><tr><td><a class="" href="/rob/cmdforge/overview">CmdForge</a></td><td>AI-powered CLI tool builder</td></tr><tr><td><a class="" href="/rob/cascadingdev/overview">CascadingDev</a></td><td>Cascading Development Framework</td></tr><tr><td><a class="" href="/rob/orchestrated-discussions/overview">Orchestrated Discussions</a></td><td>AI Discussion Framework</td></tr><tr><td><a class="" href="/rob/artifact-editor/overview">Artifact Editor</a></td><td>Code Artifact Editor</td></tr><tr><td><a class="" href="/rob/ramble/overview">Ramble</a></td><td>Voice Note Transcription</td></tr></tbody></table>
|
||||
<p>All projects follow the same patterns and can be created using <code>new-project</code>.</p></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link toc-highlight">Overview</a></li><li><a href="#gui-application" class="table-of-contents__link toc-highlight">GUI Application</a><ul><li><a href="#running-the-app" class="table-of-contents__link toc-highlight">Running the App</a></li><li><a href="#features" class="table-of-contents__link toc-highlight">Features</a></li><li><a href="#keyboard-shortcuts" class="table-of-contents__link toc-highlight">Keyboard Shortcuts</a></li></ul></li><li><a href="#the-new-project-script" class="table-of-contents__link toc-highlight">The <code>new-project</code> Script</a><ul><li><a href="#what-it-creates" class="table-of-contents__link toc-highlight">What It Creates</a></li><li><a href="#usage" class="table-of-contents__link toc-highlight">Usage</a></li></ul></li><li><a href="#project-structure" class="table-of-contents__link toc-highlight">Project Structure</a></li><li><a href="#configuration" class="table-of-contents__link toc-highlight">Configuration</a><ul><li><a href="#gitea-api-token" class="table-of-contents__link toc-highlight">Gitea API Token</a></li></ul></li><li><a href="#related-projects" class="table-of-contents__link toc-highlight">Related Projects</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/rob/development-hub/">Overview</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitea.brrd.tech/rob/development-hub" target="_blank" rel="noopener noreferrer" class="footer__link-item">Gitea<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Development Hub Documentation</div></div></div></footer></div>
|
||||
<p>All projects follow the same patterns and can be created using <code>new-project</code>.</p></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link toc-highlight">Overview</a></li><li><a href="#gui-application" class="table-of-contents__link toc-highlight">GUI Application</a><ul><li><a href="#running-the-app" class="table-of-contents__link toc-highlight">Running the App</a></li><li><a href="#features" class="table-of-contents__link toc-highlight">Features</a></li><li><a href="#keyboard-shortcuts" class="table-of-contents__link toc-highlight">Keyboard Shortcuts</a></li></ul></li><li><a href="#the-new-project-script" class="table-of-contents__link toc-highlight">The <code>new-project</code> Script</a><ul><li><a href="#what-it-creates" class="table-of-contents__link toc-highlight">What It Creates</a></li><li><a href="#usage" class="table-of-contents__link toc-highlight">Usage</a></li></ul></li><li><a href="#architecture" class="table-of-contents__link toc-highlight">Architecture</a><ul><li><a href="#key-classes" class="table-of-contents__link toc-highlight">Key Classes</a></li></ul></li><li><a href="#project-structure" class="table-of-contents__link toc-highlight">Project Structure</a></li><li><a href="#configuration" class="table-of-contents__link toc-highlight">Configuration</a><ul><li><a href="#gitea-api-token" class="table-of-contents__link toc-highlight">Gitea API Token</a></li></ul></li><li><a href="#template-placeholders" class="table-of-contents__link toc-highlight">Template Placeholders</a></li><li><a href="#related-projects" class="table-of-contents__link toc-highlight">Related Projects</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/rob/development-hub/">Overview</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitea.brrd.tech/rob/development-hub" target="_blank" rel="noopener noreferrer" class="footer__link-item">Gitea<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Development Hub Documentation</div></div></div></footer></div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue