Commits at 5693f6f0938e94ecc889b30e58034c040ad91a86
5693f6f0
backend: JWT の生成・検査ヘルパ
今後ほぼすべての RPC で必要となるため事前に整理した。
Shota FUJI
authored at
2025-04-21 10:10:46 +0900
Shota FUJI
comitted at
2025-04-21 10:11:44 +0900
663ceacd
backend: ログイン時に JWT を SameOrigin Cookie に焼き付ける
Shota FUJI
authored at
2025-04-20 16:33:16 +0900
Shota FUJI
comitted at
2025-04-20 17:30:08 +0900
36d31f78
backend: ログイン処理を別ファイルに移す
ファットになりすぎて見づらかったので。
Shota FUJI
authored at
2025-04-20 14:00:19 +0900
Shota FUJI
comitted at
2025-04-20 14:04:38 +0900
0fce04ca
proto: ユーザ作成リクエストをシンプル化
移行したのでフィールドを詰めた。デプロイとかしてないし。
oneof から別個のフィールドにしたのは使いやすさのため。
正直種々のコードジェネレーターの吐く oneof 実装がクソ過ぎて
使いたくない。将来的にも別個のほうが、例えば管理者から特定の
権限を外す場合などにも対応できる。まぁ oneof 外すのは簡単なん
だけどね。
Shota FUJI
authored at
2025-04-20 00:17:35 +0900
Shota FUJI
comitted at
2025-04-20 00:20:30 +0900
8842bc99
backend: 初期管理者ユーザ作成 RPC へ移行
Shota FUJI
authored at
2025-04-20 00:14:28 +0900
Shota FUJI
comitted at
2025-04-20 00:15:29 +0900
9231b3a0
proto: 管理者ユーザ作成メソッド
ユーザ作成暗黙の RPC に oneof みたいなフィールドが多く使い勝手が
悪いと感じたため。
backend のコードに触れているのは Connect Go のサービスが全てのメソッドを
実装していないとコンパイルエラーになるという欠陥設計によるもの。
Shota FUJI
authored at
2025-04-19 15:57:37 +0900
Shota FUJI
comitted at
2025-04-19 16:16:23 +0900
ed45ac44
backend: 管理者作成のテスト
Shota FUJI
authored at
2025-04-18 15:07:36 +0900
Shota FUJI
comitted at
2025-04-18 15:07:48 +0900
c0522153
backend: -h がヘルプになるのを修正
kong は無条件で -h を設定するため、デフォルトのヘルプを無効化する
必要がある。
Shota FUJI
authored at
2025-04-18 14:25:53 +0900
Shota FUJI
comitted at
2025-04-18 14:27:28 +0900
4a363d11
backend: HTTP サーバのホストとポートを CLI 系で変更可能にした
ぶっちゃけログのほうがメインだったり。実際に何度も立ち上げて
わかりづらかったので。
Shota FUJI
authored at
2025-04-18 14:07:14 +0900
Shota FUJI
comitted at
2025-04-18 14:10:18 +0900
7627d966
backend: まともに CLI 引数を渡せるようにする
Go の flag パッケージは普通の `-a`/`--a-long` 形式をサポートせずに
`-a-long` で全部ポインタのため。楽だが、成果物の UX が悪くなるという
アンチパターン。 Go の標準ライブラリ割とだめじゃね...?
Shota FUJI
authored at
2025-04-18 13:38:32 +0900
Shota FUJI
comitted at
2025-04-18 13:52:16 +0900
dafd1a3c
backend: テキストログ出力をまともに見れるように修正
Shota FUJI
authored at
2025-04-18 13:37:10 +0900
Shota FUJI
comitted at
2025-04-18 13:37:37 +0900
0b23f623
backend: テキストログと JSONL ログを選べるようにした
JSONL は便利だがテスト時などは見にくい。
Shota FUJI
authored at
2025-04-18 10:28:35 +0900
Shota FUJI
comitted at
2025-04-18 10:29:43 +0900
e95f3a9c
backend: デバッグログを見れるようにする
見れなきゃ出しても意味ないので。
Shota FUJI
authored at
2025-04-18 10:21:46 +0900
Shota FUJI
comitted at
2025-04-18 10:22:17 +0900
4440b52c
backend: 管理者作成パスワードの初期指定
自動テストが書けないので。
Shota FUJI
authored at
2025-04-18 10:15:11 +0900
Shota FUJI
comitted at
2025-04-18 10:17:45 +0900
6b71ff4f
proto: ユーザの権限モデル定義
Shota FUJI
authored at
2025-04-17 17:25:33 +0900
Shota FUJI
comitted at
2025-04-17 19:51:06 +0900
f1497f78
backend: ログイン RPC
Shota FUJI
authored at
2025-04-15 14:01:45 +0900
Shota FUJI
comitted at
2025-04-15 14:46:13 +0900
05bda859
backend: イベント生成のヘルパ関数
自動生成されるコードがあまりにも酷くノイズでしかないため。
Shota FUJI
authored at
2025-04-15 13:51:17 +0900
Shota FUJI
comitted at
2025-04-15 13:53:01 +0900
a20b0398
backend: 管理者ユーザ作成時に PW を設定する
単純な抜け。
Shota FUJI
authored at
2025-04-15 13:26:48 +0900
Shota FUJI
comitted at
2025-04-15 13:27:18 +0900
e3344e20
backend: 初期管理者作成フロー
テストは一パターンしかないが、初期パスワードを明示的に指定する機能が
ないとテストができないので (ログをキャプチャするとかは勘弁) とりあえず
サンプル的に書いてあるだけ。ちゃんと書くならある程度ヘルパ関数に出して
いく必要がありそう。
スナップショットやプロジェクションあたりは PoC をベースにシンプルで
クリーンな感じを目指して書いたが、もう少し詰めてきれいにできそうな
気がする。
Go 特有のボイラープレートは全然問題ではなかったが、 Protobuf/Go の吐く
コードがやばすぎてやばさがやばい。現状、
* WASM 出力ができる
* 2023 edition の Protobuf に対応している
* ランタイムオーバヘッドが大きくない
言語が Go しかなくスイッチはできないので、ヘルパなり何なりで早めに対策
をする必要がありそう。特に `oneof` のコード生成がオワコンすぎる。
Protobuf 2024 edition が出たら生成コードが Opaque になって Builder 系の
ヘルパが生成されるのでそれまで待つのもあり? 2025 Q3 あたりでようやく
仕様が固まる見通しっぽいからあまりにも酷ければ移行を見越したヘルパなり
Builder と似た機構を用意したほうがいいかも。
色々と中途半端なところや TODO コメントがあるが、これ以上完璧を目指すと
diff を読むのが地獄なのでここで一区切り。
Shota FUJI
authored at
2025-04-13 23:14:50 +0900
Shota FUJI
comitted at
2025-04-13 23:38:31 +0900
9aef8519
Zig 関連の設定を削除
利用しなくなったため。
Shota FUJI
authored at
2025-04-11 21:09:45 +0900
Shota FUJI
comitted at
2025-04-11 21:11:23 +0900
dd213fe7
vendor/go-sqlite3-js: WASM で DB が開けないのを修正
そもそもこのコードが動いていたのか甚だ疑問。
Shota FUJI
authored at
2025-04-11 16:07:11 +0900
Shota FUJI
comitted at
2025-04-11 16:08:07 +0900
516cab77
backend: SQLite3 の導入
WASM でも動かすために色々追加している。
ただ、これ以上環境依存のツールを導入しなければ後は共通の
コードを書くだけになるはず。
Shota FUJI
authored at
2025-04-10 21:26:57 +0900
Shota FUJI
comitted at
2025-04-11 16:06:24 +0900
115fc47f
backend: すべて Go で書く
WASM の出力がおかしいのはどうやら v1.24.1 限定のバグだった模様。
v1.23.8 と v1.24.2 では再現しなかった。リリースノートにはないので
バレないようにしれっと直したのだろう。
pwa パッケージにサンプル的なコードが入っているが、これは動作確認用。
後で消す予定だが、どのみち pwa パッケージは使わなくなるのでそのまま
になる可能性も。
Shota FUJI
authored at
2025-04-09 15:49:19 +0900
Shota FUJI
comitted at
2025-04-10 21:06:00 +0900
82244747
backend: SQLite3 での Event Sourcing スキーマ
SQL 文の正常性確認は実際に行いそうなクエリや INSERT を書いたものを
`001_test.sql` と保存した上で、
```
$ cat migrations/*.sql | sqlite3 -table
```
を実行した。
本来であればマイグレーションの実行までを一纏めにしたかったが、
ここに来て Zig の protobuf である Gremlin のコード生成が全然ダメ
なことが発覚。特に `oneof` を普通のメッセージと同様に出力するため
利用側でどのフィールドが判別できない ("_" でプリフィクスされてる
フィールドが `null` かどうかを見ればわかるが、非公開だしハック)
ので実用に耐えないことが分かった。他の Protobuf コード生成ツールは
Protobuf3 しか対応しておらず、 edition 向けのちゃんとしたツールを
書くしかない。しかし工数的に、というかペース的にそんな余裕がないので
Go (WASM 出力できれば) か Rust (Go がウンコだったら) での書き換えを
する予定。そうなると更に低レベルな内容のコミットとなるため、別の
コミットにすることとした。
要約すると、大量の環境整備が入るけどこの SQL 捨てるの勿体ないから
コミットしたよ。
Shota FUJI
authored at
2025-04-07 09:29:30 +0900
Shota FUJI
comitted at
2025-04-07 20:38:34 +0900
7db4a3ee
backend: server.zig を削除
サーバも WASM を使うことにしたため。
Shota FUJI
authored at
2025-04-06 21:53:59 +0900
Shota FUJI
comitted at
2025-04-06 21:54:34 +0900
f6062794
proto: ユーザ作成 RPC
Shota FUJI
authored at
2025-04-06 15:35:13 +0900
Shota FUJI
comitted at
2025-04-06 15:36:52 +0900
35f896e8
proto: 単一ワークスペース前提の workspace/v2 モジュール
SingletonWorkspaceService を作ったが、既存のモデル定義を拡張していくと
どうしてもノイズが多くなったり注釈が増えたりしてくる。
根本的なアーキテクチャ変更なのでバージョン変更は妥当と判断し、最小限の
モジュールを作成した。
根本的な変更の理由はユーザ管理・ログインを実際に実装しようとして既存の
サービス設計では実現が難しい、できてもハック盛りだくさんになってしまう
ため。労働者管理とユーザ管理を分離しようとして設計した v1 だったが、
結果的にそれのせいでユーザ管理が追加できない事態となってしまった。
Shota FUJI
authored at
2025-04-06 14:21:58 +0900
Shota FUJI
comitted at
2025-04-06 15:05:14 +0900
8edcdcf5
proto: ユーザモデルをワークスペース配下に移動
シングルトンワークスペースがメインになる以上、ユーザはワークスペースに
属するデータとなる。
Shota FUJI
authored at
2025-04-06 13:48:02 +0900
Shota FUJI
comitted at
2025-04-06 13:48:58 +0900
eb9ece9c
proto: 内容がおかしいコメントの修正
多分コピペ。
Shota FUJI
authored at
2025-03-27 23:36:28 +0900
Shota FUJI
comitted at
2025-04-06 13:39:25 +0900
3abc4595
proto: カスタムフィールド
社員 ID などを設定して CSV などでエクスポート、外部システムで
紐づけなどのユースケースがあるため必須要件となる。
Shota FUJI
authored at
2025-03-27 23:34:33 +0900
Shota FUJI
comitted at
2025-04-06 13:39:24 +0900
87be8e69
proto: ログアウト RPC
Shota FUJI
authored at
2025-04-05 20:04:26 +0900
Shota FUJI
comitted at
2025-04-05 20:04:45 +0900
c433adc6
proto: ログイン RPC
Event Sourcing をするにしろ通常の CRUD SQL にするにしろ、
まずこれが必要になる。このあとのユーザ周りの設計にも必要
になってくる。
Shota FUJI
authored at
2025-04-03 20:19:51 +0900
Shota FUJI
comitted at
2025-04-03 20:22:01 +0900
b24ca3f0
backend: connectrpc を使ったサーバ
リクエストを受けると Go -> Zig (WASM) -> Go という順番で処理を
行う。 connectrpc のデザイン制約上 binary -> Go struct -> binary
-> Zig struct -> binary -> Go struct -> binary と非常に非効率な
シリアライズ・デシリアライズをしてしまっている。ただ、現状 Zig で
まともな gRPC ライブラリがないこと、自前の HTTP2/3 をベースにした
実装だとプロファイルやテストで実装コストが膨らむことから当面は
この非効率実装を妥協点とする。
長期的には独自の protobuf 用 RPC + rate limit 付きの (非効率な)
現状と同じ connectrpc 経由の外部向け gRPC というのが無難そうか。
Shota FUJI
authored at
2025-03-27 09:45:18 +0900
Shota FUJI
comitted at
2025-03-27 09:52:26 +0900
75d721c8
backend: Wazero を使った Go からのコア呼び出し
gRPC やらサーバ周りは Go が充実しているため。
また、サンドボックスで実行されることにより I/O を限定でき、
安全にコアを実行できる。
Shota FUJI
authored at
2025-03-26 20:46:48 +0900
Shota FUJI
comitted at
2025-03-26 20:56:00 +0900
f5eafc11
backend: WASM バックエンド
DB とかはない。そもそもどんな DB アクセスにするのかとか
設計とか考えてないし。
Shota FUJI
authored at
2025-03-24 13:35:19 +0900
Shota FUJI
comitted at
2025-03-24 14:27:36 +0900
62a6766e
backend_core: Zig から protobuf を利用する
使っている Gremlin というコード生成ライブラリと Zig という言語の
仕様上、 proto でライブラリを出力、というのはハックになってしまう。
そのため、多少効率は悪くなるが利用側で都度出力する形にした。
Protobuf は .proto 毎にソースファイルを生成、という形だが Zig は
配布形態に合わせたパッケージングとなる。つまり、静的・動的な
ライブラリや実行ファイルがモジュールの単位となる。そのため「複数
ファイル群をモジュールとして公開」ということはできない。
このコミットでは protobuf の wkt (well-known types) の追加も
含まれている。これは Gremlin が protoc に対応しておらず wkt が
含まれていないため。このベンダリングに伴うライセンス周りの変更も
入っているため少し変更ファイル数が多くなっている。
Shota FUJI
authored at
2025-03-22 14:52:31 +0900
Shota FUJI
comitted at
2025-03-22 16:57:44 +0900
e551c6fc
proto: 単一ワークスペース向け構成 RPC
現実的な運用としてマルチワークスペースはなさそうということが判明。
自分の組織だけのデプロイなのにワークスペース選択やらがあるのは不便なので
単一ワークスペース向けのフローを考えそれに必要な RPC を実装した。
Shota FUJI
authored at
2025-03-21 15:14:37 +0900
Shota FUJI
comitted at
2025-03-21 19:39:53 +0900
90396a7f
proto: 疎通確認RPC
実装初期やテスト、ステータス確認などいろいろ便利なため。
Shota FUJI
authored at
2025-03-20 13:58:55 +0900
Shota FUJI
comitted at
2025-03-20 14:02:50 +0900
25753283
test_go_consumer: サンプルパッケージの削除
Shota FUJI
authored at
2025-03-20 12:07:00 +0900
Shota FUJI
comitted at
2025-03-20 12:07:36 +0900
1fcfa4b3
proto: Go バインディングの出力
サンプル用にテストのパッケージも追加している。
Shota FUJI
authored at
2025-03-20 11:20:29 +0900
Shota FUJI
comitted at
2025-03-20 12:06:22 +0900
24c1c392
docs: アーキテクチャ図を更新
"ship fast" を優先するため使いやすい技術スタックにした。
また、 web ホスティングが優先要件となったためそこも含めた。
Shota FUJI
authored at
2025-03-12 11:10:25 +0900
Shota FUJI
comitted at
2025-03-12 11:15:15 +0900
5a71f21c
react_ui: 勤怠記録編集ダイアログ
ショートカットキーだけでは半日の入力に無理があるため。
半日の記録の頻度などを考え、一先ずこれでどうにかなるのでは?と
いうことで実装した。
Shota FUJI
authored at
2025-03-01 20:17:33 +0900
Shota FUJI
comitted at
2025-03-02 21:32:06 +0900
7d060f01
react_ui: 改善された勤怠履歴のフィールドへ移行
ひとまずバックエンド、そしてスキーマから旧フィールドを削除するために
旧フィールドの利用を消した。
UI 上での変更はまだ。
Shota FUJI
authored at
2025-02-17 22:22:31 +0900
Shota FUJI
comitted at
2025-02-17 23:01:45 +0900
029baa80
idb_backend: 改善された一日未満へのデータモデルへ移行
Shota FUJI
authored at
2025-02-13 22:50:23 +0900
Shota FUJI
comitted at
2025-02-17 00:14:51 +0900
72e12b4e
idb_backend: 改善された一日未満のデータのストレージ移行
Protobuf メッセージの移行もしてしまうと変更がかなり大きくなって
しまうため、内部のストレージ設計のみ変更した。
Shota FUJI
authored at
2025-02-05 23:16:13 +0900
Shota FUJI
comitted at
2025-02-08 20:07:59 +0900
9bc9de45
idb_backend: 解消済みのTODOコメントを削除
Shota FUJI
authored at
2025-02-08 16:10:14 +0900
Shota FUJI
comitted at
2025-02-08 16:10:56 +0900
6a2e0bb6
proto: 一日未満の勤怠記録のデータ設計を改善
以前のままでは半日公休+半日出勤&時間単位年休といった記録が
つけられなかった。オフラインで議論を重ねてこの形なら汎用性
とシンプル性が保てるという結論に達したものをコードにした。
Shota FUJI
authored at
2025-02-03 21:33:59 +0900
Shota FUJI
comitted at
2025-02-08 11:27:09 +0900
4e25a2f1
idb_backend: マイグレーションを個別のファイルに分割
大きくなりすぎて書いたり読んだりするのが大変になってきたため。
Shota FUJI
authored at
2025-02-02 18:10:56 +0900
Shota FUJI
comitted at
2025-02-02 18:11:34 +0900
427faaf9
react_ui: CSV/TSVダウンロード
Shota FUJI
authored at
2025-02-02 01:51:59 +0900
Shota FUJI
comitted at
2025-02-02 01:52:12 +0900
8689f7f2
react_ui: 集計画面に未入力日数を表示する
Shota FUJI
authored at
2025-02-01 16:22:29 +0900
Shota FUJI
comitted at
2025-02-01 16:23:10 +0900
eeffc205
react_ui: 勤怠記録書き込み成功時にトーストを出さない
複数日に纏めて書き込む場合は問題ないが、キーボードショートカット
で一日ずつ書き込む場合は非常に邪魔で仕方ない。
Shota FUJI
authored at
2025-02-01 16:11:33 +0900
Shota FUJI
comitted at
2025-02-01 16:12:50 +0900
538052dd
react_ui: サマリ画面のタイトルを変更
わかりやすいタイトルはないか意見を聞いたところ、このデータは
集計データであり月次集計などが適当であるという意見をもらった
ため。ページとしては期間は任意のため、月次・年次という装飾は
つけずに集計表とぼかした。
Shota FUJI
authored at
2025-02-01 16:07:09 +0900
Shota FUJI
comitted at
2025-02-01 16:08:39 +0900
3afd26fe
react_ui: ワークスペースサマリ画面
Shota FUJI
authored at
2025-02-01 15:31:44 +0900
Shota FUJI
comitted at
2025-02-01 15:31:55 +0900
4f8e1c68
README の実装状況を更新
Shota FUJI
authored at
2025-02-01 00:15:52 +0900
Shota FUJI
comitted at
2025-02-01 00:16:07 +0900
b4deadf5
react_ui: 勤怠記録編集のキーボードショートカット
Shota FUJI
authored at
2025-02-01 00:14:29 +0900
Shota FUJI
comitted at
2025-02-01 00:14:50 +0900
c808f6cc
react_ui: 勤怠記録編集処理をモジュールに切り出し
メニュー以外からも呼び出したかったので。リファクタだけでもボリュームが
あるため個別のコミットにした。
Shota FUJI
authored at
2025-01-31 23:39:05 +0900
Shota FUJI
comitted at
2025-01-31 23:39:47 +0900
30b9a80d
react_ui: 省略表記
Shota FUJI
authored at
2025-01-31 20:51:58 +0900
Shota FUJI
comitted at
2025-01-31 20:52:08 +0900
cbca2b2c
idb_backend: 省略表記
Shota FUJI
authored at
2025-01-31 20:34:13 +0900
Shota FUJI
comitted at
2025-01-31 20:34:31 +0900
7f34578c
proto: 省略表記フィールド
カレンダーで詰めて表示する際に、この設定がないと一文字しかでなかったり
わかりづらい省略になったりで不便なため。
Shota FUJI
authored at
2025-01-31 20:09:40 +0900
Shota FUJI
comitted at
2025-01-31 20:10:26 +0900
d9413a5d
react_ui: カレンダーの行ヘッダを労働者詳細へのリンクにする
使っていてジャンプできないのは不便だと感じたため。
Shota FUJI
authored at
2025-01-31 19:54:35 +0900
Shota FUJI
comitted at
2025-01-31 19:55:03 +0900
e3322a61
idb_backend: 有給休暇の残日数が戻らないのを修正
例えば 有給休暇 -> 休日 とした際に残日数が減ったままで戻らなかった。
Shota FUJI
authored at
2025-01-31 16:00:50 +0900
Shota FUJI
comitted at
2025-01-31 19:48:31 +0900
785b7f11
react_ui: 有給休暇を取得しきってもダッシュボードに表示する
使い切ったのか元からないのかわからなかったため。
Shota FUJI
authored at
2025-01-31 15:48:04 +0900
Shota FUJI
comitted at
2025-01-31 16:43:02 +0900
9c56623a
idb_backend: 残りがあるのに有給休暇を取得できない不具合を修正
Shota FUJI
authored at
2025-01-31 15:39:20 +0900
Shota FUJI
comitted at
2025-01-31 16:43:02 +0900
57739611
react_ui: 年次有給休暇の取得 UI
Shota FUJI
authored at
2025-01-31 15:18:22 +0900
Shota FUJI
comitted at
2025-01-31 15:31:42 +0900
9d5c8284
react_ui: 法定・特別休暇休業取得 UI
Shota FUJI
authored at
2025-01-31 14:30:29 +0900
Shota FUJI
comitted at
2025-01-31 14:30:47 +0900
72243bfd
react_ui: ワークスペースのトップをカレンダーに変更
カレンダーは労働者一覧ページの情報も含んでいるため。
また、ユーザが一番アクセスする、気になる情報はカレンダーページの
ものであるため。
Shota FUJI
authored at
2025-01-31 13:43:35 +0900
Shota FUJI
comitted at
2025-01-31 13:44:46 +0900
2093d2fd
proto: special_/legal_leave を削除
Shota FUJI
authored at
2025-01-31 13:35:26 +0900
Shota FUJI
comitted at
2025-01-31 13:35:40 +0900
448d69c1
react_ui: workspace_defined_leave への移行
Shota FUJI
authored at
2025-01-31 13:32:19 +0900
Shota FUJI
comitted at
2025-01-31 13:32:42 +0900
c2395a6f
idb_backend: workspace_defined_leave への移行
Shota FUJI
authored at
2025-01-31 13:24:03 +0900
Shota FUJI
comitted at
2025-01-31 13:24:59 +0900
f3fe6c17
proto: 特別・法定休暇を区別しない
そもそもワークスペースごとに設定する設計となっている上、区別する
メリットが殆どない。労働者の権利として必要、というのであればシステム
上で事前に作成して更新・削除できないようにすればいいだけ。
現状 `yamori.workspace.v1.Workspace` の `leave_definitions` には
特別・法定のどちらかといった情報がないため出し分けや設定ができない。
Shota FUJI
authored at
2025-01-31 12:58:03 +0900
Shota FUJI
comitted at
2025-01-31 13:11:54 +0900
9c8019e8
react_ui: 労働者作成時に自動付与の属性を入力させる
Shota FUJI
authored at
2025-01-30 18:06:04 +0900
Shota FUJI
comitted at
2025-01-30 19:52:38 +0900
e251b155
react_ui: 有給休暇付与テーブルの一覧ページ
間違いがないかの確認や、よく知らない労働者や使用者への周知、将来的な変更の基盤
としての実装。
Shota FUJI
authored at
2025-01-30 17:59:13 +0900
Shota FUJI
comitted at
2025-01-30 17:59:59 +0900
952218c7
react_ui: ローカル変数名を変更
試行錯誤時の名残(変更忘れ)なのかわからないが、意味が通らない
変数名だったので変えた。
Shota FUJI
authored at
2025-01-29 21:56:26 +0900
Shota FUJI
comitted at
2025-01-30 17:06:51 +0900
55bc7498
idb_backend: 年次有給休暇自動付与機能
Shota FUJI
authored at
2025-01-27 22:19:55 +0900
Shota FUJI
comitted at
2025-01-30 17:06:50 +0900
5fcf2440
proto: 年次有給休暇の自動付与に必要なフィールドとメッセージを追加
Shota FUJI
authored at
2025-01-26 22:52:11 +0900
Shota FUJI
comitted at
2025-01-27 22:42:00 +0900
fa11be83
react_ui: 日・曜日のフォーマットが常に en なのを修正
MDN には `Intl` の最初の引数 (`locales`) が `undefined` の場合は
> The runtime's default locale is used when undefined is passed
> or when none of the specified locale identifiers is supported.
<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#locales>
と書いてあるがこのページの記述は嘘で、
> `undefined` (or omitted): The implementation's default locale
> will be used.
<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument>
こちらが正解。仕様では "an arbitrarily-ordered duplicate-free List of
language tags, ... It represents all locales for which the implementation
provides functionality within a particular context." となっている。
Firefox も Chrome も恐らく safety default として en-US になっており
開発に使っている OS ・ブラウザの設定 (en-US/en-GB) と近いためおか
しいことに気付かなかった。
ブラウザ実装側で将来的にソートする可能性もないとは言い切れないが...。
結果に依存できない以上明示的に指定するのが安全。
Shota FUJI
authored at
2025-01-25 21:05:41 +0900
Shota FUJI
comitted at
2025-01-25 21:12:15 +0900
f2f20ed8
react_ui: カレンダーの一部がメニューより上に来るのを修正
Shota FUJI
authored at
2025-01-25 16:48:22 +0900
Shota FUJI
comitted at
2025-01-25 16:48:41 +0900
03c3c2c7
react_ui: カレンダーの日付・曜日を縦に並べる
横だと揃っていない印象を受けてしまうため。特に日本語じゃない場合は
1文字じゃないため、めちゃくちゃずれて見えてしまう。
Shota FUJI
authored at
2025-01-25 16:45:17 +0900
Shota FUJI
comitted at
2025-01-25 16:46:19 +0900
c18a9f96
react_ui: レイアウトのサイズ制限をページごとに行う
ページによって適切なサイズがあるため。特にカレンダーのような左右に
大きく使いたい場合は上流で padding やらを設定すると非常に迷惑。
Radix 的には `<Inset>` でどうにかする、という思想なのだろうが実装が
おざなりなため特定のコンポーネント以外では使えない。
統一感という点では微妙になってしまうが、画面の有効活用を考えると
十分すぎるトレードオフだろう。
Shota FUJI
authored at
2025-01-25 10:06:29 +0900
Shota FUJI
comitted at
2025-01-25 16:40:44 +0900
d31a44a5
react_ui: カレンダーのセルを小さくした
フィードバックを求めたところ、やはりセルが大きかったようで(特に
横幅)もっと一画面で見える情報が欲しいらしい。
Shota FUJI
authored at
2025-01-25 09:00:10 +0900
Shota FUJI
comitted at
2025-01-25 09:03:59 +0900
53e404b5
check スクリプトをキャッシュする
特に TSC が遅くてイライラしたので。
Shota FUJI
authored at
2025-01-24 20:29:18 +0900
Shota FUJI
comitted at
2025-01-24 20:29:59 +0900
02454f31
reuse lint を check スクリプトで纏めて実行する
コミット前にはどちらも必ず実行するので。
`--lines` オプションをつけないと正常時にも邪魔くさいテキストを
stdout に書き込むため。 `1>&2` (redirect stdout to stderr) は
意味がなかった。 Bun の挙動なのか Wireit の挙動なのか、それとも
他のスクリプトが `isTTY` をちゃんと参照しているが REUSE だけが
見ていないのか、どれなのかは不明。
Shota FUJI
authored at
2025-01-24 20:18:07 +0900
Shota FUJI
comitted at
2025-01-24 20:25:42 +0900
a5c165ab
react_ui/pwa: dev スクリプトを wireit に以降
idb_backend が古いまま Storybook を動かして「あれ?」となったため
再発防止として Wireit で必ずソースに対応したビルドを使うようにする。
Shota FUJI
authored at
2025-01-24 20:12:12 +0900
Shota FUJI
comitted at
2025-01-24 20:14:22 +0900
a9710739
react_ui: Storybook が勝手にブラウザを開くのを阻止
今まではランダムなポートを使っていたから仕方なかったが、
固定ポートを利用している今は余計なデフォルトでしかない。
一回サーバを落として再度立ち上げる、といったときに別タブ
が開かれたり、 OS デフォルト以外のブラウザで見ようとして
いるときに邪魔でしかなかったり、そもそも勝手にフォーカス
を奪うのが論外だったりと初期で有効にする理由がない。
Shota FUJI
authored at
2025-01-24 19:48:09 +0900
Shota FUJI
comitted at
2025-01-24 19:53:20 +0900
e72b2c6e
react_ui: 勤怠記録機能
年次有給休暇の取得はまず付与ができないとどうしようもないのでなし。
利用感を確かめるために基本の 3 ステータスのみ実装した。
Shota FUJI
authored at
2025-01-23 21:04:04 +0900
Shota FUJI
comitted at
2025-01-23 21:34:55 +0900
0920a2b4
idb_backend: 読み取りマスクのフィールド初期値が空になるケースを修正
子メッセージのマスクを指定した AND `fields` が未指定の場合などは
フィールドが空になってしまい何も返ってこなかった。
Shota FUJI
authored at
2025-01-23 21:07:18 +0900
Shota FUJI
comitted at
2025-01-23 21:27:13 +0900
5f29c2b1
react_ui: カレンダーの月が変わるタイミングで選択を解除する
Shota FUJI
authored at
2025-01-23 19:54:41 +0900
Shota FUJI
comitted at
2025-01-23 19:56:27 +0900
256b68d0
react_ui: カレンダーセルの選択機能
ドラッグによる範囲選択はまだだが、一先ずキーボードを使えばなんとか
操作できるレベルにはなったのでコミット。
Shota FUJI
authored at
2025-01-22 23:28:03 +0900
Shota FUJI
comitted at
2025-01-22 23:31:56 +0900
6553b2c5
Bun のテキストロックファイルに移行
`bun i` の度に更新されたり元々やばかったが、バイナリファイルなのが
輪をかけてやばかった。何が更新されたのか全くわからないので正直実用は
論外というレベルだったのでテキストロックファイルが導入されてなけれ
ば別のランタイム・パッケージマネージャーに乗り換えていた。
Shota FUJI
authored at
2025-01-21 20:40:24 +0900
Shota FUJI
comitted at
2025-01-21 20:46:22 +0900
1c4e2281
react_ui: カレンダーページ
現状表示しかできないため、実質何も有用なデータは表示されないが...。
Shota FUJI
authored at
2025-01-19 14:28:30 +0900
Shota FUJI
comitted at
2025-01-20 22:58:34 +0900
dde158b4
react_ui: 未使用の空ファイルを削除
実装初期に I/F どうしようか色々試行錯誤していた際の消し忘れ。
Shota FUJI
authored at
2025-01-19 19:31:21 +0900
Shota FUJI
comitted at
2025-01-19 19:32:19 +0900
a246dbf9
idb_backend/react_ui: Incremental Build を有効化
正直そこまで速度の差がないから本当に動いているのかわからない
けど、 `*.tsbuildinfo` が生成されているので多分大丈夫。
Shota FUJI
authored at
2025-01-19 17:16:29 +0900
Shota FUJI
comitted at
2025-01-19 17:19:36 +0900
6191c819
wireit を導入
Bun のスクリプトランナーがダメダメなので。具体的には、
* 依存関係を考慮せずにコマンドを実行する(ドキュメントに反する)。
<https://github.com/oven-sh/bun/issues/13239>
* `--filter` を使って実行した際のログが超見づらい。
このせいで proto をビルドせずに pwa で `bun check` してしまったり、
依存先が古いままビルドしてしまったり、という状況が発生していた。
Shota FUJI
authored at
2025-01-19 16:03:52 +0900
Shota FUJI
comitted at
2025-01-19 17:12:54 +0900
412ddd23
react_ui: 労働者ダッシュボードへの遷移ができないのを修正
Shota FUJI
authored at
2025-01-19 15:33:00 +0900
Shota FUJI
comitted at
2025-01-19 15:33:23 +0900
734055de
react_ui: 労働者ダッシュボードページ
登録がまだできないので現状 useless だが、労働者個別のパスをハンドル
する仕組みの基礎としてのコミット。
Shota FUJI
authored at
2025-01-17 18:01:12 +0900
Shota FUJI
comitted at
2025-01-19 11:18:03 +0900
47423289
react_ui: Storybook の起動ポートを固定
もうバージョンも 8 になるというのに未だにコンフィグファイル上で
デフォルトのポート指定ができないという...。急に成長しすぎて駄目に
なる典型例なんだろう。
`${VAR:-default_value}` は Parameter Expansion と呼ばれるもので
Bourne Shell / Bash / Zsh の全てで対応している。 Windows の場合は
Bun Shell が動くらしいが、この機能をサポートしているかは不明。
WSL 使えや。
Shota FUJI
authored at
2025-01-18 22:27:54 +0900
Shota FUJI
comitted at
2025-01-18 22:32:05 +0900
724bb7e0
idb_backend: デバッグログを削除
テストだけど、一応。
Shota FUJI
authored at
2025-01-16 21:47:27 +0900
Shota FUJI
comitted at
2025-01-16 21:47:45 +0900
ad60c421
idb_backend: 有給休暇管理機能
Shota FUJI
authored at
2025-01-11 21:43:52 +0900
Shota FUJI
comitted at
2025-01-16 21:46:06 +0900
5adbacb9
proto: 年次有給休暇の登録時に付与日を指定する
これをしないと残数の取得時なんかに都度レコードを総ざらいして
現在の数値を計算する必要があるため。少なくとも「どの付与日の
年次有給休暇を利用したのか」は登録時にはっきりしているし、
前年の繰越分を必ず優先して使わなければならないというルールも
ないためそのイレギュラー対応をしようとなるとになる。
基本は余っている年次有給休暇のうち消滅日が最も近いものとし、
明示的に指定された場合はそれを利用することで現状想定される
全てのユースケースに対応できる。
Shota FUJI
authored at
2025-01-16 17:52:00 +0900
Shota FUJI
comitted at
2025-01-16 17:56:19 +0900
701a57fa
idb_backend: DBデータからのメッセージ成形をシンプル化
データが複雑になるにつれ、データの依存関係も複雑になりパラメータ
として依存データを受け取る形では無理が出てきたため。
例えば Worker の場合、 workRecords のマスクがない場合は WorkRecords
コレクションへのアクセスを行わない。
Shota FUJI
authored at
2025-01-12 19:26:30 +0900
Shota FUJI
comitted at
2025-01-15 20:13:00 +0900
cbb3bf89
proto: 年次有給休暇付与データとメソッド
Shota FUJI
authored at
2025-01-11 10:54:13 +0900
Shota FUJI
comitted at
2025-01-15 20:13:00 +0900
3470cf44
idb_backend: 勤務履歴登録メソッド
Shota FUJI
authored at
2025-01-09 19:31:43 +0900
Shota FUJI
comitted at
2025-01-11 09:41:28 +0900
977faa02
idb_backend: 無用な export を削除
Shota FUJI
authored at
2025-01-09 19:32:06 +0900
Shota FUJI
comitted at
2025-01-09 19:32:21 +0900
ceae2673
proto: 勤怠記録更新メソッド
Shota FUJI
authored at
2025-01-08 20:20:17 +0900
Shota FUJI
comitted at
2025-01-08 20:20:51 +0900
0421468c
proto: workspace.v1.AccessError を削除
全てのコードから消し去ったので。
Shota FUJI
authored at
2025-01-07 21:00:29 +0900
Shota FUJI
comitted at
2025-01-07 21:01:09 +0900
85ba6bee
react_ui: WorkspaceAccessError を使わない
削除予定のため。
Shota FUJI
authored at
2025-01-07 20:55:47 +0900
Shota FUJI
comitted at
2025-01-07 20:56:08 +0900
d8a11ea5
idb_backend: workspaceAccessError を使わない
削除予定のため。
Shota FUJI
authored at
2025-01-07 20:35:41 +0900
Shota FUJI
comitted at
2025-01-07 20:35:57 +0900
9fc50f43
idb_backend: 労働者単体取得メソッド
Shota FUJI
authored at
2025-01-07 20:29:05 +0900
Shota FUJI
comitted at
2025-01-07 20:29:32 +0900
1d711627
proto: workspace_access_error を非推奨
not_found で事足りるため。エラーが分散するのが想像以上に使いづらい
というのもある。
Shota FUJI
authored at
2025-01-06 21:01:13 +0900
Shota FUJI
comitted at
2025-01-06 21:08:50 +0900
2862ca59
proto: コピペコメントを修正
Shota FUJI
authored at
2025-01-06 20:56:18 +0900
Shota FUJI
comitted at
2025-01-06 21:01:39 +0900
381ffd32
proto: 労働者の単体取得メソッド
Shota FUJI
authored at
2025-01-06 20:52:57 +0900
Shota FUJI
comitted at
2025-01-06 21:01:39 +0900
7b1e421d
proto: 勤怠記録を労働者に追加
サービスとして定義しておくと削除とかが結構面倒。
メッセージに付けちゃえば deprecated にして放置 -> その後削除と
いうフローが使えて楽なので。
Shota FUJI
authored at
2025-01-06 20:42:57 +0900
Shota FUJI
comitted at
2025-01-06 20:45:41 +0900
d69d177f
proto: WorkingDay と WorkRecord をスワップ
改めて見返して「逆じゃね?」って思ったので。
Shota FUJI
authored at
2025-01-06 19:53:56 +0900
Shota FUJI
comitted at
2025-01-06 19:54:40 +0900
916c9a37
idb_backend: 労働者データのマスク
Shota FUJI
authored at
2025-01-06 19:31:58 +0900
Shota FUJI
comitted at
2025-01-06 19:46:32 +0900
123959dd
react_ui: 一覧ページで労働者データをマスクする
データが多くなることは自明なので。
Shota FUJI
authored at
2025-01-06 19:30:16 +0900
Shota FUJI
comitted at
2025-01-06 19:31:45 +0900
59e2fb5f
proto: 労働者データのフィールドマスク
今のうちにやっておかないと後で面倒だと思ったので。
Shota FUJI
authored at
2025-01-06 19:24:37 +0900
Shota FUJI
comitted at
2025-01-06 19:27:13 +0900
8edc71d1
pwa: SPAルーティングを設定
し忘れていた。 aws プロバイダのバージョンを上げたのはチュートリアルに
あった古いバージョン (v4) はメンテナンスされておらず、 Cloudfront
Functions の v2 runtime に対応していなかったため。
Shota FUJI
authored at
2025-01-06 16:31:31 +0900
Shota FUJI
comitted at
2025-01-06 16:47:54 +0900
a79badc2
pwa: ホスティングとデプロイ
Shota FUJI
authored at
2025-01-04 19:15:22 +0900
Shota FUJI
comitted at
2025-01-05 22:49:00 +0900
cf282ed8
react_ui: Storybookにfaviconを設定
たまにわからなくなるので。
本当はロゴとかも変えたかったけど、 Storybook の API が
💩すぎて設定してらんなかった。画像URL指定だったりシステムの
ダークモード設定が考慮に入ってなかったり...。
Shota FUJI
authored at
2025-01-04 00:20:28 +0900
Shota FUJI
comitted at
2025-01-04 00:23:15 +0900
42666fec
react_ui: ReactのSVGに関する警告を解消
Shota FUJI
authored at
2025-01-03 23:59:59 +0900
Shota FUJI
comitted at
2025-01-04 00:03:47 +0900
632445aa
pwa: favicon を設定
タブがたまに迷子になるので。
Shota FUJI
authored at
2025-01-03 23:30:13 +0900
Shota FUJI
comitted at
2025-01-04 00:03:46 +0900
748b2fa6
react_ui: ロゴ
Shota FUJI
authored at
2025-01-03 23:27:46 +0900
Shota FUJI
comitted at
2025-01-03 23:28:06 +0900
0ebeeb9f
react_ui: 休暇・休業種別削除UI
Shota FUJI
authored at
2025-01-03 09:06:08 +0900
Shota FUJI
comitted at
2025-01-03 09:06:19 +0900
db0f4340
idb_backend: 休暇休業定義削除メソッド
Shota FUJI
authored at
2025-01-02 20:31:18 +0900
Shota FUJI
comitted at
2025-01-03 08:23:24 +0900
f3860efa
proto: 休暇休業の削除メソッド
更新はなくても、削除 → 作成とすれば一先ずの代替となるため。
Shota FUJI
authored at
2025-01-02 20:28:41 +0900
Shota FUJI
comitted at
2025-01-02 20:45:56 +0900
9c6c5000
react_ui: 休暇休業定義の編集メニュー
メニュー内容はどれもまだ利用できないが、将来的な操作イメージを
持てるので。必要な操作の洗い出しにもなる。
Shota FUJI
authored at
2025-01-02 20:15:51 +0900
Shota FUJI
comitted at
2025-01-02 20:16:43 +0900
84447917
react_ui: 休暇休業作成時の運用開始日フィールド
Shota FUJI
authored at
2025-01-02 19:51:43 +0900
Shota FUJI
comitted at
2025-01-02 19:53:18 +0900
295cf883
idb_backend: 既存の日付データを利用する
結局フロントエンドでもバックエンドも proto で定義された Date を
使うため、敢えて避ける必要はない。保存用のデータとしてはそもそも
詰め込まれた数値型だし。
Shota FUJI
authored at
2025-01-02 19:07:24 +0900
Shota FUJI
comitted at
2025-01-02 19:08:38 +0900
bb6191c2
react_ui: AppBarとナビがスクロールされてしまうのを修正
Shota FUJI
authored at
2025-01-02 15:29:29 +0900
Shota FUJI
comitted at
2025-01-02 15:31:51 +0900
8e16a062
react_ui: 休暇・休業登録ページ
Shota FUJI
authored at
2025-01-02 10:54:45 +0900
Shota FUJI
comitted at
2025-01-02 12:52:50 +0900
1d919655
react_ui: 休暇休業のバージョンを表示する
Shota FUJI
authored at
2025-01-02 10:32:51 +0900
Shota FUJI
comitted at
2025-01-02 10:33:10 +0900
9db0c27d
idb_backend: 休暇休業をバージョン管理する
Shota FUJI
authored at
2025-01-02 10:03:23 +0900
Shota FUJI
comitted at
2025-01-02 10:03:37 +0900
54bd908d
idb_backend: proto変更時にテストが失敗するのを修正
新規フィールド追加時にアサーションが外れるのは流石にない。
Protobuf の設計理念にも反する。
Shota FUJI
authored at
2025-01-01 22:45:31 +0900
Shota FUJI
comitted at
2025-01-01 22:46:18 +0900
ba2445f9
proto: 休暇休業の属性をバージョン管理
途中で変わる可能性があるため。また、今後の労働者の
属性なども同じようにバージョン管理する必要があり、
設計テストとして丁度いい題材である。
Shota FUJI
authored at
2025-01-01 22:41:32 +0900
Shota FUJI
comitted at
2025-01-01 22:43:46 +0900
4a9065c0
react_ui: ヘルプUIのコンポーネント化
色々なところで必要になるが、殆どスタイルは共通で繰り返しが
多くなりそうな (というか既になってる) ので。
Shota FUJI
authored at
2025-01-01 09:34:56 +0900
Shota FUJI
comitted at
2025-01-01 10:05:20 +0900
dfafc0ab
react_ui: 休暇休業一覧画面
Shota FUJI
authored at
2024-12-31 21:43:13 +0900
Shota FUJI
comitted at
2025-01-01 09:34:05 +0900
22a9fdc5
react_ui: クリップボード書き込みの結果を通知する
サイレントでできたかどうかわからなかったので。
Shota FUJI
authored at
2024-12-31 21:03:38 +0900
Shota FUJI
comitted at
2024-12-31 21:04:36 +0900
f93cd3a8
idb_backend: 休暇休業定義の作成・取得機能
Shota FUJI
authored at
2024-12-31 20:41:59 +0900
Shota FUJI
comitted at
2024-12-31 20:59:59 +0900
47a2c997
idb_backend: 休暇休業定義作成キーをAPIで返す
Shota FUJI
authored at
2024-12-31 19:24:59 +0900
Shota FUJI
comitted at
2024-12-31 19:26:28 +0900
8f854e6e
idb_backend: DBデータからのprotoデータ変換処理
繰り返しが多くミスが起きそうだったので。
Shota FUJI
authored at
2024-12-31 19:24:05 +0900
Shota FUJI
comitted at
2024-12-31 19:24:44 +0900
f32a7b97
idb_backend: 休暇休業定義作成キーをDBに追加
Shota FUJI
authored at
2024-12-31 19:14:19 +0900
Shota FUJI
comitted at
2024-12-31 19:14:46 +0900
267d1d66
proto: 休暇休業定義追加メソッド
Shota FUJI
authored at
2024-12-31 19:09:31 +0900
Shota FUJI
comitted at
2024-12-31 19:10:04 +0900
0fed61db
react_ui: ワークスペース読込中表示
Shota FUJI
authored at
2024-12-31 16:53:56 +0900
Shota FUJI
comitted at
2024-12-31 16:54:24 +0900
4a3f96a2
react_ui: エラー系の画面に Empty UI を適用
Shota FUJI
authored at
2024-12-31 16:46:29 +0900
Shota FUJI
comitted at
2024-12-31 16:50:45 +0900
dfefaccc
react_ui: Empty UI をコンポーネント化
コピペされていたので。これからのページや既存のとりあえずの
プレースホルダに必要になってくる。
Shota FUJI
authored at
2024-12-31 15:52:51 +0900
Shota FUJI
comitted at
2024-12-31 15:54:18 +0900
e5b0cabb
pwa: 外部コードのライセンス表記
Shota FUJI
authored at
2024-12-30 10:23:36 +0900
Shota FUJI
comitted at
2024-12-30 10:23:54 +0900
daf7b3e8
react_ui: 著作権表記UI
Shota FUJI
authored at
2024-12-30 09:59:39 +0900
Shota FUJI
comitted at
2024-12-30 10:00:05 +0900
959e4301
react_ui: ワークスペースの取得フィールドをマスクする
キーとか一覧でもらっても邪魔なだけなので。
Shota FUJI
authored at
2024-12-29 22:08:27 +0900
Shota FUJI
comitted at
2024-12-29 22:17:35 +0900
e34ee3c1
react_ui: ワークスペースを単体取得する
一覧は無駄すぎるので。
Shota FUJI
authored at
2024-12-29 21:54:09 +0900
Shota FUJI
comitted at
2024-12-29 22:17:34 +0900
09f30015
idb_backend: ワークスペースを返すメソッドでマスクをする
Shota FUJI
authored at
2024-12-29 21:47:28 +0900
Shota FUJI
comitted at
2024-12-29 21:55:45 +0900
fd70a66d
idb_backend: マスク処理を汎用化
他のメソッドやメッセージで必ず必要になるため。
Shota FUJI
authored at
2024-12-29 21:17:26 +0900
Shota FUJI
comitted at
2024-12-29 21:18:32 +0900
ea2ba769
proto: ワークスペースを返すメソッド全てにマスクを追加
休暇休業データやそれに伴い増えるキーを考えると早めに実装
したほうが良さそうだったので。
Shota FUJI
authored at
2024-12-29 20:19:11 +0900
Shota FUJI
comitted at
2024-12-29 20:20:12 +0900
f88b189b
idb_backend: ワークスペース単体取得メソッド
Shota FUJI
authored at
2024-12-29 19:57:26 +0900
Shota FUJI
comitted at
2024-12-29 20:15:07 +0900
5de14608
exactOptionalPropertyTypes を無効にした
まさに百害あって一利なしだった。 key のチェックなどでは
確かに安心だろうが、既存のライブラリがこれらを一切考慮し
ていないためエラー地獄。
Shota FUJI
authored at
2024-12-29 19:55:30 +0900
Shota FUJI
comitted at
2024-12-29 19:56:36 +0900
a09bf3b0
proto: ワークスペース単体取得メソッド
パフォーマンス的にも利便性的にも必要だった。
Shota FUJI
authored at
2024-12-29 19:18:33 +0900
Shota FUJI
comitted at
2024-12-29 19:42:23 +0900
5a67e0e3
idb_backend/pwa: 依存パッケージが間違ったモジュールにあるのを修正
Shota FUJI
authored at
2024-12-29 17:17:23 +0900
Shota FUJI
comitted at
2024-12-29 17:18:02 +0900
4bc1c5d8
idb_backend: 開発に必要なパッケージが欠けているのを修正
1ab81605383a0f098f1c61ba916808339798823d で fake-indexeddb
が抜け落ちてしまっていたが、 Bun が喜んで削除後のパッケージを
node_modules に入れっぱなしにしていたせいでコードが動いて
しまっており気づかなかった。別のマシンで `bun check` と `bun test`
が失敗しているのを見て発覚。
Bun のパッケージマネージャーはまじでだめかもしれない。
Shota FUJI
authored at
2024-12-29 16:55:06 +0900
Shota FUJI
comitted at
2024-12-29 16:57:02 +0900
774aa0c6
proto: 休暇休業定義をワークスペースに追加
まだ取得のみなので noop 。
実際に取得するイメージを持ち、システムデフォルトの休業を作成するための
定義。
Shota FUJI
authored at
2024-12-29 16:49:12 +0900
Shota FUJI
comitted at
2024-12-29 16:54:15 +0900
4d2e6d88
proto: 労働実績モデル
このシステムの最も重要となるデータ。
Shota FUJI
authored at
2024-12-29 12:43:41 +0900
Shota FUJI
comitted at
2024-12-29 12:45:33 +0900
19d3f9fc
ロックファイルを更新
新規で `bun i` をやったら差分が出た。
Bun のロックファイル周りの挙動は怪しすぎる。
Shota FUJI
authored at
2024-12-28 09:05:55 +0900
Shota FUJI
comitted at
2024-12-28 09:06:49 +0900
11e11d81
react_ui: 労働者登録画面
Shota FUJI
authored at
2024-12-27 21:33:30 +0900
Shota FUJI
comitted at
2024-12-27 21:36:12 +0900
1fcbb208
react_ui: 権限がない場合は労働者登録へのリンクを表示しない
Shota FUJI
authored at
2024-12-27 20:20:55 +0900
Shota FUJI
comitted at
2024-12-27 20:21:41 +0900
5c78ada0
react_ui: URLPattern 内の不正な正規表現を修正
polyfill はエラーにならないが、 Chrome だとエラーだった。
よく見てみると urlpattern-polyfill は仕様をちゃんと再現
しようとすらしてないっぽい? URLPattern API を使わないこと
も含めて今後の方針は検討したほうがよさそう。
Shota FUJI
authored at
2024-12-26 22:33:03 +0900
Shota FUJI
comitted at
2024-12-26 22:37:16 +0900
4632404e
react_ui: トーストUI
ワークスペース作成画面でフィードバックがなくわかりづらいと
感じたため。同じ問題は労働者登録画面でも起きるのでこの時点
で対応することにした。
Shota FUJI
authored at
2024-12-26 22:21:56 +0900
Shota FUJI
comitted at
2024-12-26 22:30:37 +0900
591bf727
react_ui: Storybook 内でリンクを2回クリックする必要があるのを修正
useEffect がうまく動いていないのか、クリックリスナが連続して発火
している模様。
Shota FUJI
authored at
2024-12-25 22:55:24 +0900
Shota FUJI
comitted at
2024-12-25 22:56:46 +0900
30a740c2
react_ui: ページをルーティングで構成
ページの追加をできる状態まで持っていった。
Shota FUJI
authored at
2024-12-25 22:08:45 +0900
Shota FUJI
comitted at
2024-12-25 22:26:09 +0900
3f519c2c
pwa: deprecated な React props を削除
ちゃんと動かないが暫定的な対応なので問題ない。
Shota FUJI
authored at
2024-12-25 10:20:35 +0900
Shota FUJI
comitted at
2024-12-25 10:20:58 +0900
84d27db1
react_ui: ルーティング機能
UX としてはボタンで API を呼び出すのではなくアンカーリンクを使いたい
ため。パスもこのパッケージが持つことになってしまうが、個別に管理する
手間を考えるとそこまでのドローバックでもないかなって気がする。
Shota FUJI
authored at
2024-12-25 10:18:06 +0900
Shota FUJI
comitted at
2024-12-25 10:19:27 +0900
737d0300
pwa: 労働者一覧画面を表示する
Shota FUJI
authored at
2024-12-24 23:22:16 +0900
Shota FUJI
comitted at
2024-12-24 23:22:57 +0900
4ecc0205
idb_backend: WorkerService が必ずエラーになるのを修正
Shota FUJI
authored at
2024-12-24 23:20:52 +0900
Shota FUJI
comitted at
2024-12-24 23:21:18 +0900
fda542a9
react_ui: WorkerListPage が import できないのを修正
Shota FUJI
authored at
2024-12-24 23:04:39 +0900
Shota FUJI
comitted at
2024-12-24 23:20:33 +0900
521aeea4
react_ui: .d.ts ファイルが正しく出力されないのを修正
types/src/components/*.ts のように吐き出されていた。
原因は tsc が .stories.tsx ファイルをトランスパイルしようとし、
それらが読み込んでいる .storybook/decorators/*.tsx までもトランス
パイルしようとした結果 src/ からはみ出したため出力のルートディレ
クトリを変えたこと。 tsc のこのクソ挙動はいつになったら治るのだ
ろうか。
Shota FUJI
authored at
2024-12-24 23:01:49 +0900
Shota FUJI
comitted at
2024-12-24 23:03:45 +0900
58c06980
react_ui: clean コマンドが types/ を削除しないのを修正
Shota FUJI
authored at
2024-12-24 23:00:04 +0900
Shota FUJI
comitted at
2024-12-24 23:00:46 +0900
57305e72
react_ui: ワークスペース選択イベント
必要なのに忘れていた。
ロックファイルの更新は謎。トップレベルで `bun i` したら出てきた...。
Shota FUJI
authored at
2024-12-24 22:53:41 +0900
Shota FUJI
comitted at
2024-12-24 22:57:22 +0900
aa871258
react_ui: 労働者一覧画面
Shota FUJI
authored at
2024-12-24 22:41:37 +0900
Shota FUJI
comitted at
2024-12-24 22:45:08 +0900
45ea1c74
react_ui: ワークスペース選択後画面のレイアウト
労働者系の画面を表示する際に必要になるため。
無くても MVP としてはどうにかなるが、実際にアプリケーション
としてのイメージを持たせるためには必要。
Shota FUJI
authored at
2024-12-23 19:48:41 +0900
Shota FUJI
comitted at
2024-12-24 20:12:37 +0900
a7550f5d
proto/idb_backend: KeyValueStorageBasedWorkspaceService を削除
これで WorkspaceService へのマイグレーションは完了。
Shota FUJI
authored at
2024-12-23 16:28:15 +0900
Shota FUJI
comitted at
2024-12-23 16:31:27 +0900
53635089
react_ui: WorkspaceService へ移行
Shota FUJI
authored at
2024-12-23 16:26:40 +0900
Shota FUJI
comitted at
2024-12-23 16:27:10 +0900
fe83035b
idb_backend: WorkspaceService をハンドルする
中身は KeyValueBasedStorageWorkspaceService と同じなので
処理は丸々使える。
Shota FUJI
authored at
2024-12-23 16:21:12 +0900
Shota FUJI
comitted at
2024-12-23 16:22:33 +0900
09274fb4
idb_backend: WorkerService が登録されていないのを修正
しかもサービス名も間違えてたし。
実際にクライアントから叩いてないから気づかなかった。
Shota FUJI
authored at
2024-12-23 16:18:20 +0900
Shota FUJI
comitted at
2024-12-23 16:19:06 +0900
fd1eda20
proto: WorkspaceService を追加
KeyValueStorageBasedWorkspaceService は流石に長過ぎた。
Capability Key システムを導入したので、デスクトップ版で一覧や
削除ができない問題もなんとかなりそうなので思い切って改名する。
Shota FUJI
authored at
2024-12-23 16:14:19 +0900
Shota FUJI
comitted at
2024-12-23 16:16:29 +0900
47f52d41
idb_backend: 労働者一覧取得メソッド
Shota FUJI
authored at
2024-12-23 10:29:37 +0900
Shota FUJI
comitted at
2024-12-23 10:30:30 +0900
5e9b3725
proto: 労働者一覧取得メソッド
Shota FUJI
authored at
2024-12-23 09:19:03 +0900
Shota FUJI
comitted at
2024-12-23 09:19:46 +0900
a75ac4ce
idb_backend: 労働者追加メソッド
Shota FUJI
authored at
2024-12-23 08:52:32 +0900
Shota FUJI
comitted at
2024-12-23 08:54:04 +0900
3edf4244
idb_backend: IndexedDBのデータを型付け
`any` が原因となるエラーやミスが既に何度かあったため。
Shota FUJI
authored at
2024-12-22 22:04:08 +0900
Shota FUJI
comitted at
2024-12-22 22:07:02 +0900
4b1ed95d
idb_backend: ワークスペース削除・更新の capability
worker_add はそもそも労働者追加メソッド自体がないため未実装。
Shota FUJI
authored at
2024-12-22 21:49:57 +0900
Shota FUJI
comitted at
2024-12-22 21:54:43 +0900
3a0f59a3
proto: Capability ベースの権限管理機能
PWA 版ではワークスペースの管理はフルにできるが、デスクトップ版では
ワークスペース = ファイルとなるためアプリケーション側から削除、
というのはあまりよろしくないので見せたくない。将来的なマルチユーザ
なクラウド環境を考えても権限・サポートを capability として表現すれ
ば UI 的にも API 的にも堅実に実装・設計ができる。
セキュリティコンテキストにおける capability の丁度いい日本語が
見つからない...。
Shota FUJI
authored at
2024-12-22 19:49:50 +0900
Shota FUJI
comitted at
2024-12-22 19:53:03 +0900
b0c86aa7
pwa: 無駄な余白を削除
Shota FUJI
authored at
2024-12-22 12:23:31 +0900
Shota FUJI
comitted at
2024-12-22 12:23:46 +0900
6361e543
react_ui: 依存パッケージをバンドルしないように修正
Shota FUJI
authored at
2024-12-22 12:19:43 +0900
Shota FUJI
comitted at
2024-12-22 12:19:57 +0900
d2a9a17e
react_ui: ワークスペース新規作成機能
Shota FUJI
authored at
2024-12-22 12:11:23 +0900
Shota FUJI
comitted at
2024-12-22 12:16:47 +0900
222bd43e
react_ui: ワークスペース選択画面のレイアウト
Shota FUJI
authored at
2024-12-22 10:14:57 +0900
Shota FUJI
comitted at
2024-12-22 10:15:44 +0900
9275bb5c
react_ui: ワークスペース作成フォーム
Shota FUJI
authored at
2024-12-21 21:28:14 +0900
Shota FUJI
comitted at
2024-12-21 22:57:22 +0900
f3934e43
react_ui: ワークスペース読み込みエラー表示
エラー表示はとても大切。汎用化して後で楽できるようにしておいた。
Shota FUJI
authored at
2024-12-21 15:14:07 +0900
Shota FUJI
comitted at
2024-12-21 15:57:17 +0900
758e85c1
react_ui: Storybook上でRPCを動かす
これがないとテストできてないも同然なので。
Shota FUJI
authored at
2024-12-20 22:48:21 +0900
Shota FUJI
comitted at
2024-12-20 22:49:37 +0900
a2544b33
idb_backend/pwa: バックエンド処理を別パッケージ化
react_ui の Storybook で使いたかったため。
Shota FUJI
authored at
2024-12-20 20:43:51 +0900
Shota FUJI
comitted at
2024-12-20 20:44:27 +0900
0d574860
react_ui/pwa: RPC をUIパッケージ内で行う
基本的に UI は可能な限り全て共有とするため、通信層も揃える。
Shota FUJI
authored at
2024-12-20 19:59:45 +0900
Shota FUJI
comitted at
2024-12-20 20:00:30 +0900
d604dd56
Gleam 関連の設定を削除
少なくとも現状では使わなくなったため。
Shota FUJI
authored at
2024-12-19 23:08:49 +0900
Shota FUJI
comitted at
2024-12-19 23:09:08 +0900
1ab81605
pwa/react_ui: React に切り替え
結局 CustomElement で TypeScript を触る羽目になること、 CustomElement で
I/F を考えるのが非常に大変なことを鑑みて React にした。
Protobuf を使った Worker/IPC/HTTP のマルチプロトコル通信、という冒険を既に
しているため、他のところで冒険する必要はないかなと思ったのがきっかけ。
正直スタイルを一から書くのがしんどい。 Radix で boring な UI を書いて
MVP からのイテレーション地獄がアプリケーション開発としては正解だろう。
Shota FUJI
authored at
2024-12-19 20:44:24 +0900
Shota FUJI
comitted at
2024-12-19 23:06:01 +0900
80acc21c
gui: 単一セクションレイアウト
Shota FUJI
authored at
2024-12-16 21:06:08 +0900
Shota FUJI
comitted at
2024-12-16 21:06:32 +0900
666b23c8
gui: ドキュメントプレビューの padding をとれるようにした
レイアウト系の UI を書くにあたり邪魔になってくるので。
Shota FUJI
authored at
2024-12-15 20:44:55 +0900
Shota FUJI
comitted at
2024-12-15 20:46:07 +0900
8e364252
gui: ドキュメント内リンクのスタイル
他のテキストと同じで分かりづらかったため。
Shota FUJI
authored at
2024-12-15 20:31:48 +0900
Shota FUJI
comitted at
2024-12-15 20:32:14 +0900
9556e8a3
gui: ドキュメントのコードスタイルの適用範囲が狭すぎるのを修正
具体的には yamori-workspace-list のページ先頭にあるリンク内の
コードにスタイルが当たっていなかった。
Shota FUJI
authored at
2024-12-15 20:28:00 +0900
Shota FUJI
comitted at
2024-12-15 20:28:58 +0900
e6ed661d
gui: lit-html の導入
頑張って素の DOM 操作でやってきたが、部分更新などでやはり無理
が出てきたためライブラリを導入した。
lit-html にした理由はこれが一番薄いから。なるべく素の Custom
Element にするためには View 層にだけ専念したライブラリが必要
になる。 lit なんかは状態管理やら CustomElement の定義やらに
干渉してくるため、これが一番無難。また、利用者数も多く安定し
ており、フロントエンド界隈では比較的枯れている。
Shota FUJI
authored at
2024-12-15 20:16:55 +0900
Shota FUJI
comitted at
2024-12-15 20:19:23 +0900
18811534
gui: Empty が公開されていないのを修正
Shota FUJI
authored at
2024-12-15 17:25:29 +0900
Shota FUJI
comitted at
2024-12-15 17:25:48 +0900
ba500b5f
gui: ワークスペース取得エラー時と空の際の UI
Shota FUJI
authored at
2024-12-15 17:22:42 +0900
Shota FUJI
comitted at
2024-12-15 17:25:03 +0900
a90b5562
gui: Empty UI
Result とか呼ばれたりすることもあるけど、用途を考えれば Empty
の方が適切。
Shota FUJI
authored at
2024-12-15 14:25:17 +0900
Shota FUJI
comitted at
2024-12-15 14:26:57 +0900
66531929
gui: `--foo` 形式の CustomState を利用しない
一部のバージョンの Chromium ブラウザ向けにフォールバックで利用
していたが、 Chrome がコンソールにエラーを出しやがるためやめた。
対象のバージョンのブラウザは属性を使うようになる。パフォーマンス
への影響が不明だが、開発者側からはどうしようもできない短慮設計
なのでもう知らん。フォールバックを判別とかしてないし、まじでどう
しようもない。
<https://chromestatus.com/feature/5140610730426368>
Shota FUJI
authored at
2024-12-15 12:24:52 +0900
Shota FUJI
comitted at
2024-12-15 12:30:49 +0900
b6bacc5b
gui: Callout が公開されてないのを修正
Shota FUJI
authored at
2024-12-15 11:49:25 +0900
Shota FUJI
comitted at
2024-12-15 11:49:42 +0900
767c4238
gui: CustomElement の依存関係を declarative に表す
利用側がドキュメントや実装を見ながら手動で登録するのは error-prone
なため。かといって全て登録するのはパフォーマンス的にも無駄。
Shota FUJI
authored at
2024-12-15 11:45:01 +0900
Shota FUJI
comitted at
2024-12-15 11:48:59 +0900
7f84022f
gui: Safari の動的 media 属性が反映されないバグについてコメント
後で見たとき用。 Bugzilla の検索が超アルティメットギガンティック
ウンコだから、もしかしたらもっと適切なレポートが上がってるかも
しれない。
Shota FUJI
authored at
2024-12-14 21:08:11 +0900
Shota FUJI
comitted at
2024-12-14 21:10:29 +0900
e2cb0e68
gui: ドキュメントの全画面表示時のアニメーション
特にテーマが同一時にわかりにくかったので。
view-transition-name だけ指定してスタイルはデフォルト任せだが、
どうやら Blink も Webkit も view-transition-name が指定されて
いる場合は scale と opacity の同時アニメーションがデフォルト
らしく、特に指定しなくてもいい感じになっているのでそのまま。
Shota FUJI
authored at
2024-12-14 20:11:53 +0900
Shota FUJI
comitted at
2024-12-14 20:13:58 +0900
2fec305a
gui: ドキュメントプレビューのフルスクリーン機能
画面の大部分を占めるような UI (e.g. Result/Empty, Layout) を書く際に
現状のプレビューサイズ、特にグリッドで列が 2 つ以上になった場合に
まともな確認が難しくなるため。
リセット CSS に手を入れているのは Astro が body 内に script タグを
突っ込むため。 style も突っ込みかねないので念の為に書いた。
Shota FUJI
authored at
2024-12-14 19:01:09 +0900
Shota FUJI
comitted at
2024-12-14 19:12:54 +0900
e43772a1
check スクリプトを追加
型といったコードのプログラム的正当性を検査するためのコマンド。
Shota FUJI
authored at
2024-12-13 14:37:53 +0900
Shota FUJI
comitted at
2024-12-13 14:38:47 +0900
3c38b9fe
gui: ワークスペース一覧取得エラー時の UI
Shota FUJI
authored at
2024-12-13 14:34:03 +0900
Shota FUJI
comitted at
2024-12-13 14:34:27 +0900
5aa86a97
gui: 無効になったコードコメントの削除
Shota FUJI
authored at
2024-12-13 14:16:28 +0900
Shota FUJI
comitted at
2024-12-13 14:16:51 +0900
0f33c4ed
gui: コールアウトコンポーネント
エラー表示なんかに必要なため。
Shota FUJI
authored at
2024-12-13 14:15:51 +0900
Shota FUJI
comitted at
2024-12-13 14:16:18 +0900
5c9a9a0c
gui: 読み込まれる CSS についてのドキュメントを作成
いちいち CSS ファイルを読み返すのは大変なので。
色とか文字組みに関しては気力が尽きたのでこのコミットには含まれず。
Shota FUJI
authored at
2024-12-13 10:42:40 +0900
Shota FUJI
comitted at
2024-12-13 10:43:56 +0900
4a746bec
gui: workspace.v1.ListResponse 表示 UI
Protobuf のデータを受け取って表示する UI のサンプルとして実装。
そのため、足りない状態があったりエラー時の表示がテキストだけ
だったりする。
Shota FUJI
authored at
2024-12-12 19:36:55 +0900
Shota FUJI
comitted at
2024-12-12 23:30:12 +0900
20ed274b
gui: Component という言葉の利用を限定
UI 要素の区分としても利用しているため、安易に使わないようにする。
Shota FUJI
authored at
2024-12-12 19:35:31 +0900
Shota FUJI
comitted at
2024-12-12 19:36:48 +0900
6ce9c7b3
pwa: gui パッケージを導入
そもそも以前のコミットで gui パッケージが TypeScript のコンパイラバグ
のせいでビルドできなくなってたり、 CustomElement として利用できな
かったり (何故 Astro 上では見れていたのかは不明) していた。
なので gui 側にもちょこちょこ変更を加えている。
Shota FUJI
authored at
2024-12-08 21:46:12 +0900
Shota FUJI
comitted at
2024-12-08 21:48:56 +0900
00903224
gui: <script> タグ内のインデントを一時的に廃止
markup_fmt のバグで最初の行以外インデントが効かない。
インデントがないよりも醜く見にくいためバグが直るまで
インデントはかけない。
Shota FUJI
authored at
2024-12-08 21:17:07 +0900
Shota FUJI
comitted at
2024-12-08 21:19:04 +0900
e5c0a2b8
gui: カタログでナビゲーションが見切れるのを修正
メインが長いとナビゲーションも一緒に飛んでっちゃう。
Shota FUJI
authored at
2024-12-08 21:16:14 +0900
Shota FUJI
comitted at
2024-12-08 21:16:48 +0900
d8c21d6b
gui: ボタンコンポーネント
必ず必要になるため。
リンクに使えるように Light DOM 仕様にしてもよかったが、
使い勝手を考えるとやはりゴリゴリと書いた単体完結のビルトイン
置き換え要素が良い。
Form の submit なんかが必要になったら `submit` 属性とかを
追加する必要はあるだろうが、現状の想定ではこれで十分。
Shota FUJI
authored at
2024-12-08 21:09:44 +0900
Shota FUJI
comitted at
2024-12-08 21:13:07 +0900
da8efd2d
gui: スタイルガイドを Astro に変更
Vite の Multi-Page Application の DX が著しく低いため。
Astro も HTML やらモジュール周りでかなり酷いが、それでも Vite で
素の HTML を何枚も書くよりはかなりまし。
Shota FUJI
authored at
2024-12-07 23:45:47 +0900
Shota FUJI
comitted at
2024-12-08 14:33:13 +0900
8de886de
gui: 共有コンポーネントパッケージ
含まれているボタンコンポーネントはあくまでサンプル用で、挙動や I/F は
最終的に利用されるものとは異なる。
Shota FUJI
authored at
2024-12-07 09:09:06 +0900
Shota FUJI
comitted at
2024-12-07 16:45:27 +0900
dfeb6072
pwa: Gleam でワーカーの起動からリクエストまでを行う
どんなものか見たかったため。正直 protobuf から生成された TS の
型定義やランタイムの検査結果を全部捨てるのは勿体ない気がする。
Gleam の protobuf コード生成も含めて方針は要検討。
Shota FUJI
authored at
2024-12-06 23:09:29 +0900
Shota FUJI
comitted at
2024-12-06 23:16:25 +0900
656e5a34
pwa: パスエイリアスを設定
Gleam の JS 出力は未だに完全ではなく、 `build/` ファイルにそのまま
必要そうなファイルと一緒に出力するしかない。その結果、他のファイルを
import したり、特に `src/` 直下以外から import しようとするとパスが
ズレて import できない、といった問題に溢れている。
そのため、現状ではエイリアスを使って絶対パスに解決させるのが一番安全で
安定しているといえる。
Shota FUJI
authored at
2024-12-06 21:42:09 +0900
Shota FUJI
comitted at
2024-12-06 21:44:42 +0900
43dab7ce
pwa: Gleam の導入
流石に TypeScript で UI 書くのは論外なので。
ただ、どこまでを Gleam で書くのか、どのようなスタイルにするのかと
いった部分は全く決まっていない。
Shota FUJI
authored at
2024-12-05 22:33:55 +0900
Shota FUJI
comitted at
2024-12-05 22:52:04 +0900
54856622
pwa: サービスオブジェクトを参照しない
@bufbuild/protobuf の生成するサービスオブジェクトはかなりファットで
ランタイムなのに色々詰め込みまくっている。そのため、特に将来的に
バンドルサイズに影響が出てくるので必要なメソッドのリクエスト・
レスポンスメッセージを適宜読み込む形にした。
サービスオブジェクトはそのままの JS オブジェクトで、プロパティとして
スキーマやらが色々生えている。そのため、 Tree Shaking が効かない。
サービスオブジェクトを使った場合のサイズは、
```
$ vite build
vite v6.0.2 building for production...
✓ 78 modules transformed.
../dist/index.html 0.45 kB │ gzip: 0.30 kB
../dist/assets/main-DJ9_Th8G.js 78.27 kB
../dist/assets/index-DsgyLhcA.js 72.82 kB │ gzip: 19.64 kB
✓ built in 366ms
```
使わなかった場合のサイズは、
```
$ vite build
vite v6.0.2 building for production...
✓ 67 modules transformed.
../dist/index.html 0.45 kB │ gzip: 0.30 kB
../dist/assets/main-MP79NseV.js 78.26 kB
../dist/assets/index-iIdyv0Db.js 68.83 kB │ gzip: 18.42 kB
✓ built in 359ms
```
と現状のコンパクトなサービスでもかなり違ってくる。
クライアントからのメソッド呼び出しや GUI のコードなんかが入って
くるとサイズとしては誤差になるのかもしれないが、削れるのであれば
削りたい。
Shota FUJI
authored at
2024-12-04 22:38:59 +0900
Shota FUJI
comitted at
2024-12-04 22:43:32 +0900
5e79853a
pwa: ワークスペースの削除メソッド
Shota FUJI
authored at
2024-12-04 22:20:21 +0900
Shota FUJI
comitted at
2024-12-04 22:31:23 +0900
d1ab1038
pwa: IDB のトランザクション終了を待つ
多分読み切ってるし問題はないと思うけど、一応ね。
Shota FUJI
authored at
2024-12-04 22:08:21 +0900
Shota FUJI
comitted at
2024-12-04 22:23:16 +0900
842d1edd
pwa: ワークスペースの更新メソッド
Shota FUJI
authored at
2024-12-04 22:06:42 +0900
Shota FUJI
comitted at
2024-12-04 22:23:16 +0900
973cf4b3
pwa: ライブラリの型エラーを tsc 実行時に無視する
どうやら TypeScript の型定義と bun の型定義がバトってるみたい。
こんな感じで正直触る気がしないので無視することにした。
```
bunx tsc
../../node_modules/@types/node/buffer.d.ts:632:19 - error TS2430: Interface 'Buffer' incorrectly extends interface 'Uint8Array<ArrayBufferLike>'.
The types of 'slice(...).buffer' are incompatible between these types.
Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'.
Type 'SharedArrayBuffer' is missing the following properties from type 'ArrayBuffer': resizable, resize, detached, transfer, transferToFixedLength
632 interface Buffer extends Uint8Array {
~~~~~~
../../node_modules/@types/node/fs/promises.d.ts:56:66 - error TS2344: Type 'Buffer' does not satisfy the constraint 'ArrayBufferView'.
Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike> | DataView<ArrayBufferLike>'.
Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike>'.
The types of 'slice(...).buffer' are incompatible between these types.
Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'.
Type 'SharedArrayBuffer' is missing the following properties from type 'ArrayBuffer': resizable, resize, detached, transfer, transferToFixedLength
56 interface FileReadOptions<T extends NodeJS.ArrayBufferView = Buffer> {
~~~~~~
../../node_modules/@types/node/fs/promises.d.ts:238:49 - error TS2344: Type 'Buffer' does not satisfy the constraint 'ArrayBufferView'.
Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike> | DataView<ArrayBufferLike>'.
Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike>'.
The types of 'slice(...).buffer' are incompatible between these types.
Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'.
Type 'SharedArrayBuffer' is missing the following properties from type 'ArrayBuffer': resizable, resize, detached, transfer, transferToFixedLength
238 read<T extends NodeJS.ArrayBufferView = Buffer>(options?: FileReadOptions<T>): Promise<FileReadResult<T>>;
~~~~~~
../../node_modules/@types/node/globals.d.ts:370:14 - error TS2300: Duplicate identifier 'fetch'.
370 function fetch(
~~~~~
../../node_modules/bun-types/globals.d.ts:1037:6
1037 var fetch: Fetch;
~~~~~
'fetch' was also declared here.
../../node_modules/@types/node/module.d.ts:283:13 - error TS2687: All declarations of 'dirname' must have identical modifiers.
283 dirname: string;
~~~~~~~
../../node_modules/@types/node/module.d.ts:289:13 - error TS2687: All declarations of 'filename' must have identical modifiers.
289 filename: string;
~~~~~~~~
../../node_modules/bun-types/bun.d.ts:117:8 - error TS2420: Class 'ShellError' incorrectly implements interface 'ShellOutput'.
Property 'bytes' is missing in type 'ShellError' but required in type 'ShellOutput'.
117 class ShellError extends Error implements ShellOutput {
~~~~~~~~~~
../../node_modules/bun-types/bun.d.ts:434:3
434 bytes(): Uint8Array;
~~~~~~~~~~~~~~~~~~~~
'bytes' is declared here.
../../node_modules/bun-types/globals.d.ts:1037:6 - error TS2300: Duplicate identifier 'fetch'.
1037 var fetch: Fetch;
~~~~~
../../node_modules/typescript/lib/lib.dom.d.ts:28708:18
28708 declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
~~~~~
'fetch' was also declared here.
../../node_modules/@types/node/globals.d.ts:370:14
370 function fetch(
~~~~~
and here.
../../node_modules/bun-types/globals.d.ts:1947:12 - error TS2687: All declarations of 'dirname' must have identical modifiers.
1947 readonly dirname: string;
~~~~~~~
../../node_modules/bun-types/globals.d.ts:1950:12 - error TS2687: All declarations of 'filename' must have identical modifiers.
1950 readonly filename: string;
~~~~~~~~
../../node_modules/bun-types/overrides.d.ts:3:29 - error TS2305: Module '"bun"' has no exported member 'PathLike'.
3 import type { BunFile, Env, PathLike } from "bun";
~~~~~~~~
../../node_modules/typescript/lib/lib.dom.d.ts:16004:11 - error TS2430: Interface 'MessageEvent<T>' incorrectly extends interface 'Bun.MessageEvent<T>'.
Types of property 'ports' are incompatible.
Type 'readonly MessagePort[]' is not assignable to type 'readonly import("worker_threads").MessagePort[]'.
Type 'MessagePort' is missing the following properties from type 'MessagePort': ref, unref, addListener, emit, and 13 more.
16004 interface MessageEvent<T = any> extends Event {
~~~~~~~~~~~~
../../node_modules/typescript/lib/lib.dom.d.ts:26068:11 - error TS2430: Interface 'WebSocket' incorrectly extends interface 'import("<repo path>/node_modules/@types/ws/index").WebSocket'.
Types of property 'binaryType' are incompatible.
Type 'BinaryType' is not assignable to type '"arraybuffer" | "nodebuffer" | "fragments"'.
Type '"blob"' is not assignable to type '"arraybuffer" | "nodebuffer" | "fragments"'.
26068 interface WebSocket extends EventTarget {
~~~~~~~~~
../../node_modules/typescript/lib/lib.dom.d.ts:28708:18 - error TS2300: Duplicate identifier 'fetch'.
28708 declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
~~~~~
../../node_modules/bun-types/globals.d.ts:1037:6
1037 var fetch: Fetch;
~~~~~
'fetch' was also declared here.
Found 14 errors in 8 files.
Errors Files
1 ../../node_modules/@types/node/buffer.d.ts:632
2 ../../node_modules/@types/node/fs/promises.d.ts:56
1 ../../node_modules/@types/node/globals.d.ts:370
2 ../../node_modules/@types/node/module.d.ts:283
1 ../../node_modules/bun-types/bun.d.ts:117
3 ../../node_modules/bun-types/globals.d.ts:1037
1 ../../node_modules/bun-types/overrides.d.ts:3
3 ../../node_modules/typescript/lib/lib.dom.d.ts:16004
```
Shota FUJI
authored at
2024-12-04 19:31:30 +0900
Shota FUJI
comitted at
2024-12-04 19:33:59 +0900
63fd0dd8
pwa: Worker が Rollup でビルドできない問題の修正
top-level await のあれ。
Shota FUJI
authored at
2024-12-04 19:30:38 +0900
Shota FUJI
comitted at
2024-12-04 19:31:04 +0900
22ec9e8f
proto: ワークスペース削除・更新メソッド
必要だから。UI実装時にこれがないと勢いが削がれて萎える。
Shota FUJI
authored at
2024-12-04 19:19:06 +0900
Shota FUJI
comitted at
2024-12-04 19:29:31 +0900
859b35d1
pwa: IndexedDB を使ったワークスペースの作成・一覧処理
実際に書く雛形として IndexedDB へのアクセスとテストを書いた。
Shota FUJI
authored at
2024-12-04 17:30:39 +0900
Shota FUJI
comitted at
2024-12-04 17:58:55 +0900
31135eff
PWA での Protobuf 通信基礎
Service で定義されたリクエストとレスポンスを Web Worker 越しにやりとり
する最低限のコード。今後どんなスタイル・ライブラリで書くにせよまず確実
に必要となるであろう部分を書いた。
Shota FUJI
authored at
2024-12-04 10:42:51 +0900
Shota FUJI
comitted at
2024-12-04 12:06:53 +0900
8570db2a
Protobuf の JS コード生成
先に Zig のコード生成をやろうとしたが、
- [zig-protobuf](https://github.com/Arwalk/zig-protobuf) は Protobuf の
edition に対応していない
- [gremlin](https://github.com/octopus-foundation/gremlin.zig) は Zig
の v0.13 でビルドできない
ため、 Zig v0.14 がリリースされる予定の 2025-01-01 までお預けすることに
した。とりあえず PWA の Worker 実装だけのため、後から置き換えることは
簡単なため JS で進めて問題ない。
Shota FUJI
authored at
2024-12-03 21:57:41 +0900
Shota FUJI
comitted at
2024-12-03 22:02:17 +0900
cf72bdb1
労働者追加までの protobuf 定義
アプリケーションの MVP を作るにあたり、とりあえず基礎を作るのに必要な
データモデル定義をする必要があった。勤怠や休暇の記録を付けるにもまず
労働者の登録が必要だったため、この定義を優先して行った。
設定ファイルやドキュメントは protobuf やそれに関連するツールの追加に
伴い必要になったもの。
Shota FUJI
authored at
2024-12-01 16:44:35 +0900
Shota FUJI
comitted at
2024-12-01 21:48:32 +0900
be1ef017
Markdown で footnotes を使わない
GFM の独自拡張であり、各ツールのサポートがほぼない状態のため。
Shota FUJI
authored at
2024-12-01 09:25:33 +0900
Shota FUJI
comitted at
2024-12-01 09:26:23 +0900
c887f487
プロジェクト概要とコードチェックインの基礎
最低限のプロジェクトの説明が先に存在しないと経験上迷走しやすいため、
最優先で作成した。また、コードフォーマットに関するものも最初期から
ないと後々の diff が見づらくなるので現状必要なものを作成した。
Shota FUJI
authored at
2024-11-29 22:55:46 +0900
Shota FUJI
comitted at
2024-11-30 22:42:12 +0900