chore: update roadmap and client platform registrations
This commit is contained in:
parent
5d6a9617aa
commit
e36d7f3141
14 changed files with 203 additions and 125 deletions
|
|
@ -21,7 +21,7 @@ ALT는 개인용 quant system workspace로, 한국장 일봉 MVP에서 시작해
|
|||
- 요약: 일봉 기반 strategy execution, backtest lifecycle, result persistence, repeatable verification을 만든다.
|
||||
- [계획] 운영 표면
|
||||
- 경로: `agent-roadmap/phase/operator-surface/PHASE.md`
|
||||
- 요약: NomadCode client 표준을 먼저 복제한 뒤 Flutter client에서 백테스트와 market data 상태를 조회하고 실행할 수 있는 operator console을 만든다.
|
||||
- 요약: Flutter client에서 백테스트와 market data 상태를 조회하고 실행할 수 있는 operator console을 만든다. client integration 복제 작업은 별도 프로젝트 산출물로 다룬다.
|
||||
- [계획] 거래 확장
|
||||
- 경로: `agent-roadmap/phase/trading-expansion/PHASE.md`
|
||||
- 요약: paper trading, 미국장 확장, 주문/리스크/포트폴리오, 실거래 adapter 경계를 MVP 이후 단계로 연다.
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ backtest 결과를 단순 성공/실패가 아니라 operator가 비교하고
|
|||
|
||||
## 상태
|
||||
|
||||
[진행중]
|
||||
[완료]
|
||||
|
||||
## 구현 잠금
|
||||
|
||||
|
|
@ -32,21 +32,23 @@ backtest 결과를 단순 성공/실패가 아니라 operator가 비교하고
|
|||
|
||||
operator가 backtest 결과를 조회, 비교, 해석할 수 있는 최소 분석 표면을 묶는다.
|
||||
|
||||
- [ ] [summary-metrics] ending equity 외 최소 summary metrics가 있다. 검증: Flutter client가 표시할 수 있는 result contract가 존재한다.
|
||||
- [ ] [equity-curve] run별 equity curve 또는 동등한 time-series result를 저장/조회한다. 검증: fixture 기반 result 조회 테스트가 통과한다.
|
||||
- [ ] [run-list] backtest run 목록과 상태를 조회할 수 있다. 검증: worker/API/client 경계가 backtest result를 일관되게 다룬다.
|
||||
- [ ] [run-detail] 단일 run의 spec, status, result를 조회할 수 있다.
|
||||
- [ ] [compare-runs] 둘 이상의 run을 비교할 기본 기준이 있다. 검증: `bin/test`와 `bin/lint`가 통과한다.
|
||||
- [x] [summary-metrics] ending equity 외 최소 summary metrics가 있다. 검증: Flutter client가 표시할 수 있는 result contract가 존재한다.
|
||||
- [x] [equity-curve] run별 equity curve 또는 동등한 time-series result를 저장/조회한다. 검증: fixture 기반 result 조회 테스트가 통과한다.
|
||||
- [x] [run-list] backtest run 목록과 상태를 조회할 수 있다. 검증: worker/API/client 경계가 backtest result를 일관되게 다룬다.
|
||||
- [x] [run-detail] 단일 run의 spec, status, result를 조회할 수 있다.
|
||||
- [x] [compare-runs] 둘 이상의 run을 비교할 기본 기준이 있다. 검증: `bin/test`와 `bin/lint`가 통과한다.
|
||||
|
||||
## 완료 리뷰
|
||||
|
||||
- 상태: 없음
|
||||
- 요청일: 없음
|
||||
- 완료 근거: 아직 기능 Task와 각 Task의 검증 조건이 충족되지 않았다.
|
||||
- 상태: 승인됨
|
||||
- 요청일: 2026-05-30
|
||||
- 완료 근거: contract에 summary metrics, equity curve, run list/detail/compare request/response shape가 있고 API/client parser boundary가 등록되어 있다.
|
||||
- 완료 근거: worker engine과 postgres storage가 summary/equity curve 저장, run list/detail, compare result read path를 제공한다.
|
||||
- 완료 근거: `bin/test`가 통과했고, 직전 code-review에서 API/client socket boundary task가 PASS 처리되었다.
|
||||
- 리뷰 필요:
|
||||
- [ ] 사용자가 완료 결과를 확인했다
|
||||
- [ ] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 없음
|
||||
- [x] 사용자가 완료 결과를 확인했다
|
||||
- [x] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 사용자 요청으로 완료 처리하고 archive 이동한다.
|
||||
|
||||
## 범위 제외
|
||||
|
||||
|
|
@ -2,19 +2,14 @@
|
|||
|
||||
## 활성 Phase
|
||||
|
||||
- [진행중] 백테스트 루프
|
||||
- 경로: `agent-roadmap/phase/backtest-loop/PHASE.md`
|
||||
- [계획] 운영 표면
|
||||
- 경로: `agent-roadmap/phase/operator-surface/PHASE.md`
|
||||
|
||||
## 활성 Milestone
|
||||
|
||||
- [진행중] Backtest Analysis Surface
|
||||
- Phase: `agent-roadmap/phase/backtest-loop/PHASE.md`
|
||||
- 경로: `agent-roadmap/phase/backtest-loop/milestones/backtest-analysis-surface.md`
|
||||
- [계획] Client Integration Clone Adoption
|
||||
- [계획] Flutter Operator Console
|
||||
- Phase: `agent-roadmap/phase/operator-surface/PHASE.md`
|
||||
- 경로: `agent-roadmap/phase/operator-surface/milestones/client-integration-clone-adoption.md`
|
||||
- 경로: `agent-roadmap/phase/operator-surface/milestones/flutter-operator-console.md`
|
||||
|
||||
## 선택 규칙
|
||||
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
- [완료] Backtest Engine Baseline
|
||||
- 경로: `agent-roadmap/archive/phase/backtest-loop/milestones/backtest-engine-baseline.md`
|
||||
- 요약: 일봉 데이터를 기준으로 재현 가능한 backtest execution loop와 결과 저장을 만든다.
|
||||
- [진행중] Backtest Analysis Surface
|
||||
- 경로: `agent-roadmap/phase/backtest-loop/milestones/backtest-analysis-surface.md`
|
||||
- [완료] Backtest Analysis Surface
|
||||
- 경로: `agent-roadmap/archive/phase/backtest-loop/milestones/backtest-analysis-surface.md`
|
||||
- 요약: backtest 결과를 operator가 비교하고 해석할 수 있는 기본 분석 표면을 만든다.
|
||||
- [스케치] Finance Agent Research Sidecar Sketch
|
||||
- 경로: `agent-roadmap/phase/backtest-loop/milestones/finance-agent-research-sidecar-sketch.md`
|
||||
|
|
|
|||
|
|
@ -6,17 +6,13 @@
|
|||
|
||||
## 목표
|
||||
|
||||
Flutter client를 ALT의 공식 operator surface로 삼아 market data 상태와 backtest 실행 및 결과를 조회할 수 있게 한다. 먼저 NomadCode client 표준에서 정리된 skeleton, bootstrap, proto-socket, Mattermost push host integration 경계를 복제하고, web/mobile/desktop 단일 UI 표면을 유지하면서 API와 generated contract 기준을 맞춘다.
|
||||
Flutter client를 ALT의 공식 operator surface로 삼아 market data 상태와 backtest 실행 및 결과를 조회할 수 있게 한다. client integration 복제와 push host integration 정리는 별도 프로젝트 산출물로 받고, 이 Phase에서는 web/mobile/desktop 단일 UI 표면을 유지하면서 API와 generated contract 기준을 맞춘다.
|
||||
|
||||
## Milestone 흐름
|
||||
|
||||
완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다.
|
||||
완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다.
|
||||
|
||||
- [계획] Client Integration Clone Adoption
|
||||
- 경로: `agent-roadmap/phase/operator-surface/milestones/client-integration-clone-adoption.md`
|
||||
- 요약: NomadCode client 표준을 ALT `apps/client`에 복제하기 위한 bootstrap, proto-socket, Mattermost push host integration, Riverpod/go_router 결합 기준을 정리한다.
|
||||
|
||||
- [계획] Flutter Operator Console
|
||||
- 경로: `agent-roadmap/phase/operator-surface/milestones/flutter-operator-console.md`
|
||||
- 요약: Flutter client에서 market data, backtest run, result를 조회하고 실행 요청할 수 있는 운영 화면을 만든다.
|
||||
|
|
@ -26,4 +22,4 @@ Flutter client를 ALT의 공식 operator surface로 삼아 market data 상태와
|
|||
- 이 Phase는 Flutter client의 운영 화면과 API/client 통신 표면에 집중한다.
|
||||
- 별도 TypeScript web app, 고급 charting 전체, mobile app store 배포 설정은 제외한다.
|
||||
- UI는 generated/mapped contracts와 proto-socket client layer를 기준으로 API와 통신한다.
|
||||
- `../nomadcode`에서 정리한 client 표준을 복제할 때는 product feature 전체가 아니라 client skeleton, integration boundary, bootstrap convention, 문서화된 handoff 기준만 가져온다.
|
||||
- client skeleton, bootstrap convention, push host integration 복제는 이 프로젝트의 별도 Milestone으로 두지 않고 외부 프로젝트 산출물로 추후 반영한다.
|
||||
|
|
|
|||
|
|
@ -1,93 +0,0 @@
|
|||
# Milestone: Client Integration Clone Adoption
|
||||
|
||||
## 위치
|
||||
|
||||
- Roadmap: `agent-roadmap/ROADMAP.md`
|
||||
- Phase: `agent-roadmap/phase/operator-surface/PHASE.md`
|
||||
|
||||
## 목표
|
||||
|
||||
NomadCode의 `Client Integration Standardization` 결과를 ALT `apps/client`에 복제 가능한 형태로 반영한다. 기존 Riverpod/go_router client 구조를 유지하면서 Web + Android 우선 Dart bootstrap, proto-socket, Mattermost push host integration, iOS 후속 확장 경계를 ALT operator surface에 맞게 정리한다.
|
||||
|
||||
## 상태
|
||||
|
||||
[계획]
|
||||
|
||||
## 구현 잠금
|
||||
|
||||
- 상태: 잠금
|
||||
- 결정 필요: 아래 체크리스트
|
||||
- [ ] NomadCode client 표준화 산출물을 받은 뒤 ALT client에 복제할 파일/구조/설정 범위를 확정한다.
|
||||
- [ ] Riverpod/go_router feature-first 구조와 공통 client skeleton을 결합할 기준을 결정한다.
|
||||
- [ ] ALT에서 Mattermost push routing을 operator notification, 외부 링크, 실행 이벤트 중 어디로 연결할지 결정한다.
|
||||
|
||||
## 범위
|
||||
|
||||
- 기존 `apps/client` 모듈을 유지하면서 공통 client skeleton 정렬
|
||||
- Web + Android 우선 bootstrap과 platform guard 반영
|
||||
- proto-socket Dart client 설정, endpoint 주입, connection lifecycle 정리
|
||||
- Mattermost push plugin host integration 반영
|
||||
- Firebase host 설정과 token/auth/signing key 전달 경계 정리
|
||||
- iOS는 동일 Dart API 위의 후속 native 확장 대상으로 문서화
|
||||
- NomadCode에서 복제할 skeleton과 ALT에서 치환할 product-specific 항목 문서화
|
||||
|
||||
## 필수 기능
|
||||
|
||||
### Epic: [client-clone] Client standard clone
|
||||
|
||||
NomadCode client 표준을 ALT client 구조에 맞게 복제한다.
|
||||
|
||||
- [ ] [module-name] 기존 `apps/client` 모듈을 유지하고 package/app 표시 이름의 ALT 정체성 유지 기준을 문서화한다.
|
||||
- [ ] [bootstrap] Web + Android 우선 bootstrap과 platform-specific initialization guard를 반영한다.
|
||||
- [ ] [folder-layout] `src/app`, `src/integrations`, `src/features` 기준의 client skeleton을 Riverpod/go_router 구조와 맞춘다.
|
||||
|
||||
### Epic: [integration-clone] Integration clone boundary
|
||||
|
||||
공통 integration 경계를 ALT operator surface에 맞춰 연결한다.
|
||||
|
||||
- [ ] [proto-socket] proto-socket connection lifecycle과 endpoint configuration을 client integration으로 정리한다.
|
||||
- [ ] [mattermost-push] Mattermost push는 plugin runtime을 사용하고 host는 Firebase config, auth/token/signing key, routing callback만 소유한다.
|
||||
- [ ] [platform-targets] Web과 Android를 1차 target으로 검증하고 iOS 후속 확장 경계를 문서화한다.
|
||||
|
||||
### Epic: [handoff] Clone handoff
|
||||
|
||||
NomadCode 표준과 ALT 차이를 추적 가능하게 남긴다.
|
||||
|
||||
- [ ] [clone-checklist] NomadCode에서 가져올 항목과 ALT에서 치환할 항목을 checklist로 남긴다.
|
||||
- [ ] [riverpod] Riverpod provider 경계와 go_router navigation 경계에 integration을 배치하는 기준을 문서화한다.
|
||||
- [ ] [related-locks] Flutter operator surface 진행 milestone은 이 milestone의 표준 적용 범위가 확정되기 전까지 잠금 상태로 둔다.
|
||||
|
||||
## 완료 기준
|
||||
|
||||
- [ ] ALT `apps/client`가 client 표준 skeleton과 기존 Riverpod/go_router 구조를 충돌 없이 함께 따른다.
|
||||
- [ ] Web build와 Android integration이 같은 Dart bootstrap 기준에서 설명되고 검증된다.
|
||||
- [ ] proto-socket과 Mattermost push integration 책임 경계가 host/plugin/API 사이에서 충돌 없이 설명된다.
|
||||
- [ ] iOS가 Android-only 예외가 아니라 동일 Dart API 위의 후속 확장 대상으로 문서화된다.
|
||||
- [ ] `Flutter Operator Console` milestone과 충돌하는 범위가 잠금 또는 후속 작업으로 정리되어 있다.
|
||||
|
||||
## 완료 리뷰
|
||||
|
||||
- 상태: 없음
|
||||
- 요청일: 없음
|
||||
- 완료 근거: 없음
|
||||
- 리뷰 필요:
|
||||
- [ ] 사용자가 완료 결과를 확인했다
|
||||
- [ ] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 없음
|
||||
|
||||
## 범위 제외
|
||||
|
||||
- NomadCode 제품 feature 전체 복제
|
||||
- ALT quant feature 화면 구현
|
||||
- iOS native push full implementation
|
||||
- Mattermost push plugin runtime 대규모 재작성
|
||||
- API protobuf schema 세부 확정
|
||||
|
||||
## 작업 컨텍스트
|
||||
|
||||
- 관련 경로: `apps/client/`, `packages/contracts/`, `services/api/`, `../nomadcode/apps/client`, `../mattermost-push-plugin/`
|
||||
- 표준선(선택): ALT는 기존 `apps/client` 경로와 Riverpod/go_router app shell을 유지하고, 공통 integration skeleton만 맞춘다.
|
||||
- 표준선(선택): NomadCode에서 가져올 것은 client skeleton, integration boundary, bootstrap convention, handoff 문서이며 제품 feature는 복제하지 않는다.
|
||||
- 선행 작업: NomadCode `Client Integration Standardization`, Socket Session Loop
|
||||
- 후속 작업: Flutter Operator Console
|
||||
- 확인 필요: 구현 잠금의 결정 필요 항목 참고.
|
||||
|
|
@ -17,9 +17,9 @@ Flutter client를 ALT의 공식 UI client로 삼아 market data 상태, backtest
|
|||
|
||||
- 상태: 잠금
|
||||
- 결정 필요: 아래 체크리스트
|
||||
- [ ] Client Integration Clone Adoption 완료 전 operator console 화면 구현을 어디까지 진행할지 결정한다.
|
||||
- [ ] 별도 client integration 프로젝트 산출물 반영 전 operator console 화면 구현을 어디까지 진행할지 결정한다.
|
||||
- [ ] Riverpod/go_router app shell에 공통 client skeleton과 integration boundary를 결합하는 기준을 확정한다.
|
||||
- [ ] push notification은 이 milestone 범위 제외로 유지하고 clone milestone에서 host integration으로 다룰지 확인한다.
|
||||
- [ ] push notification은 이 milestone 범위 제외로 유지하고 별도 client integration 프로젝트 산출물로 다룰지 확인한다.
|
||||
|
||||
## 범위
|
||||
|
||||
|
|
@ -71,6 +71,7 @@ market data와 backtest 상태를 조회하고 실행 요청할 수 있는 Flutt
|
|||
|
||||
- 관련 경로: `apps/client/`, `packages/contracts/`, `services/api/`
|
||||
- 표준선(선택): Flutter는 feature-first Clean Architecture와 Riverpod을 기본 설계 프레임으로 삼는다.
|
||||
- 선행 작업: Client Integration Clone Adoption, Socket Session Loop, Backtest Analysis Surface
|
||||
- 선행 작업: Socket Session Loop, Backtest Analysis Surface
|
||||
- 외부 산출물: client skeleton, bootstrap convention, push host integration 복제는 별도 client integration 프로젝트 결과를 추후 반영한다.
|
||||
- 후속 작업: Paper Trading Readiness
|
||||
- 확인 필요: 구현 잠금의 결정 필요 항목 참고.
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@
|
|||
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||
|
||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
|
||||
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
url_launcher_linux
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
|
|
|
|||
|
|
@ -5,6 +5,14 @@
|
|||
import FlutterMacOS
|
||||
import Foundation
|
||||
|
||||
import firebase_core
|
||||
import firebase_messaging
|
||||
import nexo_messaging
|
||||
import url_launcher_macos
|
||||
|
||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
||||
NexoMessagingPlugin.register(with: registry.registrar(forPlugin: "NexoMessagingPlugin"))
|
||||
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "93.0.0"
|
||||
_flutterfire_internals:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: _flutterfire_internals
|
||||
sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.59"
|
||||
analyzer:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -129,6 +137,54 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.1"
|
||||
firebase_core:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_core
|
||||
sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.15.2"
|
||||
firebase_core_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_platform_interface
|
||||
sha256: "0ecda14c1bfc9ed8cac303dd0f8d04a320811b479362a9a4efb14fd331a473ce"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.3"
|
||||
firebase_core_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_web
|
||||
sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.24.1"
|
||||
firebase_messaging:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging
|
||||
sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "15.2.10"
|
||||
firebase_messaging_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_platform_interface
|
||||
sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.6.10"
|
||||
firebase_messaging_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_web
|
||||
sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.10.10"
|
||||
fixnum:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -202,6 +258,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "17.2.3"
|
||||
http:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: http
|
||||
sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.6.0"
|
||||
http_multi_server:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -303,6 +367,13 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
nexo_messaging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../../../nexo/packages/messaging_flutter"
|
||||
relative: true
|
||||
source: path
|
||||
version: "0.0.1"
|
||||
node_preamble:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -335,6 +406,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.6"
|
||||
plugin_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: plugin_platform_interface
|
||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.8"
|
||||
pool:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -531,6 +610,70 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
url_launcher:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.2"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "17bc677f0b301615530dd1d67e0a9828cafa2d0b6b6eae4cd3679b7eac4a273c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.30"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: "580fe5dfb51671ae38191d316e027f6b76272b026370708c2d898799750a02b0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.4.1"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_linux
|
||||
sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.2"
|
||||
url_launcher_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.5"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_platform_interface
|
||||
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
url_launcher_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.3"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.5"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -605,4 +748,4 @@ packages:
|
|||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.11.3 <4.0.0"
|
||||
flutter: ">=3.35.0"
|
||||
flutter: ">=3.38.0"
|
||||
|
|
|
|||
|
|
@ -36,11 +36,24 @@ dependencies:
|
|||
cupertino_icons: ^1.0.8
|
||||
flutter_riverpod: ^3.3.1
|
||||
go_router: ^17.2.3
|
||||
|
||||
# Firebase
|
||||
firebase_core: ^3.13.0
|
||||
|
||||
# Nexo messaging / Mattermost-compatible push plugin
|
||||
nexo_messaging:
|
||||
path: ../../../nexo/packages/messaging_flutter
|
||||
|
||||
protobuf: ^6.0.0
|
||||
fixnum: ^1.1.1
|
||||
proto_socket:
|
||||
path: ../../../proto-socket/dart
|
||||
|
||||
# HTTP client
|
||||
http: ^1.3.0
|
||||
|
||||
url_launcher: ^6.3.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
|
|
|||
|
|
@ -6,6 +6,12 @@
|
|||
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
#include <firebase_core/firebase_core_plugin_c_api.h>
|
||||
#include <url_launcher_windows/url_launcher_windows.h>
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
FirebaseCorePluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
|
||||
UrlLauncherWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
firebase_core
|
||||
url_launcher_windows
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
|
|
|
|||
Loading…
Reference in a new issue