Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
ff30626
fix login page import
mbecker20 Apr 3, 2026
2c6b044
update to mantine v9, reduce the border radius on some things
mbecker20 Apr 3, 2026
2bdf354
deploy 2.2.0-dev-1
mbecker20 Apr 3, 2026
556505c
move theme to mogh ui
mbecker20 Apr 3, 2026
143645f
start moving stuff to mogh_ui
mbecker20 Apr 3, 2026
7f3098f
move more components to mogh_ui
mbecker20 Apr 3, 2026
c3ecd64
move section to mogh_ui
mbecker20 Apr 3, 2026
5b5f694
move confirm button
mbecker20 Apr 3, 2026
04c8d08
move colors and formatting to mogh_ui
mbecker20 Apr 3, 2026
94c0406
move more to mogh_ui
mbecker20 Apr 3, 2026
4132396
move more components to mogh ui
mbecker20 Apr 3, 2026
c1d7e28
move entity header / page to mogh ui
mbecker20 Apr 3, 2026
5c62564
move monaco to mogh_monaco
mbecker20 Apr 3, 2026
65fbcb1
move config / monaco to mogh ui
mbecker20 Apr 3, 2026
7eeff0e
move text update modal to mogh ui, empty ui folder
mbecker20 Apr 3, 2026
5225562
deploy 2.2.0-dev-2
mbecker20 Apr 3, 2026
4d769cb
move auth hooks to mogh_ui
mbecker20 Apr 4, 2026
7a4b4b5
move login to mogh ui
mbecker20 Apr 4, 2026
a7be841
move profile management to mogh ui
mbecker20 Apr 4, 2026
4afc7dd
add missing dedupe deps
mbecker20 Apr 4, 2026
fe651e1
bump mogh ui deps
mbecker20 Apr 4, 2026
a92764c
expand shell process path static load
mbecker20 Apr 4, 2026
a53c030
move filterBySplit to mogh_ui
mbecker20 Apr 4, 2026
7d08497
align core aio dockerfile
mbecker20 Apr 5, 2026
da49626
bump mogh ui
mbecker20 Apr 5, 2026
f5f244a
add published mogh_auth_client
mbecker20 Apr 5, 2026
e8f74ca
Add OIDC auto-redirect config to Core
johnmaguire Apr 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
26 changes: 13 additions & 13 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ members = [
]

[workspace.package]
version = "2.1.1"
version = "2.2.0-dev-2"
edition = "2024"
authors = ["mbecker20 <becker.maxh@gmail.com>"]
license = "GPL-3.0-or-later"
Expand Down
3 changes: 2 additions & 1 deletion bin/core/aio.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ ENV KOMODO_CLI_CONFIG_PATHS="/config"
# This ensures any `komodo.cli.*` takes precedence over the Core `/config/*config.*`
ENV KOMODO_CLI_CONFIG_KEYWORDS="*config.*,*komodo.cli*.*"

CMD [ "/bin/bash", "-c", "update-ca-certificates && core" ]
ENTRYPOINT [ "entrypoint.sh" ]
CMD [ "core" ]

