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 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/dompurify@3.0.6/dist/purify.min.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);
|
||||
app.use(bodyParser.json());
|
||||
app.use(express.static("public"));
|
||||
|
||||
Reference in New Issue
Block a user