Skip to content

Commit a7ccfd8

Browse files
committed
copy
1 parent a78f089 commit a7ccfd8

File tree

10 files changed

+416
-194
lines changed

10 files changed

+416
-194
lines changed

agents/prompts.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,13 @@ clippyの警告を発生させないようにallowなどをしている箇所が
2727
現状ほぼ全てのテストに通っていますが,プロダクトのコードもテストコードも両方間違っている可能性も存在します.テストコードをレビューして,問題がなさそうか確認してください.問題がなくても,単体テストの設計が不適切であればリファクタリング方針を示してください.
2828

2929
ドキュメントを整理してください.
30-
agentsフォルダを読み,実際のコードと見比べ,記述を追記編集削除してください.
30+
docsフォルダを読み,実際のコードと見比べ,記述を追記編集削除してください.
31+
ドキュメントに明示されていないコードの説明を追記してください.
3132
また,コード内のコメントが間違っていたり不正確だったりしていた場合は訂正してください.
3233
実装計画について,対応が完了しているドキュメントは削除してください.今後実装が必要なものの計画は残してください.
3334
実装計画ではなくリポジトリの説明をしているドキュメントは現在のコードに整合させてください.
3435
複数のドキュメントに同じ内容が記述されている場合は,一つにまとめてください.
3536

36-
docs/viewer-manual.mdを更新してください.
37-
3837
## 要件定義時
3938
この内容のAIコーディングエージェントへの実装指示書を書いてください.
4039
AIコーディングエージェントは現在のリポジトリのコードを把握しています.また,追加機能もコードではなく日本語で説明すべきです.コードよりも背景や目的,全体の流れなど,ここで議論した内容を伝えたいです.それをふまえてプロンプトを作ってください.

coverage/src/components/ReceivePanel.tsx.html

Lines changed: 77 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,65 @@
1-
21
<!doctype html>
32
<html lang="en">
43

54
<head>
6-
<title>Code coverage report for src/components/ReceivePanel.tsx</title>
7-
<meta charset="utf-8" />
8-
<link rel="stylesheet" href="../../prettify.css" />
9-
<link rel="stylesheet" href="../../base.css" />
10-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11-
<meta name="viewport" content="width=device-width, initial-scale=1" />
12-
<style type='text/css'>
13-
.coverage-summary .sorter {
14-
background-image: url(../../sort-arrow-sprite.png);
15-
}
16-
</style>
5+
<title>Code coverage report for src/components/ReceivePanel.tsx</title>
6+
<meta charset="utf-8" />
7+
<link rel="stylesheet" href="../../prettify.css" />
8+
<link rel="stylesheet" href="../../base.css" />
9+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
10+
<meta name="viewport" content="width=device-width, initial-scale=1" />
11+
<style type='text/css'>
12+
.coverage-summary .sorter {
13+
background-image: url(../../sort-arrow-sprite.png);
14+
}
15+
</style>
1716
</head>
18-
17+
1918
<body>
20-
<div class='wrapper'>
19+
<div class='wrapper'>
2120
<div class='pad1'>
22-
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/components</a> ReceivePanel.tsx</h1>
23-
<div class='clearfix'>
24-
25-
<div class='fl pad1y space-right2'>
26-
<span class="strong">0% </span>
27-
<span class="quiet">Statements</span>
28-
<span class='fraction'>0/17</span>
29-
</div>
30-
31-
32-
<div class='fl pad1y space-right2'>
33-
<span class="strong">0% </span>
34-
<span class="quiet">Branches</span>
35-
<span class='fraction'>0/18</span>
36-
</div>
37-
38-
39-
<div class='fl pad1y space-right2'>
40-
<span class="strong">0% </span>
41-
<span class="quiet">Functions</span>
42-
<span class='fraction'>0/9</span>
43-
</div>
44-
45-
46-
<div class='fl pad1y space-right2'>
47-
<span class="strong">0% </span>
48-
<span class="quiet">Lines</span>
49-
<span class='fraction'>0/17</span>
50-
</div>
51-
52-
21+
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/components</a> ReceivePanel.tsx</h1>
22+
<div class='clearfix'>
23+
24+
<div class='fl pad1y space-right2'>
25+
<span class="strong">0% </span>
26+
<span class="quiet">Statements</span>
27+
<span class='fraction'>0/17</span>
28+
</div>
29+
30+
31+
<div class='fl pad1y space-right2'>
32+
<span class="strong">0% </span>
33+
<span class="quiet">Branches</span>
34+
<span class='fraction'>0/18</span>
35+
</div>
36+
37+
38+
<div class='fl pad1y space-right2'>
39+
<span class="strong">0% </span>
40+
<span class="quiet">Functions</span>
41+
<span class='fraction'>0/9</span>
42+
</div>
43+
44+
45+
<div class='fl pad1y space-right2'>
46+
<span class="strong">0% </span>
47+
<span class="quiet">Lines</span>
48+
<span class='fraction'>0/17</span>
5349
</div>
54-
<p class="quiet">
55-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56-
</p>
57-
<template id="filterTemplate">
58-
<div class="quiet">
59-
Filter:
60-
<input type="search" id="fileSearch">
61-
</div>
62-
</template>
50+
51+
52+
</div>
53+
<p class="quiet">
54+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the
55+
previous block.
56+
</p>
57+
<template id="filterTemplate">
58+
<div class="quiet">
59+
Filter:
60+
<input type="search" id="fileSearch">
61+
</div>
62+
</template>
6363
</div>
6464
<div class='status-line low'></div>
6565
<pre><table class="coverage">
@@ -578,7 +578,7 @@ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/componen
578578
&nbsp;
579579
&lt;div className="footer-right"&gt;
580580
&lt;button onClick={handlePlotter} className="plotter-button" title="Open Plotter (Phase 7)"&gt;
581-
📈 Plotter
581+
Plotter
582582
&lt;/button&gt;
583583
&lt;button onClick={onExport} title="Save to file"&gt;
584584
Save
@@ -594,23 +594,27 @@ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/componen
594594
&lt;/div&gt;
595595
);
596596
}
597-
&nbsp;</pre></td></tr></table></pre>
597+
&nbsp;</pre>
598+
</td>
599+
</tr>
600+
</table>
601+
</pre>
602+
603+
<div class='push'></div><!-- for sticky footer -->
604+
</div><!-- /wrapper -->
605+
<div class='footer quiet pad2 space-top1 center small'>
606+
Code coverage generated by
607+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
608+
at 2025-12-28T08:10:49.386Z
609+
</div>
610+
<script src="../../prettify.js"></script>
611+
<script>
612+
window.onload = function () {
613+
prettyPrint();
614+
};
615+
</script>
616+
<script src="../../sorter.js"></script>
617+
<script src="../../block-navigation.js"></script>
618+
</body>
598619

