The Work History window (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/old-windows/llms.txt
Use this file to discover all available pages before exploring further.
work_history.txt) is a faithful Notepad clone that plays your career history as a typewriter animation. When the window opens, a setInterval loop appends one character every 15 milliseconds to the displayed text, gradually revealing the full content as if someone is typing it live. A pulsing black cursor blinks at the end of the text throughout.
Visual Design
The component is intentionally spartan — matching the plain white Notepad aesthetic of Windows 98:- Menu bar —
win-border-outset bg-win-graystrip with File, Edit, Search, and Help labels infont-pixel. None of the menus open; they are purely decorative chrome. - Text area —
font-mono text-sm whitespace-pre-wrap overflow-auto bg-white text-blackfills the remaining window height. Thewhitespace-pre-wraprule is essential — it preserves the indentation and blank lines in the pre-formatted work history string. - Blinking cursor — an
<span>withinline-block w-2 h-4 bg-black animate-pulse align-middle ml-0.5that sits immediately after the last typed character.animate-pulsefrom Tailwind creates the blink effect.
Features
Typewriter animation
A
useEffect starts a setInterval on mount. Each tick increments a counter and calls setText(workHistoryText.substring(0, counter)), slicing one more character from the source string. The interval clears itself when the counter exceeds the string length.Blinking cursor
The cursor
<span> is always rendered directly after the animated text slice — it appears to “follow” the typing and then blink indefinitely once typing is complete.Work history text
The entire content is stored in a single template-literal string calledworkHistoryText, defined just above WorkHistoryComponent in config/apps.js:
Customization
Replace the work history text
Find the
workHistoryText template-literal string in config/apps.js and replace its contents with your own career history. Use the same > / [date] / - bullet convention for consistent visual formatting, or invent your own:Adjust the typing speed
The interval delay is hardcoded to At 15ms, a 500-character history takes about 7.5 seconds to type out.
15 (milliseconds per character). Find the setInterval call in the useEffect and change it:Skip the animation entirely
If you prefer the text to appear instantly (e.g. for accessibility), replace the animated state with the static string:Then render
{text} instead of {displayedText} in the JSX.Core component snippet
The
useEffect cleanup function (return () => clearInterval(timer)) is important. Without it, navigating away from the window and re-opening it would start a second interval, causing the animation to double-speed or corrupt the displayed text.