diff --git a/app/page.tsx b/app/page.tsx
index 79db241..e9a10d9 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -31,6 +31,7 @@ export default function Home() {
articleUrl: index === 4 ? 'https://lnkd.in/p/gm2PZkWw' : '#',
ciRepos: index === 0 ? [
{ label: 'portfolio', repo: 'rock/riotpiao.com', forgejoBase: 'https://forgejo.riotpiao.com/rock/riotpiao.com' },
+ { label: 'homelab-frontend', repo: 'rock/homelab-frontend', forgejoBase: 'https://forgejo.riotpiao.com/rock/homelab-frontend' },
{ label: 'kmsvc', repo: 'rock/kmsvc-manage', forgejoBase: 'https://forgejo.riotpiao.com/rock/kmsvc-manage' },
] : index === 1 ? [
{ label: 'poimen-mem', repo: 'rock/poimen-memory', forgejoBase: 'https://forgejo.riotpiao.com/rock/poimen-memory' },
diff --git a/components/InteractiveTerminal.tsx b/components/InteractiveTerminal.tsx
index 8954e90..743b7f3 100644
--- a/components/InteractiveTerminal.tsx
+++ b/components/InteractiveTerminal.tsx
@@ -116,6 +116,7 @@ export function InteractiveTerminal() {
useEffect(() => {
const handleMouseMove = (e: MouseEvent) => {
if (!isResizing) return
+ e.preventDefault()
const container = containerRef.current
if (!container) return
@@ -129,10 +130,14 @@ export function InteractiveTerminal() {
const handleMouseUp = () => {
setIsResizing(false)
+ document.body.style.cursor = 'auto'
+ document.body.style.userSelect = 'auto'
}
if (isResizing) {
- document.addEventListener('mousemove', handleMouseMove)
+ document.body.style.userSelect = 'none'
+ document.body.style.cursor = 'nw-resize'
+ document.addEventListener('mousemove', handleMouseMove, { passive: false })
document.addEventListener('mouseup', handleMouseUp)
return () => {
document.removeEventListener('mousemove', handleMouseMove)
@@ -255,11 +260,18 @@ export function InteractiveTerminal() {
exit={{ opacity: 0, y: 20, scale: 0.95 }}
transition={{ duration: 0.25, ease: 'easeInOut' }}
style={{ width: `${width}px`, height: `${height}px` }}
- className={`rounded-lg shadow-2xl flex flex-col border relative ${
+ className={`rounded-lg shadow-2xl flex flex-col border relative user-select-none ${
isDark
? 'bg-gray-950 border-gray-700'
: 'bg-white border-gray-300'
}`}
+ tabIndex={-1}
+ onMouseDown={(e) => {
+ // Ensure terminal stays focused during interaction
+ if (e.target === containerRef.current) {
+ inputRef.current?.focus()
+ }
+ }}
>
setIsResizing(true)}
+ onMouseDown={(e) => {
+ e.preventDefault()
+ e.stopPropagation()
+ setIsResizing(true)
+ }}
className={`absolute top-0 left-0 w-4 h-4 cursor-nw-resize ${
isDark ? 'hover:bg-gray-600' : 'hover:bg-gray-400'
- } transition-colors z-10`}
+ } transition-colors z-10 select-none`}
style={{
borderTopLeftRadius: 'inherit',
opacity: isResizing ? 1 : 0.5,
}}
>
-