@aiquants/daily-report 0.51.1 → 0.53.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.
package/CHANGELOG.md CHANGED
@@ -2,7 +2,54 @@
2
2
 
3
3
  All notable changes to `@aiquants/daily-report` are documented here.
4
4
 
5
- ## Unreleased
5
+ ## 0.53.0 (2026-11-03)
6
+
7
+ 版番号は 0.53.0 (minor) とする: 公開する範囲で、ピアの `@aiquants/virtualscroll` の下限が上がる (下の Breaking)。
8
+
9
+ ### Breaking
10
+
11
+ - **ピアの `@aiquants/virtualscroll` は 3.22.1 以上** (公開する範囲は `^3.21.0` から `^3.22.1`): `workspace:^` のピアは公開の時にワークスペースの隣の版から
12
+ 範囲を作るので、隣の 3.22.1 が下限になる。日報が 3.22 の新しい機能を使うのではない。3.22.0 の Changed により、ビューの端へ戻るピルの字は 12px から本文の段
13
+ (`--aqvs-font-size-body`・`--aqvs-line-height-body`。ホストが結ばなければ根 16px で 13px の字・20px の行) になる。日報はこの 2 つの変数を結ばず、ピルの見た目も
14
+ 上書きしないので、ホストの結び方がそのまま効く。押せる箱 44px と見えるピル 28px は変わらない。
15
+ Migration: `@aiquants/virtualscroll` を 3.22.1 以上へ上げる。
16
+
17
+ ### Fixed
18
+
19
+ - **ラベル・コメント・添付のまとめ読みは、日報の数で SQL Server の 1 文の引数の上限 (2,100) を越えない**: 3 つの読みは日報の ID (`hub_id`) の並びを、ID ごとの
20
+ 引数でなく JSON の引数 1 つで渡す (`@aiquants/mssql` 0.2.0 の `inJsonList`。`hub_id in (select [value] from openjson(@p))`)。並びは条件が選ぶ日報の数 (営業日なら、
21
+ その日の日報の数) で伸びるので、ID ごとの引数では 1 つの文の上限を越えうる。依存の `@aiquants/mssql` は `^0.2.0` になる。
22
+
23
+ ### Documentation
24
+
25
+ - **検索の元の内容を読む口の上限**: `DailyReportSearchSourceTextReader` の `sourceIdNums` は、1 回の呼び出しで `MAX_IN_LIST` (`@aiquants/mssql`) 件まで (元の内容は
26
+ 日報のその数の束ごとに読む)。ホストの口はこの上限に頼ってよい (検索の仕様の §3.2)。
27
+ - **README の検索の帯の記述を 0.52.0 の形に揃えた**: 既定の文言では入力欄の始まりと終わりの縁が 8px の段 (72px と 120px) に乗り、1/8 の奇数倍の画素密度でも
28
+ 装置の画素に乗る。絞り込みの切り替えは 24px のボタンでなく、高さ 48px のピル。
29
+
30
+ ### Tests
31
+
32
+ - **`IN` の並びの守り** (`src/bound-lists.guard.spec.ts`): リポジトリの共有の検出で、1 つの文より長くなりうる `inArray`・`notInArray` の並びを拒む (確かめた例外 3 項目)。
33
+ 日報 2,500 件でも、ラベル・コメント・添付の読みの 1 文の引数が上限の内に収まることも確かめる (SQLite の試験の器は `openjson(@parN)` を `json_each` に書き換える)。
34
+
35
+ ## 0.52.0 (2026-10-26)
36
+
37
+ ### Changed
38
+
39
+ - **操作部品と一覧の行の主の文字を本文の段 (13px) に**: 押せる部品と一覧の行の主の文字を `text-xs` の 12px から本文の段 (`BODY_TEXT_CLASS_NAME`。
40
+ `font-size: var(--aqdr-font-size-body, 0.8125rem)`・`line-height: var(--aqdr-line-height-body, 1.25rem)`。根 16px で 13px の文字・20px の行) へ上げた。
41
+ 対象はビューのタブと側面ペインのタブ (`SEGMENTED_TRIGGER_CLASS_NAME`)・操作列の日報作成のボタンと自動既読のスイッチの文言・List のカードの営業日と作成者の札
42
+ (カードの名前)・添付のダウンロードのリンク・検索の帯の AND/OR と絞り込みの切り替え・コメントの削除の確認・ids ストリームの再試行のボタン。値は rem なので、
43
+ ページの拡大とブラウザーの文字の大きさの設定に従う。パッケージは 2 つの独自プロパティを読むだけで宣言しないので、ホストは `:root` で自分の型の段へ結べる
44
+ (結ばなければ既定の値)。補足の文字 (節の見出し語・メタデータ・知らせ・札・件数) はパッケージの下限の 12px のまま。20px の行は 44px の的・48px の帯の部品・
45
+ 24px の札に収まるので、どの箱の高さも List の行の枠の高さも変わらない。
46
+ - **検索の帯の切り替えの最小の幅と折り返しの境目を 13px の文字から求め直した**: 最小の幅は 2 つの規則 (既定の文言の広い方の幅を 4px の格子へ切り上げて
47
+ 4px 以上の余りを残し、外の余白 8 との和を 8 の倍数にする) で、AND/OR が 56px から 64px (`min-w-16`。`AND` は約 52.2px で、余りの規則の 60 を和が 72 になる幅へ切り上げた)、絞り込みが 104px から 112px (`min-w-28`。`絞り込み (48)` は約 105.3px)。
48
+ 絞り込みの切り替えが自分の行へ移るビューの幅の境目 (`SEARCH_FILTERS_TOGGLE_WRAP_CLASS_NAME`・`SEARCH_ROW_CLASS_NAME`・`SEARCH_FAILURE_LINE_CLASS_NAME` の
49
+ `@max-[…]/views`) は、行の最小の幅の式 8 + 16 + 64 + 8 + 120 + 8 + 112 から 320px を 336px にした。既定の文言では入力欄の始まりと終わりの縁は 8px の段の上
50
+ (外の余白と合わせた 72 と 120) で、1/8 の奇数倍の画素密度 (2.625 など。ブロックの刻み 8px) でも装置の画素に乗る。
51
+
52
+ ## 0.51.1 (2026-10-25)
6
53
 
