Skip to main content

Overview

Gitlantis displays your current location in the file system using breadcrumb trails in the top-left corner of the screen. The breadcrumbs show both your current Git branch and your file path. The breadcrumb system consists of two main parts:
Displays the current Git branch with a clickable picker:
<span className="text-md cursor-pointer select-none rounded-br-md rounded-tl-lg rounded-tr-lg border-b border-l border-l-4 border-r border-t border-[#2d302f] bg-[#f2bc07] px-2 py-[1px] text-black">
  <span className="pr-1 font-semibold">Branch:</span>
  <span>{current || "none found"}</span>
</span>
The branch name appears in yellow (#f2bc07) with a bold “Branch:” label.Source: src/browser/components/ui/breadcrumbs/branch/index.tsx:29-36

Path Navigation

The breadcrumb path allows you to quickly navigate up the directory tree:

Segment Interaction

<button
  onMouseDown={(e) => e.preventDefault()}
  onClick={() => {
    if (!isLastItem) setCurrentPath("/" + fullPath);
  }}
  className={`${segmentButtonClasses} ${
    isLastItem ? "" : "hover:text-[#f2bc07] hover:underline"
  }`}
  title={segment}
>
  {segment}
</button>
Each path segment (except the current location) is clickable and will navigate to that folder when clicked. Source: src/browser/components/ui/breadcrumbs/path/index.tsx:57-66

Path Parsing

The breadcrumb intelligently parses your current path:
const segments = currentPath.split("/").filter(Boolean);
const baseFolderSegments = baseFolder.split("/").filter(Boolean);
const baseFolderIndex = segments.findIndex(
  (_, i) =>
    segments.slice(0, i + 1).join("/") === baseFolderSegments.join("/")
);

if (baseFolderIndex === -1) return null;

const baseFolderChildren = segments.slice(baseFolderIndex);
This logic:
  1. Splits the path into segments
  2. Finds where your base folder starts
  3. Only shows the relevant portion of the path
Source: src/browser/components/ui/breadcrumbs/path/index.tsx:31-40

Root Directory Handling

When at the root directory, the breadcrumb shows a simplified view:
if (currentPath === ROOT_DIRECTORY_KEY) {
  if (rootLabel.length > 0) {
    return (
      <nav className={containerClasses}>
        <span className="flex items-center text-gray-300">
          <span className="mr-1">Exploring:</span>
          <span className="text-white">{rootLabel}</span>
        </span>
      </nav>
    );
  }
  return null;
}
Source: src/browser/components/ui/breadcrumbs/path/index.tsx:17-29

Styling and Layout

The breadcrumbs use a dark theme that contrasts with the ocean world:

Container Styling

const containerClasses =
  "flex flex-wrap max-w-[50vw] break-words rounded-bl-lg rounded-br-lg rounded-tr-lg bg-[#2d302f] px-2 py-1 gap-y-1";
  • Background: Dark gray (#2d302f)
  • Max width: 50% of viewport width
  • Text wrapping: Enabled for long paths
  • Rounded corners: Bottom-left, bottom-right, top-right
Source: src/browser/components/ui/breadcrumbs/path/index.tsx:11-12

Segment Styling

const segmentButtonClasses =
  "max-w-[10rem] truncate text-white text-sm focus:outline-none";
  • Max width: 10rem per segment
  • Truncation: Long folder names are truncated with ellipsis
  • Hover effect: Yellow (#f2bc07) with underline (except current segment)
Source: src/browser/components/ui/breadcrumbs/path/index.tsx:14-15

Visibility and Animation

The breadcrumbs respect user settings and the splash screen state:
<div
  className={`text-md absolute left-3 top-3 z-50 z-[100] flex flex-col items-start rounded-t-lg text-gray-500 transition-opacity duration-300 ${
    showSplashScreen
      ? "pointer-events-none opacity-0"
      : "opacity-100 delay-[1700ms]"
  } block select-none`}
>
  {settings.breadcrumbs === "Hide" || currentPath.length === 0 ? null : (
    <>
      <BreadcrumbBranch />
      <BreadcrumbPath />
    </>
  )}
</div>
Key behaviors:
  • Fade-in delay: 1700ms after splash screen disappears
  • Settings respect: Hidden when settings.breadcrumbs === "Hide"
  • Empty path: Not shown if no current path
Source: src/browser/components/ui/breadcrumbs/index.tsx:12-26

Separator Character

Path segments are separated by a > character:
{index > 0 && <span className="mx-1 text-gray-500">{">"}</span>}
The separator appears in gray between segments (but not before the first segment). Source: src/browser/components/ui/breadcrumbs/path/index.tsx:56
The breadcrumb system integrates with the Git branch picker, allowing you to switch branches without leaving the 3D world. See Git Integration for more details.