diff infinite_canvas/canvas.h @ 280:49e9e591c9bb

Add persistent dictation, prewarmed WebRTC speech input, Copilot SDK routing, animated conversation lifecycle controls, parking, and architecture coverage.
author MrJuneJune <me@mrjunejune.com>
date Tue, 18 Aug 2026 19:14:53 -0700
parents 8d560f50ed4c
children c57149ad216e
line wrap: on
line diff
--- a/infinite_canvas/canvas.h	Mon Aug 17 22:22:36 2026 -0700
+++ b/infinite_canvas/canvas.h	Tue Aug 18 19:14:53 2026 -0700
@@ -31,6 +31,7 @@
     CANVAS_ENTITY_SCROLL_AREA,
     CANVAS_ENTITY_IMAGE,
     CANVAS_ENTITY_WEB_CONTENT,
+    CANVAS_ENTITY_CONVERSATION,
     CANVAS_ENTITY_LUCIDE_GALLERY,
     CANVAS_ENTITY_TYPE_COUNT,
 } Canvas_Entity_Type;
@@ -41,6 +42,7 @@
     Vector2 position;
     Vector2 size;
     Color color;
+    char label[128];
     char text[CANVAS_ENTITY_TEXT_CAPACITY];
     int32 value;
     int32 text_cursor;
@@ -50,12 +52,16 @@
     boolean active;
     boolean pinned;
     boolean removing;
+    boolean agent_working;
+    boolean text_muted;
+    boolean parked;
     boolean screen_space_initialized;
     float hover_amount;
     float animation_amount;
     float web_chrome_amount;
     Vector2 pinned_screen_position;
     Vector2 pinned_screen_size;
+    Vector2 parked_restore_position;
 } Canvas_Entity;
 
 typedef struct {
@@ -133,6 +139,37 @@
 
 void Canvas_Scene_Init(Canvas_Scene *p_scene, Dowa_Arena *p_arena);
 boolean Canvas_Scene_Add(Canvas_Scene *p_scene, Canvas_Entity_Type type, Vector2 position);
+void Canvas_Text_Area_Set_Content(
+    Canvas_Entity *p_entity,
+    Font font,
+    const char *p_text,
+    boolean muted);
+uint32 Canvas_Scene_Add_Conversation(
+    Canvas_Scene *p_scene,
+    const char *p_title,
+    const char *p_prompt,
+    const char *p_response,
+    Vector2 position);
+boolean Canvas_Scene_Append_Conversation(
+    Canvas_Scene *p_scene,
+    uint32 entity_id,
+    const char *p_prompt,
+    const char *p_response);
+void Canvas_Conversation_Scroll_To_End(
+    Canvas_Entity *p_entity,
+    Font font);
+void Canvas_Conversation_Set_Collapsed(
+    Canvas_Entity *p_entity,
+    boolean collapsed);
+size_t Canvas_Scene_Parked_Conversation_Count(
+    const Canvas_Scene *p_scene);
+boolean Canvas_Scene_Set_Conversation_Parked(
+    Canvas_Scene *p_scene,
+    uint32 entity_id,
+    boolean parked);
+boolean Canvas_Scene_Show_Parking_Lot(
+    Canvas_Scene *p_scene,
+    Canvas_Camera *p_camera);
 void Canvas_Scene_Clear(Canvas_Scene *p_scene);
 void Canvas_Scene_Fade_Out_All(Canvas_Scene *p_scene);
 void Canvas_Scene_Fade_Out_Selected(Canvas_Scene *p_scene);