@softize/opus 9.0.7 → 9.0.8

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/CHANGELOG.md CHANGED
@@ -11,6 +11,14 @@ Depois de qualquer bump, rode os gates (`typecheck` · `test` · `opus check` ·
11
11
  > tinha ficado sem registro nenhum, o que é exatamente o caso que este arquivo existe
12
12
  > pra cobrir.
13
13
 
14
+ ## 9.0.8 — 2026-08-18
15
+
16
+ **Scrollbars nativas passam a usar o acabamento discreto como parte do tema base.** Todo
17
+ documento que importa `@softize/opus/ui/theme.css` recebe o indicador fino, revelado no
18
+ hover ou foco, inclusive em conteúdo renderizado por portal. A classe
19
+ `scrollbar-subtle` deixa de ser necessária; iframes continuam isolados e precisam importar
20
+ o tema no próprio documento.
21
+
14
22
  ## 9.0.7 — 2026-08-18
15
23
 
16
24
  **Scrollbars nativas podem compartilhar um acabamento discreto e previsível.** A classe
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softize/opus",
3
- "version": "9.0.7",
3
+ "version": "9.0.8",
4
4
  "description": "End-to-end action protocol for TypeScript. Single package with subpath exports (core + adapters).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -133,7 +133,7 @@ const ChatTranscript = React.memo(function ChatTranscript({
133
133
  <div
134
134
  ref={scrollRef}
135
135
  data-slot="chat-scroll"
136
- className="scrollbar-subtle flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-4"
136
+ className="flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-4"
137
137
  >
138
138
  {items.length === 0 && !indicatorVisible && greeting !== undefined && (
139
139
  <div data-slot="chat-empty" className="m-auto max-w-[280px] text-center text-muted-foreground">
package/src/ui/theme.css CHANGED
@@ -180,39 +180,39 @@
180
180
  }
181
181
  }
182
182
 
183
- /* Escopo de scrollbar discreta. Pode vestir o próprio scroller (como o Chat) ou um shell:
184
- * nesse caso todos os scrolls nativos descendentes compartilham o mesmo acabamento. Isso
185
- * elimina a variação do macOS entre raiz, elementos aninhados, mouse e trackpad sem trocar
186
- * o mecanismo nativo nem adicionar trabalho em JS. Firefox usa scrollbar-color;
187
- * Chromium/Safari usam os pseudos abaixo. Iframes continuam sendo documentos isolados. */
183
+ /* Scrollbar nativa da casa: todo scroller do documento compartilha o mesmo acabamento,
184
+ * inclusive conteúdo renderizado por portal. Isso elimina a variação do macOS entre raiz,
185
+ * elementos aninhados, mouse e trackpad sem trocar o mecanismo nativo nem adicionar trabalho
186
+ * em JS. Firefox usa scrollbar-color; Chromium/Safari usam os pseudos abaixo. Iframes
187
+ * continuam sendo documentos isolados e devem importar o tema no próprio documento. */
188
188
  @media (hover: hover) {
189
- .scrollbar-subtle,
190
- .scrollbar-subtle * {
189
+ :root,
190
+ :root * {
191
191
  scrollbar-color: transparent transparent;
192
192
  scrollbar-width: thin;
193
193
  }
194
- .scrollbar-subtle:is(:hover, :focus, :focus-within),
195
- .scrollbar-subtle *:is(:hover, :focus, :focus-within) {
194
+ :root:is(:hover, :focus, :focus-within),
195
+ :root *:is(:hover, :focus, :focus-within) {
196
196
  scrollbar-color: color-mix(in srgb, var(--muted-foreground) 35%, transparent) transparent;
197
197
  }
198
- .scrollbar-subtle::-webkit-scrollbar,
199
- .scrollbar-subtle *::-webkit-scrollbar {
198
+ :root::-webkit-scrollbar,
199
+ :root *::-webkit-scrollbar {
200
200
  width: 0.5rem;
201
201
  height: 0.5rem;
202
202
  }
203
- .scrollbar-subtle::-webkit-scrollbar-track,
204
- .scrollbar-subtle *::-webkit-scrollbar-track {
203
+ :root::-webkit-scrollbar-track,
204
+ :root *::-webkit-scrollbar-track {
205
205
  background: transparent;
206
206
  }
207
- .scrollbar-subtle::-webkit-scrollbar-thumb,
208
- .scrollbar-subtle *::-webkit-scrollbar-thumb {
207
+ :root::-webkit-scrollbar-thumb,
208
+ :root *::-webkit-scrollbar-thumb {
209
209
  border: 2px solid transparent;
210
210
  border-radius: 9999px;
211
211
  background-color: transparent;
212
212
  background-clip: content-box;
213
213
  }
214
- .scrollbar-subtle:is(:hover, :focus, :focus-within)::-webkit-scrollbar-thumb,
215
- .scrollbar-subtle *:is(:hover, :focus, :focus-within)::-webkit-scrollbar-thumb {
214
+ :root:is(:hover, :focus, :focus-within)::-webkit-scrollbar-thumb,
215
+ :root *:is(:hover, :focus, :focus-within)::-webkit-scrollbar-thumb {
216
216
  background-color: color-mix(in srgb, var(--muted-foreground) 35%, transparent);
217
217
  }
218
218
  }