@vibe80/vibe80 0.2.0 → 0.2.1
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/README.md +43 -16
- package/client/dist/assets/{DiffPanel-BKLnyIAZ.js → DiffPanel-Luk1GrAd.js} +1 -1
- package/client/dist/assets/{ExplorerPanel-D3IbBsXz.js → ExplorerPanel-CGVmxql1.js} +1 -1
- package/client/dist/assets/{LogsPanel-BwJAFHRP.js → LogsPanel-D8Z8Zam8.js} +1 -1
- package/client/dist/assets/{SettingsPanel-BfkchMnR.js → SettingsPanel-H2q2eoDf.js} +1 -1
- package/client/dist/assets/{TerminalPanel-BQfMEm-u.js → TerminalPanel-kEz-cjes.js} +1 -1
- package/client/dist/assets/{index-D1UJw1oP.js → index-knjescVH.js} +3 -3
- package/client/dist/index.html +1 -1
- package/client/dist/sw.js +1 -1
- package/client/src/App.jsx +1 -0
- package/client/src/components/SessionGate/SessionGate.jsx +13 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,29 +20,56 @@ Vibe80 is an open-source, AI-assisted coding platform that orchestrates LLM agen
|
|
|
20
20
|
|
|
21
21
|
At least one of `codex` or `claude code` must be installed before starting.
|
|
22
22
|
|
|
23
|
-
## Quick start
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
## Quick Start (local)
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
npm install
|
|
30
|
-
# Optional global install:
|
|
31
|
-
# npm install -g .
|
|
32
|
-
```
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g @vibe80/vibe80
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
vibe80
|
|
37
|
-
```
|
|
29
|
+
# Run with Codex support
|
|
30
|
+
vibe80 --codex
|
|
38
31
|
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
# Run with Claude support
|
|
33
|
+
vibe80 --claude
|
|
34
|
+
```
|
|
41
35
|
|
|
36
|
+
The server starts on `http://localhost:5179` and prints a one-shot authentication link at startup.
|
|
42
37
|
|
|
43
|
-
## Docker
|
|
38
|
+
## Docker
|
|
44
39
|
|
|
45
|
-
|
|
40
|
+
### Docker with Codex
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
docker run \
|
|
44
|
+
-e DEPLOYMENT_MODE=mono_user \
|
|
45
|
+
-e VIBE80_MONO_ENABLE_CODEX=true \
|
|
46
|
+
-v vibe80home:/home/vibe80 \
|
|
47
|
+
-p 5179:5179 \
|
|
48
|
+
vibe80/vibe80
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Docker with Claude
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
docker run --rm -it \
|
|
55
|
+
-e DEPLOYMENT_MODE=mono_user \
|
|
56
|
+
-e VIBE80_MONO_ENABLE_CLAUDE=true \
|
|
57
|
+
-v vibe80home:/home/vibe80 \
|
|
58
|
+
-v $(realpath $(which claude)):/usr/bin/claude \
|
|
59
|
+
-p 5179:5179 \
|
|
60
|
+
vibe80/vibe80
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
> Unlike Codex (Apache-2.0), Claude Code is proprietary and cannot be distributed in the image. That is why the host Claude binary is mounted into the container.
|
|
64
|
+
|
|
65
|
+
## Mobile apps
|
|
66
|
+
|
|
67
|
+
- Android APK: https://github.com/vibe80/vibe80/releases
|
|
68
|
+
- iOS app: coming soon
|
|
69
|
+
|
|
70
|
+
## Documentation
|
|
71
|
+
|
|
72
|
+
Full documentation: https://vibe80.io/docs
|
|
46
73
|
|
|
47
74
|
## License
|
|
48
75
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as d,i as b,H as v}from"./index-
|
|
1
|
+
import{j as d,i as b,H as v}from"./index-knjescVH.js";function k({t:i,activePane:j,isInWorktree:N,diffStatusLines:l,connected:f,currentProcessing:t,hasCurrentChanges:r,sendCommitMessage:h,diffFiles:m,currentDiff:o,untrackedFilePanels:c,untrackedLoading:u}){const x=Array.isArray(c)&&c.length>0,p=e=>{const s=String(e||"").split(/\r?\n/);return d.jsx("table",{className:"diff-view untracked-diff-view",children:d.jsx("tbody",{children:s.map((n,a)=>d.jsxs("tr",{className:"diff-line diff-line-add",children:[d.jsx("td",{className:"diff-gutter diff-gutter-added",children:d.jsx("span",{className:"diff-line-number",children:a+1})}),d.jsx("td",{className:"diff-code diff-code-added",children:n.length>0?n:" "})]},`line-${a}`))})})};return d.jsxs("div",{className:`diff-panel ${j==="diff"?"":"is-hidden"}`,children:[d.jsxs("div",{className:"diff-header",children:[d.jsx("div",{className:"diff-title",children:i(N?"Worktree diff":"Repository diff")}),l.length>0&&d.jsx("div",{className:"diff-count",children:i("{{count}} files modified",{count:l.length})}),d.jsxs("div",{className:"diff-actions",children:[d.jsx("button",{type:"button",className:"diff-action-button",onClick:()=>h("Commit"),disabled:!f||t||!r,title:i("Send 'Commit' in chat"),children:i("Commit")}),d.jsx("button",{type:"button",className:"diff-action-button primary",onClick:()=>h("Commit & Push"),disabled:!f||t||!r,title:i("Send 'Commit & Push' in chat"),children:i("Commit & Push")})]})]}),l.length>0&&d.jsx("div",{className:"diff-status",children:l.map((e,s)=>d.jsx("div",{children:e},`${e}-${s}`))}),m.length>0||x?d.jsxs("div",{className:"diff-body",children:[m.map(e=>{const s=e.newPath||e.oldPath||i("Diff");return d.jsxs("div",{className:"diff-file",children:[d.jsx("div",{className:"diff-file-header",children:s}),d.jsx(b,{viewType:"unified",diffType:e.type,hunks:e.hunks,children:n=>n.map(a=>d.jsx(v,{hunk:a},a.content))})]},`${e.oldPath}-${e.newPath}-${e.type}`)}),x&&c.map(e=>d.jsxs("div",{className:"diff-file",children:[d.jsx("div",{className:"diff-file-header",children:`?? ${e.path}`}),e.error?d.jsx("pre",{className:"diff-fallback",children:i("Unable to load file.")}):e.binary?d.jsx("pre",{className:"diff-fallback",children:i("binary data")}):d.jsxs(d.Fragment,{children:[p(e.content||""),e.truncated&&d.jsx("div",{className:"diff-file-note",children:i("File truncated for display.")})]})]},`untracked-${e.path}`)),u&&d.jsx("div",{className:"diff-file-note",children:i("Loading untracked files...")})]}):o.diff?d.jsx("pre",{className:"diff-fallback",children:o.diff}):d.jsx("div",{className:"diff-empty",children:i("No changes detected.")})]})}export{k as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as s,W as F,j as i,F as Q,f as Se,a as Re,b as De,c as Ie,d as Le}from"./index-
|
|
1
|
+
import{r as s,W as F,j as i,F as Q,f as Se,a as Re,b as De,c as Ie,d as Le}from"./index-knjescVH.js";function de(e,r){(r==null||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function Ee(e){if(Array.isArray(e))return e}function Te(e,r,t){return(r=Ke(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function Ae(e,r){var t=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(t!=null){var n,a,u,c,y=[],v=!0,d=!1;try{if(u=(t=t.call(e)).next,r!==0)for(;!(v=(n=u.call(t)).done)&&(y.push(n.value),y.length!==r);v=!0);}catch(S){d=!0,a=S}finally{try{if(!v&&t.return!=null&&(c=t.return(),Object(c)!==c))return}finally{if(d)throw a}}return y}}function $e(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
2
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function fe(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),t.push.apply(t,n)}return t}function pe(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?fe(Object(t),!0).forEach(function(n){Te(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):fe(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function Ve(e,r){if(e==null)return{};var t,n,a=Be(e,r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)===-1&&{}.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function Be(e,r){if(e==null)return{};var t={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(r.indexOf(n)!==-1)continue;t[n]=e[n]}return t}function qe(e,r){return Ee(e)||Ae(e,r)||Ue(e,r)||$e()}function ze(e,r){if(typeof e!="object"||!e)return e;var t=e[Symbol.toPrimitive];if(t!==void 0){var n=t.call(e,r);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(e)}function Ke(e){var r=ze(e,"string");return typeof r=="symbol"?r:r+""}function Ue(e,r){if(e){if(typeof e=="string")return de(e,r);var t={}.toString.call(e).slice(8,-1);return t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set"?Array.from(e):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?de(e,r):void 0}}function He(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function ge(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),t.push.apply(t,n)}return t}function he(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?ge(Object(t),!0).forEach(function(n){He(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ge(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function Fe(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];return function(n){return r.reduceRight(function(a,u){return u(a)},n)}}function X(e){return function r(){for(var t=this,n=arguments.length,a=new Array(n),u=0;u<n;u++)a[u]=arguments[u];return a.length>=e.length?e.apply(this,a):function(){for(var c=arguments.length,y=new Array(c),v=0;v<c;v++)y[v]=arguments[v];return r.apply(t,[].concat(a,y))}}}function ne(e){return{}.toString.call(e).includes("Object")}function ke(e){return!Object.keys(e).length}function W(e){return typeof e=="function"}function Ge(e,r){return Object.prototype.hasOwnProperty.call(e,r)}function Ye(e,r){return ne(r)||B("changeType"),Object.keys(r).some(function(t){return!Ge(e,t)})&&B("changeField"),r}function _e(e){W(e)||B("selectorType")}function Je(e){W(e)||ne(e)||B("handlerType"),ne(e)&&Object.values(e).some(function(r){return!W(r)})&&B("handlersType")}function Qe(e){e||B("initialIsRequired"),ne(e)||B("initialType"),ke(e)&&B("initialContent")}function Xe(e,r){throw new Error(e[r]||e.default)}var Ze={initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"},B=X(Xe)(Ze),re={changes:Ye,selector:_e,handler:Je,initial:Qe};function We(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};re.initial(e),re.handler(r);var t={current:e},n=X(tr)(t,r),a=X(rr)(t),u=X(re.changes)(e),c=X(er)(t);function y(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(S){return S};return re.selector(d),d(t.current)}function v(d){Fe(n,a,u,c)(d)}return[y,v]}function er(e,r){return W(r)?r(e.current):r}function rr(e,r){return e.current=he(he({},e.current),r),r}function tr(e,r,t){return W(r)?r(e.current):Object.keys(t).forEach(function(n){var a;return(a=r[n])===null||a===void 0?void 0:a.call(r,e.current[n])}),t}var nr={create:We},or={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs"}};function ir(e){return function r(){for(var t=this,n=arguments.length,a=new Array(n),u=0;u<n;u++)a[u]=arguments[u];return a.length>=e.length?e.apply(this,a):function(){for(var c=arguments.length,y=new Array(c),v=0;v<c;v++)y[v]=arguments[v];return r.apply(t,[].concat(a,y))}}}function ar(e){return{}.toString.call(e).includes("Object")}function lr(e){return e||me("configIsRequired"),ar(e)||me("configType"),e.urls?(ur(),{paths:{vs:e.urls.monacoBase}}):e}function ur(){console.warn(be.deprecation)}function sr(e,r){throw new Error(e[r]||e.default)}var be={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:`Deprecation warning!
|
|
3
3
|
You are using deprecated way of configuration.
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s}from"./index-
|
|
1
|
+
import{j as s}from"./index-knjescVH.js";function r({t:l,activePane:n,filteredRpcLogs:e,logFilter:i,setLogFilter:o,scopedRpcLogs:t,handleClearRpcLogs:c}){return s.jsxs("div",{className:`logs-panel ${n==="logs"?"":"is-hidden"}`,children:[s.jsxs("div",{className:"logs-header",children:[s.jsx("div",{className:"logs-title",children:l("JSON-RPC")}),s.jsxs("div",{className:"logs-controls",children:[s.jsx("div",{className:"logs-count",children:l("{{count}} item(s)",{count:e.length})}),s.jsxs("div",{className:"logs-filters",children:[s.jsx("button",{type:"button",className:`logs-filter ${i==="all"?"is-active":""}`,onClick:()=>o("all"),children:l("All")}),s.jsx("button",{type:"button",className:`logs-filter ${i==="stdin"?"is-active":""}`,onClick:()=>o("stdin"),children:l("Stdin")}),s.jsx("button",{type:"button",className:`logs-filter ${i==="stdout"?"is-active":""}`,onClick:()=>o("stdout"),children:l("Stdout")})]}),s.jsx("button",{type:"button",className:"logs-clear",onClick:c,disabled:t.length===0,children:l("Clear")})]})]}),e.length===0?s.jsx("div",{className:"logs-empty",children:l("No logs yet.")}):s.jsx("div",{className:"logs-list",children:e.map((a,m)=>{var d;return s.jsxs("div",{className:`logs-item logs-${a.direction}`,children:[s.jsxs("div",{className:"logs-meta",children:[s.jsx("span",{className:"logs-direction",children:a.direction==="stdin"?l("stdin"):l("stdout")}),s.jsx("span",{className:"logs-time",children:a.timeLabel}),((d=a.payload)==null?void 0:d.method)&&s.jsx("span",{className:"logs-method",children:a.payload.method})]}),s.jsx("pre",{className:"logs-payload",children:JSON.stringify(a.payload,null,2)})]},`${a.timestamp}-${m}`)})})]})}export{r as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s,F as B,e as E}from"./index-
|
|
1
|
+
import{j as s,F as B,e as E}from"./index-knjescVH.js";function y({t:e,activePane:m,handleSettingsBack:h,language:o,setLanguage:x,showChatCommands:g,setShowChatCommands:j,showToolResults:N,setShowToolResults:p,notificationsEnabled:u,setNotificationsEnabled:b,themeMode:v,setThemeMode:k,gitIdentityName:f,setGitIdentityName:w,gitIdentityEmail:C,setGitIdentityEmail:F,gitIdentityGlobal:l,gitIdentityRepo:i,gitIdentityLoading:c,gitIdentitySaving:t,gitIdentityError:r,gitIdentityMessage:d,handleSaveGitIdentity:A,attachmentSession:n}){return s.jsxs("div",{className:`settings-panel ${m==="settings"?"":"is-hidden"}`,children:[s.jsxs("div",{className:"settings-header",children:[s.jsx("button",{type:"button",className:"settings-back icon-button",onClick:h,"aria-label":e("Back to previous view"),title:e("Back"),children:s.jsx("span",{"aria-hidden":"true",children:s.jsx(B,{icon:E})})}),s.jsxs("div",{className:"settings-heading",children:[s.jsx("div",{className:"settings-title",children:e("User settings")}),s.jsx("div",{className:"settings-subtitle",children:e("These settings are stored in your browser.")})]})]}),s.jsxs("div",{className:"settings-group",children:[s.jsxs("label",{className:"settings-item",children:[s.jsxs("span",{className:"settings-text",children:[s.jsx("span",{className:"settings-name",children:e("Language")}),s.jsx("span",{className:"settings-hint",children:e("Select a language")})]}),s.jsxs("select",{className:"settings-select",value:o,onChange:a=>x(a.target.value),children:[s.jsx("option",{value:"fr",children:e("French")}),s.jsx("option",{value:"en",children:e("English")})]})]}),s.jsxs("label",{className:"settings-item",children:[s.jsxs("span",{className:"settings-text",children:[s.jsx("span",{className:"settings-name",children:e("Show commands in chat")}),s.jsx("span",{className:"settings-hint",children:e("Show executed command blocks in the conversation.")})]}),s.jsx("input",{type:"checkbox",className:"settings-toggle",checked:g,onChange:a=>j(a.target.checked)})]}),s.jsxs("label",{className:"settings-item",children:[s.jsxs("span",{className:"settings-text",children:[s.jsx("span",{className:"settings-name",children:e("Show tool results in chat")}),s.jsx("span",{className:"settings-hint",children:e("Show tool_result blocks in the conversation.")})]}),s.jsx("input",{type:"checkbox",className:"settings-toggle",checked:N,onChange:a=>p(a.target.checked)})]}),s.jsxs("label",{className:"settings-item",children:[s.jsxs("span",{className:"settings-text",children:[s.jsx("span",{className:"settings-name",children:e("Notifications")}),s.jsx("span",{className:"settings-hint",children:e("Show a notification and sound when a new message arrives.")})]}),s.jsx("input",{type:"checkbox",className:"settings-toggle",checked:u,onChange:a=>b(a.target.checked)})]}),s.jsxs("label",{className:"settings-item",children:[s.jsxs("span",{className:"settings-text",children:[s.jsx("span",{className:"settings-name",children:e("Dark mode")}),s.jsx("span",{className:"settings-hint",children:e("Enable the dark theme for the interface.")})]}),s.jsx("input",{type:"checkbox",className:"settings-toggle",checked:v==="dark",onChange:a=>k(a.target.checked?"dark":"light")})]})]}),s.jsx("div",{className:"settings-group",children:s.jsxs("div",{className:"settings-item settings-item--stacked",children:[s.jsxs("div",{className:"settings-text",children:[s.jsx("span",{className:"settings-name",children:e("Git identity for this repository")}),s.jsx("span",{className:"settings-hint",children:e("Provide user.name and user.email for repository commits.")}),s.jsx("span",{className:"settings-hint",children:e("Global values: {{name}} / {{email}}.",{name:l.name||e("Not set"),email:l.email||e("Not set")})}),s.jsx("span",{className:"settings-hint",children:i.name||i.email?e("Repository values: {{name}} / {{email}}.",{name:i.name||e("Not set"),email:i.email||e("Not set")}):e("No repository-specific values.")})]}),s.jsxs("div",{className:"settings-fields",children:[s.jsxs("label",{className:"settings-field",children:[s.jsx("span",{className:"settings-field-label",children:e("user.name")}),s.jsx("input",{type:"text",className:"settings-input",value:f,onChange:a=>w(a.target.value),placeholder:l.name||e("Full name"),disabled:c||t||!(n!=null&&n.sessionId)})]}),s.jsxs("label",{className:"settings-field",children:[s.jsx("span",{className:"settings-field-label",children:e("user.email")}),s.jsx("input",{type:"email",className:"settings-input",value:C,onChange:a=>F(a.target.value),placeholder:l.email||e("your.email@example.com"),disabled:c||t||!(n!=null&&n.sessionId)})]})]}),s.jsxs("div",{className:"settings-actions",children:[s.jsx("button",{type:"button",className:"settings-button",onClick:A,disabled:c||t||!(n!=null&&n.sessionId),children:e(t?"Saving...":"Save")}),c?s.jsx("span",{className:"settings-status",children:e("Loading...")}):null,r?s.jsx("span",{className:"settings-status is-error",children:r}):null,d?s.jsx("span",{className:"settings-status",children:d}):null]})]})})]})}export{y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as n}from"./index-
|
|
1
|
+
import{j as n}from"./index-knjescVH.js";function h({t:m,terminalEnabled:a,activePane:x,repoName:d,activeWorktree:l,isInWorktree:j,terminalContainerRef:i,attachmentSession:s}){return a?n.jsxs("div",{className:`terminal-panel ${x==="terminal"?"":"is-hidden"}`,children:[n.jsxs("div",{className:"terminal-header",children:[n.jsx("div",{className:"terminal-title",children:m("Terminal")}),(d||(l==null?void 0:l.branchName)||(l==null?void 0:l.name))&&n.jsx("div",{className:"terminal-meta",children:j?(l==null?void 0:l.branchName)||(l==null?void 0:l.name):d})]}),n.jsx("div",{className:"terminal-body",ref:i}),!(s!=null&&s.sessionId)&&n.jsx("div",{className:"terminal-empty",children:m("Start a session to open the terminal.")})]}):null}export{h as default};
|