Skip to content

Commit 0ff1f1d

Browse files
committed
4.1.3 release
1 parent 65434a7 commit 0ff1f1d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1825
-1571
lines changed

source/client/.env

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
VITE_PUBLIC_URL=https://{{WEB_HOST_NAME}}
21
VITE_FUNCTION_URL=https://{{FUNCTION_HOST_NAME}}
32
VITE_TELEMETRY_CONNECTION_STRING={{TELEMETRY_CONNECTION_STRING}}

source/client/index.html

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,7 @@
33

44
<head>
55
<meta charset="utf-8">
6-
<meta name="author" content="karamem0">
7-
<meta name="description" content="Commistant は Microsoft Teams 会議によるコミュニティ イベントをサポートするアシスタント ボットです。">
8-
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
9-
<meta name="twitter:card" content="summary">
10-
<meta name="twitter:site" content="@karamem0">
11-
<meta name="twitter:creator" content="@karamem0">
12-
<meta property="og:url" content="%VITE_PUBLIC_URL%">
13-
<meta property="og:title" content="Commistant">
14-
<meta property="og:description" content="Commistant は Microsoft Teams 会議によるコミュニティ イベントをサポートするアシスタント ボットです。">
15-
<meta property="og:image" content="%VITE_PUBLIC_URL%/assets/screenshot1.png">
16-
<title>Commistant</title>
6+
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
177
</head>
188

199
<body>

source/client/package-lock.json

Lines changed: 974 additions & 909 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

source/client/package.json

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"type": "module",
55
"version": "0.0.0",
66
"scripts": {
7-
"dev": "tsc && vite",
7+
"start": "tsc && vite",
88
"build": "tsc -b && vite build",
99
"eslint": "eslint src",
1010
"eslint:fix": "eslint src --fix",
@@ -16,49 +16,51 @@
1616
"dependencies": {
1717
"@automapper/pojos": "^8.8.1",
1818
"@emotion/react": "^11.14.0",
19-
"@fluentui/react-components": "^9.64.0",
19+
"@fluentui/react-components": "^9.66.6",
2020
"@microsoft/applicationinsights-react-js": "^18.3.6",
21-
"@microsoft/applicationinsights-web": "^3.3.8",
22-
"@microsoft/teams-js": "2.38.0",
23-
"axios": "^1.9.0",
21+
"@microsoft/applicationinsights-web": "^3.3.9",
22+
"@microsoft/teams-js": "2.39.1",
23+
"axios": "^1.10.0",
2424
"react": "^18.3.1",
2525
"react-dom": "^18.3.1",
2626
"react-error-boundary": "^6.0.0",
27-
"react-hook-form": "^7.56.4",
27+
"react-helmet-async": "^2.0.5",
28+
"react-hook-form": "^7.60.0",
2829
"react-icons": "^5.5.0",
2930
"react-intl": "^7.1.11",
30-
"react-router-dom": "^7.6.1",
31+
"react-router-dom": "^7.6.3",
3132
"react-use": "^17.6.0",
3233
"ress": "^5.0.2"
3334
},
3435
"devDependencies": {
3536
"@emotion/babel-plugin": "^11.13.5",
3637
"@eslint/eslintrc": "^3.3.1",
37-
"@eslint/js": "^9.27.0",
38-
"@formatjs/cli": "^6.7.1",
39-
"@stylistic/eslint-plugin": "^4.4.0",
38+
"@eslint/js": "^9.30.1",
39+
"@formatjs/cli": "^6.7.2",
40+
"@stylistic/eslint-plugin": "^5.1.0",
4041
"@types/react": "^18.3.23",
4142
"@types/react-dom": "^18.3.7",
4243
"@types/react-router-dom": "^5.3.3",
43-
"@vitejs/plugin-react": "^4.5.0",
44-
"babel-plugin-formatjs": "^10.5.38",
45-
"eslint": "^9.27.0",
44+
"@vitejs/plugin-react": "^4.6.0",
45+
"babel-plugin-formatjs": "^10.5.39",
46+
"eslint": "^9.30.1",
4647
"eslint-plugin-hooks": "^0.4.3",
4748
"eslint-plugin-jsx-a11y": "^6.10.2",
4849
"eslint-plugin-react": "^7.37.5",
4950
"eslint-plugin-react-hooks": "^5.2.0",
50-
"eslint-plugin-sonarjs": "^3.0.2",
51-
"globals": "^16.2.0",
52-
"postcss": "^8.5.4",
51+
"eslint-plugin-sonarjs": "^3.0.4",
52+
"globals": "^16.3.0",
53+
"postcss": "^8.5.6",
5354
"postcss-styled-syntax": "^0.7.1",
54-
"stylelint": "^16.20.0",
55-
"stylelint-config-recess-order": "^6.0.0",
55+
"stylelint": "^16.21.1",
56+
"stylelint-config-recess-order": "^7.1.0",
5657
"stylelint-config-standard-scss": "^15.0.1",
58+
"stylelint-order": "^7.0.0",
5759
"typescript": "^5.8.3",
58-
"typescript-eslint": "^8.33.0",
59-
"vite": "^6.3.5"
60+
"typescript-eslint": "^8.35.1",
61+
"vite": "^7.0.2"
6062
},
6163
"volta": {
62-
"node": "22.16.0"
64+
"node": "22.17.0"
6365
}
6466
}

source/client/src/features/error/messages.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,16 @@
77
//
88

99
import { defineMessages } from 'react-intl';
10+
import parentMessages from '../messages';
1011

11-
const messages = defineMessages({
12-
Error404Description: { defaultMessage: 'ページが見つかりません' },
13-
Error404Title: { defaultMessage: '404 Not Found' },
14-
Error500Description: { defaultMessage: '予期しない問題が発生しました' },
15-
Error500Title: { defaultMessage: '500 Internal Server Error' }
16-
});
12+
const messages = {
13+
...parentMessages,
14+
...defineMessages({
15+
Error404Description: { defaultMessage: 'ページが見つかりません' },
16+
Error404Title: { defaultMessage: '404 Not Found' },
17+
Error500Description: { defaultMessage: '予期しない問題が発生しました' },
18+
Error500Title: { defaultMessage: '500 Internal Server Error' }
19+
})
20+
};
1721

1822
export default messages;

source/client/src/features/error/pages/Error404Page.presenter.tsx

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import React from 'react';
1010

1111
import { FormattedMessage, useIntl } from 'react-intl';
12+
import { Helmet, HelmetProvider } from 'react-helmet-async';
1213
import { Image, Text } from '@fluentui/react-components';
1314
import { css } from '@emotion/react';
1415
import messages from '../messages';
@@ -26,48 +27,63 @@ function Error404Page(props: Readonly<Error404PageProps>) {
2627
const { theme } = useTheme();
2728

2829
return (
29-
<div
30-
css={css`
31-
display: flex;
32-
flex-direction: column;
33-
align-items: center;
34-
justify-content: center;
35-
min-height: 100vh;
36-
background-color: ${theme.colorNeutralBackground3};
37-
`}>
30+
<React.Fragment>
31+
<HelmetProvider>
32+
<Helmet>
33+
<meta
34+
content={intl.formatMessage(messages.AppCreator)}
35+
name="author" />
36+
<meta
37+
content={intl.formatMessage(messages.AppDescription)}
38+
name="description" />
39+
<title>
40+
{`${intl.formatMessage(messages.Error404Title)} - ${intl.formatMessage(messages.AppTitle)}`}
41+
</title>
42+
</Helmet>
43+
</HelmetProvider>
3844
<div
3945
css={css`
4046
display: flex;
4147
flex-direction: column;
42-
grid-gap: 1rem;
4348
align-items: center;
4449
justify-content: center;
50+
min-height: 100vh;
51+
background-color: ${theme.colorNeutralBackground3};
4552
`}>
46-
<Text as="h1">
47-
<Image
48-
alt={intl.formatMessage(messages.Error404Title)}
49-
src="/assets/errors/404.svg"
50-
css={css`
51-
max-width: 32rem;
52-
max-height: 24rem;
53-
`} />
54-
</Text>
55-
<Text
56-
css={css`
57-
color: ${theme.colorNeutralForegroundDisabled};
58-
`}>
59-
<FormattedMessage {...messages.Error404Description} />
60-
</Text>
61-
<Text
53+
<div
6254
css={css`
63-
font-size: 0.75rem;
64-
line-height: calc(0.75rem * 1.25);
65-
color: ${theme.colorNeutralForegroundDisabled};
55+
display: flex;
56+
flex-direction: column;
57+
grid-gap: 1rem;
58+
align-items: center;
59+
justify-content: center;
6660
`}>
67-
{error}
68-
</Text>
61+
<Text as="h1">
62+
<Image
63+
alt={intl.formatMessage(messages.Error404Title)}
64+
src="/assets/errors/404.svg"
65+
css={css`
66+
max-width: 32rem;
67+
max-height: 24rem;
68+
`} />
69+
</Text>
70+
<Text
71+
css={css`
72+
color: ${theme.colorNeutralForegroundDisabled};
73+
`}>
74+
<FormattedMessage {...messages.Error404Description} />
75+
</Text>
76+
<Text
77+
css={css`
78+
font-size: 0.75rem;
79+
line-height: calc(0.75rem * 1.25);
80+
color: ${theme.colorNeutralForegroundDisabled};
81+
`}>
82+
{error}
83+
</Text>
84+
</div>
6985
</div>
70-
</div>
86+
</React.Fragment>
7187
);
7288

7389
}

source/client/src/features/error/pages/Error500Page.presenter.tsx

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import React from 'react';
1010

1111
import { FormattedMessage, useIntl } from 'react-intl';
12+
import { Helmet, HelmetProvider } from 'react-helmet-async';
1213
import { Image, Text } from '@fluentui/react-components';
1314
import { css } from '@emotion/react';
1415
import messages from '../messages';
@@ -26,48 +27,63 @@ function Error500Page(props: Readonly<Error500PageProps>) {
2627
const { theme } = useTheme();
2728

2829
return (
29-
<div
30-
css={css`
31-
display: flex;
32-
flex-direction: column;
33-
align-items: center;
34-
justify-content: center;
35-
min-height: 100vh;
36-
background-color: ${theme.colorNeutralBackground3};
37-
`}>
30+
<React.Fragment>
31+
<HelmetProvider>
32+
<Helmet>
33+
<meta
34+
content={intl.formatMessage(messages.AppCreator)}
35+
name="author" />
36+
<meta
37+
content={intl.formatMessage(messages.AppDescription)}
38+
name="description" />
39+
<title>
40+
{`${intl.formatMessage(messages.Error500Title)} - ${intl.formatMessage(messages.AppTitle)}`}
41+
</title>
42+
</Helmet>
43+
</HelmetProvider>
3844
<div
3945
css={css`
4046
display: flex;
4147
flex-direction: column;
42-
grid-gap: 1rem;
4348
align-items: center;
4449
justify-content: center;
50+
min-height: 100vh;
51+
background-color: ${theme.colorNeutralBackground3};
4552
`}>
46-
<Text as="h1">
47-
<Image
48-
alt={intl.formatMessage(messages.Error500Title)}
49-
src="/assets/errors/500.svg"
50-
css={css`
51-
max-width: 32rem;
52-
max-height: 24rem;
53-
`} />
54-
</Text>
55-
<Text
56-
css={css`
57-
color: ${theme.colorNeutralForegroundDisabled};
58-
`}>
59-
<FormattedMessage {...messages.Error500Description} />
60-
</Text>
61-
<Text
53+
<div
6254
css={css`
63-
font-size: 0.75rem;
64-
line-height: calc(0.75rem * 1.25);
65-
color: ${theme.colorNeutralForegroundDisabled};
55+
display: flex;
56+
flex-direction: column;
57+
grid-gap: 1rem;
58+
align-items: center;
59+
justify-content: center;
6660
`}>
67-
{error}
68-
</Text>
61+
<Text as="h1">
62+
<Image
63+
alt={intl.formatMessage(messages.Error500Title)}
64+
src="/assets/errors/500.svg"
65+
css={css`
66+
max-width: 32rem;
67+
max-height: 24rem;
68+
`} />
69+
</Text>
70+
<Text
71+
css={css`
72+
color: ${theme.colorNeutralForegroundDisabled};
73+
`}>
74+
<FormattedMessage {...messages.Error500Description} />
75+
</Text>
76+
<Text
77+
css={css`
78+
font-size: 0.75rem;
79+
line-height: calc(0.75rem * 1.25);
80+
color: ${theme.colorNeutralForegroundDisabled};
81+
`}>
82+
{error}
83+
</Text>
84+
</div>
6985
</div>
70-
</div>
86+
</React.Fragment>
7187
);
7288

7389
}

