Ariver
2026-06-06 19832fd5cf823a45b29e5dc8ec8370c8c9e9c292
Implement user hero design: real HTML copy, cropped visual, app icon in header
3 files modified
1 files added
214 ■■■■ changed files
docs/assets/hero-visual.jpg patch | view | raw | blame | history
docs/index-en.html 36 ●●●●● patch | view | raw | blame | history
docs/index.html 36 ●●●●● patch | view | raw | blame | history
docs/styles.css 142 ●●●● patch | view | raw | blame | history
docs/assets/hero-visual.jpg
docs/index-en.html
@@ -5,7 +5,7 @@
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>TagLauncher — Tag-based Mac app launcher</title>
  <meta name="description" content="TagLauncher organizes Mac apps with tags: scrollable grid, multi-tag apps, searchable notes, JSON layout backup—beyond Launchpad folders and pages.">
  <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-shot-grid.jpg">
  <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
  <link rel="stylesheet" href="styles.css">
  <link rel="alternate" hreflang="en" href="index-en.html">
  <link rel="alternate" hreflang="zh-Hans" href="index.html">
@@ -33,33 +33,19 @@
  <section class="hero" aria-label="TagLauncher hero">
    <div class="layout hero__split">
      <div class="hero__copy">
        <h1 class="hero__headline">Possibly the best Mac app launcher—anywhere</h1>
        <p class="hero__lead">Don't mourn Launchpad on macOS 26 Tahoe. It was never great—and it still isn't.</p>
        <h1 class="hero__headline">Possibly the best Mac app launcher—in the world</h1>
        <p class="hero__lead">Don't mourn Launchpad on macOS 26 Tahoe. It was never truly good—it was only barely usable.</p>
      </div>
      <div class="hero__visual">
        <div class="hero__stack">
          <div class="hero-stack-layer hero-stack-layer--far" aria-hidden="true">
            <div class="hero-stack-layer__chrome"><span></span><span></span><span></span></div>
            <div class="hero-stack-layer__body"></div>
          </div>
          <div class="hero-stack-layer hero-stack-layer--near" aria-hidden="true">
            <div class="hero-stack-layer__chrome"><span></span><span></span><span></span></div>
            <div class="hero-stack-layer__body"></div>
          </div>
          <figure class="hero-window">
            <div class="hero-window__chrome">
              <span></span><span></span><span></span>
            </div>
            <div class="hero-window__screen">
              <img src="assets/hero-shot-grid.jpg" alt="TagLauncher App Grid" width="1600" height="1040" fetchpriority="high" decoding="async">
            </div>
            <div class="hero-window__reflection" aria-hidden="true">
              <img src="assets/hero-shot-grid.jpg" alt="" width="1600" height="1040">
            </div>
      <figure class="hero__visual">
        <img
          src="assets/hero-visual.jpg"
          alt="TagLauncher App Grid with colorful tags"
          width="553"
          height="619"
          fetchpriority="high"
          decoding="async">
          </figure>
        </div>
      </div>
    </div>
  </section>
docs/index.html
@@ -4,8 +4,8 @@
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>TagLauncher — 标签化 Mac 应用启动器</title>
  <meta name="description" content="TagLauncher:用标签管理 Mac 应用,可滚动网格、多标签归类、应用备忘、布局备份。比 Launchpad 更适合应用很多的用户。">
  <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-shot-grid.jpg">
  <meta name="description" content="在全球,这可能是Mac最好用的应用启动台。不用怀念 macOS 26 Tahoe 上消失的 Launchpad,TagLauncher 用标签管理 Mac 应用。">
  <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
  <link rel="stylesheet" href="styles.css">
  <link rel="alternate" hreflang="en" href="index-en.html">
  <link rel="alternate" hreflang="zh-Hans" href="index.html">
@@ -34,32 +34,18 @@
    <div class="layout hero__split">
      <div class="hero__copy">
        <h1 class="hero__headline">在全球,这可能是Mac最好用的应用启动台</h1>
        <p class="hero__lead">不用怀念 macOS 26 Tahoe 上消失的 Launchpad(启动台),因为它一直都不好用,从来就没好用过</p>
        <p class="hero__lead">不用怀念 macOS 26 Tahoe 上消失的 Launchpad(启动台),因为他从来都没真的好用过,他从来就勉强可以用</p>
      </div>
      <div class="hero__visual">
        <div class="hero__stack">
          <div class="hero-stack-layer hero-stack-layer--far" aria-hidden="true">
            <div class="hero-stack-layer__chrome"><span></span><span></span><span></span></div>
            <div class="hero-stack-layer__body"></div>
          </div>
          <div class="hero-stack-layer hero-stack-layer--near" aria-hidden="true">
            <div class="hero-stack-layer__chrome"><span></span><span></span><span></span></div>
            <div class="hero-stack-layer__body"></div>
          </div>
          <figure class="hero-window">
            <div class="hero-window__chrome">
              <span></span><span></span><span></span>
            </div>
            <div class="hero-window__screen">
              <img src="assets/hero-shot-grid.jpg" alt="TagLauncher 应用网格界面" width="1600" height="1040" fetchpriority="high" decoding="async">
            </div>
            <div class="hero-window__reflection" aria-hidden="true">
              <img src="assets/hero-shot-grid.jpg" alt="" width="1600" height="1040">
            </div>
      <figure class="hero__visual">
        <img
          src="assets/hero-visual.jpg"
          alt="TagLauncher 应用网格界面:彩色标签分类与可滚动应用图标"
          width="553"
          height="619"
          fetchpriority="high"
          decoding="async">
          </figure>
        </div>
      </div>
    </div>
  </section>
