Skip to content

Commit

Permalink
v5.2
Browse files Browse the repository at this point in the history
- New mobile-optimized UI
- Rewritten UI for single-page application
- Implemented Yuna's vision, one more step towards AGI
- Image captioning and image generation were moved to the separate vision module
- Project file structure logic was refactored
- Better generation with native Python libraries
- First stable workaround for custom configs
- All C++ dependencies were removed
- New sounds
- Improved server request logic
- Implemented full video call support
- Images now integrated into message bubbles
- Easier installation
- Memory efficient generation
  • Loading branch information
yukiarimo committed Nov 25, 2023
1 parent 5cac182 commit bc05907
Show file tree
Hide file tree
Showing 17 changed files with 713 additions and 534 deletions.
8 changes: 5 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ static/db/*.json
static/audio/output.aiff
static/audio/output.mp3
lib/datasets/yuna/
lib/yuna/models/
lib/yuna/build-yuna/
static/img/call/captured_image.jpg
lib/models/
static/img/call/*
!static/img/call/image_template.jpg
static/img/art/*
!static/img/art/art_template.png
185 changes: 94 additions & 91 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
<link href="/manifest.json" rel="manifest" crossorigin="use-credentials" />
<script src="static/js/index.js" defer></script>

<script>
if ('serviceWorker' in navigator) {
<!--<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('/sw.js').then(
function (registration) {
Expand All @@ -38,124 +38,127 @@
});
});
}
</script>
</script>-->
</head>

<body>
<div class="sidebar-o" id="sidebar">
<div class="coll-lo v-coll" style="background: none;">
<div class="block-text la">Menu</div>
<img src="static/img/yuna.png" alt="Yuna" class="block-image">
</div>

<div class="side-tab-block">
<div class="side-tab-block-e" onclick="OpenTab('1')">Chat</div>
<div class="side-tab-block-e" onclick="OpenTab('2')">Call</div>
<div class="side-tab-block-e" onclick="OpenTab('3')">Mode</div>
</div>
</div>

<div class="topbar-o">
<div class="block-button" id="toggleButtonSide" onclick="toggleSidebar();">Side</div>
<div><div class="la block-text">Yuna</div></div>
<div class="block-button" id="callButton" onclick="OpenPopup('call');">📞</div>
<div>
<div class="la block-text">Yuna</div>
</div>
<div class="la block-text" id="settingsButton" onclick="openConfigParams();">⚙️</div>
</div>

<div class="block-o">
<div class="tab-o tab-o-default" id="1">
<div class="coll-lo">
<div class="block-card el-9">
<div class="block-scroll" id="message-container">
<!-- Messages will be displayed here -->
</div>
<div class="coll-lo">
<div class="block-card el-9">
<div class="block-scroll" id="message-container">
<!-- Messages will be displayed here -->
</div>
</div>

<div class="coll-lo">
<form class="block-card el-9 h-coll" onsubmit="handleSubmit(event)">
<textarea id="input_text" placeholder="Talk to Yuna..."></textarea>
<button type="submit" class="block-button">💬</button>
<button type="button" class="block-button" onclick="OpenPopup('options')"></button>
</form>
</div>
</div>

<div class="tab-o" id="2">
<div class="coll-lo">
<audio id="backgroundMusic">
<source src="static/audio/output.mp3" type="audio/mp3">
</audio>

<div class="participant el-9 block-card">
<div class="block-text la">Call</div>
<img src="static/img/yuna-full.png" alt="Yuna Participant" style="border-radius: 20px;">
<video id="localVideo" playsinline autoplay muted class="draggable-video"></video>
<div class="controls">
<button class="block-button" id="camera-off">Off</button>
<button class="block-button" id="end-call">End</button>
<button class="block-button" id="mute-microphone">Mute</button>
<div class="coll-lo">
<form class="block-card el-9 h-coll" onsubmit="handleSubmit(event)">
<textarea id="input_text" placeholder="Talk to Yuna..."></textarea>
<button type="submit" class="block-button">💬</button>
<button type="button" class="block-button" onclick="OpenPopup('options')"></button>
</form>
</div>
</div>

<canvas id="capture-canvas" style="display: none;"></canvas> <!-- Add this canvas element -->
<button class="block-button" id="capture-image">Capture</button> <!-- Add this button -->
<button class="block-button" id="startButton">Talk</button>
<div class="block-popup" id="settings">
<div class="coll-lo v-coll">
<div class="modal-content">
<div class="modal-header">Parameters</div>
<div class="modal-body">
<div class="popup-content">
<div class="block-card el-9">
<div class="block-scroll" id="parameter-container">
<!-- Dynamic HTML elements will be added here -->
</div>
</div>

<div class="block-card el-9">
<h1>Mode and fix</h1>
<div>
<div class="block-toggle" onclick="toggleTheme()"></div>
<button class="block-button" onclick="checkConfigData();">Fix</button>
<button class="block-button" onclick="fixDialogData();">Build</button>
</div>
</div>

<details class="block-card el-9 v-coll">
<textarea id="codeInput" rows="5" cols="40" placeholder="Enter JavaScript"></textarea>
<button type="button" class="block-button" id="executeButton">Run</button>
<textarea id="consoleOutput" rows="10" cols="40" readonly=""></textarea>
</details>
</div>
</div>
<div class="modal-footer">
<div class="block-button-close" onclick="closePopupsAll();">Close</div>
<button id="save-button block-button" onclick="saveConfigParams();">Save</button>
<button id="reset-button block-button" onclick="localStorage.clear()">Reset</button>
</div>
</div>
</div>
</div>

<div class="tab-o" id="3">
<div class="coll-lo">
<div class="block-card el-9">
<h1>Modes</h1>
<div class="block-card">
<div class="block-text lc">Story writting</div>
<div class="block-popup" id="options">
<div class="modal-content">
<div class="modal-header">Options</div>
<div class="modal-body">
<div class="coll-lo">
<div class="block-list el-9 v-coll">
<div class="block-list-e" onclick="editHistory()">✍️ Edit</div>
<div class="block-list-e" onclick="loadSelectedHistory()">👇 Load</div>
<div class="block-list-e" onclick="downloadHistory()">⬇️ Download</div>
<div class="block-list-e" onclick="location.reload();">🔄 Refresh</div>
<div class="block-list-e" onclick="scrollMsg();">📜 Scroll</div>
<div class="block-list-e" onclick="muteAudio()">📢 Mute</div>
<div class="block-list-e">
<select class="block-list-e block-button" id="history-select" onchange="loadSelectedHistory()">📁</select>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<div class="block-button-close" onclick="closePopupsAll();">Cancel</div>
</div>
</div>
</div>

<div class="block-popup" id="settings">
<div class="block-button-close" onclick="PopupClose();">X</div>

<div class="coll-lo v-coll">
<div class="block-card el-9">
<h1>Mode</h1>
<div class="block-toggle"></div>
</div>

<div class="block-card el-9">
<div class="block-scroll" id="parameter-container">
<!-- Dynamic HTML elements will be added here -->
<div class="block-popup" id="call">
<div class="modal-content">
<div class="modal-header">Call</div>
<div class="modal-body">
<div class="coll-lo">
<audio id="backgroundMusic">
<source src="static/audio/output.mp3" type="audio/mp3">
</audio>

<div class="participant el-9 block-card">
<img src="static/img/yuna-full.png" alt="Yuna Participant" style="border-radius: 20px;">
<video id="localVideo" playsinline autoplay muted class="draggable-video"></video>
<div class="controls">
<button class="block-button" id="end-call">End</button>
<button class="block-button" id="mute-microphone">Mute</button>
<button class="block-button" id="draw-art" onclick="drawArt()">Draw</button>
<canvas id="capture-canvas" style="display: none;"></canvas> <!-- Add this canvas element -->
<button class="block-button" id="capture-image" onclick="captureImage()">Capture</button> <!-- Add this button -->
<button class="block-button" id="startButton" onclick="startVoiceRecognition()">Talk</button>
</div>
</div>
</div>
<button id="save-button" onclick="saveConfigParams();">Save Parameters to Local Storage</button>
</div>


<details class="block-card el-9 v-coll">
<textarea id="codeInput" rows="5" cols="40" placeholder="Enter JavaScript"></textarea>
<button type="button" class="block-button" id="executeButton">Run</button>
<textarea id="consoleOutput" rows="10" cols="40" readonly=""></textarea>
</details>
</div>
</div>

<div class="block-popup" id="options">
<div class="block-button-close" onclick="PopupClose();">X</div>
<div class="coll-lo">
<div class="block-list el-9 v-coll">
<div class="block-list-e" onclick="editHistory()">✍️ Edit</div>
<div class="block-list-e" onclick="loadSelectedHistory()">👇 Load</div>
<div class="block-list-e" onclick="downloadHistory()">⬇️ Download</div>
<div class="block-list-e" onclick="location.reload();">🔄 Refresh</div>
<div class="block-list-e" onclick="scrollMsg();">📜 Scroll</div>
<div class="block-list-e" onclick="muteAudio()">📢 Mute</div>
<select class="block-list-e block-button" id="history-select" onchange="loadSelectedHistory()">📁</select>
<div class="modal-footer">
<div class="block-button-close" onclick="closePopupsAll();">Close</div>
</div>
</div>
</div>

<script>
<!--<script>
// Function to execute JavaScript code entered by the user
document.getElementById("executeButton").addEventListener("click", function () {
// Get the JavaScript code from the textarea
Expand All @@ -172,7 +175,7 @@ <h1>Mode</h1>
document.getElementById("consoleOutput").value += "Error: " + error.message + "\n";
}
});
</script>
</script>-->
</body>

</html>
Loading

0 comments on commit bc05907

Please sign in to comment.