599-
<div class='push'></div><!-- for sticky footer -->
600-
</div><!-- /wrapper -->
601-
<div class='footer quiet pad2 space-top1 center small'>
602-
Code coverage generated by
603-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
604-
at 2025-12-28T08:10:49.386Z
605-
</div>
606-
<script src="../../prettify.js"></script>
607-
<script>
608-
window.onload = function () {
609-
prettyPrint();
610-
};
611-
</script>
612-
<script src="../../sorter.js"></script>
613-
<script src="../../block-navigation.js"></script>
614-
</body>
615620
</html>
616-

docs/07_plotter_spec.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ pub enum ChannelValue {
238238

239239
| 項目 | 仕様 |
240240
|------|------|
241-
| **起動方法** | メインウィンドウの「📈 Plotter」ボタン |
241+
| **起動方法** | メインウィンドウの「Plotter」ボタン |
242242
| **ウィンドウサイズ** | 800 x 600 (可変) |
243243
| **複数ウィンドウ** | 複数のプロッタウィンドウを開くことが可能 |
244244
| **データ連携** | メインウィンドウと同一のシリアルセッションを参照 |
@@ -408,7 +408,7 @@ src/
408408
### 7-6. プロッタウィンドウ統合 (Frontend)
409409
* **作業内容:** 別ウィンドウとしてプロッタを起動する仕組み。
410410
* **中間確認:**
411-
* [ ]📈 Plotter」ボタンで新ウィンドウが開く
411+
* [ ] 「Plotter」ボタンで新ウィンドウが開く
412412
* [ ] メインウィンドウと同期してデータが表示される
413413
* [ ] ウィンドウを閉じても再度開ける
414414
* [ ] 複数ウィンドウが開ける

src/components/ReceivePanel.tsx

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import AsciiViewer from './viewers/AsciiViewer';
44
import './ReceivePanel.css';
55

66
export type ViewMode = 'hex' | 'ascii';
7+
export type TimestampSeparator = ' ' | ',' | '\t';
78

89
export interface ReceiveOptions {
910
viewMode: ViewMode;
@@ -38,6 +39,7 @@ export default function ReceivePanel({
3839
// Display options (ASCII mode only)
3940
const [lineWrap, setLineWrap] = useState(true);
4041
const [showTimestamp, setShowTimestamp] = useState(true);
42+
const [timestampSeparator, setTimestampSeparator] = useState<TimestampSeparator>(' ');
4143

4244
// Scroll position as byte offset (preserved across mode switches)
4345
const [scrollOffset, setScrollOffset] = useState(0);
@@ -94,6 +96,7 @@ export default function ReceivePanel({
9496
lineWrap={lineWrap}
9597
initialOffset={scrollOffset}
9698
onScrollChange={setScrollOffset}
99+
timestampSeparator={timestampSeparator}
97100
/>
98101
)}
99102
</div>
@@ -143,6 +146,29 @@ export default function ReceivePanel({
143146
disabled={viewMode === 'hex'}
144147
/>
145148
Timestamp
149+
<select
150+
value={timestampSeparator}
151+
onChange={(e) => setTimestampSeparator(e.target.value as TimestampSeparator)}
152+
disabled={viewMode === 'hex' || !showTimestamp}
153+
className="separator-select"
154+
title="Separator between Timestamp and Data"
155+
style={{
156+
marginLeft: '8px',
157+
background: '#3c3c3c',
158+
color: '#d4d4d4',
159+
border: '1px solid #555',
160+
borderRadius: '3px',
161+
padding: '1px 4px',
162+
fontSize: '11px',
163+
outline: 'none',
164+
cursor: 'pointer',
165+
opacity: (!showTimestamp || viewMode === 'hex') ? 0.5 : 1
166+
}}
167+
>
168+
<option value=" ">Space</option>
169+
<option value=",">Comma</option>
170+
<option value=" ">Tab</option>
171+
</select>
146172
</label>
147173

148174
<div className="control-separator"></div>
@@ -159,7 +185,7 @@ export default function ReceivePanel({
159185

160186
<div className="footer-right">
161187
<button onClick={handlePlotter} className="plotter-button" title="Open Plotter (Phase 7)">
162-
📈 Plotter
188+
Plotter
163189
</button>
164190
<button onClick={onExport} title="Save to file">
165191
Save

0 commit comments

Comments
 (0)