fix: font size caching + persistence debug logging
Font fix: setChatFontSize() was called in the view factory before onOpen() created the DOM. querySelector returned null and the call silently failed. Now stores _chatFontSize field — setChatFontSize() always caches the value, and onOpen() reapplies it once the container exists. This fixes the "font resets to default on restart" bug. Persistence debug: added console.log in onOpen() restore loop and onClose() save to help diagnose why messages aren't repopulating. data.json is confirmed written correctly on disk — the debug logs will reveal whether loadMessages() returns the saved data at all.
This commit is contained in:
parent
fc5c9c01bf
commit
175cfa2c61
2 changed files with 22 additions and 8 deletions
12
main.js
12
main.js
File diff suppressed because one or more lines are too long
|
|
@ -39,6 +39,9 @@ export class ChatView extends ItemView {
|
|||
* saveMessages() calls to avoid N racing saveData() writes. */
|
||||
private _restoring: boolean = false;
|
||||
|
||||
/** Cached font size — applied after DOM is ready in onOpen(). */
|
||||
private _chatFontSize: number = 14;
|
||||
|
||||
/** Context captured on chat focus — avoids the timing bug where
|
||||
* activeEditor is null by the time handleSend() runs. */
|
||||
private capturedNote: {
|
||||
|
|
@ -81,6 +84,11 @@ export class ChatView extends ItemView {
|
|||
container.empty();
|
||||
container.addClass("hermes-chat-container");
|
||||
|
||||
// Apply cached font size now that the DOM is ready.
|
||||
// setChatFontSize() may have been called by the factory before
|
||||
// onOpen() created the container, so re-apply here.
|
||||
this.setChatFontSize(this._chatFontSize);
|
||||
|
||||
// --- Message list area ---
|
||||
this.messagesContainer = container.createDiv("chat-messages");
|
||||
this.messagesContainer.id = "chat-messages";
|
||||
|
|
@ -185,12 +193,14 @@ export class ChatView extends ItemView {
|
|||
// we do a single save at the end to avoid N racing saveData() calls.
|
||||
if (this.persistence) {
|
||||
const saved = this.persistence.loadMessages();
|
||||
if (saved.length > 0) {
|
||||
console.log("[Hermes] Restoring messages — count:", saved?.length ?? 0);
|
||||
if (saved && saved.length > 0) {
|
||||
this._restoring = true;
|
||||
try {
|
||||
for (const msg of saved) {
|
||||
await this.appendMessage(msg.role, msg.content);
|
||||
}
|
||||
console.log("[Hermes] Restored", saved.length, "messages successfully");
|
||||
} catch (err) {
|
||||
console.error("[Hermes] Failed to restore messages:", err);
|
||||
} finally {
|
||||
|
|
@ -203,6 +213,7 @@ export class ChatView extends ItemView {
|
|||
}
|
||||
|
||||
async onClose(): Promise<void> {
|
||||
console.log("[Hermes] onClose — saving", this.chatState.messages.length, "messages");
|
||||
await this.persistence?.saveMessages(this.chatState.messages);
|
||||
}
|
||||
|
||||
|
|
@ -225,8 +236,11 @@ export class ChatView extends ItemView {
|
|||
this.slashCommands = commands;
|
||||
}
|
||||
|
||||
/** Set chat font size via CSS custom property on the container. */
|
||||
/** Set chat font size via CSS custom property on the container.
|
||||
* Stores the value regardless of DOM state — applies immediately
|
||||
* if the container exists, otherwise waits for onOpen(). */
|
||||
setChatFontSize(size: number): void {
|
||||
this._chatFontSize = size;
|
||||
const el = this.containerEl.querySelector(".hermes-chat-container") as HTMLElement;
|
||||
if (el) el.style.setProperty("--hermes-chat-font-size", `${size}px`);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue