Commits at 8e16a06288cd5913b670dcd78c0d66e0d1687d32
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