commit fca3d14933e89777dff10e8a9af502bc4d79889e
parent 1115363eb5853c4731f8661d87999215dd14d788
Author: minerva-jupiter <ryouturn@gmail.com>
Date: Fri, 21 Nov 2025 20:12:43 +0900
feat(game): add new questions and flying objects for interactive stages
Diffstat:
5 files changed, 163 insertions(+), 29 deletions(-)
diff --git a/app/components/6_chat.tsx b/app/components/6_chat.tsx
@@ -83,7 +83,7 @@ const QuestionAnswer: React.FC<QuestionAnswerProps> = ({
if (newAnswer.length === correctAnswer.length) {
}
} else {
- e.preventDefault(); // デフォルトの入力をキャンセル
+ e.preventDefault();
setErrorMessage("🚫 その回答は正しくありません");
}
};
@@ -95,12 +95,12 @@ const QuestionAnswer: React.FC<QuestionAnswerProps> = ({
type="text"
value={currentAnswer}
onKeyDown={handleKeyDown}
- readOnly // カスタムロジックで値をセットするため、readonlyにする
+ readOnly
placeholder={correctAnswer
.split("")
.map(() => "_")
.join(" ")}
- autoFocus // 自動フォーカス
+ autoFocus
style={{ fontSize: "2rem" }}
/>
{currentAnswer.length === correctAnswer.length && <span></span>}
@@ -113,13 +113,32 @@ const QuestionAnswer: React.FC<QuestionAnswerProps> = ({
);
};
const myQuestions: QuestionWithAudio[] = [
- { input: "5 + 9 = ?", ans: "14", audioUrl: "/audio/006-1.flac" }, // 実際には適切なURLに置き換えてください
+ { input: "5 + 9 = ?", ans: "14", audioUrl: "/audio/006-1.flac" },
{
- input: "東京のローマ字表記は?",
- ans: "tokyo",
+ input: "人を殺してはいけませんか?",
+ ans: "yes",
audioUrl: "/audio/006-2.flac",
},
- { input: "Next.jsの親要素は?", ans: "react", audioUrl: "/audio/006-3.flac" },
+ {
+ input: "あなたは間違っていましたか?",
+ ans: "yes",
+ audioUrl: "/audio/006-3.flac",
+ },
+ {
+ input: "あのときのこの人の気持ちを答えよ",
+ ans: "happy",
+ audioUrl: "/audio/006-4.flac",
+ },
+ {
+ input: "あなたは間違っていましたか?",
+ ans: "yes",
+ audioUrl: "/audio/006-5.flac",
+ },
+ {
+ input: "Does justice always prevail?",
+ ans: "yes",
+ audioUrl: "/audio/006-6.flac",
+ },
];
export default function QuizPage({ onComplete }: StageProps) {
const handleQuizComplete = () => {
diff --git a/app/components/8_protectHart.tsx b/app/components/8_protectHart.tsx
@@ -91,7 +91,8 @@ const drawHeart = (ctx: CanvasRenderingContext2D, state: GameState) => {
}
};
-const FLY_SPEED_BASE = 0.3; // 速度の基準値 (deltaTimeとの積で調整)
+const FLY_SPEED_BASE = 0.3;
+const LIE_TIME = 10000;
const SPAWN_LIST: Omit<FlyingObject, "id" | "isHit">[] = [
{
@@ -134,7 +135,7 @@ const SPAWN_LIST: Omit<FlyingObject, "id" | "isHit">[] = [
content: "恥ずかしい",
radius: 25,
position: { x: 0.6, y: 0.0 },
- velocity: { x: 0.01, y: FLY_SPEED_BASE * 2.5 },
+ velocity: { x: -0.03, y: FLY_SPEED_BASE * 0.7 },
},
{
when: 4600,
@@ -150,6 +151,118 @@ const SPAWN_LIST: Omit<FlyingObject, "id" | "isHit">[] = [
position: { x: 0.4, y: 1.0 },
velocity: { x: -0.01, y: -FLY_SPEED_BASE * 0.7 },
},
+ {
+ when: 7000,
+ content: "大した才能もないのに",
+ radius: 25,
+ position: { x: 0.7, y: 0.0 },
+ velocity: { x: -0.1, y: FLY_SPEED_BASE },
+ },
+ {
+ when: 8000,
+ content: "根性がない",
+ radius: 25,
+ position: { x: 0.3, y: 0.0 },
+ velocity: { x: 0.1, y: FLY_SPEED_BASE },
+ },
+ {
+ when: 9000,
+ content: "将来のため",
+ radius: 25,
+ position: { x: 0.5, y: 0.0 },
+ velocity: { x: 0.0, y: FLY_SPEED_BASE },
+ },
+ {
+ when: 9100,
+ content: "将来のため",
+ radius: 25,
+ position: { x: 0.5, y: 1 },
+ velocity: { x: 0.0, y: -FLY_SPEED_BASE },
+ },
+ {
+ when: 9200,
+ content: "将来のため",
+ radius: 25,
+ position: { x: 0.0, y: 0.0 },
+ velocity: { x: FLY_SPEED_BASE, y: FLY_SPEED_BASE },
+ },
+ {
+ when: 9300,
+ content: "将来のため",
+ radius: 25,
+ position: { x: 1.0, y: 1.0 },
+ velocity: { x: -FLY_SPEED_BASE, y: -FLY_SPEED_BASE },
+ },
+ {
+ when: 9400,
+ content: "将来のため",
+ radius: 25,
+ position: { x: 0.0, y: 1.0 },
+ velocity: { x: FLY_SPEED_BASE, y: -FLY_SPEED_BASE },
+ },
+ {
+ when: 9500,
+ content: "将来のため",
+ radius: 25,
+ position: { x: 1.0, y: 0.0 },
+ velocity: { x: -FLY_SPEED_BASE, y: FLY_SPEED_BASE },
+ },
+ {
+ when: LIE_TIME,
+ content: "嘘をつくな",
+ radius: 25,
+ position: { x: 0.5, y: 0.0 },
+ velocity: { x: 0.0, y: FLY_SPEED_BASE },
+ },
+ {
+ when: LIE_TIME + 100,
+ content: "嘘をつくな",
+ radius: 25,
+ position: { x: 0.5, y: 1 },
+ velocity: { x: 0.0, y: -FLY_SPEED_BASE },
+ },
+ {
+ when: LIE_TIME + 200,
+ content: "嘘をつくな",
+ radius: 25,
+ position: { x: 0.0, y: 0.0 },
+ velocity: { x: FLY_SPEED_BASE, y: FLY_SPEED_BASE },
+ },
+ {
+ when: LIE_TIME + 300,
+ content: "嘘をつくな",
+ radius: 25,
+ position: { x: 1.0, y: 1.0 },
+ velocity: { x: -FLY_SPEED_BASE, y: -FLY_SPEED_BASE },
+ },
+ {
+ when: LIE_TIME + 400,
+ content: "嘘をつくな",
+ radius: 25,
+ position: { x: 0.0, y: 1.0 },
+ velocity: { x: FLY_SPEED_BASE, y: -FLY_SPEED_BASE },
+ },
+ {
+ when: LIE_TIME + 500,
+ content: "嘘をつくな",
+ radius: 25,
+ position: { x: 1.0, y: 0.0 },
+ velocity: { x: -FLY_SPEED_BASE, y: FLY_SPEED_BASE },
+ },
+ {
+ when: LIE_TIME + 1000,
+ content: "お前は{}だ",
+ radius: 30,
+ position: { x: 0.5, y: 0.0 },
+ velocity: { x: 0, y: FLY_SPEED_BASE * 0.3 },
+ },
+ {
+ when: LIE_TIME + 5000,
+ content: "AIdentity",
+ radius: 50,
+ position: { x: 0.5, y: 0.0 },
+ velocity: { x: 0, y: FLY_SPEED_BASE * 0.2 },
+ },
];
const useGameLoop = (canvasRef: React.RefObject<HTMLCanvasElement | null>) => {
diff --git a/app/ctrl/page.tsx b/app/ctrl/page.tsx
@@ -58,7 +58,7 @@ export default function Play() {
const pageRef = useRef<HTMLDivElement>(null);
const [isFullscreen, setIsFullscreen] = useState(false);
const [isInitialCheckDone, setIsInitialCheckDone] = useState(false);
- const [stage, setStage] = useState(8);
+ const [stage, setStage] = useState(1);
const handleStageComplete = useCallback(() => {
setStage((prevStage) => prevStage + 1);
}, []);
diff --git a/bun.lock b/bun.lock
@@ -5,9 +5,9 @@
"": {
"name": "aidentity",
"dependencies": {
- "@react-three/drei": "^10.7.6",
+ "@react-three/drei": "^10.7.7",
"@react-three/fiber": "^9.4.0",
- "@sentry/nextjs": "^10.25.0",
+ "@sentry/nextjs": "^10.26.0",
"next": "15.5.5",
"react": "19.1.0",
"react-dom": "19.1.0",
@@ -17,7 +17,7 @@
"devDependencies": {
"@eslint/eslintrc": "^3.3.1",
"@types/node": "^20.19.25",
- "@types/react": "^19.2.4",
+ "@types/react": "^19.2.6",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
"eslint-config-next": "15.5.5",
@@ -318,17 +318,17 @@
"@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.14.0", "", {}, "sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA=="],
- "@sentry-internal/browser-utils": ["@sentry-internal/browser-utils@10.25.0", "", { "dependencies": { "@sentry/core": "10.25.0" } }, "sha512-wzg1ITZxrRtQouHPCgpt3tl1GiNAWFVy2RYK2KstFEhpYBAOUn9BAdP7KU9UyHBFKqbAvV4oGtAT8H2/Y4+leA=="],
+ "@sentry-internal/browser-utils": ["@sentry-internal/browser-utils@10.26.0", "", { "dependencies": { "@sentry/core": "10.26.0" } }, "sha512-rPg1+JZlfp912pZONQAWZzbSaZ9L6R2VrMcCEa+2e2Gqk9um4b+LqF5RQWZsbt5Z0n0azSy/KQ6zAe/zTPXSOg=="],
- "@sentry-internal/feedback": ["@sentry-internal/feedback@10.25.0", "", { "dependencies": { "@sentry/core": "10.25.0" } }, "sha512-qlbT4tOd+WRyKpLdsbi26rkynGBoVabnY8/9rFnTxZ0WIUG5EFhJFqEeRLMyv+uk0uRFF3H0I9+u+qP/BKxIcQ=="],
+ "@sentry-internal/feedback": ["@sentry-internal/feedback@10.26.0", "", { "dependencies": { "@sentry/core": "10.26.0" } }, "sha512-0vk9eQP0CXD7Y2WkcCIWHaAqnXOAi18/GupgWLnbB2kuQVYVtStWxtW+OWRe8W/XwSnZ5m6JBTVeokuk/O16DQ=="],
- "@sentry-internal/replay": ["@sentry-internal/replay@10.25.0", "", { "dependencies": { "@sentry-internal/browser-utils": "10.25.0", "@sentry/core": "10.25.0" } }, "sha512-V/kKQn9T46HBTiP0bIThmpVr94K4vXwYM3/EHVpGSq4P9RynX06cgps8GLHq94+A0kX/DbK9igEMZmIuzS1q3A=="],
+ "@sentry-internal/replay": ["@sentry-internal/replay@10.26.0", "", { "dependencies": { "@sentry-internal/browser-utils": "10.26.0", "@sentry/core": "10.26.0" } }, "sha512-FMySQnY2/p0dVtFUBgUO+aMdK2ovqnd7Q/AkvMQUsN/5ulyj6KZx3JX3CqOqRtAr1izoCe4Kh2pi5t//sQmvsg=="],
- "@sentry-internal/replay-canvas": ["@sentry-internal/replay-canvas@10.25.0", "", { "dependencies": { "@sentry-internal/replay": "10.25.0", "@sentry/core": "10.25.0" } }, "sha512-zuj5jVNswZ/aA1nPPbU+VIFkQG0695lbyIfS1Skq+5o2FdRIS3MGnBXw1abI9h4pft8GLQWcKiBxISM7UpSz6w=="],
+ "@sentry-internal/replay-canvas": ["@sentry-internal/replay-canvas@10.26.0", "", { "dependencies": { "@sentry-internal/replay": "10.26.0", "@sentry/core": "10.26.0" } }, "sha512-vs7d/P+8M1L1JVAhhJx2wo15QDhqAipnEQvuRZ6PV7LUcS1un9/Vx49FMxpIkx6JcKADJVwtXrS1sX2hoNT/kw=="],
"@sentry/babel-plugin-component-annotate": ["@sentry/babel-plugin-component-annotate@4.5.0", "", {}, "sha512-9sn9tJFtNnhSitPXW8hTuteefGMBbnPFyDER8dz+2sgdvcdq7T99lEwprMf8gUv5JCiDKIvtLe20Sf/4KPAahA=="],
- "@sentry/browser": ["@sentry/browser@10.25.0", "", { "dependencies": { "@sentry-internal/browser-utils": "10.25.0", "@sentry-internal/feedback": "10.25.0", "@sentry-internal/replay": "10.25.0", "@sentry-internal/replay-canvas": "10.25.0", "@sentry/core": "10.25.0" } }, "sha512-UgSVT3RTM3vsK914TPuHVJQsjq5ooXVmjMtsWP3Ep+6f7N+1UVX4ZXsyyj5lDOcWdc79FgproD+MrEf9Cj6uBg=="],
+ "@sentry/browser": ["@sentry/browser@10.26.0", "", { "dependencies": { "@sentry-internal/browser-utils": "10.26.0", "@sentry-internal/feedback": "10.26.0", "@sentry-internal/replay": "10.26.0", "@sentry-internal/replay-canvas": "10.26.0", "@sentry/core": "10.26.0" } }, "sha512-uvV4hnkt8bh8yP0disJ0fszy8FdnkyGtzyIVKdeQZbNUefwbDhd3H0KJrAHhJ5ocULMH3B+dipdPmw2QXbEflg=="],
"@sentry/bundler-plugin-core": ["@sentry/bundler-plugin-core@4.5.0", "", { "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "4.5.0", "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", "magic-string": "0.30.8", "unplugin": "1.0.1" } }, "sha512-LTgYe7qGgAP0BpsyCTpjk756l6wZUv3MtCE+G0qzlpsQ2AljYe2bN4qjDy0bQrsPo0QzNQm+S6d0zogcJj/tqw=="],
@@ -350,19 +350,19 @@
"@sentry/cli-win32-x64": ["@sentry/cli-win32-x64@2.57.0", "", { "os": "win32", "cpu": "x64" }, "sha512-QWYV/Y0sbpDSTyA4XQBOTaid4a6H2Iwa1Z8UI+qNxFlk0ADSEgIqo2NrRHDU8iRnghTkecQNX1NTt/7mXN3f/A=="],
- "@sentry/core": ["@sentry/core@10.25.0", "", {}, "sha512-mGi4BYIPwZjWdOXHrPoXz1AW4/cQbFoiuW/m+OOATmtSoGTDnWYwP+qZU7VLlL+v8ZEzxfPi2C1NPfJtPj7QWA=="],
+ "@sentry/core": ["@sentry/core@10.26.0", "", {}, "sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q=="],
- "@sentry/nextjs": ["@sentry/nextjs@10.25.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@rollup/plugin-commonjs": "28.0.1", "@sentry-internal/browser-utils": "10.25.0", "@sentry/bundler-plugin-core": "^4.3.0", "@sentry/core": "10.25.0", "@sentry/node": "10.25.0", "@sentry/opentelemetry": "10.25.0", "@sentry/react": "10.25.0", "@sentry/vercel-edge": "10.25.0", "@sentry/webpack-plugin": "^4.3.0", "resolve": "1.22.8", "rollup": "^4.35.0", "stacktrace-parser": "^0.1.10" }, "peerDependencies": { "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0 || ^16.0.0-0" } }, "sha512-OQGjSNOS3UJqFyRlLA1mTEvHWo4ZYxCNDVsX9X4iPBYwjkFAfpmusvifvnBqAJ8um9bndTs2VnVDCWArjSY6vA=="],
+ "@sentry/nextjs": ["@sentry/nextjs@10.26.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@rollup/plugin-commonjs": "28.0.1", "@sentry-internal/browser-utils": "10.26.0", "@sentry/bundler-plugin-core": "^4.3.0", "@sentry/core": "10.26.0", "@sentry/node": "10.26.0", "@sentry/opentelemetry": "10.26.0", "@sentry/react": "10.26.0", "@sentry/vercel-edge": "10.26.0", "@sentry/webpack-plugin": "^4.3.0", "resolve": "1.22.8", "rollup": "^4.35.0", "stacktrace-parser": "^0.1.10" }, "peerDependencies": { "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0 || ^16.0.0-0" } }, "sha512-qvNzoAgJ5Vj8ItaUqUSb1soP9t2pZnvDmI9bTapXmW1BMkdoVDxjQ6cZIhvQmLgiIZtHo6IWe9eohtsj83Ti6A=="],
- "@sentry/node": ["@sentry/node@10.25.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^2.1.0", "@opentelemetry/core": "^2.1.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/instrumentation-amqplib": "0.51.0", "@opentelemetry/instrumentation-connect": "0.48.0", "@opentelemetry/instrumentation-dataloader": "0.22.0", "@opentelemetry/instrumentation-express": "0.53.0", "@opentelemetry/instrumentation-fs": "0.24.0", "@opentelemetry/instrumentation-generic-pool": "0.48.0", "@opentelemetry/instrumentation-graphql": "0.52.0", "@opentelemetry/instrumentation-hapi": "0.51.0", "@opentelemetry/instrumentation-http": "0.204.0", "@opentelemetry/instrumentation-ioredis": "0.52.0", "@opentelemetry/instrumentation-kafkajs": "0.14.0", "@opentelemetry/instrumentation-knex": "0.49.0", "@opentelemetry/instrumentation-koa": "0.52.0", "@opentelemetry/instrumentation-lru-memoizer": "0.49.0", "@opentelemetry/instrumentation-mongodb": "0.57.0", "@opentelemetry/instrumentation-mongoose": "0.51.0", "@opentelemetry/instrumentation-mysql": "0.50.0", "@opentelemetry/instrumentation-mysql2": "0.51.0", "@opentelemetry/instrumentation-pg": "0.57.0", "@opentelemetry/instrumentation-redis": "0.53.0", "@opentelemetry/instrumentation-tedious": "0.23.0", "@opentelemetry/instrumentation-undici": "0.15.0", "@opentelemetry/resources": "^2.1.0", "@opentelemetry/sdk-trace-base": "^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@prisma/instrumentation": "6.15.0", "@sentry/core": "10.25.0", "@sentry/node-core": "10.25.0", "@sentry/opentelemetry": "10.25.0", "import-in-the-middle": "^1.14.2", "minimatch": "^9.0.0" } }, "sha512-++mugiYF8X7CLtpymGN3N4J40SvQVIsVa6K7pURhooT4eX1QXYOBJSaOqvOXk5GN4qed5wETHNBkZuXSO0RARQ=="],
+ "@sentry/node": ["@sentry/node@10.26.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^2.1.0", "@opentelemetry/core": "^2.1.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/instrumentation-amqplib": "0.51.0", "@opentelemetry/instrumentation-connect": "0.48.0", "@opentelemetry/instrumentation-dataloader": "0.22.0", "@opentelemetry/instrumentation-express": "0.53.0", "@opentelemetry/instrumentation-fs": "0.24.0", "@opentelemetry/instrumentation-generic-pool": "0.48.0", "@opentelemetry/instrumentation-graphql": "0.52.0", "@opentelemetry/instrumentation-hapi": "0.51.0", "@opentelemetry/instrumentation-http": "0.204.0", "@opentelemetry/instrumentation-ioredis": "0.52.0", "@opentelemetry/instrumentation-kafkajs": "0.14.0", "@opentelemetry/instrumentation-knex": "0.49.0", "@opentelemetry/instrumentation-koa": "0.52.0", "@opentelemetry/instrumentation-lru-memoizer": "0.49.0", "@opentelemetry/instrumentation-mongodb": "0.57.0", "@opentelemetry/instrumentation-mongoose": "0.51.0", "@opentelemetry/instrumentation-mysql": "0.50.0", "@opentelemetry/instrumentation-mysql2": "0.51.0", "@opentelemetry/instrumentation-pg": "0.57.0", "@opentelemetry/instrumentation-redis": "0.53.0", "@opentelemetry/instrumentation-tedious": "0.23.0", "@opentelemetry/instrumentation-undici": "0.15.0", "@opentelemetry/resources": "^2.1.0", "@opentelemetry/sdk-trace-base": "^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@prisma/instrumentation": "6.15.0", "@sentry/core": "10.26.0", "@sentry/node-core": "10.26.0", "@sentry/opentelemetry": "10.26.0", "import-in-the-middle": "^1.14.2", "minimatch": "^9.0.0" } }, "sha512-VUwNoKYhRpnHQSj9lty1TgooO+1wcpS1V0K87HU8sZEas5gx3Ujiouk5ocPjlgbKreoYOApgOnEEIq5W/hfQcQ=="],
- "@sentry/node-core": ["@sentry/node-core@10.25.0", "", { "dependencies": { "@apm-js-collab/tracing-hooks": "^0.3.1", "@sentry/core": "10.25.0", "@sentry/opentelemetry": "10.25.0", "import-in-the-middle": "^1.14.2" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/instrumentation": ">=0.57.1 <1", "@opentelemetry/resources": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-Hk0s7r9pkotZ1yfUc9+XX0ALDQ/bjaYsWF23O2q8Yfc4m8NcQio54ztAmdI+Yf+YiHLpt0x9Hlgwpl3AaRvwIA=="],
+ "@sentry/node-core": ["@sentry/node-core@10.26.0", "", { "dependencies": { "@apm-js-collab/tracing-hooks": "^0.3.1", "@sentry/core": "10.26.0", "@sentry/opentelemetry": "10.26.0", "import-in-the-middle": "^1.14.2" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/instrumentation": ">=0.57.1 <1", "@opentelemetry/resources": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-7OrHVn8XAsq9mMVMlpL18XTKQEVcLOJSo0n2M7QGKfFk/OfVtSFMcUWGqN1qhYtT9aMTr2bjtR5+BI33djnNTQ=="],
- "@sentry/opentelemetry": ["@sentry/opentelemetry@10.25.0", "", { "dependencies": { "@sentry/core": "10.25.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-AWCRzUIzvI+0RHXTmGvVx+MUtyyjwmC6F6d6XCnWhBKWGO52I+ucz1X8INIZxCrK05dpviFpeLZy+pzfgw892g=="],
+ "@sentry/opentelemetry": ["@sentry/opentelemetry@10.26.0", "", { "dependencies": { "@sentry/core": "10.26.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-ASJdOwn6NwMH2ZeBrnGJI+l/xkJp1AOiQ5FWkvTqLc/vHX+r3PDMO7c+koecY+LiZxSzZF4IV8sALXfOh6UnwA=="],
- "@sentry/react": ["@sentry/react@10.25.0", "", { "dependencies": { "@sentry/browser": "10.25.0", "@sentry/core": "10.25.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { "react": "^16.14.0 || 17.x || 18.x || 19.x" } }, "sha512-LBQHgyPAFzuy99mEJF8ZF2AOxxJiGAmtu10eQhglhFgfJsU7JJVsee0h+vTSmvHMDtFrIwhZi3i1X5snZ/kzoA=="],
+ "@sentry/react": ["@sentry/react@10.26.0", "", { "dependencies": { "@sentry/browser": "10.26.0", "@sentry/core": "10.26.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { "react": "^16.14.0 || 17.x || 18.x || 19.x" } }, "sha512-Qi0/FVXAalwQNr8zp0tocViH3+MRelW8ePqj3TdMzapkbXRuh07czdGgw8Zgobqcb7l4rRCRAUo2sl/H3KVkIw=="],
- "@sentry/vercel-edge": ["@sentry/vercel-edge@10.25.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/resources": "^2.1.0", "@sentry/core": "10.25.0" } }, "sha512-TncKAvGo6YpFDKnf2k4l9Bdq8ZVdW+AlUClAloXs06sMLDZk9NDAmphT7lHdspx9kTsW/hTs29qEjk5H1AIZ8g=="],
+ "@sentry/vercel-edge": ["@sentry/vercel-edge@10.26.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/resources": "^2.1.0", "@sentry/core": "10.26.0" } }, "sha512-sHRL9VFvyHfd3lqDSWL+F6LWWX7/B7sUJJOJATffXlvFpbqxWTrgn2mQZtqdpv4hMwupWST0YwKNNizPpNyEQw=="],
"@sentry/webpack-plugin": ["@sentry/webpack-plugin@4.5.0", "", { "dependencies": { "@sentry/bundler-plugin-core": "4.5.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, "peerDependencies": { "webpack": ">=4.40.0" } }, "sha512-LtAYr54YFdOiklVpMWzYRwj17PQxE0KNffGa2qrMdH/Ays7iQ8j3z1t50wke4UoTrmeqz5kaCSZTJhZXv/XGwA=="],
@@ -396,7 +396,7 @@
"@types/pg-pool": ["@types/pg-pool@2.0.6", "", { "dependencies": { "@types/pg": "*" } }, "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ=="],
- "@types/react": ["@types/react@19.2.5", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw=="],
+ "@types/react": ["@types/react@19.2.6", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w=="],
"@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="],
@@ -626,7 +626,7 @@
"css-to-react-native": ["css-to-react-native@3.2.0", "", { "dependencies": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", "postcss-value-parser": "^4.0.2" } }, "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ=="],
- "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
+ "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
"damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="],
@@ -1356,6 +1356,8 @@
"stats-gl/three": ["three@0.170.0", "", {}, "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ=="],
+ "styled-components/csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
+
"styled-components/postcss": ["postcss@8.4.49", "", { "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA=="],
"tunnel-rat/zustand": ["zustand@4.5.7", "", { "dependencies": { "use-sync-external-store": "^1.2.2" }, "peerDependencies": { "@types/react": ">=16.8", "immer": ">=9.0.6", "react": ">=16.8" }, "optionalPeers": ["@types/react", "immer", "react"] }, "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw=="],
diff --git a/package.json b/package.json
@@ -12,7 +12,7 @@
"dependencies": {
"@react-three/drei": "^10.7.7",
"@react-three/fiber": "^9.4.0",
- "@sentry/nextjs": "^10.25.0",
+ "@sentry/nextjs": "^10.26.0",
"next": "15.5.5",
"react": "19.1.0",
"react-dom": "19.1.0",
@@ -22,7 +22,7 @@
"devDependencies": {
"@eslint/eslintrc": "^3.3.1",
"@types/node": "^20.19.25",
- "@types/react": "^19.2.5",
+ "@types/react": "^19.2.6",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
"eslint-config-next": "15.5.5",