* 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/
- https://github.com/npm/cli/issues/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>