@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 +48 -1
- package/README.md +17 -7
- package/dist/client.js +5 -5
- package/dist/client.mjs +5 -5
- package/dist/server.js +8 -8
- package/dist/server.mjs +6 -6
- package/dist/styles/daily-report.standalone.css +1 -1
- package/package.json +5 -5
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
|
-
##
|
|
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
|
|
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 (
|
|
2238
|
-
edges; with the default labels the field starts and ends on the
|
|
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
|
|
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
|
|
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`)
|
|
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
|
|
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
|