docs/styles.css
@@ -163,141 +163,45 @@
.hero__split {
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.15fr);
  gap: 28px 40px;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: 20px 48px;
  align-items: center;
  min-height: calc(100svh - var(--header-h) - 112px);
  min-height: calc(100vh - var(--header-h) - 112px);
  min-height: calc(100svh - var(--header-h) - 96px);
  min-height: calc(100vh - var(--header-h) - 96px);
}
.hero__copy {
  padding: 12px 0;
  padding: 8px 0;
}
.hero__headline {
  margin: 0;
  font-size: clamp(1.85rem, 4.2vw, 2.85rem);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: 1.12;
  color: #111114;
  font-size: clamp(2rem, 4.8vw, 3.15rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1.1;
  color: #000;
}
.hero__lead {
  margin: 22px 0 0;
  font-size: clamp(0.98rem, 1.6vw, 1.12rem);
  line-height: 1.65;
  color: var(--muted);
  max-width: 26em;
  margin: 28px 0 0;
  font-size: clamp(1rem, 1.7vw, 1.2rem);
  line-height: 1.7;
  color: #1d1d1f;
  max-width: 22em;
}
.hero__visual {
  position: relative;
  min-height: 340px;
}
/* One real screenshot in front; back layers are chrome-only depth cues */
.hero__stack {
  position: relative;
  width: 100%;
  max-width: 520px;
  margin-left: auto;
  padding: 36px 0 48px;
}
.hero-stack-layer {
  position: absolute;
  left: 0;
  right: 0;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.07);
  box-shadow: 0 16px 40px rgba(30, 45, 90, 0.1);
  pointer-events: none;
}
.hero-stack-layer__chrome,
.hero-window__chrome {
  display: flex;
  gap: 7px;
  padding: 9px 11px 7px;
  background: linear-gradient(180deg, #f3f5f9 0%, #e8ecf3 100%);
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.hero-stack-layer__chrome span,
.hero-window__chrome span {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}
.hero-stack-layer__chrome span:nth-child(1),
.hero-window__chrome span:nth-child(1) { background: #ff6b6b; }
.hero-stack-layer__chrome span:nth-child(2),
.hero-window__chrome span:nth-child(2) { background: #ffd166; }
.hero-stack-layer__chrome span:nth-child(3),
.hero-window__chrome span:nth-child(3) { background: #6ee7a8; }
.hero-stack-layer__body {
  height: 220px;
  background: linear-gradient(180deg, #fafbfd 0%, #eef1f7 100%);
}
.hero-stack-layer--far {
  top: 0;
  transform: translate(28px, -22px) scale(0.96);
  opacity: 0.45;
  z-index: 1;
}
.hero-stack-layer--near {
  top: 12px;
  transform: translate(14px, -10px) scale(0.98);
  opacity: 0.68;
  z-index: 2;
}
.hero-window {
  position: relative;
  margin: 24px 0 0;
  z-index: 3;
  transform: rotateY(-6deg) rotateX(3deg);
  transform-style: preserve-3d;
}
.hero-window__screen {
  border-radius: 0 0 12px 12px;
  overflow: hidden;
  margin: 0;
  line-height: 0;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-top: none;
  box-shadow:
    0 28px 64px rgba(30, 45, 90, 0.16),
    0 10px 24px rgba(30, 45, 90, 0.08);
}
.hero-window__screen img {
.hero__visual img {
  display: block;
  width: 100%;
  max-width: 560px;
  height: auto;
}
.hero-window__reflection {
  margin-top: 10px;
  transform: scaleY(-1);
  opacity: 0.18;
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.45) 0%, transparent 70%);
  -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.45) 0%, transparent 70%);
  border-radius: 12px;
  overflow: hidden;
}
.hero-window__reflection img {
  display: block;
  width: 100%;
  height: auto;
  margin-left: auto;
}
/* Main content */
@@ -467,9 +371,9 @@
    gap: 32px;
  }
  .hero__stack {
    max-width: 100%;
  .hero__visual img {
    margin-left: 0;
    max-width: 100%;
  }
}
@@ -480,9 +384,5 @@
  .hero {
    padding: 32px 0 48px;
  }
  .hero-stack-layer__body {
    height: 160px;
  }
}