Skip to content

Commit 6ed8e32

Browse files
committed
feat: code seance.
1 parent 6108711 commit 6ed8e32

File tree

9 files changed

+357
-39
lines changed

9 files changed

+357
-39
lines changed

public/apps/apps.json

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,22 @@
2323
"pinned_order": 5,
2424
"created_at": "2025-11-10T14:00:00+03:00"
2525
},
26+
{
27+
"slug": "seance",
28+
"to": "/apps/seance",
29+
"title": "Code Seance",
30+
"description": "Communicate with the ghosts of deprecated code in this haunted terminal.",
31+
"icon": "SkullIcon",
32+
"pinned_order": 6,
33+
"created_at": "2025-11-28T20:00:00+03:00"
34+
},
2635
{
2736
"slug": "mastermind",
2837
"to": "/apps/mastermind",
2938
"title": "Mastermind",
3039
"description": "Play the classic code-breaking game of Mastermind (Bulls and Cows).",
3140
"icon": "PuzzlePieceIcon",
32-
"pinned_order": 6,
41+
"pinned_order": 7,
3342
"created_at": "2025-11-23T18:28:07+03:00"
3443
},
3544
{
@@ -38,7 +47,7 @@
3847
"title": "Nonogram",
3948
"description": "Solve picture logic puzzles by filling cells according to numerical clues.",
4049
"icon": "GridFourIcon",
41-
"pinned_order": 7,
50+
"pinned_order": 8,
4251
"created_at": "2025-11-23T20:43:44+03:00"
4352
},
4453
{
@@ -162,7 +171,7 @@
162171
"title": "Tournament Bracket",
163172
"description": "Create and manage tournament brackets.",
164173
"icon": "ListNumbersIcon",
165-
"pinned_order": 8,
174+
"pinned_order": 9,
166175
"created_at": "2025-11-07T14:22:02+03:00"
167176
},
168177
{
@@ -187,7 +196,7 @@
187196
"title": "Whiteboard",
188197
"description": "A simple digital whiteboard for sketching and doodling.",
189198
"icon": "PencilSimpleIcon",
190-
"pinned_order": 9,
199+
"pinned_order": 10,
191200
"created_at": "2025-11-25T17:00:00+03:00"
192201
},
193202
{
@@ -268,7 +277,7 @@
268277
"title": "Color Palette Generator",
269278
"description": "Generate random color palettes.",
270279
"icon": "PaletteIcon",
271-
"pinned_order": 10,
280+
"pinned_order": 11,
272281
"created_at": "2025-11-07T19:33:40+03:00"
273282
},
274283
{
@@ -341,7 +350,7 @@
341350
"title": "Morse Code Translator",
342351
"description": "Translate text to Morse code and vice-versa, with audio playback.",
343352
"icon": "TranslateIcon",
344-
"pinned_order": 11,
353+
"pinned_order": 12,
345354
"created_at": "2025-11-23T18:16:28+03:00"
346355
},
347356
{
@@ -407,7 +416,7 @@
407416
"title": "Image Toolkit",
408417
"description": "A toolkit for basic image manipulations.",
409418
"icon": "ImageIcon",
410-
"pinned_order": 12,
419+
"pinned_order": 13,
411420
"created_at": "2025-11-10T23:58:16+03:00"
412421
},
413422
{
@@ -416,7 +425,7 @@
416425
"title": "Image Compressor",
417426
"description": "Compress images to reduce file size while maintaining quality.",
418427
"icon": "ArrowsInLineHorizontalIcon",
419-
"pinned_order": 13,
428+
"pinned_order": 14,
420429
"created_at": "2025-11-23T12:54:58+03:00"
421430
},
422431
{
@@ -425,7 +434,7 @@
425434
"title": "Stopwatch",
426435
"description": "A simple stopwatch with lap functionality.",
427436
"icon": "TimerIcon",
428-
"pinned_order": 14,
437+
"pinned_order": 15,
429438
"created_at": "2025-11-23T17:30:23+03:00"
430439
},
431440
{
@@ -434,7 +443,7 @@
434443
"title": "Pomodoro Timer",
435444
"description": "A simple and customizable Pomodoro timer to boost your productivity.",
436445
"icon": "TimerIcon",
437-
"pinned_order": 15,
446+
"pinned_order": 16,
438447
"created_at": "2025-11-23T18:11:03+03:00"
439448
},
440449
{

public/timeline/timeline.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"description": "Introduced a dedicated, techno-styled page for my most used and favorite tools.",
66
"type": "feature",
77
"icon": "PushPin",
8-
"link": "/#/apps/pinned"
8+
"link": "/#/pinned-apps"
99
},
1010
{
1111
"date": "2025-11-27",

src/components/AnimatedRoutes.js

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ const KeyboardTypingSpeedTesterPage = lazy(
124124
);
125125
const NotepadPage = lazy(() => import('../pages/apps/NotepadPage'));
126126
const FezynthPage = lazy(() => import('../pages/apps/FezynthPage'));
127+
const CodeSeancePage = lazy(() => import('../pages/apps/CodeSeancePage'));
127128
const PinnedAppPage = lazy(() => import('../pages/PinnedAppPage'));
128129
const SettingsPage = lazy(() => import('../pages/SettingsPage'));
129130
const TimelinePage = lazy(() => import('../pages/TimelinePage'));
@@ -565,6 +566,10 @@ function AnimatedRoutes() {
565566
}
566567
/>
567568
{/* Hardcoded redirects for fc::apps:: paths */}
569+
<Route
570+
path="/apps::pinned"
571+
element={<Navigate to="/pinned-apps" replace />}
572+
/>
568573
<Route path="/apps::ip" element={<Navigate to="/apps/ip" replace />} />
569574
<Route
570575
path="/apps::wc"
@@ -778,6 +783,18 @@ function AnimatedRoutes() {
778783
path="/apps::ft"
779784
element={<Navigate to="/apps/feztype" replace />}
780785
/>
786+
<Route
787+
path="/apps::fz"
788+
element={<Navigate to="/apps/fezynth" replace />}
789+
/>
790+
<Route
791+
path="/apps::seance"
792+
element={<Navigate to="/apps/seance" replace />}
793+
/>
794+
<Route
795+
path="/apps::np"
796+
element={<Navigate to="/apps/notepad" replace />}
797+
/>
781798
{/* End of hardcoded redirects */}
782799
<Route
783800
path="/apps/ip"
@@ -843,6 +860,22 @@ function AnimatedRoutes() {
843860
</motion.div>
844861
}
845862
/>
863+
<Route
864+
path="/apps/seance"
865+
element={
866+
<motion.div
867+
initial="initial"
868+
animate="in"
869+
exit="out"
870+
variants={pageVariants}
871+
transition={pageTransition}
872+
>
873+
<Suspense fallback={<Loading />}>
874+
<CodeSeancePage />
875+
</Suspense>
876+
</motion.div>
877+
}
878+
/>
846879
<Route
847880
path="/apps/roguelike-game"
848881
element={
@@ -1661,11 +1694,7 @@ function AnimatedRoutes() {
16611694
}
16621695
/>
16631696
<Route
1664-
path="/apps::np"
1665-
element={<Navigate to="/apps/notepad" replace />}
1666-
/>
1667-
<Route
1668-
path="/apps/pinned"
1697+
path="/pinned-apps"
16691698
element={
16701699
<motion.div
16711700
initial="initial"
@@ -1680,10 +1709,6 @@ function AnimatedRoutes() {
16801709
</motion.div>
16811710
}
16821711
/>
1683-
<Route
1684-
path="/apps::pinned"
1685-
element={<Navigate to="/apps/pinned" replace />}
1686-
/>
16871712
{/* D&D specific 404 page */}
16881713
<Route
16891714
path="/stories/*"

src/components/Sidebar.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
PushPin,
3333
Trophy,
3434
MusicNoteIcon,
35+
SkullIcon,
3536
} from '@phosphor-icons/react';
3637

3738
import Fez from './Fez';
@@ -261,11 +262,12 @@ const Sidebar = ({ isOpen, toggleSidebar, toggleModal, setIsPaletteOpen }) => {
261262
</button>
262263
{sidebarState.isAppsOpen && (
263264
<nav className={getGroupClass(isAppsActive)}>
264-
<NavLink to="/apps/pinned" className={getLinkClass}>
265+
<NavLink to="/pinned-apps" className={getLinkClass}>
265266
<PushPin size={24} />
266267
<span>Pinned Apps</span>
267268
</NavLink>
268-
<NavLink to="/apps" className={getLinkClass} end>
269+
<NavLink to="/apps" className={getLinkClass}>
270+
{/*<NavLink to="/apps" className={getLinkClass} end>*/}
269271
<SquaresFourIcon size={24} />
270272
<span>All Apps</span>
271273
</NavLink>

src/config/achievements.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
BookOpenIcon,
1313
BookBookmarkIcon,
1414
BooksIcon,
15+
GhostIcon,
1516
} from '@phosphor-icons/react';
1617

1718
export const ACHIEVEMENTS = [
@@ -99,4 +100,12 @@ export const ACHIEVEMENTS = [
99100
icon: <BooksIcon size={32} weight="duotone" />,
100101
category: 'Content',
101102
},
103+
{
104+
id: 'the_medium',
105+
title: 'The Medium',
106+
description:
107+
'Successfully communicated with the code spirit and broke the infinite loop.',
108+
icon: <GhostIcon size={32} weight="duotone" />,
109+
category: 'Secret',
110+
},
102111
];

src/hooks/useSearchableData.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,11 @@ const useSearchableData = () => {
308308
type: 'command',
309309
commandId: 'toggleGlitchMode',
310310
},
311-
{ title: 'Previous Page', type: 'command', commandId: 'previousPage' },
311+
{
312+
title: 'Previous Page',
313+
type: 'command',
314+
commandId: 'previousPage',
315+
},
312316
{ title: 'Next Page', type: 'command', commandId: 'nextPage' },
313317
];
314318

0 commit comments

Comments
 (0)