litura-app 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,104 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Litura</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ </head>
9
+ <body>
10
+ <div class="app">
11
+
12
+ <!--
13
+ The working pane uses CodeMirror 6 instead of a textarea.
14
+ #editor-wrapper is where CM6 mounts the .cm-editor element.
15
+ Ghost text suggestions appear as non-editable inline spans
16
+ right after the cursor — press Tab to accept, Escape to dismiss.
17
+ -->
18
+ <div class="pane" id="pane-work">
19
+ <div class="pane-header">
20
+ <span class="wordmark">Litura</span>
21
+ <span class="style-score" id="style-score" title="Local AI-tell score (0 = clean). Computed in the browser, no model call."></span>
22
+ <button class="review-button" id="review-button" title="Review writing and structure">Review</button>
23
+ <span class="agent-status" id="agent-status">Pi</span>
24
+ <button class="settings-open" id="settings-open" title="Model and access" aria-label="Model and access">⚙</button>
25
+ </div>
26
+ <div id="editor-wrapper"></div>
27
+ </div>
28
+
29
+ </div>
30
+
31
+ <!--
32
+ Chat: a composer pinned bottom-centre over the canvas, Granola-style.
33
+ Idle it is one line; the stream grows upward above it. Not modal — the
34
+ draft stays visible and editable, which is why there is no scrim and no
35
+ prev/next stepper: the underlines themselves are the navigation.
36
+ -->
37
+ <div class="chat" id="chat">
38
+ <button type="button" class="chat-clear" id="chat-clear" hidden>Clear</button>
39
+ <div class="chat-stream" id="chat-stream"></div>
40
+ <div class="chat-composer">
41
+ <!-- The passage itself stays highlighted in the draft; this only names
42
+ what is attached and offers the way out. -->
43
+ <div class="chat-chip hidden" id="chat-chip">
44
+ <span class="chat-chip-text" id="chat-chip-text"></span>
45
+ <button type="button" id="chat-chip-clear" aria-label="Detach selection">×</button>
46
+ </div>
47
+ <div class="chat-row">
48
+ <textarea id="chat-input" rows="1" placeholder="Ask anything" autocomplete="off" spellcheck="false"></textarea>
49
+ <button type="button" class="chat-send" id="chat-send" aria-label="Send" disabled>
50
+ <svg viewBox="0 0 20 20" width="17" height="17" aria-hidden="true"><path d="M10 16V5M10 4.5 5 9.5M10 4.5l5 5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
51
+ </button>
52
+ </div>
53
+ </div>
54
+ </div>
55
+
56
+ <dialog id="settings-dialog" class="settings-dialog">
57
+ <form method="dialog" id="settings-form">
58
+ <header>
59
+ <div>
60
+ <span>Pi</span>
61
+ <h2>Model and access</h2>
62
+ </div>
63
+ <button value="cancel" class="dialog-close" aria-label="Close">×</button>
64
+ </header>
65
+
66
+ <section>
67
+ <h3>Default model</h3>
68
+ <div class="settings-grid">
69
+ <label>Provider<select id="agent-provider"></select></label>
70
+ <label>Model<select id="agent-model"></select></label>
71
+ <label>Reasoning<select id="agent-thinking"></select></label>
72
+ </div>
73
+ <p class="settings-hint" id="model-hint"></p>
74
+ </section>
75
+
76
+ <section>
77
+ <h3>Review</h3>
78
+ <label class="settings-check">
79
+ <input type="checkbox" id="auto-review" checked>
80
+ <span>Check sentences as I finish them<small>Off means only the Review button spends a model call.</small></span>
81
+ </label>
82
+ </section>
83
+
84
+ <section>
85
+ <h3>API keys</h3>
86
+ <div class="key-entry">
87
+ <select id="key-provider" aria-label="API key provider"></select>
88
+ <input id="api-key" type="password" placeholder="API key" autocomplete="off" spellcheck="false">
89
+ <button type="button" id="key-add">Add</button>
90
+ </div>
91
+ <div class="configured-keys" id="configured-keys"></div>
92
+ <p class="settings-error" id="settings-error" role="alert"></p>
93
+ </section>
94
+
95
+ <footer>
96
+ <button value="cancel">Cancel</button>
97
+ <button value="default" id="settings-save" class="primary">Save</button>
98
+ </footer>
99
+ </form>
100
+ </dialog>
101
+
102
+ <script src="app.js"></script>
103
+ </body>
104
+ </html>