# Label to prevent Komodo from stopping with StopAllContainers
LABEL komodo.skip="true"
Expand Down
1 change: 1 addition & 0 deletions bin/core/src/auth/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,7 @@ impl AuthImpl for KomodoAuthImpl {
additional_audiences: config
.oidc_additional_audiences
.clone(),
auto_redirect: config.oidc_auto_redirect,
}
});
Some(&OIDC_CONFIG)
Expand Down
3 changes: 3 additions & 0 deletions bin/core/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,9 @@ pub fn core_config() -> &'static CoreConfig {
env.komodo_oidc_additional_audiences,
)
.unwrap_or(config.oidc_additional_audiences),
oidc_auto_redirect: env
.komodo_oidc_auto_redirect
.unwrap_or(config.oidc_auto_redirect),
google_oauth: NamedOauthConfig {
enabled: env
.komodo_google_oauth_enabled
Expand Down
10 changes: 10 additions & 0 deletions client/core/rs/src/entities/config/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,8 @@ pub struct Env {
pub komodo_oidc_additional_audiences: Option<Vec<String>>,
/// Override `oidc_additional_audiences` from file
pub komodo_oidc_additional_audiences_file: Option<PathBuf>,
/// Override `oidc_auto_redirect`
pub komodo_oidc_auto_redirect: Option<bool>,

/// Override `google_oauth.enabled`
pub komodo_google_oauth_enabled: Option<bool>,
Expand Down Expand Up @@ -525,6 +527,12 @@ pub struct CoreConfig {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub oidc_additional_audiences: Vec<String>,

/// Automatically redirect unauthenticated users to the OIDC provider
/// instead of showing the login page.
/// Users can bypass the redirect by appending `?disableAutoLogin` to the login URL.
#[serde(default)]
pub oidc_auto_redirect: bool,

// =========
// = Oauth =
// =========
Expand Down Expand Up @@ -837,6 +845,7 @@ impl Default for CoreConfig {
oidc_client_secret: Default::default(),
oidc_use_full_email: Default::default(),
oidc_additional_audiences: Default::default(),
oidc_auto_redirect: Default::default(),
google_oauth: Default::default(),
github_oauth: Default::default(),
auth_rate_limit_disabled: Default::default(),
Expand Down Expand Up @@ -932,6 +941,7 @@ impl CoreConfig {
.iter()
.map(|aud| empty_or_redacted(aud))
.collect(),
oidc_auto_redirect: config.oidc_auto_redirect,
google_oauth: NamedOauthConfig {
enabled: config.google_oauth.enabled,
client_id: empty_or_redacted(&config.google_oauth.client_id),
Expand Down
4 changes: 2 additions & 2 deletions client/core/ts/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "komodo_client",
"version": "2.1.1",
"version": "2.2.0",
"description": "Komodo client package",
"homepage": "https://komo.do",
"main": "dist/lib.js",
Expand All @@ -13,7 +13,7 @@
"build": "tsc"
},
"dependencies": {
"mogh_auth_client": "^1.2.1"
"mogh_auth_client": "^1.3.0"
},
"devDependencies": {
"typescript": "^6.0.2"
Expand Down
8 changes: 4 additions & 4 deletions client/core/ts/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ jwt-decode@^4.0.0:
resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b"
integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==

mogh_auth_client@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/mogh_auth_client/-/mogh_auth_client-1.2.1.tgz#c8b5e9da101dc8da7b30586e5c5463f5f7a95edb"
integrity sha512-8uUjgqagwbMW8BKtTRzfQ4txpw+54hqLszbIvcYf99murVIQu5+NsRZ8/vjP/fOMawgXJXCVsR6O2lamm1BCnQ==
mogh_auth_client@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/mogh_auth_client/-/mogh_auth_client-1.3.0.tgz#0effd785ccff7a69ab7c900ccffba5a1d5b42015"
integrity sha512-96vCjtx+hP3sFNpfXjbs/eQfz/c6GBYA+MGOgj/9n2B2xJwtm7UDt/9p8OA2JqPXL/9zml5sH6oXIakiRoFsJg==
dependencies:
jwt-decode "^4.0.0"

Expand Down
7 changes: 7 additions & 0 deletions config/core.config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,13 @@ oidc_use_full_email = false
## Default: empty
oidc_additional_audiences = []

## Automatically redirect unauthenticated users to the OIDC provider
## instead of showing the login page.
## Users can bypass the redirect by appending `?disableAutoLogin` to the login URL.
## Env: KOMODO_OIDC_AUTO_REDIRECT
## Default: false
oidc_auto_redirect = false

#########
# OAUTH #
#########
Expand Down
7 changes: 6 additions & 1 deletion lib/command/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,13 @@ fn shell() -> &'static str {
String::from("/bin/bash")
} else if PathBuf::from("/usr/bin/bash").exists() {
String::from("/usr/bin/bash")
} else {
} else if PathBuf::from("/bin/sh").exists() {
String::from("/bin/sh")
} else if PathBuf::from("/usr/bin/sh").exists() {
String::from("/usr/bin/sh")
} else {
// try to use sh wherever it is on host by name.
String::from("sh")
}
})
}
Expand Down
28 changes: 15 additions & 13 deletions ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,36 @@
"build-client": "cd ../client/core/ts && yarn && yarn build && yarn link"
},
"dependencies": {
"@mantine/core": "^8.3.15",
"@mantine/form": "^8.3.15",
"@mantine/hooks": "^8.3.15",
"@mantine/notifications": "^8.3.15",
"@mantine/spotlight": "^8.3.15",
"@mantine/core": "^9.0.0",
"@mantine/form": "^9.0.0",
"@mantine/hooks": "^9.0.0",
"@mantine/notifications": "^9.0.0",
"@mantine/spotlight": "^9.0.0",
"@monaco-editor/react": "^4.7.0",
"@tanstack/react-query": "^5.90.21",
"@tanstack/react-query": "^5.96.1",
"@tanstack/react-table": "^8.21.3",
"@xterm/addon-fit": "^0.11.0",
"@xterm/xterm": "^6.0.0",
"ansi-to-html": "^0.7.2",
"jotai": "^2.18.0",
"jotai": "^2.19.0",
"jotai-family": "^1.0.1",
"jotai-location": "^0.6.2",
"lucide-react": "^1.6.0",
"lucide-react": "^1.7.0",
"mogh_ui": "^0.3.1",
"mogh_auth_client": "^1.3.0",
"monaco-editor": "^0.55.1",
"monaco-yaml": "^5.4.1",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-minimal-pie-chart": "^9.1.2",
"react-router-dom": "^7.13.0",
"react-router-dom": "^7.14.0",
"react-xtermjs": "^1.0.10",
"recharts": "^3.7.0",
"sanitize-html": "^2.17.1",
"recharts": "^3.8.1",
"sanitize-html": "^2.17.2",
"shell-quote": "^1.8.3"
},
"devDependencies": {
"@types/node": "^25.3.0",
"@types/node": "^25.5.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@types/sanitize-html": "^2.16.0",
Expand All @@ -47,7 +49,7 @@
"postcss": "^8.5.6",
"postcss-preset-mantine": "^1.18.0",
"postcss-simple-vars": "^7.0.1",
"sass-embedded": "^1.97.3",
"sass-embedded": "^1.99.0",
"typescript": "^6.0.2",
"vite": "^8.0.2"
},
Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Suspense } from "react";
import { Outlet } from "react-router-dom";
import Topbar from "@/app/topbar";
import Sidebar from "@/app/sidebar";
import LoadingScreen from "@/ui/loading-screen";
import { LoadingScreen } from "mogh_ui";
import UpdateDetails from "@/components/updates/details";
import AlertDetails from "@/components/alerts/details";

Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/sidebar.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ICONS } from "@/theme/icons";
import { ICONS } from "@/lib/icons";
import { usableResourcePath } from "@/lib/utils";
import { SIDEBAR_RESOURCES } from "@/resources";
import { Button, Divider, ScrollArea, Stack, Text } from "@mantine/core";
Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/topbar/alerts.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useRead } from "@/lib/hooks";
import { ICONS } from "@/theme/icons";
import { ICONS } from "@/lib/icons";
import { ActionIcon, Box, Center, Menu } from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
import AlertList from "@/components/alerts/list";
Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/topbar/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
Text,
} from "@mantine/core";
import { useNavigate } from "react-router-dom";
import ThemeToggle from "@/ui/theme-toggle";
import { ThemeToggle } from "mogh_ui";
import UserDropdown from "@/app/topbar/user-dropdown";
import TopbarUpdates from "@/app/topbar/updates";
import OmniSearch from "@/app/topbar/omni-search";
Expand Down
3 changes: 2 additions & 1 deletion ui/src/app/topbar/keyboard-shortcuts.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useSettingsView, useShiftKeyListener } from "@/lib/hooks";
import { useSettingsView } from "@/lib/hooks";
import {
ActionIcon,
Divider,
Expand All @@ -10,6 +10,7 @@ import {
} from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
import { Keyboard } from "lucide-react";
import { useShiftKeyListener } from "mogh_ui";
import { useNavigate } from "react-router-dom";

export default function KeyboardShortcuts() {
Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/topbar/omni-search/hooks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
useSettingsView,
useUser,
} from "@/lib/hooks";
import { ICONS } from "@/theme/icons";
import { ICONS } from "@/lib/icons";
import { terminalLink, usableResourcePath } from "@/lib/utils";
import { RESOURCE_TARGETS, ResourceComponents } from "@/resources";
import {
Expand Down
5 changes: 3 additions & 2 deletions ui/src/app/topbar/omni-search/index.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ActionIcon, Badge, Button, Group } from "@mantine/core";
import { Spotlight, spotlight } from "@mantine/spotlight";
import { useOmniSearch } from "./hooks";
import { ICONS } from "@/theme/icons";
import { useShiftKeyListener } from "@/lib/hooks";
import { ICONS } from "@/lib/icons";
import { useShiftKeyListener } from "mogh_ui";
import classes from "./index.module.scss";

export default function OmniSearch({}: {}) {
Expand Down Expand Up @@ -40,6 +40,7 @@ export default function OmniSearch({}: {}) {
query={search}
onQueryChange={setSearch}
clearQueryOnClose={false}
radius="sm"
>
<Spotlight.Search
leftSection={<ICONS.Search size="1.3rem" />}
Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/topbar/updates.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useRead, useUser, useUserInvalidate, useWrite } from "@/lib/hooks";
import { ICONS } from "@/theme/icons";
import { ICONS } from "@/lib/icons";
import {
ActionIcon,
Center,
Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/topbar/user-dropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { useMemo, useState } from "react";
import { useNavigate } from "react-router-dom";
import { MoghAuth } from "komodo_client";
import { useRead, useUser, useUserInvalidate } from "@/lib/hooks";
import { hexColorByIntention } from "@/lib/color";
import { hexColorByIntention } from "mogh_ui";

export default function UserDropdown() {
const [_, setRerender] = useState(false);
Expand Down
Loading