source/client/src/features/home/messages.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,25 @@
77
//
88

99
import { defineMessages } from 'react-intl';
10+
import parentMessages from '../messages';
1011

11-
const messages = defineMessages({
12-
AppDescription: { defaultMessage: 'Microsoft Teams 会議によるコミュニティ イベントをサポートするアシスタント ボットです。' },
13-
AppTitle: { defaultMessage: 'Commistant' },
14-
FeaturesDescription1: { defaultMessage: 'Commistant は会議の開始時、終了時、または会議中に定型のメッセージ通知を送信します。' },
15-
FeaturesDescription2: { defaultMessage: '通知にはテキストおよび QR コードつきの URL を添付することができます。' },
16-
FeaturesTitle: { defaultMessage: '機能' },
17-
GitHub: { defaultMessage: 'GitHub' },
18-
GitHubLink: { defaultMessage: 'https://github.com/karamem0/commistant' },
19-
PrivacyPolicy: { defaultMessage: 'プライバシー ポリシー' },
20-
PrivacyPolicyLink: { defaultMessage: 'https://github.com/karamem0/commistant/blob/main/PRIVACY_POLICY.md' },
21-
ScenesDescription1: { defaultMessage: '新型コロナウイルスの流行によりコミュニティ イベントはオンライン開催することが主流になりました。' },
22-
ScenesDescription2: { defaultMessage: '開催者は参加者に対して定型のメッセージを送ることがありますが、定期的にメッセージを送ることは開催者の負担となります。' },
23-
ScenesDescription3: { defaultMessage: 'Commistant を使うことで、会議中に slido などの Q&A サービスに誘導することや、会議の最初や最後にアンケートの URL を送ることなどが簡単に実現できるようになります。' },
24-
ScenesTitle: { defaultMessage: '利用シーン' },
25-
TermsOfUse: { defaultMessage: '利用規約' },
26-
TermsOfUseLink: { defaultMessage: 'https://github.com/karamem0/commistant/blob/main/TERMS_OF_USE.md' }
27-
});
12+
const messages = {
13+
...parentMessages,
14+
...defineMessages({
15+
FeaturesDescription1: { defaultMessage: 'Commistant は会議の開始時、終了時、または会議中に定型のメッセージ通知を送信します。' },
16+
FeaturesDescription2: { defaultMessage: '通知にはテキストおよび QR コードつきの URL を添付することができます。' },
17+
FeaturesTitle: { defaultMessage: '機能' },
18+
GitHub: { defaultMessage: 'GitHub' },
19+
GitHubLink: { defaultMessage: 'https://github.com/karamem0/commistant' },
20+
PrivacyPolicy: { defaultMessage: 'プライバシー ポリシー' },
21+
PrivacyPolicyLink: { defaultMessage: 'https://github.com/karamem0/commistant/blob/main/PRIVACY_POLICY.md' },
22+
ScenesDescription1: { defaultMessage: '新型コロナウイルスの流行によりコミュニティ イベントはオンライン開催することが主流になりました。' },
23+
ScenesDescription2: { defaultMessage: '開催者は参加者に対して定型のメッセージを送ることがありますが、定期的にメッセージを送ることは開催者の負担となります。' },
24+
ScenesDescription3: { defaultMessage: 'Commistant を使うことで、会議中に slido などの Q&A サービスに誘導することや、会議の最初や最後にアンケートの URL を送ることなどが簡単に実現できるようになります。' },
25+
ScenesTitle: { defaultMessage: '利用シーン' },
26+
TermsOfUse: { defaultMessage: '利用規約' },
27+
TermsOfUseLink: { defaultMessage: 'https://github.com/karamem0/commistant/blob/main/TERMS_OF_USE.md' }
28+
})
29+
};
2830

2931
export default messages;

0 commit comments

Comments
 (0)