yamori

有給休暇計算を主目的とした簡易勤怠管理システム

Commits at 19a47b8011b30060588752f1642507fd91112e84

  1. 19a47b80 docs: ドキュメントサイトの言語を日本語に設定 デフォルトで "en" が "lang" 属性に指定されてしまうため。 その他はろくに翻訳されていないのであまり大きな違いはない。 Shota FUJI authored at Shota FUJI comitted at
  2. 19c79aef .env の読み込みを Flake から行う mise は usage の利用といった、ツールとしての品質が怪しいため。 Go の dotenv 系モジュールはまともそうなのがなさそうだったので、 アプリケーションをシンプルにする意味でも上層で読み込むことにした。 Shota FUJI authored at Shota FUJI comitted at
  3. 3f122466 Terraform 表記を OpenTofu に置換 置き換えきったと思っていたが残っていた。 Shota FUJI authored at Shota FUJI comitted at
  4. c399fa0e Node.js / Bun 関連のコードを削除 node_modules に関しては近い将来にほぼ確実に必要になるため残してある。 Shota FUJI authored at Shota FUJI comitted at
  5. 2e9cc607 dprint を Nix でインストールする 移行の一環。 Shota FUJI authored at Shota FUJI comitted at
  6. ae69ece0 AWS CLI を mise でインストールさせない Nix でカバー済みのため。 mise から Nix に移行中。 Shota FUJI authored at Shota FUJI comitted at
  7. 74b116c1 docs: 社員マスタに対する変更への注意書きを追加 付与テーブルにあるような注意書きがなかった (あると思ってた)。 Shota FUJI authored at Shota FUJI comitted at
  8. 2612ba9b docs: 勤怠記録の簡易説明 日付や勤怠区分に関しては別でページやセクションを用意する必要が ありそうなので、勤怠記録の説明のアウトラインとしてはこれで良さ そうだと思っている。 列の説明が行書式で必要だが、他のページの説明がわかりにくい気が しているため保留中。サンプルが足りないだけ? Shota FUJI authored at Shota FUJI comitted at
  9. 3fcd5dfa docs: デプロイスクリプト インフラとデプロイスクリプト。シークレットとかは以前と同じく git に 含めない。 Shota FUJI authored at Shota FUJI comitted at
  10. 007509ed docs: 付与上書きログ これがないと実際の運用、というか導入が難しい。 Shota FUJI authored at Shota FUJI comitted at
  11. fcf0f08b docs: ファイルの種類についての基本的なレファレンス Shota FUJI authored at Shota FUJI comitted at
  12. 4e298b9c docs: 簡易ファイル書式説明 Shota FUJI authored at Shota FUJI comitted at
  13. f7fcd82f docs: ドキュメントサイトの基礎 必要なツールの数を絞るために Nix を採用した。 ``` mise install bun install bun docs ``` よりも ``` nix run .#docs ``` の方がシンプルな上躓くポイントが少ない。 また、利用できるツールの数も桁違いに多く、バージョンの違いによる エラーなどもほぼない。 Mkdocs を採用した理由はなんとなく。使ったことがない、 というのもある。ぶっちゃけよほど酷くなければなんでもよかった。 Shota FUJI authored at Shota FUJI comitted at
  14. e95152bf v2 のファイルを削除 Shota FUJI authored at Shota FUJI comitted at
  15. fc159b15 backend: ユーザ作成時にカスタムフィールドを保存する Shota FUJI authored at Shota FUJI comitted at
  16. 30dae958 proto: カスタムフィールドの書き込み用フィールド 今までなかった。 Shota FUJI authored at Shota FUJI comitted at
  17. eeac3086 react_ui: ユーザ更新後に詳細画面が古いままなのを修正 Shota FUJI authored at Shota FUJI comitted at
  18. 4420922f react_ui: ユーザ詳細以下のページが表示されないのを修正 UUID のようにハイフンなんかが含まれていると 404 になってしまっていた。 Shota FUJI authored at Shota FUJI comitted at
  19. 8ff02a2c backend: ユーザIDに "wu-" プリフィクスがないのを修正 Shota FUJI authored at Shota FUJI comitted at
  20. 0a5858bd react_ui: 管理者フラグをユーザ作成・編集のフィールドに追加 Shota FUJI authored at Shota FUJI comitted at
  21. 6e96fc73 react_ui: ユーザ編集ページ Shota FUJI authored at Shota FUJI comitted at
  22. 5e1c89a6 react_ui: ユーザ詳細ページ Shota FUJI authored at Shota FUJI comitted at
  23. f8a8ae60 react_ui: ユーザ作成フォームをコンポーネント化 更新でもほぼ同じものを使いたかったので。 Shota FUJI authored at Shota FUJI comitted at
  24. 3ef3e56d backend: ユーザ更新メソッド Shota FUJI authored at Shota FUJI comitted at
  25. 74286af9 proto: ユーザ更新メソッド Shota FUJI authored at Shota FUJI comitted at
  26. 91f22947 react_ui: ユーザの属性をバッジとして表示 Shota FUJI authored at Shota FUJI comitted at
  27. cc29fc63 react_ui: 解決済み TODO コメントの削除 Shota FUJI authored at Shota FUJI comitted at
  28. 42cc1eda react_ui: ユーザ削除 UI Shota FUJI authored at Shota FUJI comitted at
  29. ae06727b backend: ユーザ削除メソッド Shota FUJI authored at Shota FUJI comitted at
  30. 4a538aa8 backend: 無意味な関数呼び出しの削除 なんじゃこりゃ。 と思ったけど、多分最初にロガーを設置して未実装のレスポンスを返していたが、 ログをとるようになったタイミングでまたロガーを設置してしまったものと 思われる。 Shota FUJI authored at Shota FUJI comitted at
  31. 4d99cf19 proto: ユーザ削除メソッド Shota FUJI authored at Shota FUJI comitted at
  32. 96a66729 react_ui: カスタムフィールド定義編集 UI Shota FUJI authored at Shota FUJI comitted at
  33. 0d91d1b4 react-ui: カスタムフィールド削除機能 Shota FUJI authored at Shota FUJI comitted at
  34. cae5eec3 react_ui: カスタムフィールド定義作成画面 Shota FUJI authored at Shota FUJI comitted at
  35. f2d74be8 react-ui: カスタムフィールド定義一覧画面 Shota FUJI authored at Shota FUJI comitted at
  36. 73fb4bc7 backend: カスタムフィールド削除メソッド Shota FUJI authored at Shota FUJI comitted at
  37. f8d73a6d backend: テスト失敗時の表示対象変数を修正 Shota FUJI authored at Shota FUJI comitted at
  38. 81fac3ff backend: カスタムフィールド定義書き込みメソッド Shota FUJI authored at Shota FUJI comitted at
  39. 089344ca backend: カスタムフィールド定義のモデリング Shota FUJI authored at Shota FUJI comitted at
  40. 9536087b backend: カスタムフィールド定義の書き込み・削除メソッド雛形 Connect Go の設計が悪いせいで新規追加されたメソッドは実装しないと コンパイルエラーになるため早めに実装。 Shota FUJI authored at Shota FUJI comitted at
  41. a8689769 proto: バックエンド用のカスタムフィールドのイベント定義 Shota FUJI authored at Shota FUJI comitted at
  42. 189ae636 pwa: 未使用の import を削除 Shota FUJI authored at Shota FUJI comitted at
  43. e4d1e83e proto: カスタムフィールド定義の更新系メソッドを追加 カスタムフィールドはユーザ管理に関わってくるため早く欲しくなった。 Shota FUJI authored at Shota FUJI comitted at
  44. 8ee14487 react_ui: ユーザ作成画面 Shota FUJI authored at Shota FUJI comitted at
  45. a1e1be48 backend: ユーザ一覧を返す Shota FUJI authored at Shota FUJI comitted at
  46. 2dd96b89 react_ui: ユーザ一覧画面 Shota FUJI authored at Shota FUJI comitted at
  47. 020ba241 react_ui: ログイン後の画面レイアウト Shota FUJI authored at Shota FUJI comitted at
  48. 0ff76a8f pwa: Connect RPC を導入 新しい react-ui 及び backend で利用しているため。 Shota FUJI authored at Shota FUJI comitted at
  49. 90a69b4f react_ui: ログイン周りをアプリケーションに組み込み Shota FUJI authored at Shota FUJI comitted at
  50. 6592a62e backend: ユーザがいない場合のログインユーザ取得レスポンス Shota FUJI authored at Shota FUJI comitted at
  51. 43638887 proto: ログインユーザ取得メソッドに管理者不在時のレスポンスを追加 ワークスペース取得処理が認証必須なため。未ログイン時に最低限のレスポンスを返す といったことをすると、うっかり他のフィールドも含めてしまいかねない上、定義から どのように動くのかがわかりづらくなる。 Shota FUJI authored at Shota FUJI comitted at
  52. 00bc8d74 react_ui: ログイン UI Shota FUJI authored at Shota FUJI comitted at
  53. f07dc177 backend: ログインユーザ取得メソッド Shota FUJI authored at Shota FUJI comitted at
  54. 265abaa2 proto: ログインユーザ取得メソッド 完全に想定から抜けていた。 PWA 実装時に「ないとダメじゃん」と早い段階で 気づいた。 Shota FUJI authored at Shota FUJI comitted at
  55. 0e6f2f21 react_ui: 初期管理者作成ページ ログインまで含めようと思ったが、思いの外量が多い上 RPC 側の変更も必要 だったためこのページだけとした。 Shota FUJI authored at Shota FUJI comitted at
  56. 86109ea9 proto: v2 ユーザのカスタムフィールド 移行時に面倒だったので省いていたが、やはり必要なので。 Shota FUJI authored at Shota FUJI comitted at
  57. c329bcaf proto: v2 の労働者データ マスクとかまだだけど。 Shota FUJI authored at Shota FUJI comitted at
  58. 49d1ceb3 backend: レスポンスヘルパで不要なエラーを返さない ハンドラが `*Response, error` である必要があるので、そのまま返せる ようにヘルパも同じ型にしていた。しかし、関数名と型が異なること、 利用側としてはそこまでの差がないことから関数のベストプラクティスに 則ることにした。 Shota FUJI authored at Shota FUJI comitted at
  59. f7a2ddbd backend: ワークスペース更新時に認証エラーを返す TODO 消化。 Shota FUJI authored at Shota FUJI comitted at
  60. 4e083e18 proto: ワークスペース更新時の認証エラー 認証付きエンドポイントのため。 Shota FUJI authored at Shota FUJI comitted at
  61. fb652c57 backend: permission_error を返す TODO 消化。 Shota FUJI authored at Shota FUJI comitted at
  62. 83b512fd proto: 権限エラーを作成 CapabilityError は capability based security に基づいたエラーのため。 紛らわしくならないように分けた。 Shota FUJI authored at Shota FUJI comitted at
  63. e03967fd backend: ワークスペース更新処理 Shota FUJI authored at Shota FUJI comitted at
  64. 21ff80c5 backend: 省略表記の初期値を設定し、レスポンスで返す Shota FUJI authored at Shota FUJI comitted at
  65. c7754317 backend: 省略表記の保存用データ定義 Shota FUJI authored at Shota FUJI comitted at
  66. 6f66f02e backend: ログアウトメソッド Shota FUJI authored at Shota FUJI comitted at
  67. 9f3d24b3 backend: ユーザ情報を整形して返す Shota FUJI authored at Shota FUJI comitted at
  68. e6831b82 backend: 通常ユーザによるユーザ作成機能 Shota FUJI authored at Shota FUJI comitted at
  69. a63ad39a backend: 管理者ユーザに対する権限を定義 これにより「管理者の場合は〜」といった処理を個々のサービスハンドラで 書く必要がなくなり、将来的な要件変更にも強くなる。 Shota FUJI authored at Shota FUJI comitted at
  70. dd98a985 backend: ユーザの権限データを保存する Shota FUJI authored at Shota FUJI comitted at
  71. 611fa22f backend: CreateUser メソッド 権限周りに関してはストレージ側が準備できていないため未実装。 Shota FUJI authored at Shota FUJI comitted at
  72. a1a2b1ef backend: interface{} -> any gopls がうるさいので。 Shota FUJI authored at Shota FUJI comitted at
  73. 51c5a24d backend: スナップショット名作成の SQL 文をわかりやすくした Shota FUJI authored at Shota FUJI comitted at
  74. 2b12ae51 backend: WASM でスナップショットを保存できない問題の回避 go-sqlite3-js がプレースホルダやら名前付きパラメータといった 実質必須なものの対応をまともにしていないため。もうスクラッチで 書いたほうがいいかもしれない、というレベル。 Shota FUJI authored at Shota FUJI comitted at
  75. ba6e73f2 backend: WASM 向けのブラウザロガー Shota FUJI authored at Shota FUJI comitted at
  76. 8d33e27b backend: ワークスペース取得の認証エラーを定義 Shota FUJI authored at Shota FUJI comitted at
  77. c0053096 proto/backend: バリデーション系のエラーを定義 汎用のエラーメッセージを作るよりは、個々のメソッドに必要なエラーを ペイロードを都度定義しながら書いたほうがいいことに気がついた。 Shota FUJI authored at Shota FUJI comitted at
  78. 9c62df7f backend: サーバの終了コードを定義する わかりづらいため。 Shota FUJI authored at Shota FUJI comitted at
  79. b6ea07de backend: main 終了時に DB を閉じる Go の main のシグネチャは本当に終わってる。 Shota FUJI authored at Shota FUJI comitted at
  80. d5f22577 proto: CapabilityKey を削除 このシステムのユーザ認可には合わなかったため。 ワークスペースの v2 では CapabilityKey に触れる実装をしていないため フィールド定義ごと削除した。 Shota FUJI authored at Shota FUJI comitted at
  81. 7524073c backend: ワークスペース取得処理 認証付きだが、ワークスペースの初期管理者作成の必要可否は別の メソッドにしたほうがいいと気づいたため。 Shota FUJI authored at Shota FUJI comitted at
  82. 2cea57dd backend: ワークスペースの初期表示名 Shota FUJI authored at Shota FUJI comitted at
  83. 90abb48b backend: ワークスペース表示名のイベントとプロジェクション Shota FUJI authored at Shota FUJI comitted at
  84. b6d8311d backend: ログインのテスト Shota FUJI authored at Shota FUJI comitted at
  85. feb97858 backend: テストのヘルパ関数を別ファイルに移動 他のテストでほしかったため。 Shota FUJI authored at Shota FUJI comitted at
  86. 4d35044e backend: テストのセットアップが失敗するのを修正 Shota FUJI authored at Shota FUJI comitted at
  87. cebef263 backend: Login でのログとエラーハンドリング Shota FUJI authored at Shota FUJI comitted at
  88. 3452ebee backend: CreateInitialAdmin でのログとエラーハンドリング Shota FUJI authored at Shota FUJI comitted at
  89. 5693f6f0 backend: JWT の生成・検査ヘルパ 今後ほぼすべての RPC で必要となるため事前に整理した。 Shota FUJI authored at Shota FUJI comitted at
  90. 663ceacd backend: ログイン時に JWT を SameOrigin Cookie に焼き付ける Shota FUJI authored at Shota FUJI comitted at
  91. 36d31f78 backend: ログイン処理を別ファイルに移す ファットになりすぎて見づらかったので。 Shota FUJI authored at Shota FUJI comitted at
  92. 0fce04ca proto: ユーザ作成リクエストをシンプル化 移行したのでフィールドを詰めた。デプロイとかしてないし。 oneof から別個のフィールドにしたのは使いやすさのため。 正直種々のコードジェネレーターの吐く oneof 実装がクソ過ぎて 使いたくない。将来的にも別個のほうが、例えば管理者から特定の 権限を外す場合などにも対応できる。まぁ oneof 外すのは簡単なん だけどね。 Shota FUJI authored at Shota FUJI comitted at
  93. 8842bc99 backend: 初期管理者ユーザ作成 RPC へ移行 Shota FUJI authored at Shota FUJI comitted at
  94. 9231b3a0 proto: 管理者ユーザ作成メソッド ユーザ作成暗黙の RPC に oneof みたいなフィールドが多く使い勝手が 悪いと感じたため。 backend のコードに触れているのは Connect Go のサービスが全てのメソッドを 実装していないとコンパイルエラーになるという欠陥設計によるもの。 Shota FUJI authored at Shota FUJI comitted at
  95. ed45ac44 backend: 管理者作成のテスト Shota FUJI authored at Shota FUJI comitted at
  96. c0522153 backend: -h がヘルプになるのを修正 kong は無条件で -h を設定するため、デフォルトのヘルプを無効化する 必要がある。 Shota FUJI authored at Shota FUJI comitted at
  97. 4a363d11 backend: HTTP サーバのホストとポートを CLI 系で変更可能にした ぶっちゃけログのほうがメインだったり。実際に何度も立ち上げて わかりづらかったので。 Shota FUJI authored at Shota FUJI comitted at
  98. 7627d966 backend: まともに CLI 引数を渡せるようにする Go の flag パッケージは普通の `-a`/`--a-long` 形式をサポートせずに `-a-long` で全部ポインタのため。楽だが、成果物の UX が悪くなるという アンチパターン。 Go の標準ライブラリ割とだめじゃね...? Shota FUJI authored at Shota FUJI comitted at
  99. dafd1a3c backend: テキストログ出力をまともに見れるように修正 Shota FUJI authored at Shota FUJI comitted at
  100. 0b23f623 backend: テキストログと JSONL ログを選べるようにした JSONL は便利だがテスト時などは見にくい。 Shota FUJI authored at Shota FUJI comitted at
  101. e95f3a9c backend: デバッグログを見れるようにする 見れなきゃ出しても意味ないので。 Shota FUJI authored at Shota FUJI comitted at
  102. 4440b52c backend: 管理者作成パスワードの初期指定 自動テストが書けないので。 Shota FUJI authored at Shota FUJI comitted at
  103. 6b71ff4f proto: ユーザの権限モデル定義 Shota FUJI authored at Shota FUJI comitted at
  104. f1497f78 backend: ログイン RPC Shota FUJI authored at Shota FUJI comitted at
  105. 05bda859 backend: イベント生成のヘルパ関数 自動生成されるコードがあまりにも酷くノイズでしかないため。 Shota FUJI authored at Shota FUJI comitted at
  106. a20b0398 backend: 管理者ユーザ作成時に PW を設定する 単純な抜け。 Shota FUJI authored at Shota FUJI comitted at
  107. 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 Shota FUJI comitted at
  108. 9aef8519 Zig 関連の設定を削除 利用しなくなったため。 Shota FUJI authored at Shota FUJI comitted at
  109. dd213fe7 vendor/go-sqlite3-js: WASM で DB が開けないのを修正 そもそもこのコードが動いていたのか甚だ疑問。 Shota FUJI authored at Shota FUJI comitted at
  110. 516cab77 backend: SQLite3 の導入 WASM でも動かすために色々追加している。 ただ、これ以上環境依存のツールを導入しなければ後は共通の コードを書くだけになるはず。 Shota FUJI authored at Shota FUJI comitted at
  111. 115fc47f backend: すべて Go で書く WASM の出力がおかしいのはどうやら v1.24.1 限定のバグだった模様。 v1.23.8 と v1.24.2 では再現しなかった。リリースノートにはないので バレないようにしれっと直したのだろう。 pwa パッケージにサンプル的なコードが入っているが、これは動作確認用。 後で消す予定だが、どのみち pwa パッケージは使わなくなるのでそのまま になる可能性も。 Shota FUJI authored at Shota FUJI comitted at
  112. 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 Shota FUJI comitted at
  113. 7db4a3ee backend: server.zig を削除 サーバも WASM を使うことにしたため。 Shota FUJI authored at Shota FUJI comitted at
  114. f6062794 proto: ユーザ作成 RPC Shota FUJI authored at Shota FUJI comitted at
  115. 35f896e8 proto: 単一ワークスペース前提の workspace/v2 モジュール SingletonWorkspaceService を作ったが、既存のモデル定義を拡張していくと どうしてもノイズが多くなったり注釈が増えたりしてくる。 根本的なアーキテクチャ変更なのでバージョン変更は妥当と判断し、最小限の モジュールを作成した。 根本的な変更の理由はユーザ管理・ログインを実際に実装しようとして既存の サービス設計では実現が難しい、できてもハック盛りだくさんになってしまう ため。労働者管理とユーザ管理を分離しようとして設計した v1 だったが、 結果的にそれのせいでユーザ管理が追加できない事態となってしまった。 Shota FUJI authored at Shota FUJI comitted at
  116. 8edcdcf5 proto: ユーザモデルをワークスペース配下に移動 シングルトンワークスペースがメインになる以上、ユーザはワークスペースに 属するデータとなる。 Shota FUJI authored at Shota FUJI comitted at
  117. eb9ece9c proto: 内容がおかしいコメントの修正 多分コピペ。 Shota FUJI authored at Shota FUJI comitted at
  118. 3abc4595 proto: カスタムフィールド 社員 ID などを設定して CSV などでエクスポート、外部システムで 紐づけなどのユースケースがあるため必須要件となる。 Shota FUJI authored at Shota FUJI comitted at
  119. 87be8e69 proto: ログアウト RPC Shota FUJI authored at Shota FUJI comitted at
  120. c433adc6 proto: ログイン RPC Event Sourcing をするにしろ通常の CRUD SQL にするにしろ、 まずこれが必要になる。このあとのユーザ周りの設計にも必要 になってくる。 Shota FUJI authored at Shota FUJI comitted at
  121. 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 Shota FUJI comitted at
  122. 75d721c8 backend: Wazero を使った Go からのコア呼び出し gRPC やらサーバ周りは Go が充実しているため。 また、サンドボックスで実行されることにより I/O を限定でき、 安全にコアを実行できる。 Shota FUJI authored at Shota FUJI comitted at
  123. f5eafc11 backend: WASM バックエンド DB とかはない。そもそもどんな DB アクセスにするのかとか 設計とか考えてないし。 Shota FUJI authored at Shota FUJI comitted at
  124. 62a6766e backend_core: Zig から protobuf を利用する 使っている Gremlin というコード生成ライブラリと Zig という言語の 仕様上、 proto でライブラリを出力、というのはハックになってしまう。 そのため、多少効率は悪くなるが利用側で都度出力する形にした。 Protobuf は .proto 毎にソースファイルを生成、という形だが Zig は 配布形態に合わせたパッケージングとなる。つまり、静的・動的な ライブラリや実行ファイルがモジュールの単位となる。そのため「複数 ファイル群をモジュールとして公開」ということはできない。 このコミットでは protobuf の wkt (well-known types) の追加も 含まれている。これは Gremlin が protoc に対応しておらず wkt が 含まれていないため。このベンダリングに伴うライセンス周りの変更も 入っているため少し変更ファイル数が多くなっている。 Shota FUJI authored at Shota FUJI comitted at
  125. e551c6fc proto: 単一ワークスペース向け構成 RPC 現実的な運用としてマルチワークスペースはなさそうということが判明。 自分の組織だけのデプロイなのにワークスペース選択やらがあるのは不便なので 単一ワークスペース向けのフローを考えそれに必要な RPC を実装した。 Shota FUJI authored at Shota FUJI comitted at
  126. 90396a7f proto: 疎通確認RPC 実装初期やテスト、ステータス確認などいろいろ便利なため。 Shota FUJI authored at Shota FUJI comitted at
  127. 25753283 test_go_consumer: サンプルパッケージの削除 Shota FUJI authored at Shota FUJI comitted at
  128. 1fcfa4b3 proto: Go バインディングの出力 サンプル用にテストのパッケージも追加している。 Shota FUJI authored at Shota FUJI comitted at
  129. 24c1c392 docs: アーキテクチャ図を更新 "ship fast" を優先するため使いやすい技術スタックにした。 また、 web ホスティングが優先要件となったためそこも含めた。 Shota FUJI authored at Shota FUJI comitted at
  130. 5a71f21c react_ui: 勤怠記録編集ダイアログ ショートカットキーだけでは半日の入力に無理があるため。 半日の記録の頻度などを考え、一先ずこれでどうにかなるのでは?と いうことで実装した。 Shota FUJI authored at Shota FUJI comitted at
  131. 7d060f01 react_ui: 改善された勤怠履歴のフィールドへ移行 ひとまずバックエンド、そしてスキーマから旧フィールドを削除するために 旧フィールドの利用を消した。 UI 上での変更はまだ。 Shota FUJI authored at Shota FUJI comitted at
  132. 029baa80 idb_backend: 改善された一日未満へのデータモデルへ移行 Shota FUJI authored at Shota FUJI comitted at
  133. 72e12b4e idb_backend: 改善された一日未満のデータのストレージ移行 Protobuf メッセージの移行もしてしまうと変更がかなり大きくなって しまうため、内部のストレージ設計のみ変更した。 Shota FUJI authored at Shota FUJI comitted at
  134. 9bc9de45 idb_backend: 解消済みのTODOコメントを削除 Shota FUJI authored at Shota FUJI comitted at
  135. 6a2e0bb6 proto: 一日未満の勤怠記録のデータ設計を改善 以前のままでは半日公休+半日出勤&時間単位年休といった記録が つけられなかった。オフラインで議論を重ねてこの形なら汎用性 とシンプル性が保てるという結論に達したものをコードにした。 Shota FUJI authored at Shota FUJI comitted at
  136. 4e25a2f1 idb_backend: マイグレーションを個別のファイルに分割 大きくなりすぎて書いたり読んだりするのが大変になってきたため。 Shota FUJI authored at Shota FUJI comitted at
  137. 427faaf9 react_ui: CSV/TSVダウンロード Shota FUJI authored at Shota FUJI comitted at
  138. 8689f7f2 react_ui: 集計画面に未入力日数を表示する Shota FUJI authored at Shota FUJI comitted at
  139. eeffc205 react_ui: 勤怠記録書き込み成功時にトーストを出さない 複数日に纏めて書き込む場合は問題ないが、キーボードショートカット で一日ずつ書き込む場合は非常に邪魔で仕方ない。 Shota FUJI authored at Shota FUJI comitted at
  140. 538052dd react_ui: サマリ画面のタイトルを変更 わかりやすいタイトルはないか意見を聞いたところ、このデータは 集計データであり月次集計などが適当であるという意見をもらった ため。ページとしては期間は任意のため、月次・年次という装飾は つけずに集計表とぼかした。 Shota FUJI authored at Shota FUJI comitted at
  141. 3afd26fe react_ui: ワークスペースサマリ画面 Shota FUJI authored at Shota FUJI comitted at
  142. 4f8e1c68 README の実装状況を更新 Shota FUJI authored at Shota FUJI comitted at
  143. b4deadf5 react_ui: 勤怠記録編集のキーボードショートカット Shota FUJI authored at Shota FUJI comitted at
  144. c808f6cc react_ui: 勤怠記録編集処理をモジュールに切り出し メニュー以外からも呼び出したかったので。リファクタだけでもボリュームが あるため個別のコミットにした。 Shota FUJI authored at Shota FUJI comitted at
  145. 30b9a80d react_ui: 省略表記 Shota FUJI authored at Shota FUJI comitted at
  146. cbca2b2c idb_backend: 省略表記 Shota FUJI authored at Shota FUJI comitted at
  147. 7f34578c proto: 省略表記フィールド カレンダーで詰めて表示する際に、この設定がないと一文字しかでなかったり わかりづらい省略になったりで不便なため。 Shota FUJI authored at Shota FUJI comitted at
  148. d9413a5d react_ui: カレンダーの行ヘッダを労働者詳細へのリンクにする 使っていてジャンプできないのは不便だと感じたため。 Shota FUJI authored at Shota FUJI comitted at
  149. e3322a61 idb_backend: 有給休暇の残日数が戻らないのを修正 例えば 有給休暇 -> 休日 とした際に残日数が減ったままで戻らなかった。 Shota FUJI authored at Shota FUJI comitted at
  150. 785b7f11 react_ui: 有給休暇を取得しきってもダッシュボードに表示する 使い切ったのか元からないのかわからなかったため。 Shota FUJI authored at Shota FUJI comitted at
  151. 9c56623a idb_backend: 残りがあるのに有給休暇を取得できない不具合を修正 Shota FUJI authored at Shota FUJI comitted at
  152. 57739611 react_ui: 年次有給休暇の取得 UI Shota FUJI authored at Shota FUJI comitted at
  153. 9d5c8284 react_ui: 法定・特別休暇休業取得 UI Shota FUJI authored at Shota FUJI comitted at
  154. 72243bfd react_ui: ワークスペースのトップをカレンダーに変更 カレンダーは労働者一覧ページの情報も含んでいるため。 また、ユーザが一番アクセスする、気になる情報はカレンダーページの ものであるため。 Shota FUJI authored at Shota FUJI comitted at
  155. 2093d2fd proto: special_/legal_leave を削除 Shota FUJI authored at Shota FUJI comitted at
  156. 448d69c1 react_ui: workspace_defined_leave への移行 Shota FUJI authored at Shota FUJI comitted at
  157. c2395a6f idb_backend: workspace_defined_leave への移行 Shota FUJI authored at Shota FUJI comitted at
  158. f3fe6c17 proto: 特別・法定休暇を区別しない そもそもワークスペースごとに設定する設計となっている上、区別する メリットが殆どない。労働者の権利として必要、というのであればシステム 上で事前に作成して更新・削除できないようにすればいいだけ。 現状 `yamori.workspace.v1.Workspace` の `leave_definitions` には 特別・法定のどちらかといった情報がないため出し分けや設定ができない。 Shota FUJI authored at Shota FUJI comitted at
  159. 9c8019e8 react_ui: 労働者作成時に自動付与の属性を入力させる Shota FUJI authored at Shota FUJI comitted at
  160. e251b155 react_ui: 有給休暇付与テーブルの一覧ページ 間違いがないかの確認や、よく知らない労働者や使用者への周知、将来的な変更の基盤 としての実装。 Shota FUJI authored at Shota FUJI comitted at
  161. 952218c7 react_ui: ローカル変数名を変更 試行錯誤時の名残(変更忘れ)なのかわからないが、意味が通らない 変数名だったので変えた。 Shota FUJI authored at Shota FUJI comitted at
  162. 55bc7498 idb_backend: 年次有給休暇自動付与機能 Shota FUJI authored at Shota FUJI comitted at
  163. 5fcf2440 proto: 年次有給休暇の自動付与に必要なフィールドとメッセージを追加 Shota FUJI authored at Shota FUJI comitted at
  164. 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 Shota FUJI comitted at
  165. f2f20ed8 react_ui: カレンダーの一部がメニューより上に来るのを修正 Shota FUJI authored at Shota FUJI comitted at
  166. 03c3c2c7 react_ui: カレンダーの日付・曜日を縦に並べる 横だと揃っていない印象を受けてしまうため。特に日本語じゃない場合は 1文字じゃないため、めちゃくちゃずれて見えてしまう。 Shota FUJI authored at Shota FUJI comitted at
  167. c18a9f96 react_ui: レイアウトのサイズ制限をページごとに行う ページによって適切なサイズがあるため。特にカレンダーのような左右に 大きく使いたい場合は上流で padding やらを設定すると非常に迷惑。 Radix 的には `<Inset>` でどうにかする、という思想なのだろうが実装が おざなりなため特定のコンポーネント以外では使えない。 統一感という点では微妙になってしまうが、画面の有効活用を考えると 十分すぎるトレードオフだろう。 Shota FUJI authored at Shota FUJI comitted at
  168. d31a44a5 react_ui: カレンダーのセルを小さくした フィードバックを求めたところ、やはりセルが大きかったようで(特に 横幅)もっと一画面で見える情報が欲しいらしい。 Shota FUJI authored at Shota FUJI comitted at
  169. 53e404b5 check スクリプトをキャッシュする 特に TSC が遅くてイライラしたので。 Shota FUJI authored at Shota FUJI comitted at
  170. 02454f31 reuse lint を check スクリプトで纏めて実行する コミット前にはどちらも必ず実行するので。 `--lines` オプションをつけないと正常時にも邪魔くさいテキストを stdout に書き込むため。 `1>&2` (redirect stdout to stderr) は 意味がなかった。 Bun の挙動なのか Wireit の挙動なのか、それとも 他のスクリプトが `isTTY` をちゃんと参照しているが REUSE だけが 見ていないのか、どれなのかは不明。 Shota FUJI authored at Shota FUJI comitted at
  171. a5c165ab react_ui/pwa: dev スクリプトを wireit に以降 idb_backend が古いまま Storybook を動かして「あれ?」となったため 再発防止として Wireit で必ずソースに対応したビルドを使うようにする。 Shota FUJI authored at Shota FUJI comitted at
  172. a9710739 react_ui: Storybook が勝手にブラウザを開くのを阻止 今まではランダムなポートを使っていたから仕方なかったが、 固定ポートを利用している今は余計なデフォルトでしかない。 一回サーバを落として再度立ち上げる、といったときに別タブ が開かれたり、 OS デフォルト以外のブラウザで見ようとして いるときに邪魔でしかなかったり、そもそも勝手にフォーカス を奪うのが論外だったりと初期で有効にする理由がない。 Shota FUJI authored at Shota FUJI comitted at
  173. e72b2c6e react_ui: 勤怠記録機能 年次有給休暇の取得はまず付与ができないとどうしようもないのでなし。 利用感を確かめるために基本の 3 ステータスのみ実装した。 Shota FUJI authored at Shota FUJI comitted at
  174. 0920a2b4 idb_backend: 読み取りマスクのフィールド初期値が空になるケースを修正 子メッセージのマスクを指定した AND `fields` が未指定の場合などは フィールドが空になってしまい何も返ってこなかった。 Shota FUJI authored at Shota FUJI comitted at
  175. 5f29c2b1 react_ui: カレンダーの月が変わるタイミングで選択を解除する Shota FUJI authored at Shota FUJI comitted at
  176. 256b68d0 react_ui: カレンダーセルの選択機能 ドラッグによる範囲選択はまだだが、一先ずキーボードを使えばなんとか 操作できるレベルにはなったのでコミット。 Shota FUJI authored at Shota FUJI comitted at
  177. 6553b2c5 Bun のテキストロックファイルに移行 `bun i` の度に更新されたり元々やばかったが、バイナリファイルなのが 輪をかけてやばかった。何が更新されたのか全くわからないので正直実用は 論外というレベルだったのでテキストロックファイルが導入されてなけれ ば別のランタイム・パッケージマネージャーに乗り換えていた。 Shota FUJI authored at Shota FUJI comitted at
  178. 1c4e2281 react_ui: カレンダーページ 現状表示しかできないため、実質何も有用なデータは表示されないが...。 Shota FUJI authored at Shota FUJI comitted at
  179. dde158b4 react_ui: 未使用の空ファイルを削除 実装初期に I/F どうしようか色々試行錯誤していた際の消し忘れ。 Shota FUJI authored at Shota FUJI comitted at
  180. a246dbf9 idb_backend/react_ui: Incremental Build を有効化 正直そこまで速度の差がないから本当に動いているのかわからない けど、 `*.tsbuildinfo` が生成されているので多分大丈夫。 Shota FUJI authored at Shota FUJI comitted at
  181. 6191c819 wireit を導入 Bun のスクリプトランナーがダメダメなので。具体的には、 * 依存関係を考慮せずにコマンドを実行する(ドキュメントに反する)。 <https://github.com/oven-sh/bun/issues/13239> * `--filter` を使って実行した際のログが超見づらい。 このせいで proto をビルドせずに pwa で `bun check` してしまったり、 依存先が古いままビルドしてしまったり、という状況が発生していた。 Shota FUJI authored at Shota FUJI comitted at
  182. 412ddd23 react_ui: 労働者ダッシュボードへの遷移ができないのを修正 Shota FUJI authored at Shota FUJI comitted at
  183. 734055de react_ui: 労働者ダッシュボードページ 登録がまだできないので現状 useless だが、労働者個別のパスをハンドル する仕組みの基礎としてのコミット。 Shota FUJI authored at Shota FUJI comitted at
  184. 47423289 react_ui: Storybook の起動ポートを固定 もうバージョンも 8 になるというのに未だにコンフィグファイル上で デフォルトのポート指定ができないという...。急に成長しすぎて駄目に なる典型例なんだろう。 `${VAR:-default_value}` は Parameter Expansion と呼ばれるもので Bourne Shell / Bash / Zsh の全てで対応している。 Windows の場合は Bun Shell が動くらしいが、この機能をサポートしているかは不明。 WSL 使えや。 Shota FUJI authored at Shota FUJI comitted at
  185. 724bb7e0 idb_backend: デバッグログを削除 テストだけど、一応。 Shota FUJI authored at Shota FUJI comitted at
  186. ad60c421 idb_backend: 有給休暇管理機能 Shota FUJI authored at Shota FUJI comitted at
  187. 5adbacb9 proto: 年次有給休暇の登録時に付与日を指定する これをしないと残数の取得時なんかに都度レコードを総ざらいして 現在の数値を計算する必要があるため。少なくとも「どの付与日の 年次有給休暇を利用したのか」は登録時にはっきりしているし、 前年の繰越分を必ず優先して使わなければならないというルールも ないためそのイレギュラー対応をしようとなるとになる。 基本は余っている年次有給休暇のうち消滅日が最も近いものとし、 明示的に指定された場合はそれを利用することで現状想定される 全てのユースケースに対応できる。 Shota FUJI authored at Shota FUJI comitted at
  188. 701a57fa idb_backend: DBデータからのメッセージ成形をシンプル化 データが複雑になるにつれ、データの依存関係も複雑になりパラメータ として依存データを受け取る形では無理が出てきたため。 例えば Worker の場合、 workRecords のマスクがない場合は WorkRecords コレクションへのアクセスを行わない。 Shota FUJI authored at Shota FUJI comitted at
  189. cbb3bf89 proto: 年次有給休暇付与データとメソッド Shota FUJI authored at Shota FUJI comitted at
  190. 3470cf44 idb_backend: 勤務履歴登録メソッド Shota FUJI authored at Shota FUJI comitted at
  191. 977faa02 idb_backend: 無用な export を削除 Shota FUJI authored at Shota FUJI comitted at
  192. ceae2673 proto: 勤怠記録更新メソッド Shota FUJI authored at Shota FUJI comitted at
  193. 0421468c proto: workspace.v1.AccessError を削除 全てのコードから消し去ったので。 Shota FUJI authored at Shota FUJI comitted at
  194. 85ba6bee react_ui: WorkspaceAccessError を使わない 削除予定のため。 Shota FUJI authored at Shota FUJI comitted at
  195. d8a11ea5 idb_backend: workspaceAccessError を使わない 削除予定のため。 Shota FUJI authored at Shota FUJI comitted at
  196. 9fc50f43 idb_backend: 労働者単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  197. 1d711627 proto: workspace_access_error を非推奨 not_found で事足りるため。エラーが分散するのが想像以上に使いづらい というのもある。 Shota FUJI authored at Shota FUJI comitted at
  198. 2862ca59 proto: コピペコメントを修正 Shota FUJI authored at Shota FUJI comitted at
  199. 381ffd32 proto: 労働者の単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  200. 7b1e421d proto: 勤怠記録を労働者に追加 サービスとして定義しておくと削除とかが結構面倒。 メッセージに付けちゃえば deprecated にして放置 -> その後削除と いうフローが使えて楽なので。 Shota FUJI authored at Shota FUJI comitted at
  201. d69d177f proto: WorkingDay と WorkRecord をスワップ 改めて見返して「逆じゃね?」って思ったので。 Shota FUJI authored at Shota FUJI comitted at
  202. 916c9a37 idb_backend: 労働者データのマスク Shota FUJI authored at Shota FUJI comitted at
  203. 123959dd react_ui: 一覧ページで労働者データをマスクする データが多くなることは自明なので。 Shota FUJI authored at Shota FUJI comitted at
  204. 59e2fb5f proto: 労働者データのフィールドマスク 今のうちにやっておかないと後で面倒だと思ったので。 Shota FUJI authored at Shota FUJI comitted at
  205. 8edc71d1 pwa: SPAルーティングを設定 し忘れていた。 aws プロバイダのバージョンを上げたのはチュートリアルに あった古いバージョン (v4) はメンテナンスされておらず、 Cloudfront Functions の v2 runtime に対応していなかったため。 Shota FUJI authored at Shota FUJI comitted at
  206. a79badc2 pwa: ホスティングとデプロイ Shota FUJI authored at Shota FUJI comitted at
  207. cf282ed8 react_ui: Storybookにfaviconを設定 たまにわからなくなるので。 本当はロゴとかも変えたかったけど、 Storybook の API が 💩すぎて設定してらんなかった。画像URL指定だったりシステムの ダークモード設定が考慮に入ってなかったり...。 Shota FUJI authored at Shota FUJI comitted at
  208. 42666fec react_ui: ReactのSVGに関する警告を解消 Shota FUJI authored at Shota FUJI comitted at
  209. 632445aa pwa: favicon を設定 タブがたまに迷子になるので。 Shota FUJI authored at Shota FUJI comitted at
  210. 748b2fa6 react_ui: ロゴ Shota FUJI authored at Shota FUJI comitted at
  211. 0ebeeb9f react_ui: 休暇・休業種別削除UI Shota FUJI authored at Shota FUJI comitted at
  212. db0f4340 idb_backend: 休暇休業定義削除メソッド Shota FUJI authored at Shota FUJI comitted at
  213. f3860efa proto: 休暇休業の削除メソッド 更新はなくても、削除 → 作成とすれば一先ずの代替となるため。 Shota FUJI authored at Shota FUJI comitted at
  214. 9c6c5000 react_ui: 休暇休業定義の編集メニュー メニュー内容はどれもまだ利用できないが、将来的な操作イメージを 持てるので。必要な操作の洗い出しにもなる。 Shota FUJI authored at Shota FUJI comitted at
  215. 84447917 react_ui: 休暇休業作成時の運用開始日フィールド Shota FUJI authored at Shota FUJI comitted at
  216. 295cf883 idb_backend: 既存の日付データを利用する 結局フロントエンドでもバックエンドも proto で定義された Date を 使うため、敢えて避ける必要はない。保存用のデータとしてはそもそも 詰め込まれた数値型だし。 Shota FUJI authored at Shota FUJI comitted at
  217. bb6191c2 react_ui: AppBarとナビがスクロールされてしまうのを修正 Shota FUJI authored at Shota FUJI comitted at
  218. 8e16a062 react_ui: 休暇・休業登録ページ Shota FUJI authored at Shota FUJI comitted at
  219. 1d919655 react_ui: 休暇休業のバージョンを表示する Shota FUJI authored at Shota FUJI comitted at
  220. 9db0c27d idb_backend: 休暇休業をバージョン管理する Shota FUJI authored at Shota FUJI comitted at
  221. 54bd908d idb_backend: proto変更時にテストが失敗するのを修正 新規フィールド追加時にアサーションが外れるのは流石にない。 Protobuf の設計理念にも反する。 Shota FUJI authored at Shota FUJI comitted at
  222. ba2445f9 proto: 休暇休業の属性をバージョン管理 途中で変わる可能性があるため。また、今後の労働者の 属性なども同じようにバージョン管理する必要があり、 設計テストとして丁度いい題材である。 Shota FUJI authored at Shota FUJI comitted at
  223. 4a9065c0 react_ui: ヘルプUIのコンポーネント化 色々なところで必要になるが、殆どスタイルは共通で繰り返しが 多くなりそうな (というか既になってる) ので。 Shota FUJI authored at Shota FUJI comitted at
  224. dfafc0ab react_ui: 休暇休業一覧画面 Shota FUJI authored at Shota FUJI comitted at
  225. 22a9fdc5 react_ui: クリップボード書き込みの結果を通知する サイレントでできたかどうかわからなかったので。 Shota FUJI authored at Shota FUJI comitted at
  226. f93cd3a8 idb_backend: 休暇休業定義の作成・取得機能 Shota FUJI authored at Shota FUJI comitted at
  227. 47a2c997 idb_backend: 休暇休業定義作成キーをAPIで返す Shota FUJI authored at Shota FUJI comitted at
  228. 8f854e6e idb_backend: DBデータからのprotoデータ変換処理 繰り返しが多くミスが起きそうだったので。 Shota FUJI authored at Shota FUJI comitted at
  229. f32a7b97 idb_backend: 休暇休業定義作成キーをDBに追加 Shota FUJI authored at Shota FUJI comitted at
  230. 267d1d66 proto: 休暇休業定義追加メソッド Shota FUJI authored at Shota FUJI comitted at
  231. 0fed61db react_ui: ワークスペース読込中表示 Shota FUJI authored at Shota FUJI comitted at
  232. 4a3f96a2 react_ui: エラー系の画面に Empty UI を適用 Shota FUJI authored at Shota FUJI comitted at
  233. dfefaccc react_ui: Empty UI をコンポーネント化 コピペされていたので。これからのページや既存のとりあえずの プレースホルダに必要になってくる。 Shota FUJI authored at Shota FUJI comitted at
  234. e5b0cabb pwa: 外部コードのライセンス表記 Shota FUJI authored at Shota FUJI comitted at
  235. daf7b3e8 react_ui: 著作権表記UI Shota FUJI authored at Shota FUJI comitted at
  236. 959e4301 react_ui: ワークスペースの取得フィールドをマスクする キーとか一覧でもらっても邪魔なだけなので。 Shota FUJI authored at Shota FUJI comitted at
  237. e34ee3c1 react_ui: ワークスペースを単体取得する 一覧は無駄すぎるので。 Shota FUJI authored at Shota FUJI comitted at
  238. 09f30015 idb_backend: ワークスペースを返すメソッドでマスクをする Shota FUJI authored at Shota FUJI comitted at
  239. fd70a66d idb_backend: マスク処理を汎用化 他のメソッドやメッセージで必ず必要になるため。 Shota FUJI authored at Shota FUJI comitted at
  240. ea2ba769 proto: ワークスペースを返すメソッド全てにマスクを追加 休暇休業データやそれに伴い増えるキーを考えると早めに実装 したほうが良さそうだったので。 Shota FUJI authored at Shota FUJI comitted at
  241. f88b189b idb_backend: ワークスペース単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  242. 5de14608 exactOptionalPropertyTypes を無効にした まさに百害あって一利なしだった。 key のチェックなどでは 確かに安心だろうが、既存のライブラリがこれらを一切考慮し ていないためエラー地獄。 Shota FUJI authored at Shota FUJI comitted at
  243. a09bf3b0 proto: ワークスペース単体取得メソッド パフォーマンス的にも利便性的にも必要だった。 Shota FUJI authored at Shota FUJI comitted at
  244. 5a67e0e3 idb_backend/pwa: 依存パッケージが間違ったモジュールにあるのを修正 Shota FUJI authored at Shota FUJI comitted at
  245. 4bc1c5d8 idb_backend: 開発に必要なパッケージが欠けているのを修正 1ab81605383a0f098f1c61ba916808339798823d で fake-indexeddb が抜け落ちてしまっていたが、 Bun が喜んで削除後のパッケージを node_modules に入れっぱなしにしていたせいでコードが動いて しまっており気づかなかった。別のマシンで `bun check` と `bun test` が失敗しているのを見て発覚。 Bun のパッケージマネージャーはまじでだめかもしれない。 Shota FUJI authored at Shota FUJI comitted at
  246. 774aa0c6 proto: 休暇休業定義をワークスペースに追加 まだ取得のみなので noop 。 実際に取得するイメージを持ち、システムデフォルトの休業を作成するための 定義。 Shota FUJI authored at Shota FUJI comitted at
  247. 4d2e6d88 proto: 労働実績モデル このシステムの最も重要となるデータ。 Shota FUJI authored at Shota FUJI comitted at
  248. 19d3f9fc ロックファイルを更新 新規で `bun i` をやったら差分が出た。 Bun のロックファイル周りの挙動は怪しすぎる。 Shota FUJI authored at Shota FUJI comitted at
  249. 11e11d81 react_ui: 労働者登録画面 Shota FUJI authored at Shota FUJI comitted at
  250. 1fcbb208 react_ui: 権限がない場合は労働者登録へのリンクを表示しない Shota FUJI authored at Shota FUJI comitted at
  251. 5c78ada0 react_ui: URLPattern 内の不正な正規表現を修正 polyfill はエラーにならないが、 Chrome だとエラーだった。 よく見てみると urlpattern-polyfill は仕様をちゃんと再現 しようとすらしてないっぽい? URLPattern API を使わないこと も含めて今後の方針は検討したほうがよさそう。 Shota FUJI authored at Shota FUJI comitted at
  252. 4632404e react_ui: トーストUI ワークスペース作成画面でフィードバックがなくわかりづらいと 感じたため。同じ問題は労働者登録画面でも起きるのでこの時点 で対応することにした。 Shota FUJI authored at Shota FUJI comitted at
  253. 591bf727 react_ui: Storybook 内でリンクを2回クリックする必要があるのを修正 useEffect がうまく動いていないのか、クリックリスナが連続して発火 している模様。 Shota FUJI authored at Shota FUJI comitted at
  254. 30a740c2 react_ui: ページをルーティングで構成 ページの追加をできる状態まで持っていった。 Shota FUJI authored at Shota FUJI comitted at
  255. 3f519c2c pwa: deprecated な React props を削除 ちゃんと動かないが暫定的な対応なので問題ない。 Shota FUJI authored at Shota FUJI comitted at
  256. 84d27db1 react_ui: ルーティング機能 UX としてはボタンで API を呼び出すのではなくアンカーリンクを使いたい ため。パスもこのパッケージが持つことになってしまうが、個別に管理する 手間を考えるとそこまでのドローバックでもないかなって気がする。 Shota FUJI authored at Shota FUJI comitted at
  257. 737d0300 pwa: 労働者一覧画面を表示する Shota FUJI authored at Shota FUJI comitted at
  258. 4ecc0205 idb_backend: WorkerService が必ずエラーになるのを修正 Shota FUJI authored at Shota FUJI comitted at
  259. fda542a9 react_ui: WorkerListPage が import できないのを修正 Shota FUJI authored at Shota FUJI comitted at
  260. 521aeea4 react_ui: .d.ts ファイルが正しく出力されないのを修正 types/src/components/*.ts のように吐き出されていた。 原因は tsc が .stories.tsx ファイルをトランスパイルしようとし、 それらが読み込んでいる .storybook/decorators/*.tsx までもトランス パイルしようとした結果 src/ からはみ出したため出力のルートディレ クトリを変えたこと。 tsc のこのクソ挙動はいつになったら治るのだ ろうか。 Shota FUJI authored at Shota FUJI comitted at
  261. 58c06980 react_ui: clean コマンドが types/ を削除しないのを修正 Shota FUJI authored at Shota FUJI comitted at
  262. 57305e72 react_ui: ワークスペース選択イベント 必要なのに忘れていた。 ロックファイルの更新は謎。トップレベルで `bun i` したら出てきた...。 Shota FUJI authored at Shota FUJI comitted at
  263. aa871258 react_ui: 労働者一覧画面 Shota FUJI authored at Shota FUJI comitted at
  264. 45ea1c74 react_ui: ワークスペース選択後画面のレイアウト 労働者系の画面を表示する際に必要になるため。 無くても MVP としてはどうにかなるが、実際にアプリケーション としてのイメージを持たせるためには必要。 Shota FUJI authored at Shota FUJI comitted at
  265. a7550f5d proto/idb_backend: KeyValueStorageBasedWorkspaceService を削除 これで WorkspaceService へのマイグレーションは完了。 Shota FUJI authored at Shota FUJI comitted at
  266. 53635089 react_ui: WorkspaceService へ移行 Shota FUJI authored at Shota FUJI comitted at
  267. fe83035b idb_backend: WorkspaceService をハンドルする 中身は KeyValueBasedStorageWorkspaceService と同じなので 処理は丸々使える。 Shota FUJI authored at Shota FUJI comitted at
  268. 09274fb4 idb_backend: WorkerService が登録されていないのを修正 しかもサービス名も間違えてたし。 実際にクライアントから叩いてないから気づかなかった。 Shota FUJI authored at Shota FUJI comitted at
  269. fd1eda20 proto: WorkspaceService を追加 KeyValueStorageBasedWorkspaceService は流石に長過ぎた。 Capability Key システムを導入したので、デスクトップ版で一覧や 削除ができない問題もなんとかなりそうなので思い切って改名する。 Shota FUJI authored at Shota FUJI comitted at
  270. 47f52d41 idb_backend: 労働者一覧取得メソッド Shota FUJI authored at Shota FUJI comitted at
  271. 5e9b3725 proto: 労働者一覧取得メソッド Shota FUJI authored at Shota FUJI comitted at
  272. a75ac4ce idb_backend: 労働者追加メソッド Shota FUJI authored at Shota FUJI comitted at
  273. 3edf4244 idb_backend: IndexedDBのデータを型付け `any` が原因となるエラーやミスが既に何度かあったため。 Shota FUJI authored at Shota FUJI comitted at
  274. 4b1ed95d idb_backend: ワークスペース削除・更新の capability worker_add はそもそも労働者追加メソッド自体がないため未実装。 Shota FUJI authored at Shota FUJI comitted at
  275. 3a0f59a3 proto: Capability ベースの権限管理機能 PWA 版ではワークスペースの管理はフルにできるが、デスクトップ版では ワークスペース = ファイルとなるためアプリケーション側から削除、 というのはあまりよろしくないので見せたくない。将来的なマルチユーザ なクラウド環境を考えても権限・サポートを capability として表現すれ ば UI 的にも API 的にも堅実に実装・設計ができる。 セキュリティコンテキストにおける capability の丁度いい日本語が 見つからない...。 Shota FUJI authored at Shota FUJI comitted at
  276. b0c86aa7 pwa: 無駄な余白を削除 Shota FUJI authored at Shota FUJI comitted at
  277. 6361e543 react_ui: 依存パッケージをバンドルしないように修正 Shota FUJI authored at Shota FUJI comitted at
  278. d2a9a17e react_ui: ワークスペース新規作成機能 Shota FUJI authored at Shota FUJI comitted at
  279. 222bd43e react_ui: ワークスペース選択画面のレイアウト Shota FUJI authored at Shota FUJI comitted at
  280. 9275bb5c react_ui: ワークスペース作成フォーム Shota FUJI authored at Shota FUJI comitted at
  281. f3934e43 react_ui: ワークスペース読み込みエラー表示 エラー表示はとても大切。汎用化して後で楽できるようにしておいた。 Shota FUJI authored at Shota FUJI comitted at
  282. 758e85c1 react_ui: Storybook上でRPCを動かす これがないとテストできてないも同然なので。 Shota FUJI authored at Shota FUJI comitted at
  283. a2544b33 idb_backend/pwa: バックエンド処理を別パッケージ化 react_ui の Storybook で使いたかったため。 Shota FUJI authored at Shota FUJI comitted at
  284. 0d574860 react_ui/pwa: RPC をUIパッケージ内で行う 基本的に UI は可能な限り全て共有とするため、通信層も揃える。 Shota FUJI authored at Shota FUJI comitted at
  285. d604dd56 Gleam 関連の設定を削除 少なくとも現状では使わなくなったため。 Shota FUJI authored at Shota FUJI comitted at
  286. 1ab81605 pwa/react_ui: React に切り替え 結局 CustomElement で TypeScript を触る羽目になること、 CustomElement で I/F を考えるのが非常に大変なことを鑑みて React にした。 Protobuf を使った Worker/IPC/HTTP のマルチプロトコル通信、という冒険を既に しているため、他のところで冒険する必要はないかなと思ったのがきっかけ。 正直スタイルを一から書くのがしんどい。 Radix で boring な UI を書いて MVP からのイテレーション地獄がアプリケーション開発としては正解だろう。 Shota FUJI authored at Shota FUJI comitted at
  287. 80acc21c gui: 単一セクションレイアウト Shota FUJI authored at Shota FUJI comitted at
  288. 666b23c8 gui: ドキュメントプレビューの padding をとれるようにした レイアウト系の UI を書くにあたり邪魔になってくるので。 Shota FUJI authored at Shota FUJI comitted at
  289. 8e364252 gui: ドキュメント内リンクのスタイル 他のテキストと同じで分かりづらかったため。 Shota FUJI authored at Shota FUJI comitted at
  290. 9556e8a3 gui: ドキュメントのコードスタイルの適用範囲が狭すぎるのを修正 具体的には yamori-workspace-list のページ先頭にあるリンク内の コードにスタイルが当たっていなかった。 Shota FUJI authored at Shota FUJI comitted at
  291. e6ed661d gui: lit-html の導入 頑張って素の DOM 操作でやってきたが、部分更新などでやはり無理 が出てきたためライブラリを導入した。 lit-html にした理由はこれが一番薄いから。なるべく素の Custom Element にするためには View 層にだけ専念したライブラリが必要 になる。 lit なんかは状態管理やら CustomElement の定義やらに 干渉してくるため、これが一番無難。また、利用者数も多く安定し ており、フロントエンド界隈では比較的枯れている。 Shota FUJI authored at Shota FUJI comitted at
  292. 18811534 gui: Empty が公開されていないのを修正 Shota FUJI authored at Shota FUJI comitted at
  293. ba500b5f gui: ワークスペース取得エラー時と空の際の UI Shota FUJI authored at Shota FUJI comitted at
  294. a90b5562 gui: Empty UI Result とか呼ばれたりすることもあるけど、用途を考えれば Empty の方が適切。 Shota FUJI authored at Shota FUJI comitted at
  295. 66531929 gui: `--foo` 形式の CustomState を利用しない 一部のバージョンの Chromium ブラウザ向けにフォールバックで利用 していたが、 Chrome がコンソールにエラーを出しやがるためやめた。 対象のバージョンのブラウザは属性を使うようになる。パフォーマンス への影響が不明だが、開発者側からはどうしようもできない短慮設計 なのでもう知らん。フォールバックを判別とかしてないし、まじでどう しようもない。 <https://chromestatus.com/feature/5140610730426368> Shota FUJI authored at Shota FUJI comitted at
  296. b6bacc5b gui: Callout が公開されてないのを修正 Shota FUJI authored at Shota FUJI comitted at
  297. 767c4238 gui: CustomElement の依存関係を declarative に表す 利用側がドキュメントや実装を見ながら手動で登録するのは error-prone なため。かといって全て登録するのはパフォーマンス的にも無駄。 Shota FUJI authored at Shota FUJI comitted at
  298. 7f84022f gui: Safari の動的 media 属性が反映されないバグについてコメント 後で見たとき用。 Bugzilla の検索が超アルティメットギガンティック ウンコだから、もしかしたらもっと適切なレポートが上がってるかも しれない。 Shota FUJI authored at Shota FUJI comitted at
  299. e2cb0e68 gui: ドキュメントの全画面表示時のアニメーション 特にテーマが同一時にわかりにくかったので。 view-transition-name だけ指定してスタイルはデフォルト任せだが、 どうやら Blink も Webkit も view-transition-name が指定されて いる場合は scale と opacity の同時アニメーションがデフォルト らしく、特に指定しなくてもいい感じになっているのでそのまま。 Shota FUJI authored at Shota FUJI comitted at
  300. 2fec305a gui: ドキュメントプレビューのフルスクリーン機能 画面の大部分を占めるような UI (e.g. Result/Empty, Layout) を書く際に 現状のプレビューサイズ、特にグリッドで列が 2 つ以上になった場合に まともな確認が難しくなるため。 リセット CSS に手を入れているのは Astro が body 内に script タグを 突っ込むため。 style も突っ込みかねないので念の為に書いた。 Shota FUJI authored at Shota FUJI comitted at
  301. e43772a1 check スクリプトを追加 型といったコードのプログラム的正当性を検査するためのコマンド。 Shota FUJI authored at Shota FUJI comitted at
  302. 3c38b9fe gui: ワークスペース一覧取得エラー時の UI Shota FUJI authored at Shota FUJI comitted at
  303. 5aa86a97 gui: 無効になったコードコメントの削除 Shota FUJI authored at Shota FUJI comitted at
  304. 0f33c4ed gui: コールアウトコンポーネント エラー表示なんかに必要なため。 Shota FUJI authored at Shota FUJI comitted at
  305. 5c9a9a0c gui: 読み込まれる CSS についてのドキュメントを作成 いちいち CSS ファイルを読み返すのは大変なので。 色とか文字組みに関しては気力が尽きたのでこのコミットには含まれず。 Shota FUJI authored at Shota FUJI comitted at
  306. 4a746bec gui: workspace.v1.ListResponse 表示 UI Protobuf のデータを受け取って表示する UI のサンプルとして実装。 そのため、足りない状態があったりエラー時の表示がテキストだけ だったりする。 Shota FUJI authored at Shota FUJI comitted at
  307. 20ed274b gui: Component という言葉の利用を限定 UI 要素の区分としても利用しているため、安易に使わないようにする。 Shota FUJI authored at Shota FUJI comitted at
  308. 6ce9c7b3 pwa: gui パッケージを導入 そもそも以前のコミットで gui パッケージが TypeScript のコンパイラバグ のせいでビルドできなくなってたり、 CustomElement として利用できな かったり (何故 Astro 上では見れていたのかは不明) していた。 なので gui 側にもちょこちょこ変更を加えている。 Shota FUJI authored at Shota FUJI comitted at
  309. 00903224 gui: <script> タグ内のインデントを一時的に廃止 markup_fmt のバグで最初の行以外インデントが効かない。 インデントがないよりも醜く見にくいためバグが直るまで インデントはかけない。 Shota FUJI authored at Shota FUJI comitted at
  310. e5c0a2b8 gui: カタログでナビゲーションが見切れるのを修正 メインが長いとナビゲーションも一緒に飛んでっちゃう。 Shota FUJI authored at Shota FUJI comitted at
  311. d8c21d6b gui: ボタンコンポーネント 必ず必要になるため。 リンクに使えるように Light DOM 仕様にしてもよかったが、 使い勝手を考えるとやはりゴリゴリと書いた単体完結のビルトイン 置き換え要素が良い。 Form の submit なんかが必要になったら `submit` 属性とかを 追加する必要はあるだろうが、現状の想定ではこれで十分。 Shota FUJI authored at Shota FUJI comitted at
  312. da8efd2d gui: スタイルガイドを Astro に変更 Vite の Multi-Page Application の DX が著しく低いため。 Astro も HTML やらモジュール周りでかなり酷いが、それでも Vite で 素の HTML を何枚も書くよりはかなりまし。 Shota FUJI authored at Shota FUJI comitted at
  313. 8de886de gui: 共有コンポーネントパッケージ 含まれているボタンコンポーネントはあくまでサンプル用で、挙動や I/F は 最終的に利用されるものとは異なる。 Shota FUJI authored at Shota FUJI comitted at
  314. dfeb6072 pwa: Gleam でワーカーの起動からリクエストまでを行う どんなものか見たかったため。正直 protobuf から生成された TS の 型定義やランタイムの検査結果を全部捨てるのは勿体ない気がする。 Gleam の protobuf コード生成も含めて方針は要検討。 Shota FUJI authored at Shota FUJI comitted at
  315. 656e5a34 pwa: パスエイリアスを設定 Gleam の JS 出力は未だに完全ではなく、 `build/` ファイルにそのまま 必要そうなファイルと一緒に出力するしかない。その結果、他のファイルを import したり、特に `src/` 直下以外から import しようとするとパスが ズレて import できない、といった問題に溢れている。 そのため、現状ではエイリアスを使って絶対パスに解決させるのが一番安全で 安定しているといえる。 Shota FUJI authored at Shota FUJI comitted at
  316. 43dab7ce pwa: Gleam の導入 流石に TypeScript で UI 書くのは論外なので。 ただ、どこまでを Gleam で書くのか、どのようなスタイルにするのかと いった部分は全く決まっていない。 Shota FUJI authored at Shota FUJI comitted at
  317. 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 Shota FUJI comitted at
  318. 5e79853a pwa: ワークスペースの削除メソッド Shota FUJI authored at Shota FUJI comitted at
  319. d1ab1038 pwa: IDB のトランザクション終了を待つ 多分読み切ってるし問題はないと思うけど、一応ね。 Shota FUJI authored at Shota FUJI comitted at
  320. 842d1edd pwa: ワークスペースの更新メソッド Shota FUJI authored at Shota FUJI comitted at
  321. 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 Shota FUJI comitted at
  322. 63fd0dd8 pwa: Worker が Rollup でビルドできない問題の修正 top-level await のあれ。 Shota FUJI authored at Shota FUJI comitted at
  323. 22ec9e8f proto: ワークスペース削除・更新メソッド 必要だから。UI実装時にこれがないと勢いが削がれて萎える。 Shota FUJI authored at Shota FUJI comitted at
  324. 859b35d1 pwa: IndexedDB を使ったワークスペースの作成・一覧処理 実際に書く雛形として IndexedDB へのアクセスとテストを書いた。 Shota FUJI authored at Shota FUJI comitted at
  325. 31135eff PWA での Protobuf 通信基礎 Service で定義されたリクエストとレスポンスを Web Worker 越しにやりとり する最低限のコード。今後どんなスタイル・ライブラリで書くにせよまず確実 に必要となるであろう部分を書いた。 Shota FUJI authored at Shota FUJI comitted at
  326. 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 Shota FUJI comitted at
  327. cf72bdb1 労働者追加までの protobuf 定義 アプリケーションの MVP を作るにあたり、とりあえず基礎を作るのに必要な データモデル定義をする必要があった。勤怠や休暇の記録を付けるにもまず 労働者の登録が必要だったため、この定義を優先して行った。 設定ファイルやドキュメントは protobuf やそれに関連するツールの追加に 伴い必要になったもの。 Shota FUJI authored at Shota FUJI comitted at
  328. be1ef017 Markdown で footnotes を使わない GFM の独自拡張であり、各ツールのサポートがほぼない状態のため。 Shota FUJI authored at Shota FUJI comitted at
  329. c887f487 プロジェクト概要とコードチェックインの基礎 最低限のプロジェクトの説明が先に存在しないと経験上迷走しやすいため、 最優先で作成した。また、コードフォーマットに関するものも最初期から ないと後々の diff が見づらくなるので現状必要なものを作成した。 Shota FUJI authored at Shota FUJI comitted at