diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx
index 64fa8085..aab1e6f2 100644
--- a/src/pages/login/index.tsx
+++ b/src/pages/login/index.tsx
@@ -11,7 +11,7 @@ import LoginForm from './components/login-form';
import PasswordForm from './components/password-form';
import { checkDefaultPage } from './utils';
-const Wrapper = styled.div`
+const Wrapper = styled.div<{ $isDarkTheme: boolean }>`
position: fixed;
top: 0;
left: 0;
@@ -19,9 +19,11 @@ const Wrapper = styled.div`
right: 0;
min-height: 100vh;
z-index: -1;
- background: url(${Bg2}) center center no-repeat;
- background-size: cover;
- opacity: 0.6;
+ background: ${({ $isDarkTheme }) =>
+ $isDarkTheme
+ ? `repeating-linear-gradient(45deg, #000, transparent 120px)`
+ : `url(${Bg2}) center center /cover no-repeat`};
+ opacity: ${({ $isDarkTheme }) => ($isDarkTheme ? 1 : 0.6)};
`;
const Box = styled.div`
@@ -38,7 +40,7 @@ const FormWrapper = styled.div`
width: max-content;
height: max-content;
padding: 32px;
- background-color: var(--ant-modal-content-bg);
+ background-color: var(--color-modal-content-bg);
.field-wrapper {
background-color: transparent !important;
@@ -50,15 +52,10 @@ const FormWrapper = styled.div`
`;
const Login = () => {
- const { themeData, userSettings } = useUserSettings();
- const { token } = theme.useToken();
+ const { themeData, userSettings, isDarkTheme } = useUserSettings();
const [userInfo, setUserInfo] = useAtom(userAtom);
const { initialState, setInitialState } = useModel('@@initialState') || {};
- const globalCssvars: Record
= {
- '--ant-modal-content-bg': 'rgba(255, 255, 255, 0.9)'
- };
-
const gotoDefaultPage = async (userInfo: any) => {
if (!userInfo || userInfo?.require_password_change) {
return;
@@ -72,9 +69,11 @@ const Login = () => {
}));
}
};
+
useEffect(() => {
gotoDefaultPage(userInfo);
}, [userInfo]);
+
useEffect(() => {
document.title = 'GPUStack';
}, []);
@@ -90,8 +89,8 @@ const Login = () => {
...themeData
}}
>
-
-
+
+
{userInfo?.require_password_change ? (
diff --git a/src/pages/playground/components/ground-images.tsx b/src/pages/playground/components/ground-images.tsx
index 91d056c3..6ff8d8a4 100644
--- a/src/pages/playground/components/ground-images.tsx
+++ b/src/pages/playground/components/ground-images.tsx
@@ -158,15 +158,7 @@ const GroundImages: React.FC = forwardRef((props, ref) => {
}
const params = {
- ..._.omitBy(
- parameters,
- (value: string, key: string) =>
- !value || ['width', 'height', 'seed'].includes(key)
- ),
- size:
- parameters.size === 'custom'
- ? `${parameters.width}x${parameters.height}`
- : parameters.size,
+ ..._.omitBy(finalParameters, (value: string) => !value),
seed: parameters.random_seed ? generateRandomNumber() : parameters.seed,
stream: true,
stream_options: {
diff --git a/src/pages/playground/components/image-edit.tsx b/src/pages/playground/components/image-edit.tsx
index de5dbedf..f1012c41 100644
--- a/src/pages/playground/components/image-edit.tsx
+++ b/src/pages/playground/components/image-edit.tsx
@@ -154,7 +154,7 @@ const GroundImages: React.FC = forwardRef((props, ref) => {
prompt: currentPrompt
}
});
- }, [finalParameters, currentPrompt, parameters.size]);
+ }, [finalParameters, currentPrompt, isOpenaiCompatible]);
const handleClear = () => {
setCurrentPrompt('');
diff --git a/src/pages/profile/backup.tsx b/src/pages/profile/backup.tsx
deleted file mode 100644
index c3cfd820..00000000
--- a/src/pages/profile/backup.tsx
+++ /dev/null
@@ -1,135 +0,0 @@
-import FormButtons from '@/components/form-buttons';
-import SealInput from '@/components/seal-form/seal-input';
-import { PasswordReg } from '@/config';
-import { INPUT_WIDTH } from '@/constants';
-import { updatePassword } from '@/pages/login/apis';
-import { PageContainer } from '@ant-design/pro-components';
-import { useIntl } from '@umijs/max';
-import { Form, message } from 'antd';
-import React from 'react';
-
-interface ProfileProps {
- username?: string;
- new_password: string;
- current_password: string;
-}
-const Profile: React.FC = () => {
- const [form] = Form.useForm();
- const intl = useIntl();
-
- const handleOnFinish = async (values: any) => {
- try {
- await updatePassword({
- new_password: values.new_password,
- current_password: values.current_password
- });
- message.success(intl.formatMessage({ id: 'common.message.success' }));
- } catch (error) {}
- };
-
- const handleOnFinishFailed = (errorInfo: any) => {
- console.log('handleOnFinishFailed', errorInfo);
- };
- const handleCancel = () => {
- form.resetFields();
- };
-
- return (
-
-
- name="current_password"
- rules={[
- {
- required: true,
- message: intl.formatMessage(
- { id: 'common.form.rule.input' },
- {
- name: intl.formatMessage({
- id: 'users.form.currentpassword'
- })
- }
- )
- }
- ]}
- >
-
-
-
- name="new_password"
- rules={[
- {
- required: true,
- pattern: PasswordReg,
- message: intl.formatMessage({
- id: 'users.form.rule.password'
- })
- }
- ]}
- >
-
-
- ({
- validator(_, value) {
- if (!value || getFieldValue('new_password') === value) {
- return Promise.resolve();
- }
- return Promise.reject(
- new Error(
- intl.formatMessage({ id: 'users.password.confirm.error' })
- )
- );
- }
- })
- ]}
- >
-
-
-
-
-
- );
-};
-
-export default Profile;
diff --git a/src/pages/profile/components/appearance.tsx b/src/pages/profile/components/appearance.tsx
index a3fb8eb7..859c1df0 100644
--- a/src/pages/profile/components/appearance.tsx
+++ b/src/pages/profile/components/appearance.tsx
@@ -17,14 +17,18 @@ const ThemeOptions = [
}
];
const Appearance: React.FC = () => {
- const { setTheme } = useUserSettings();
+ const { setTheme, userSettings } = useUserSettings();
const intl = useIntl();
const handleOnChange = (e: any) => {
setTheme(e.target.value);
};
return (
-
+
{ThemeOptions.map((item) => (
{intl.formatMessage({ id: item.label })}
diff --git a/src/pages/resources/components/model-files.tsx b/src/pages/resources/components/model-files.tsx
index 1e01113e..543f2bec 100644
--- a/src/pages/resources/components/model-files.tsx
+++ b/src/pages/resources/components/model-files.tsx
@@ -546,6 +546,9 @@ const ModelFiles = () => {
{
title: intl.formatMessage({ id: 'models.form.source' }),
dataIndex: 'source',
+ ellipsis: {
+ showTitle: false
+ },
render: (text: string, record: ListItem) => {
const modelInfo = getModelInfo(record);
const { repo_id } = modelInfo;
@@ -561,6 +564,9 @@ const ModelFiles = () => {
{
title: 'Worker',
dataIndex: 'worker_name',
+ ellipsis: {
+ showTitle: false
+ },
render: (text: string, record: ListItem) => {
return (
@@ -581,6 +587,9 @@ const ModelFiles = () => {
title: intl.formatMessage({ id: 'resources.modelfiles.form.path' }),
dataIndex: 'resolved_paths',
width: '35%',
+ ellipsis: {
+ showTitle: false
+ },
render: (text: string, record: ListItem) => (
)
@@ -588,10 +597,12 @@ const ModelFiles = () => {
{
title: intl.formatMessage({ id: 'resources.modelfiles.size' }),
dataIndex: 'size',
- width: 100,
+ ellipsis: {
+ showTitle: false
+ },
render: (text: string, record: ListItem) => {
return (
-
+
{convertFileSize(record.size, 1, true)}
);
@@ -601,9 +612,11 @@ const ModelFiles = () => {
title: intl.formatMessage({ id: 'common.table.createTime' }),
dataIndex: 'created_at',
sorter: false,
- width: 180,
+ ellipsis: {
+ showTitle: false
+ },
render: (text: number) => (
-
+
{dayjs(text).format('YYYY-MM-DD HH:mm:ss')}
)