Commit b054ff9
feat(chat): production-ready visual redesign (0.0.3) (#157)
* chore(workflow): upgrade npm CLI for trusted publishing OIDC support
The 0.0.2 publish workflow run failed with 'error retrieving identity
token' on @ngaf/licensing and @ngaf/partial-json, and a 404 on
@ngaf/a2ui. Root cause: actions/setup-node@v6.3.0 with node-version: 22
ships npm 10.9.2, which has partial OIDC code paths but doesn't fully
implement the trusted-publishing flow against npm registry's OIDC
endpoint.
npm 11.5.1+ is required for trusted publishing. Adding 'npm install -g
npm@latest' before the publish step bumps the runner to a current
release.
Sources:
- https://philna.sh/blog/2026/01/28/trusted-publishing-npm/
- npm/cli#8730
- https://docs.npmjs.com/trusted-publishers/
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(chat): document Tailwind v4 requirement for compositions
Verified against a fresh-install consumer of @ngaf/chat@0.0.2: without
Tailwind configured (and without `@source "../node_modules/@ngaf/chat"`),
ChatComponent's utility classes (flex, gap-3, max-w-[75%], md:flex, ...)
are tree-shaken away and the chat collapses to a column of unstyled
full-width blocks. The library does not ship a precompiled stylesheet,
so this is a hard consumer-side requirement.
Surface it explicitly:
- Quickstart gets a Tailwind setup step between install and
provider config.
- Installation Requirements step calls out Tailwind v4 alongside
Angular 20+ and Node 18+.
- Tailwind CSS section is rewritten with concrete steps (postcss
config, @import, @source) rather than just an `npm install` line.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(specs): add chat library redesign design doc
Design for production-ready chat UI overhaul: asymmetric message
pattern (user bubble + assistant inline), three layout modes
(embedded, popup, sidebar), shared chat-trace primitive driving
tool calls / subagents / timeline, complete Tailwind removal with
encapsulated component styles + optional global chat.css.
Settled architecture decisions:
- Three separate compositions over a unified mode-switching one.
- Hybrid styling: component-encapsulated + CSS vars + optional
global stylesheet for deep overrides.
- In-place rewrite of <chat>; coordinated breaking-change PR
updates all 19 cockpit demos + libs/example-layouts + website
docs in one shot. Ships as 0.0.3 (patch-only policy).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(plans): add chat redesign implementation plan
56-task plan covering tokens (Phase 1), new primitives (Phase 2),
existing primitive rewrites (Phase 3), trace-based card rewrites
(Phase 4), top-level compositions (Phase 5), debug + interrupt
panel (Phase 6), library cleanup + 0.0.3 bump (Phase 7),
example-layouts (Phase 8), 19 cockpit demos (Phase 9), website
docs (Phase 10), and verification + PR (Phase 11).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(chat): add CHAT_HOST_TOKENS design-token constant
* feat(chat): ship optional chat.css global stylesheet
* feat(chat): add chat-trace primitive
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(chat): add chat-window primitive
* feat(chat): add chat-launcher-button primitive
* feat(chat): add chat-suggestions primitive
* feat(chat): add chat-message primitive (asymmetric user/assistant)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(chat): rename chat-messages -> chat-message-list
Renames the ChatMessagesComponent primitive to ChatMessageListComponent
with selector chat-message-list, adds dedicated host styles, and updates
all consumers (chat composition, chat-debug composition, public-api).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(chat): rewrite chat-input with new pill design
* refactor(chat): restyle chat-typing-indicator as 3-dot animation
* refactor(chat): restyle chat-error
* refactor(chat): restyle chat-interrupt
* refactor(chat): restyle chat-thread-list, add optional new-thread button
* refactor(chat): restyle chat-generative-ui wrapper
* refactor(chat): rewrite chat-tool-call-card on chat-trace
* refactor(chat): rewrite chat-subagent-card on chat-trace
* refactor(chat): rewrite chat-timeline-slider as vertical history walk
* feat(chat): default-render trace-based cards for tool-calls and subagents
* refactor(chat): rewrite <chat> composition for new asymmetric design
Replaces Tailwind-based layout + inline avatar markup with CSS-custom-property
shell layout; wraps each message role in <chat-message> inside the per-role
templates; adds <chat-tool-calls> and <chat-subagents> inside the assistant
wrapper; introduces prevRole() helper for spacing context.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(chat): add chat-popup floating composition
* feat(chat): add chat-sidebar slide-in composition
* refactor(chat): restyle chat-interrupt-panel
Replace Tailwind utility classes with hand-written BEM CSS, rename all --chat-* tokens to --ngaf-chat-*, and add CHAT_HOST_TOKENS to styles array.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(chat): restyle chat-debug + helpers (no Tailwind, new tokens)
Replace all Tailwind utility classes with hand-written BEM CSS, rename --chat-* tokens to --ngaf-chat-* across all 8 debug component files, and add CHAT_HOST_TOKENS to every styles array. Inline markdown styles in chat-debug updated to use new token names.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(chat): drop legacy chat-theme/chat-markdown style modules
* refactor(chat): update public-api for new components
* chore(release): bump @ngaf/chat to 0.0.3
* refactor(example-layouts): rewrite example-chat-layout without Tailwind
* refactor(example-layouts): rewrite example-split-layout without Tailwind
* chore(cockpit): update demos for @ngaf/chat 0.0.3 (rename + token migration)
- cockpit-chat-input: ChatMessagesComponent → ChatMessageListComponent, <chat-messages> → <chat-message-list>, --chat-* → --ngaf-chat-*
- cockpit-chat-messages: same rename + token migration; e2e selector chat-messages → chat-message-list
- cockpit-chat-theming: THEMES map and template updated to --ngaf-chat-* token names
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(chat): rewrite install/quickstart/theming for 0.0.3
Remove Tailwind requirement, update peer deps, add optional chat.css
import, rewrite quickstart to 3-step no-setup flow, and rewrite theming
guide with full --ngaf-chat-* token table, light/dark switching, three
override paths, and migration note for old --chat-* tokens.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(chat): add chat-popup/chat-sidebar/chat-trace pages + layout-modes guide
- Rename chat-messages.mdx → chat-message-list.mdx; update selector and
class name throughout
- Add chat-popup.mdx, chat-sidebar.mdx, chat-trace.mdx component pages
- Add guides/layout-modes.mdx comparing embedded/popup/sidebar modes
- Update --chat-* token references to --ngaf-chat-* in all existing
component pages (chat-input, chat-interrupt-panel, chat-subagent-card,
chat-tool-call-card)
- Drop CHAT_THEME_STYLES/CHAT_MARKDOWN_STYLES from chat.mdx; note
asymmetric message pattern
- Add new pages and layout-modes to docs-config.ts navigation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(chat): drop click-to-focus on input pill (a11y lint)
The click handler on the pill div violated angular-eslint's
template/click-events-have-key-events and template/interactive-supports-focus
rules. The textarea inside the pill receives focus natively when its visible
area is clicked, so the handler was a redundant convenience.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>1 parent e17e6d6 commit b054ff9
86 files changed
Lines changed: 7366 additions & 1310 deletions
File tree
- apps/website
- content/docs/chat
- components
- getting-started
- guides
- src/lib
- cockpit/chat
- generative-ui/python/prompts
- input/angular/src/app
- messages/angular
- e2e
- src/app
- theming/angular/src/app
- docs/superpowers
- plans
- specs
- libs
- chat
- src
- lib
- compositions
- chat-debug
- chat-interrupt-panel
- chat-popup
- chat-sidebar
- chat-subagent-card
- chat-timeline-slider
- chat-tool-call-card
- chat
- primitives
- chat-error
- chat-generative-ui
- chat-input
- chat-interrupt
- chat-launcher-button
- chat-message-list
- chat-message
- chat-subagents
- chat-suggestions
- chat-thread-list
- chat-tool-calls
- chat-trace
- chat-typing-indicator
- chat-window
- streaming
- styles
- example-layouts/src/lib
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| |||
Lines changed: 7 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| |||
Lines changed: 19 additions & 24 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
52 | | - | |
| 52 | + | |
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| |||
144 | 144 | | |
145 | 145 | | |
146 | 146 | | |
147 | | - | |
| 147 | + | |
148 | 148 | | |
149 | | - | |
150 | 149 | | |
151 | 150 | | |
152 | 151 | | |
153 | 152 | | |
154 | 153 | | |
155 | 154 | | |
156 | | - | |
157 | | - | |
| 155 | + | |
158 | 156 | | |
159 | 157 | | |
160 | | - | |
| 158 | + | |
161 | 159 | | |
162 | | - | |
163 | | - | |
| 160 | + | |
| 161 | + | |
164 | 162 | | |
165 | 163 | | |
166 | 164 | | |
167 | 165 | | |
168 | 166 | | |
169 | 167 | | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
| 168 | + | |
| 169 | + | |
175 | 170 | | |
176 | 171 | | |
177 | 172 | | |
178 | 173 | | |
179 | | - | |
| 174 | + | |
180 | 175 | | |
181 | 176 | | |
182 | 177 | | |
183 | 178 | | |
184 | 179 | | |
185 | | - | |
| 180 | + | |
186 | 181 | | |
187 | 182 | | |
188 | 183 | | |
189 | | - | |
| 184 | + | |
190 | 185 | | |
191 | 186 | | |
192 | 187 | | |
193 | 188 | | |
194 | 189 | | |
195 | | - | |
| 190 | + | |
196 | 191 | | |
197 | 192 | | |
198 | 193 | | |
| |||
Lines changed: 115 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
0 commit comments