├── cmd
├── desktop
│ └── desktop.go
├── mobile
│ └── mobile.go
├── main.go
└── helpers.go
├── lib
├── common
│ ├── resources
│ │ ├── deployments.dart
│ │ ├── pods.dart
│ │ └── resources.dart
│ ├── types.dart
│ ├── secrets.dart.gpg
│ ├── const.dart
│ ├── ops.dart
│ └── styles.dart
├── firebase_options.dart.gpg
├── pages
│ ├── settings
│ │ ├── apikey.dart
│ │ └── locale.dart
│ ├── not_found.dart
│ ├── k8s_list
│ │ └── cluster
│ │ │ ├── create.dart
│ │ │ └── select_clusters.dart
│ ├── workloads.dart
│ ├── resources.dart
│ └── k8s_detail
│ │ └── yaml_page.dart
├── providers
│ ├── talker.dart
│ ├── timeout.dart
│ ├── theme.dart
│ ├── revenuecat_customer.dart
│ ├── lang.dart
│ └── current_cluster.dart
├── services
│ ├── revenuecat.dart
│ ├── stash.dart
│ └── k8z_service.dart
├── widgets
│ ├── inherited.dart
│ ├── modal.dart
│ ├── set_api_timeout.dart
│ ├── context_provider.dart
│ ├── native_dialog.dart
│ ├── settings_tile.dart
│ ├── tiles.dart
│ ├── widgets.dart
│ ├── detail_widgets
│ │ ├── services.dart
│ │ ├── configmap.dart
│ │ └── secret.dart
│ └── virtual_keyboard.dart
├── models
│ ├── helm_release.dart
│ └── kubernetes
│ │ ├── helper.dart
│ │ ├── io_k8s_api_discovery_v1_for_zone.dart
│ │ ├── io_k8s_api_core_v1_daemon_endpoint.dart
│ │ ├── io_k8s_api_node_v1_overhead.dart
│ │ ├── io_k8s_api_core_v1_limit_range_spec.dart
│ │ ├── io_k8s_api_core_v1_sysctl.dart
│ │ ├── io_k8s_api_core_v1_pod_os.dart
│ │ ├── io_k8s_api_core_v1_http_header.dart
│ │ ├── io_k8s_api_core_v1_pod_readiness_gate.dart
│ │ ├── io_k8s_api_core_v1_node_selector.dart
│ │ ├── io_k8s_api_storage_v1_csi_node_spec.dart
│ │ ├── io_k8s_api_core_v1_scope_selector.dart
│ │ ├── io_k8s_api_core_v1_downward_api_projection.dart
│ │ └── io_k8s_api_flowcontrol_v1beta1_user_subject.dart
├── theme
│ └── kung.dart
├── dao
│ ├── dao.dart
│ └── kube.dart
└── generated
│ └── intl
│ └── messages_all.dart
├── assets
├── Icon2x.png
├── icon@8x.png
└── fonts
│ └── DroidSansMNerdFontMono-Regular.otf
├── images
└── icon
│ └── k8s-1.29.png
├── ios
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── LaunchImage.imageset
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
│ └── Info.plist
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── Runner.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── RunnerTests
│ └── RunnerTests.swift
├── .gitignore
├── Podfile
└── libs
│ └── libk8z.h
├── macos
├── installer-background.png
├── Runner
│ ├── Configs
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ ├── Warnings.xcconfig
│ │ └── AppInfo.xcconfig
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── app_icon_16.png
│ │ │ ├── app_icon_32.png
│ │ │ ├── app_icon_64.png
│ │ │ ├── app_icon_1024.png
│ │ │ ├── app_icon_128.png
│ │ │ ├── app_icon_256.png
│ │ │ ├── app_icon_512.png
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── MainFlutterWindow.swift
│ ├── Release.entitlements
│ ├── DebugProfile.entitlements
│ └── Info.plist
├── Flutter
│ ├── Flutter-Debug.xcconfig
│ ├── Flutter-Release.xcconfig
│ └── GeneratedPluginRegistrant.swift
├── .gitignore
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Runner.xcodeproj
│ ├── project.xcworkspace
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── RunnerTests
│ └── RunnerTests.swift
└── Podfile
├── tools.go
├── hack
├── clangwrap.sh
├── check_static_link.sh
├── codefix.sh
└── build_macos_dmg.sh
├── gopkg
├── k8z
│ ├── models
│ │ └── ephemeral.go
│ └── client.go
└── local
│ └── logsream.go
├── .metadata
├── .gitignore
├── .kiro
└── specs
│ └── google-analytics-page-title-fix
│ └── requirements.md
├── analysis_options.yaml
├── README.md
├── Makefile
├── CHANGELOG.md
└── go.mod
/cmd/desktop/desktop.go:
--------------------------------------------------------------------------------
1 | package desktop
2 |
--------------------------------------------------------------------------------
/cmd/mobile/mobile.go:
--------------------------------------------------------------------------------
1 | package mobile
2 |
--------------------------------------------------------------------------------
/lib/common/resources/deployments.dart:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/cmd/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | func main() {}
4 |
--------------------------------------------------------------------------------
/assets/Icon2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/assets/Icon2x.png
--------------------------------------------------------------------------------
/assets/icon@8x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/assets/icon@8x.png
--------------------------------------------------------------------------------
/lib/common/types.dart:
--------------------------------------------------------------------------------
1 | enum ShellType {
2 | pod,
3 | debug,
4 | node,
5 | }
6 |
--------------------------------------------------------------------------------
/images/icon/k8s-1.29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/images/icon/k8s-1.29.png
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 | #import "libk8z.h"
3 |
--------------------------------------------------------------------------------
/lib/common/secrets.dart.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/lib/common/secrets.dart.gpg
--------------------------------------------------------------------------------
/lib/firebase_options.dart.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/lib/firebase_options.dart.gpg
--------------------------------------------------------------------------------
/macos/installer-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/installer-background.png
--------------------------------------------------------------------------------
/macos/Runner/Configs/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Debug.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Release.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/assets/fonts/DroidSansMNerdFontMono-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/assets/fonts/DroidSansMNerdFontMono-Regular.otf
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/macos/Flutter/Flutter-Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/macos/Flutter/Flutter-Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k8zdev/k8z/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/macos/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter-related
2 | **/Flutter/ephemeral/
3 | **/Pods/
4 |
5 | # Xcode-related
6 | **/dgph
7 | **/xcuserdata/
8 |
9 | # Go build
10 | k8z.arm64.dylib
11 | k8z.arm64.h
12 | k8z.x64.dylib
13 | k8z.x64.h
14 | k8z.dylib
15 |
--------------------------------------------------------------------------------
/tools.go:
--------------------------------------------------------------------------------
1 | //go:build tools
2 | // +build tools
3 |
4 | // Package tools is used to force Go modules to download and install our dependencies used for our build pipeline.
5 | package tools
6 |
7 | import (
8 | _ "golang.org/x/mobile/cmd/gomobile"
9 | )
10 |
--------------------------------------------------------------------------------
/cmd/helpers.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | // #include
4 | // #include "stdint.h"
5 | import "C"
6 |
7 | func cstr2String(pointer *C.char, size C.int) string {
8 | if size == 0 || pointer == nil {
9 | return ""
10 | }
11 | return C.GoStringN(pointer, size)
12 | }
13 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/hack/clangwrap.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # go/clangwrap.sh
4 |
5 | SDK_PATH=$(xcrun --sdk $SDK --show-sdk-path)
6 | CLANG=$(xcrun --sdk $SDK --find clang)
7 |
8 | if [ "$GOARCH" == "amd64" ]; then
9 | CARCH="x86_64"
10 | elif [ "$GOARCH" == "arm64" ]; then
11 | CARCH="arm64"
12 | fi
13 |
14 | exec $CLANG -arch $CARCH -isysroot $SDK_PATH -mios-version-min=10.0 "$@"
15 |
--------------------------------------------------------------------------------
/macos/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import FlutterMacOS
2 | import Cocoa
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/macos/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | @main
5 | class AppDelegate: FlutterAppDelegate {
6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
7 | return true
8 | }
9 |
10 | override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
11 | return true
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/lib/pages/settings/apikey.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ApikeySettingPage extends StatefulWidget {
4 | const ApikeySettingPage({super.key});
5 |
6 | @override
7 | State createState() => _ApikeySettingPageState();
8 | }
9 |
10 | class _ApikeySettingPageState extends State {
11 | @override
12 | Widget build(BuildContext context) {
13 | return const Center(child: Text("api key settings"));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/macos/Runner/MainFlutterWindow.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | class MainFlutterWindow: NSWindow {
5 | override func awakeFromNib() {
6 | let flutterViewController = FlutterViewController()
7 | let windowFrame = self.frame
8 | self.contentViewController = flutterViewController
9 | self.setFrame(windowFrame, display: true)
10 |
11 | RegisterGeneratedPlugins(registry: flutterViewController)
12 |
13 | super.awakeFromNib()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/providers/talker.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:k8zdev/services/stash.dart';
3 |
4 | const String key = "app_talker_mode";
5 |
6 | class TalkerModeProvider with ChangeNotifier {
7 | bool? _enabled;
8 |
9 | bool? get enabled => _enabled;
10 |
11 | init() async {
12 | _enabled = await vget(key) ?? false;
13 | }
14 |
15 | void changeMode(mode) async {
16 | _enabled = mode;
17 | vset(key, mode);
18 | notifyListeners();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/macos/Runner/Release.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 | com.apple.security.network.client
10 |
11 | com.apple.security.network.server
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/lib/providers/timeout.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:k8zdev/services/stash.dart';
3 |
4 | const String key = "k8s_api_timeout";
5 |
6 | class TimeoutProvider extends ChangeNotifier {
7 | int _timeout = 30;
8 |
9 | int get timeout => _timeout;
10 |
11 | init() async {
12 | var timeout = await vget(key) ?? 30;
13 | _timeout = timeout;
14 | }
15 |
16 | void update(int seconds) {
17 | _timeout = seconds;
18 | vset(key, seconds);
19 | notifyListeners();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/hack/check_static_link.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | GRN='\x1B[32m'
3 | END='\x1B[0m'
4 |
5 | files=("build/ios/Release-iphoneos/Runner.app/Runner" "build/ios/iphoneos/Runner.app/Runner")
6 |
7 | for file in ${files[@]}; do
8 | echo -e "${GRN}check binary file ${file}${END}"
9 | bash -c "nm ${file} | egrep 'T _PinStatic'"
10 | bash -c "nm ${file} | egrep 'T _K8zRequest'"
11 | bash -c "nm ${file} | egrep 'T _FreePointer'"
12 | bash -c "nm ${file} | egrep 'T _LocalServerAddr'"
13 | bash -c "nm ${file} | egrep 'T _StartLocalServer'"
14 | done
15 |
--------------------------------------------------------------------------------
/macos/Runner/DebugProfile.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.files.user-selected.read-only
10 |
11 | com.apple.security.network.client
12 |
13 | com.apple.security.network.server
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/lib/providers/theme.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:k8zdev/services/stash.dart';
3 |
4 | const String key = "app_theme_mode";
5 |
6 | class ThemeModeProvider with ChangeNotifier {
7 | ThemeMode? _mode;
8 |
9 | ThemeMode? get mode => _mode;
10 |
11 | init() async {
12 | var modeIdx = await vget(key) ?? 0;
13 | _mode = ThemeMode.values[modeIdx];
14 | }
15 |
16 | void changeMode(ThemeMode mode) async {
17 | _mode = mode;
18 | vset(key, mode.index);
19 | notifyListeners();
20 | }
21 |
22 | bool isCurrent(ThemeMode mode) => _mode == mode;
23 | }
24 |
--------------------------------------------------------------------------------
/lib/services/revenuecat.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io' show Platform;
2 |
3 | import 'package:flutter/foundation.dart';
4 | import 'package:k8zdev/common/secrets.dart';
5 | import 'package:purchases_flutter/purchases_flutter.dart';
6 |
7 | Future initRevenueCatState() async {
8 | var level = kDebugMode || kProfileMode ? LogLevel.info : LogLevel.verbose;
9 | await Purchases.setLogLevel(level);
10 |
11 | late PurchasesConfiguration config;
12 | if (Platform.isIOS || Platform.isMacOS) {
13 | config = PurchasesConfiguration(revenueCatApplePublicKey);
14 | }
15 |
16 | await Purchases.configure(config);
17 | }
18 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
2 | GCC_WARN_UNDECLARED_SELECTOR = YES
3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
6 | CLANG_WARN_PRAGMA_PACK = YES
7 | CLANG_WARN_STRICT_PROTOTYPES = YES
8 | CLANG_WARN_COMMA = YES
9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES
10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
12 | GCC_WARN_SHADOW = YES
13 | CLANG_WARN_UNREACHABLE_CODE = YES
14 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/AppInfo.xcconfig:
--------------------------------------------------------------------------------
1 | // Application-level settings for the Runner target.
2 | //
3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
4 | // future. If not, the values below would default to using the project name when this becomes a
5 | // 'flutter create' template.
6 |
7 | // The application's name. By default this is also the title of the Flutter window.
8 | PRODUCT_NAME = k8z
9 |
10 | // The application's bundle identifier
11 | PRODUCT_BUNDLE_IDENTIFIER = dev.k8z.app
12 |
13 | // The copyright displayed in application information
14 | PRODUCT_COPYRIGHT = Copyright © 2024 k8z.dev All rights reserved.
15 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/lib/widgets/inherited.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:connectivity_plus/connectivity_plus.dart';
3 |
4 | const noneNetwork = ConnectivityResult.none;
5 |
6 | class AppScope extends InheritedWidget {
7 | final ConnectivityResult networkStatus;
8 |
9 | const AppScope({
10 | super.key,
11 | required this.networkStatus,
12 | required super.child,
13 | });
14 |
15 | static AppScope? of(BuildContext context) {
16 | return context.dependOnInheritedWidgetOfExactType();
17 | }
18 |
19 | bool get offline {
20 | return networkStatus == ConnectivityResult.none;
21 | }
22 |
23 | @override
24 | bool updateShouldNotify(AppScope oldWidget) {
25 | return networkStatus != oldWidget.networkStatus;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/pages/not_found.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class NotFoundPage extends StatefulWidget {
4 | final String title;
5 | final String info;
6 | const NotFoundPage({super.key, required this.title, required this.info});
7 |
8 | @override
9 | State createState() => _NotFoundPageState();
10 | }
11 |
12 | class _NotFoundPageState extends State {
13 | @override
14 | Widget build(BuildContext context) {
15 | return Scaffold(
16 | appBar: AppBar(title: Text(widget.title)),
17 | body: Center(
18 | child: TextButton.icon(
19 | onPressed: null,
20 | icon: const Icon(Icons.not_interested_rounded),
21 | label: Text(widget.info),
22 | ),
23 | ),
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/gopkg/k8z/models/ephemeral.go:
--------------------------------------------------------------------------------
1 | package models
2 |
3 | type EphemeralPatch struct {
4 | Spec EphemeralPatchSpec `json:"spec"`
5 | }
6 |
7 | type EphemeralPatchSpec struct {
8 | Ephemeralcontainers []Ephemeralcontainer `json:"ephemeralContainers"`
9 | }
10 |
11 | type Ephemeralcontainer struct {
12 | Name string `json:"name"`
13 | Command []string `json:"command"`
14 | Image string `json:"image"`
15 | Targetcontainername string `json:"targetContainerName"`
16 | Stdin bool `json:"stdin"`
17 | Tty bool `json:"tty"`
18 | Volumemounts []struct {
19 | Mountpath string `json:"mountPath"`
20 | Name string `json:"name"`
21 | Readonly bool `json:"readOnly"`
22 | } `json:"volumeMounts"`
23 | }
24 |
--------------------------------------------------------------------------------
/lib/services/stash.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:path/path.dart';
4 | import 'package:sqflite/sqflite.dart';
5 | import 'package:stash/stash_api.dart';
6 | import 'package:stash_sqlite/stash_sqlite.dart';
7 |
8 | late Vault vault;
9 | late Store store;
10 |
11 | Future initStash() async {
12 | var databasesPath = await getDatabasesPath();
13 | var file = File(join(databasesPath, 'vault.db'));
14 | final store = await newSqliteLocalVaultStore(file: file);
15 | vault = await store.vault(name: "k8z.config");
16 | }
17 |
18 | vset(String key, dynamic value) {
19 | Future.delayed(Duration.zero, () async {
20 | await vault.put(key, value);
21 | });
22 | }
23 |
24 | vget(String key) async {
25 | T? value = await vault.get(key);
26 | return value;
27 | }
28 |
--------------------------------------------------------------------------------
/lib/common/const.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/foundation.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | const minWinSize = Size(375, 667);
5 | const initWinSize = Size(600, 667);
6 | const bottomEdge = EdgeInsets.only(bottom: 60);
7 | const releaseMode = kDebugMode
8 | ? "debug"
9 | : kReleaseMode
10 | ? "release"
11 | : "profile";
12 | final privacyUrl = Uri(
13 | scheme: "https",
14 | host: "k8z.dev",
15 | path: "/docs/privacy/",
16 | );
17 |
18 | final docUrl = Uri(
19 | scheme: "https",
20 | host: "k8z.dev",
21 | path: "/docs/",
22 | query: "_f=app",
23 | );
24 |
25 | final stdeulaUrl = Uri(
26 | scheme: "https",
27 | host: "www.apple.com",
28 | path: "/legal/internet-services/itunes/dev/stdeula/",
29 | );
30 |
31 | final githubUrl = Uri(
32 | scheme: "https",
33 | host: "github.com",
34 | path: "/k8zdev/k8z",
35 | );
36 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 13.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @main
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | // WORKROUND: keep symbols of static library libk8z.a
11 | print("FreePointer address: \(String(describing: K8zRequest))")
12 | print("FreePointer address: \(String(describing: FreePointer))")
13 | print("FreePointer address: \(String(describing: LocalServerAddr))")
14 | print("FreePointer address: \(String(describing: StartLocalServer))")
15 | print("FreePointer address: \(String(describing: Json2yaml))")
16 |
17 | GeneratedPluginRegistrant.register(with: self)
18 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/models/helm_release.dart:
--------------------------------------------------------------------------------
1 | class Release {
2 | final String name;
3 | final String namespace;
4 | final String revision;
5 | final String updated;
6 | final String status;
7 | final String chart;
8 | final String appVersion;
9 | final String? description;
10 |
11 | Release({
12 | required this.name,
13 | required this.namespace,
14 | required this.revision,
15 | required this.updated,
16 | required this.status,
17 | required this.chart,
18 | required this.appVersion,
19 | this.description,
20 | });
21 |
22 | factory Release.fromJson(Map json) {
23 | return Release(
24 | name: json['name'],
25 | namespace: json['namespace'],
26 | revision: json['revision'],
27 | updated: json['updated'],
28 | status: json['status'],
29 | chart: json['chart'],
30 | appVersion: json['appVersion'],
31 | description: json['description'],
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/widgets/modal.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | void showModal(BuildContext context, Widget widget,
4 | {int minHeight = 400, double? height}) {
5 | if (minHeight < 100) {
6 | minHeight = 100;
7 | }
8 | showModalBottomSheet(
9 | context: context,
10 | isDismissible: true,
11 | showDragHandle: true,
12 | useRootNavigator: true,
13 | isScrollControlled: true,
14 | shape: const RoundedRectangleBorder(
15 | borderRadius: BorderRadius.vertical(top: Radius.circular(25.0)),
16 | ),
17 | builder: (BuildContext context) {
18 | return Container(
19 | height: height ?? minHeight.toDouble(),
20 | constraints: BoxConstraints(
21 | minHeight: minHeight.toDouble(),
22 | minWidth: MediaQuery.of(context).size.width,
23 | maxHeight: MediaQuery.of(context).size.height * 0.8,
24 | ),
25 | child: widget,
26 | );
27 | },
28 | );
29 | }
30 |
--------------------------------------------------------------------------------
/lib/common/ops.dart:
--------------------------------------------------------------------------------
1 | import 'package:talker_flutter/talker_flutter.dart';
2 | import 'package:firebase_crashlytics/firebase_crashlytics.dart';
3 |
4 | class CrashlyticsTalkerObserver extends TalkerObserver {
5 | CrashlyticsTalkerObserver();
6 |
7 | @override
8 | void onError(err) {
9 | FirebaseCrashlytics.instance.recordError(
10 | err.error,
11 | err.stackTrace,
12 | reason: err.message,
13 | );
14 | }
15 |
16 | @override
17 | void onException(err) {
18 | FirebaseCrashlytics.instance.recordError(
19 | err.exception,
20 | err.stackTrace,
21 | reason: err.message,
22 | );
23 | }
24 | }
25 |
26 | final crashlyticsTalkerObserver = CrashlyticsTalkerObserver();
27 | final logger = TalkerLogger(
28 | settings: TalkerLoggerSettings(
29 | // Set current logging level
30 | level: LogLevel.debug,
31 | ),
32 | );
33 | final talker = TalkerFlutter.init(
34 | logger: logger,
35 | observer: crashlyticsTalkerObserver,
36 | );
37 |
--------------------------------------------------------------------------------
/hack/codefix.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -x
4 |
5 | K8SMODELPATH=${1:-lib/models/kubernetes}
6 |
7 | echo "model path: ${K8SMODELPATH}\n"
8 |
9 | rm -fr ${K8SMODELPATH}/io_*.dart && cp tmp/lib/model/io_* ${K8SMODELPATH}
10 | find ${K8SMODELPATH} -type f -name 'io_*' -exec sed -i '' 's/openapi\.api/models\.k8s/g' {} +
11 | find "$K8SMODELPATH" -type f -name 'io_*.dart' -exec sh -c 'echo "part '\''kubernetes/$(echo "{}" | sed -e "s|^'$K8SMODELPATH'/||")'\'';"' \; >>lib/models/models.dart
12 | sed -i '' 's/enum_\:.*/enum_\: const \[\],/' $K8SMODELPATH/io_k8s_apiextensions_apiserver_pkg_apis_apiextensions_v1_json_schema_props.dart
13 | sed -i '' 's/Map> extra;/Map>? extra;/g' $K8SMODELPATH/io_*auth*.dart
14 | sed -i '' 's/Map> extra;/Map>? extra;/g' $K8SMODELPATH/io_*cert*.dart
15 | sed -i '' 's/DateTime.mapFromJson.*/mapValueOfType