7
54
  ### Fixed
8
55
 
package/README.md CHANGED
@@ -2228,14 +2228,15 @@ while the screen shows searching as the indicator and a failure on the failure l
2228
2228
  line wraps instead of truncating;
2229
2229
  it comes first in the field's description (before the syntax help), and the field is `aria-invalid` only for an invalid query (busy, unavailable and
2230
2230
  other failures are no input errors).
2231
- The AND / OR toggle and the filter toggle share one look: a 48 px tall pill (the band's control height) with 12 px semibold text, in the field face (OR; the closed filter row), whose
2231
+ The AND / OR toggle and the filter toggle share one look: a 48 px tall pill (the band's control height) with semibold text in the body step (13 px on a 20 px line, **Text size** below), in the field face (OR; the closed filter row), whose
2232
2232
  boundary comes from the text-field token as the field's does, or the filled face (AND; the open filter row), blue-800 under white text (dark: a light
2233
2233
  blue-300 fill under slate-950 text) and `Highlight` under `HighlightText` in forced colours (**Text fields** in [Selection and focus appearance](#selection-and-focus-appearance)).
2234
2234
  The faces differ only in colour, so a toggle that changes its face moves nothing. Each toggle stacks its current label and an invisible reserved label
2235
2235
  in one grid cell — the AND / OR toggle the other mode's label, the filter toggle its label with the largest number of selected values (every filter at
2236
2236
  its limit) —,
2237
- so it takes the wider label's width, rounded up to a lattice minimum (56 px and 104 px), and neither a press nor a growing count moves the field's
2238
- edges; with the default labels the field starts and ends on the 4 px lattice.
2237
+ so it takes the wider label's width, rounded up to a lattice minimum (64 px and 112 px; with its 8 px margin each spans a multiple of 8, 72 px and 120 px), and neither a press nor a growing count moves the field's
2238
+ edges; with the default labels the field starts and ends on an 8 px step (the 72 px and 120 px spans), so its edges
2239
+ fall on whole device pixels also at the odd multiples of 1/8.
2239
2240
  The reserved label is the generated content of a hidden element, so it is in neither the toggle's accessible name nor its text.
2240
2241
  The field's description (`labels.searchSyntaxHelp`, also its tooltip) gives the syntax, says that a word in Latin letters also finds its kana reading
2241
2242
  and that a match found through a reading is underlined with dots.
@@ -2270,7 +2271,7 @@ Saves, SSE report and comment events and changes of the settled ID list re-query
2270
2271
  `RangeError` at render,
2271
2272
  `[daily-report] config.search.renderFilterSelect must be a function (it renders the control of each filter cell); got <value>`). Without it there is
2272
2273
  no filter toggle, no filter row and no `search-facets` request.
2273
- The filter toggle (`data-testid="daily-report-search-filters-toggle"`) is a 24 px button G after the field, sharing its top and bottom edges, named
2274
+ The filter toggle (`data-testid="daily-report-search-filters-toggle"`) is a 48 px tall pill G after the field, sharing its top and bottom edges, named
2274
2275
  `labels.searchFiltersToggle(n)` with the number of selected values (`Filters`, `Filters (3)`), with `aria-expanded` and, while the row shows,
2275
2276
  `aria-controls`; its width does not change with the count (above).
2276
2277
  Its name does not change when the row opens, so it shows the state in the AND / OR toggle's look as well: the field face while the row is closed and
@@ -3849,7 +3850,7 @@ luminance by 0.026 in the light theme, and a `shadow-md` brings the ring down to
3849
3850
  - **Tab bars are one segmented control**: the side pane's tabs and the view-mode toolbar share one geometry. The bar has a 12 px corner (`rounded-xl`)
3850
3851
  and a total inset of 4 px that counts its border (4 px padding without a border; 1 px border + 3 px padding with one), the same at the top and at
3851
3852
  the sides.
3852
- The tabs are 44 px tall (the target T; 48 px in the toolbar's band) with 12 px labels and an 8 px corner (`rounded-lg`), so the side pane's bar is
3853
+ The tabs are 44 px tall (the target T; 48 px in the toolbar's band) with 13 px labels on 20 px lines (the body step, **Text size** below) and an 8 px corner (`rounded-lg`), so the side pane's bar is
3853
3854
  4 + 44 + 4 = 52 px and the toolbar's 4 + 48 + 4 = 56 px tall, and every tab is concentric with its bar: 12 − 4 = 8. Because xl − lg = 4 equals the inset both in Tailwind's scale and in a host `--radius` scale (lg = `--radius`, xl =
3854
3855
  `--radius` + 4 px), the pair stays concentric for any host radius; the toolbar's children at its end corners (the create button, the development
3855
3856
  box) are `rounded-lg` too.
@@ -3899,7 +3900,8 @@ luminance by 0.026 in the light theme, and a `shadow-md` brings the ring down to
3899
3900
  are exactly the token's, and the search box's spec renders every status message in both locales and checks that the line carries the token and no
3900
3901
  truncating class.
3901
3902
  - **Type and contrast**: no text is smaller than 12 px (`text-xs`; a scan of every module under `src/client` rejects a smaller arbitrary size,
3902
- `src/client/components/report-views.spec.tsx`); every text colour reaches 7:1 (WCAG 1.4.6, AAA) against every surface it can sit on, in both themes
3903
+ `src/client/components/report-views.spec.tsx`), and the primary text of every control and list row is the body step, 13 px on a 20 px line
3904
+ (**Text size** below); every text colour reaches 7:1 (WCAG 1.4.6, AAA) against every surface it can sit on, in both themes
3903
3905
  and every state (hover, active, `aria-*`, `data-*`, translucent surfaces composited over theirs), and the indicators 3:1:
3904
3906
  `src/client/ui/aaa-text-contrast.spec.ts` scans every class literal of the shipped client (and the comment authors' colours) that sets a text colour,
3905
3907
  refuses one without a registered surface, and measures each against its surfaces. The quiet text (section labels, metadata, placeholders, the empty
@@ -3908,6 +3910,14 @@ luminance by 0.026 in the light theme, and a `shadow-md` brings the ring down to
3908
3910
  7.07–9.75). A source badge's colours are the host's (**External Source Badge Configuration**). Targets reach WCAG 2.5.5's 44 px under every pointer
3909
3911
  (**Target size** below), except the List's resize handle with its 10 px hit area and the 8 px scroll bar beside it (**Side pane** above) and the
3910
3912
  other exceptions listed there, so 2.5.5 is not claimed overall.
3913
+ - **Text size**: the primary text of every control and list row — the view tabs and the side pane's tabs, the toolbar's create button and the
3914
+ auto-read switch's label, the List card's business-date and author pills (the card's name), the attachments' download link, the search band's AND / OR
3915
+ and filter toggles, the comment's delete confirmation and the ids stream's retry button — is the body step, written once in the package's style tokens:
3916
+ `font-size: var(--aqdr-font-size-body, 0.8125rem)` and
3917
+ `line-height: var(--aqdr-line-height-body, 1.25rem)`, 13 px on a 20 px line at a 16 px root. Both are rem, so they follow page zoom and the browser's
3918
+ font-size setting. The package reads the two custom properties and never declares them: a host may bind them on `:root` (for example to its own type
3919
+ scale), and without a binding the defaults apply. Supplementary text (section labels, metadata, notices, badges, counts) stays at the package's 12 px
3920
+ floor. The 20 px line fits every box it sits in (the 44 px targets, the band's 48 px controls and the 24 px pills), so every box keeps its height.
3911
3921
  - **WCAG 2.2 AAA beyond contrast**: met are 1.4.9 (no images of text), 2.1.3 (every function by the keyboard, the List splitter's arrow keys
3912
3922
  included), 2.2.3 (nothing on a timer; **The built-in notice**), 2.3.2 (no flashes), 2.3.3 (motion follows `prefers-reduced-motion`), 2.4.8 (the page
3913
3923
  and the report headings tell where the viewer is), 2.4.9 (links name their purpose), 2.4.10 (sections carry headings), 2.4.12 and 2.4.13 (the focus
@@ -3942,7 +3952,7 @@ luminance by 0.026 in the light theme, and a `shadow-md` brings the ring down to
3942
3952
  `VirtualScroll`'s tap-scroll circle. Text fields use 16 px text under a coarse pointer (14 px under a fine one), so focusing them does not zoom the
3943
3953
  page on touch browsers; this text is the only rule the package keys on the pointer, and a Tailwind host generates it from Tailwind CSS v4.1 on
3944
3954
  (**Tailwind v4 host** above). The search field's Enter key is labelled as search (`enterkeyhint="search"`) and the comment field's as send
3945
- (`enterkeyhint="send"`). When the views are narrower than 320 px (the search row's smallest width: the band's insets, both toggles, two 8 px gaps
3955
+ (`enterkeyhint="send"`). When the views are narrower than 336 px (the search row's smallest width: the band's insets, both toggles, two 8 px gaps
3946
3956
  and a field that keeps one 44 px target of text room), the search box's filter toggle moves to a line of its own under the field. The mobile overlay keeps its
3947
3957
  content at least its 16 px padding and at least the display's safe-area insets (`env(safe-area-inset-*)`) from each edge.
3948
3958
  - **Action buttons and icons**: the List card's star and read toggles, the star, read, edit and delete buttons of the DetailList header and the side