quikchat 1.2.4 → 1.2.7
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.
- package/README.md +9 -4
- package/dist/build-manifest.json +73 -80
- package/dist/quikchat-md-full.cjs.js +630 -256
- package/dist/quikchat-md-full.cjs.js.map +1 -1
- package/dist/quikchat-md-full.cjs.min.js +3 -3
- package/dist/quikchat-md-full.cjs.min.js.map +1 -1
- package/dist/quikchat-md-full.esm.js +630 -256
- package/dist/quikchat-md-full.esm.js.map +1 -1
- package/dist/quikchat-md-full.esm.min.js +3 -3
- package/dist/quikchat-md-full.esm.min.js.map +1 -1
- package/dist/quikchat-md-full.umd.js +630 -256
- package/dist/quikchat-md-full.umd.js.map +1 -1
- package/dist/quikchat-md-full.umd.min.js +3 -3
- package/dist/quikchat-md-full.umd.min.js.map +1 -1
- package/dist/quikchat-md.cjs.js +614 -246
- package/dist/quikchat-md.cjs.js.map +1 -1
- package/dist/quikchat-md.cjs.min.js +3 -3
- package/dist/quikchat-md.cjs.min.js.map +1 -1
- package/dist/quikchat-md.esm.js +614 -246
- package/dist/quikchat-md.esm.js.map +1 -1
- package/dist/quikchat-md.esm.min.js +3 -3
- package/dist/quikchat-md.esm.min.js.map +1 -1
- package/dist/quikchat-md.umd.js +614 -246
- package/dist/quikchat-md.umd.js.map +1 -1
- package/dist/quikchat-md.umd.min.js +3 -3
- package/dist/quikchat-md.umd.min.js.map +1 -1
- package/dist/quikchat.cjs.js +3 -3
- package/dist/quikchat.cjs.js.map +1 -1
- package/dist/quikchat.cjs.min.js +1 -1
- package/dist/quikchat.cjs.min.js.map +1 -1
- package/dist/quikchat.css +351 -120
- package/dist/quikchat.esm.js +3 -3
- package/dist/quikchat.esm.js.map +1 -1
- package/dist/quikchat.esm.min.js +1 -1
- package/dist/quikchat.esm.min.js.map +1 -1
- package/dist/quikchat.min.css +1 -1
- package/dist/quikchat.umd.js +3 -3
- package/dist/quikchat.umd.js.map +1 -1
- package/dist/quikchat.umd.min.js +1 -1
- package/dist/quikchat.umd.min.js.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
# QuikChat
|
|
6
6
|
|
|
7
|
-
A lightweight, zero-dependency
|
|
7
|
+
A lightweight, zero-dependency JavaScript chat widget, with history save/restore, multiple instance support, and several other goodies. Works with any framework — React, Vue, Svelte, Angular, Solid — or none at all. Connect it to any LLM, WebSocket, or message source with plain `fetch()`.
|
|
8
|
+
|
|
9
|
+
[Live Demo & Documentation](https://deftio.github.io/quikchat/site/)
|
|
10
|
+
|
|
11
|
+
[](https://deftio.github.io/quikchat/site/)
|
|
8
12
|
|
|
9
13
|
```html
|
|
10
14
|
<script src="https://unpkg.com/quikchat"></script>
|
|
@@ -48,7 +52,7 @@ That's a working streaming LLM chat in one file — no bundler, no framework, no
|
|
|
48
52
|
- **Typing indicator** — animated "..." dots that auto-clear when streaming begins
|
|
49
53
|
- **Markdown support** — three tiers: base (no markdown), `-md` (basic markdown via [quikdown](https://github.com/deftio/quikdown)), `-md-full` (syntax highlighting, math, diagrams, maps — loaded on demand from CDN)
|
|
50
54
|
- **HTML sanitization** — built-in XSS protection or plug in your own sanitizer
|
|
51
|
-
- **Themeable** —
|
|
55
|
+
- **Themeable** — 11 built-in CSS themes (light, dark, blue, warm, midnight, ocean, modern, glass, gradient, minimal, debug) or write your own
|
|
52
56
|
- **Multi-user** — multiple users per chat, multiple independent chats per page
|
|
53
57
|
- **Message visibility & tagging** — hide system prompts and tool-call results from the UI while keeping them in history for LLM context
|
|
54
58
|
- **History export / import** — save and restore complete chat sessions (`historyExport()` / `historyImport()`)
|
|
@@ -191,12 +195,13 @@ Style messages by role with CSS hooks: `.quikchat-role-user`, `.quikchat-role-as
|
|
|
191
195
|
| [LLM Integration](docs/llm-integration.md) | Ollama, OpenAI, LM Studio, tool calls, conversational memory |
|
|
192
196
|
| [Theming](docs/theming.md) | Custom themes, CSS architecture, built-in themes |
|
|
193
197
|
| [CSS Architecture](docs/css-architecture.md) | Base vs theme separation, ARIA accessibility |
|
|
198
|
+
| [Recipes](docs/recipes.md) | Common patterns: log viewer, tool-call visibility, session persistence, RTL |
|
|
194
199
|
|
|
195
200
|
## Demo & Examples
|
|
196
201
|
|
|
197
202
|
[Live Demo](https://deftio.github.io/quikchat/site/) | [Examples](https://deftio.github.io/quikchat/examples/)
|
|
198
203
|
|
|
199
|
-
Examples include: basic UMD/ESM usage,
|
|
204
|
+
Examples include: basic UMD/ESM usage, dual chatrooms, markdown rendering ([basic](./examples/example_markdown.html) and [full with syntax highlighting + math + diagrams](./examples/example_md_full.html)), LLM integrations (Ollama, OpenAI, LM Studio), [LLM tool-calling editor](./examples/example_tool_editor.html), tool-call visibility, session save/restore, RTL/i18n, log viewer, event timeline, framework integration (React, Vue, Solid, Svelte, Angular), and backend examples ([FastAPI](./examples/fastapi_llm/), [Express](./examples/npm_express/)).
|
|
200
205
|
|
|
201
206
|
## Build Variants
|
|
202
207
|
|
|
@@ -205,7 +210,7 @@ Examples include: basic UMD/ESM usage, theme switching, dual chatrooms, markdown
|
|
|
205
210
|
| **Base** (`quikchat.umd.min.js`) | Chat widget, zero deps | None |
|
|
206
211
|
| **Markdown** (`quikchat-md.umd.min.js`) | + bold, italic, code, tables, lists | None |
|
|
207
212
|
| **Full** (`quikchat-md-full.umd.min.js`) | + syntax highlighting, math, diagrams, maps | CDN on demand |
|
|
208
|
-
| **CSS** (`quikchat.css`) | All
|
|
213
|
+
| **CSS** (`quikchat.css`) | All 11 themes | None |
|
|
209
214
|
|
|
210
215
|
All builds are also available in ESM and CJS formats with sourcemaps. See the [downloads page](https://deftio.github.io/quikchat/site/downloads.html) for exact sizes, SRI hashes, and CDN links.
|
|
211
216
|
|
package/dist/build-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.2.
|
|
3
|
-
"generated": "2026-
|
|
2
|
+
"version": "1.2.7",
|
|
3
|
+
"generated": "2026-05-04T04:21:07.564Z",
|
|
4
4
|
"builds": [
|
|
5
5
|
{
|
|
6
6
|
"id": "base",
|
|
@@ -12,49 +12,49 @@
|
|
|
12
12
|
"format": "UMD",
|
|
13
13
|
"raw": "quikchat.umd.js",
|
|
14
14
|
"min": "quikchat.umd.min.js",
|
|
15
|
-
"rawBytes":
|
|
16
|
-
"minBytes":
|
|
17
|
-
"gzipBytes":
|
|
18
|
-
"rawSize": "32.
|
|
19
|
-
"minSize": "17.
|
|
20
|
-
"gzipSize": "4.
|
|
21
|
-
"sri": "sha384-
|
|
15
|
+
"rawBytes": 33119,
|
|
16
|
+
"minBytes": 17421,
|
|
17
|
+
"gzipBytes": 4849,
|
|
18
|
+
"rawSize": "32.34 KB",
|
|
19
|
+
"minSize": "17.01 KB",
|
|
20
|
+
"gzipSize": "4.74 KB",
|
|
21
|
+
"sri": "sha384-HLvGJigsP5xa9TFN6KOihPuozxJlq36dC16VsNMBpVGiwLs75d+2/LEmqzJX58y8"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"format": "CJS",
|
|
25
25
|
"raw": "quikchat.cjs.js",
|
|
26
26
|
"min": "quikchat.cjs.min.js",
|
|
27
|
-
"rawBytes":
|
|
28
|
-
"minBytes":
|
|
29
|
-
"gzipBytes":
|
|
30
|
-
"rawSize": "30.
|
|
31
|
-
"minSize": "16.
|
|
32
|
-
"gzipSize": "4.
|
|
33
|
-
"sri": "sha384-
|
|
27
|
+
"rawBytes": 31007,
|
|
28
|
+
"minBytes": 17206,
|
|
29
|
+
"gzipBytes": 4781,
|
|
30
|
+
"rawSize": "30.28 KB",
|
|
31
|
+
"minSize": "16.80 KB",
|
|
32
|
+
"gzipSize": "4.67 KB",
|
|
33
|
+
"sri": "sha384-nHUMygH/rx+lxSW7F1l0fLp3FPfN/YdNiJj/qMkcqvIDHFuuegIubKpuiHCQqN3g"
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"format": "ESM",
|
|
37
37
|
"raw": "quikchat.esm.js",
|
|
38
38
|
"min": "quikchat.esm.min.js",
|
|
39
|
-
"rawBytes":
|
|
40
|
-
"minBytes":
|
|
41
|
-
"gzipBytes":
|
|
42
|
-
"rawSize": "30.
|
|
43
|
-
"minSize": "16.
|
|
44
|
-
"gzipSize": "4.
|
|
45
|
-
"sri": "sha384-
|
|
39
|
+
"rawBytes": 30997,
|
|
40
|
+
"minBytes": 17197,
|
|
41
|
+
"gzipBytes": 4776,
|
|
42
|
+
"rawSize": "30.27 KB",
|
|
43
|
+
"minSize": "16.79 KB",
|
|
44
|
+
"gzipSize": "4.66 KB",
|
|
45
|
+
"sri": "sha384-itfed90vasC8MaRc5SqS992oym6NQnXmvbX3q4F0fvGH96ZBwRLSD2PV+AgG7gEW"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"format": "CSS",
|
|
49
49
|
"raw": "quikchat.css",
|
|
50
50
|
"min": "quikchat.min.css",
|
|
51
|
-
"rawBytes":
|
|
52
|
-
"minBytes":
|
|
53
|
-
"gzipBytes":
|
|
54
|
-
"rawSize": "
|
|
55
|
-
"minSize": "
|
|
56
|
-
"gzipSize": "
|
|
57
|
-
"sri": "sha384-
|
|
51
|
+
"rawBytes": 28346,
|
|
52
|
+
"minBytes": 20572,
|
|
53
|
+
"gzipBytes": 3187,
|
|
54
|
+
"rawSize": "27.68 KB",
|
|
55
|
+
"minSize": "20.09 KB",
|
|
56
|
+
"gzipSize": "3.11 KB",
|
|
57
|
+
"sri": "sha384-x31ZP+sKmyuDQf5oyps6GK054U7aJoY5qsSDrCXl8TxkOJHT6GIs7sHXtp4oKj/F"
|
|
58
58
|
}
|
|
59
59
|
]
|
|
60
60
|
},
|
|
@@ -68,37 +68,37 @@
|
|
|
68
68
|
"format": "UMD",
|
|
69
69
|
"raw": "quikchat-md.umd.js",
|
|
70
70
|
"min": "quikchat-md.umd.min.js",
|
|
71
|
-
"rawBytes":
|
|
72
|
-
"minBytes":
|
|
73
|
-
"gzipBytes":
|
|
74
|
-
"rawSize": "
|
|
75
|
-
"minSize": "
|
|
76
|
-
"gzipSize": "
|
|
77
|
-
"sri": "sha384-
|
|
71
|
+
"rawBytes": 85353,
|
|
72
|
+
"minBytes": 29563,
|
|
73
|
+
"gzipBytes": 9303,
|
|
74
|
+
"rawSize": "83.35 KB",
|
|
75
|
+
"minSize": "28.87 KB",
|
|
76
|
+
"gzipSize": "9.08 KB",
|
|
77
|
+
"sri": "sha384-NyEFBtozHVJl7dPUvuCpBlwEGC34Qc0yosXjeVckvXdWf11s3szHrmUqVB1p5ELQ"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"format": "CJS",
|
|
81
81
|
"raw": "quikchat-md.cjs.js",
|
|
82
82
|
"min": "quikchat-md.cjs.min.js",
|
|
83
|
-
"rawBytes":
|
|
84
|
-
"minBytes":
|
|
85
|
-
"gzipBytes":
|
|
86
|
-
"rawSize": "
|
|
87
|
-
"minSize": "
|
|
88
|
-
"gzipSize": "
|
|
89
|
-
"sri": "sha384-
|
|
83
|
+
"rawBytes": 81293,
|
|
84
|
+
"minBytes": 29336,
|
|
85
|
+
"gzipBytes": 9233,
|
|
86
|
+
"rawSize": "79.39 KB",
|
|
87
|
+
"minSize": "28.65 KB",
|
|
88
|
+
"gzipSize": "9.02 KB",
|
|
89
|
+
"sri": "sha384-4inUk0zLpAEt509RM9wrO6pcfu6/3GLBJRWPW/3TBcyq62FRGRi6oh9KT1FEM4O/"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"format": "ESM",
|
|
93
93
|
"raw": "quikchat-md.esm.js",
|
|
94
94
|
"min": "quikchat-md.esm.min.js",
|
|
95
|
-
"rawBytes":
|
|
96
|
-
"minBytes":
|
|
97
|
-
"gzipBytes":
|
|
98
|
-
"rawSize": "
|
|
99
|
-
"minSize": "
|
|
100
|
-
"gzipSize": "
|
|
101
|
-
"sri": "sha384-
|
|
95
|
+
"rawBytes": 81283,
|
|
96
|
+
"minBytes": 29327,
|
|
97
|
+
"gzipBytes": 9234,
|
|
98
|
+
"rawSize": "79.38 KB",
|
|
99
|
+
"minSize": "28.64 KB",
|
|
100
|
+
"gzipSize": "9.02 KB",
|
|
101
|
+
"sri": "sha384-NU2rka4yCQspxc8DELK8bjof9XXD6DAglIDaPFVpi2NEENNbhPcGoPK5BNvVdivN"
|
|
102
102
|
}
|
|
103
103
|
]
|
|
104
104
|
},
|
|
@@ -112,46 +112,39 @@
|
|
|
112
112
|
"format": "UMD",
|
|
113
113
|
"raw": "quikchat-md-full.umd.js",
|
|
114
114
|
"min": "quikchat-md-full.umd.min.js",
|
|
115
|
-
"rawBytes":
|
|
116
|
-
"minBytes":
|
|
117
|
-
"gzipBytes":
|
|
118
|
-
"rawSize": "
|
|
119
|
-
"minSize": "
|
|
120
|
-
"gzipSize": "
|
|
121
|
-
"sri": "sha384-
|
|
115
|
+
"rawBytes": 129783,
|
|
116
|
+
"minBytes": 46127,
|
|
117
|
+
"gzipBytes": 14672,
|
|
118
|
+
"rawSize": "126.74 KB",
|
|
119
|
+
"minSize": "45.05 KB",
|
|
120
|
+
"gzipSize": "14.33 KB",
|
|
121
|
+
"sri": "sha384-Lk+2rwvAXBi6oQHtO2UFzs8uD6lIsAVwZV310qBWpiGIaf2F1Obe/RKnMVn3LGbm"
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
"format": "CJS",
|
|
125
125
|
"raw": "quikchat-md-full.cjs.js",
|
|
126
126
|
"min": "quikchat-md-full.cjs.min.js",
|
|
127
|
-
"rawBytes":
|
|
128
|
-
"minBytes":
|
|
129
|
-
"gzipBytes":
|
|
130
|
-
"rawSize": "
|
|
131
|
-
"minSize": "
|
|
132
|
-
"gzipSize": "
|
|
133
|
-
"sri": "sha384-
|
|
127
|
+
"rawBytes": 123539,
|
|
128
|
+
"minBytes": 45900,
|
|
129
|
+
"gzipBytes": 14604,
|
|
130
|
+
"rawSize": "120.64 KB",
|
|
131
|
+
"minSize": "44.82 KB",
|
|
132
|
+
"gzipSize": "14.26 KB",
|
|
133
|
+
"sri": "sha384-Z+2mOTSAZf3Dg92C2ltm1MgXLbyqkcy8WuXOBWbrOp4eRLXhvXAHM4683byCzCCY"
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
"format": "ESM",
|
|
137
137
|
"raw": "quikchat-md-full.esm.js",
|
|
138
138
|
"min": "quikchat-md-full.esm.min.js",
|
|
139
|
-
"rawBytes":
|
|
140
|
-
"minBytes":
|
|
141
|
-
"gzipBytes":
|
|
142
|
-
"rawSize": "
|
|
143
|
-
"minSize": "
|
|
144
|
-
"gzipSize": "
|
|
145
|
-
"sri": "sha384-
|
|
139
|
+
"rawBytes": 123529,
|
|
140
|
+
"minBytes": 45891,
|
|
141
|
+
"gzipBytes": 14602,
|
|
142
|
+
"rawSize": "120.63 KB",
|
|
143
|
+
"minSize": "44.82 KB",
|
|
144
|
+
"gzipSize": "14.26 KB",
|
|
145
|
+
"sri": "sha384-eqUE3H5exC1kVl2LwErt1dlpdvzzh6vKLlgANUrmecfjEKwFvFrnis6AMUlB/RVa"
|
|
146
146
|
}
|
|
147
147
|
]
|
|
148
148
|
}
|
|
149
|
-
]
|
|
150
|
-
"coverage": {
|
|
151
|
-
"statements": 100,
|
|
152
|
-
"branches": 98.13,
|
|
153
|
-
"functions": 97.46,
|
|
154
|
-
"lines": 100,
|
|
155
|
-
"badge": "https://img.shields.io/badge/coverage-97.46%25-brightgreen.svg"
|
|
156
|
-
}
|
|
149
|
+
]
|
|
157
150
|
}
|