Vyline DOCS

Submodules & Source Map

Git submoduleとモノレポworkspaceの役割、仕様の読み分け方。

Git submodule(4つ)

外部リポジトリを参照するのは次の4つです。いずれも git clone --recurse-submodules で取得できます。

PathRepository責務
Vyline/packages/protocoltqmane/vyline-apiLINE protocol, login, E2EE, RPC, domain facade
Vyline/packages/plugintqmane/vyline-pluginplugin SDK / examples / permission model
Vyline/packages/themestqmane/vyline-themeVyTheme型とpreset
toolstqmane/vyline-searchDesktop LINE version追跡、unpack、xref、decompile補助
サブモジュールとworkspaceの区別

Vyline/packages/ 配下は全部がサブモジュールというわけではなく、line-types(Thrift型のvendored定義)、types / loose-typescli / vyl / create-pluginios-backup など、モノレポ本体で管理するworkspace packageも並んでいます。「4 submodules」という表現は外部リポジトリを指すものだけを数えたものです。

Protocol

LINE通信仕様を調べるときの中心です。公開APIは src/index.ts、機能→調査地図は src/modules.map.ts、RPC対応表はsrc/dictionary/rpcMap.tsです。

Protocol内役割
stack/Thrift RPC、Talk/Login等の低レベル通信
src/login/QR/Email/Token、Desktop transport patch、E2EE identity
src/domain/Profile/Contacts/Chat/TalkのBackend向けfacade
src/dictionary/rpcMap.tsDesktop evidence → path → stack/domain/backendの対応
src/modules.map.ts機能単位の関連source・Desktop検索ヒント
src/updater/ / src/desktop/Desktop profile、version/header更新追従

Backendはworkspace dependencyとして@vyline/protocolを使います。Protocol単体checkoutだけでは@vyline/line-types/@vyline/loose-types等の兄弟workspace dependencyが必要になるため、通常はこのモノレポから開発します。

Plugin

submoduleにはSDKとexamplesを置き、メインリポジトリのBackendがruntimeを持ちます。@vyline/plugin-sdkdefinePlugin、manifest、permission、context/eventの型を提供します。

Vyline/packages/plugin (submodule)
  └─ sdk: public contract / examples
          ↓ workspace import
Vyline/backend/src/line/pluginManager.ts
  ├─ discover / enabled state
  └─ pluginRuntime.ts
       ├─ activate / deactivate
       ├─ permission-aware context
       └─ handler isolation

permission文字列が存在することと、すべてのcapabilityがruntimeで実装済みであることは同義ではありません。SDK型とBackend contextの両方を確認します。

Themes

THEME_PRESETSVyTheme 型を提供します。色だけでなくsurface/sidebar/message/radius/chat background/pattern等をtokenとして一式持ち、Frontendはpresetを直接ハードコードせずtheme contractとして扱います。

Tools

Desktop LINEの更新でProtocol側の前提を確認するときに使います。version check/update、Themida unpack、文字列・xref検索、Ghidra decompile補助を持ちます。実装対象を決める資料であり、Vyline本番serverへ同梱して動かすruntime dependencyではありません。

root script用途
bun run vyline:checkinstalled/running/latest version比較
bun run vyline:updateDesktop更新
bun run vyline:unpack対象LINE.exeのunpack
bun run vyline:find-native -- <name>string/xref/decompile経路でnative実体を探す
bun run vyline:deltaProtocol側feature mapから更新差分を絞る

変更先を決める

変更commitするrepositoryメイン側で必要なこと
LINE RPC/E2EE/logintqmane/vyline-apisubmodule pointer更新 + integration test
Plugin SDKtqmane/vyline-pluginBackend runtimeとの互換確認 + pointer更新
Theme preset/typetqmane/vyline-themeFrontendでrender確認 + pointer更新
Desktop解析tooltqmane/vyline-searchroot scriptsから動作確認 + pointer更新
Backend/UI/storageメインtqmane/vyline通常のworkspace変更

submodule内で修正しただけではメインrepositoryが新commitを参照しません。submodule側のcommitを作成した後、メイン側でそのcommitへのpointer差分を明示的に更新します。

Clone

git clone --recurse-submodules https://github.com/tqmane/vyline.git
cd vyline
git submodule status

既存cloneで空なら:

git submodule update --init --recursive

現在参照しているcommitはgit submodule status、変更の有無はgit status --shortで確認します。単にsubmodule内でgit pullしただけでは、メイン側の再現可能な参照commitは更新されません。

ページ名・設定名・エラー名で検索