Merge pull request #5 from Fretuks/add-user-persona-creation-feature
Move persona editor into modal; add custom traits and DB support
This commit is contained in:
@@ -144,6 +144,48 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="personaModal" class="modal-overlay hidden">
|
||||||
|
<div class="modal-card">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 id="personaFormTitle">Create persona</h3>
|
||||||
|
<button id="personaClose" type="button" class="icon-button">Close</button>
|
||||||
|
</div>
|
||||||
|
<form id="personaForm" class="persona-form">
|
||||||
|
<label class="field">
|
||||||
|
<span>Name</span>
|
||||||
|
<input id="personaName" placeholder="Persona name" required/>
|
||||||
|
</label>
|
||||||
|
<label class="field">
|
||||||
|
<span>Pronouns</span>
|
||||||
|
<input id="personaPronouns" placeholder="e.g. she/her, they/them"/>
|
||||||
|
</label>
|
||||||
|
<label class="field">
|
||||||
|
<span>Appearance</span>
|
||||||
|
<textarea id="personaAppearance" rows="2" placeholder="Describe their look"></textarea>
|
||||||
|
</label>
|
||||||
|
<label class="field">
|
||||||
|
<span>Background</span>
|
||||||
|
<textarea id="personaBackground" rows="2" placeholder="Backstory or origins"></textarea>
|
||||||
|
</label>
|
||||||
|
<label class="field">
|
||||||
|
<span>Details</span>
|
||||||
|
<textarea id="personaDetails" rows="3"
|
||||||
|
placeholder="Personality traits, voice, or quirks"></textarea>
|
||||||
|
</label>
|
||||||
|
<div class="custom-fields">
|
||||||
|
<div class="custom-fields-header">
|
||||||
|
<span>Custom traits</span>
|
||||||
|
<button id="addCustomField" type="button" class="secondary-action">Add</button>
|
||||||
|
</div>
|
||||||
|
<div id="customFieldsList" class="custom-fields-list"></div>
|
||||||
|
</div>
|
||||||
|
<div class="persona-actions">
|
||||||
|
<button id="personaSave" type="submit" class="primary-action">Save persona</button>
|
||||||
|
<button id="personaCancel" type="button" class="secondary-action">Cancel</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js" defer></script>
|
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js" defer></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.6/dist/purify.min.js" defer></script>
|
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.6/dist/purify.min.js" defer></script>
|
||||||
<script src="script.js" defer></script>
|
<script src="script.js" defer></script>
|
||||||
|
|||||||
@@ -334,6 +334,12 @@ if (legacyChatsExist && migrationNeeded.count === 0) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const personaColumns = db.prepare("PRAGMA table_info(personas)").all();
|
||||||
|
const hasCustomFields = personaColumns.some(column => column.name === "custom_fields");
|
||||||
|
if (!hasCustomFields) {
|
||||||
|
db.prepare("ALTER TABLE personas ADD COLUMN custom_fields TEXT").run();
|
||||||
|
}
|
||||||
|
|
||||||
const FileStore = FileStoreFactory(session);
|
const FileStore = FileStoreFactory(session);
|
||||||
app.use(bodyParser.json());
|
app.use(bodyParser.json());
|
||||||
app.use(express.static("public"));
|
app.use(express.static("public"));
|
||||||
|
|||||||
Reference in New Issue
Block a user