[PULSE-46] Add Features page, header nav link & version bump to 0.1.3 #14

Merged
uz1mani merged 2 commits from staging into main 2026-02-07 00:55:43 +00:00
uz1mani commented 2026-02-07 00:55:35 +00:00 (Migrated from github.com)

Work Item

PULSE-46

Summary

  • Added a dedicated Features / Product Tour page (/features) showcasing all Pulse capabilities with mixed layout styles (cards, inline lists, checkmarks, horizontal steps)
  • Added "Features" link to header navigation (unauthenticated) and footer
  • Bumped version to 0.1.3 and @ciphera-net/ui dependency to ^0.0.46 (header gap fix)

Changes

  • app/features/page.tsx — New page with 6 sections: hero with badge, 3 pillar cards (Privacy, Dashboard, Lightweight), 6 core capabilities as icon+text list (no cards), content analytics split section with animated progress bars, trust signals as compact checkmark items (no cards), 3-step horizontal setup flow (no cards), and bottom CTA
  • app/layout-content.tsx — Added "Features" link to customNavItems for unauthenticated users; authenticated users still see "Tools"
  • components/Footer.tsx — Added "Features" to the Company links column
  • package.json — Version 0.1.20.1.3, @ciphera-net/ui ^0.0.45^0.0.46

Test Plan

[ ] Navigate to /features — verify hero, pillar cards, capabilities list, content section, trust signals, steps, and CTA all render
[ ] Verify visual variety — only the 3 pillar cards and content section use bordered blocks; capabilities, trust signals, and steps use inline layouts
[ ] Verify header shows "Why Pulse", "Pricing", "Features" in one nav group with no gap (requires ciphera-ui 0.0.46)
[ ] Verify footer Company column includes "Features" link pointing to /features
[ ] Click "Get Started Free" and "View Pricing" CTAs — verify they trigger OAuth flow and navigate to /pricing respectively
[ ] Click "View all integrations" and "View on GitHub" links — verify they navigate correctly
[ ] Test responsive layout on mobile — verify sections stack properly

## Work Item PULSE-46 ## Summary - Added a dedicated Features / Product Tour page (`/features`) showcasing all Pulse capabilities with mixed layout styles (cards, inline lists, checkmarks, horizontal steps) - Added "Features" link to header navigation (unauthenticated) and footer - Bumped version to `0.1.3` and `@ciphera-net/ui` dependency to `^0.0.46` (header gap fix) ## Changes - **`app/features/page.tsx`** — New page with 6 sections: hero with badge, 3 pillar cards (Privacy, Dashboard, Lightweight), 6 core capabilities as icon+text list (no cards), content analytics split section with animated progress bars, trust signals as compact checkmark items (no cards), 3-step horizontal setup flow (no cards), and bottom CTA - **`app/layout-content.tsx`** — Added "Features" link to `customNavItems` for unauthenticated users; authenticated users still see "Tools" - **`components/Footer.tsx`** — Added "Features" to the Company links column - **`package.json`** — Version `0.1.2` → `0.1.3`, `@ciphera-net/ui` `^0.0.45` → `^0.0.46` ## Test Plan [ ] Navigate to /features — verify hero, pillar cards, capabilities list, content section, trust signals, steps, and CTA all render [ ] Verify visual variety — only the 3 pillar cards and content section use bordered blocks; capabilities, trust signals, and steps use inline layouts [ ] Verify header shows "Why Pulse", "Pricing", "Features" in one nav group with no gap (requires ciphera-ui 0.0.46) [ ] Verify footer Company column includes "Features" link pointing to /features [ ] Click "Get Started Free" and "View Pricing" CTAs — verify they trigger OAuth flow and navigate to /pricing respectively [ ] Click "View all integrations" and "View on GitHub" links — verify they navigate correctly [ ] Test responsive layout on mobile — verify sections stack properly
greptile-apps[bot] commented 2026-02-07 00:56:39 +00:00 (Migrated from github.com)

Greptile Overview

Greptile Summary

  • Adds a new /features product tour page with multiple animated sections (pillars, capabilities list, trust signals, setup steps, CTA).
  • Updates header navigation to show a “Features” link for unauthenticated users while keeping “Tools” for authenticated users.
  • Adds a “Features” link to the footer Company column.
  • Bumps app version to 0.1.3 and updates @ciphera-net/ui to ^0.0.46 (lockfile updated accordingly).

Confidence Score: 4/5

  • This PR is generally safe to merge after fixing a small UI-rendering bug on the new Features page.
  • Changes are mostly additive UI/content and dependency bumps. The main functional issue found is JSX interpreting a literal <script> token in copy, which will render incorrectly and should be escaped. No other behavior changes appear risky.
  • app/features/page.tsx

Important Files Changed

Filename Overview
app/features/page.tsx Adds new client-rendered /features page using framer-motion animations and @ciphera-net/ui components; contains JSX text that will be interpreted as an HTML <script> element instead of displaying literal text.
app/layout-content.tsx Updates Header nav items to show 'Features' for unauthenticated users and keep 'Tools' for authenticated users; change is straightforward.
components/Footer.tsx Adds 'Features' link to footer Company column; low-risk routing change.
package.json Bumps app version to 0.1.3 and updates @ciphera-net/ui dependency to ^0.0.46.
package-lock.json Updates lockfile for version bump and @ciphera-net/ui 0.0.46 resolution/integrity.

Sequence Diagram

sequenceDiagram
  participant U as User (unauth)
  participant N as Next.js App Router
  participant F as /features (FeaturesPage)
  participant H as LayoutContent/Header
  participant O as OAuth endpoint

  U->>N: GET /features
  N->>F: Render FeaturesPage (client component)
  F-->>U: Page UI + framer-motion animations
  U->>H: View header nav
  H-->>U: Shows "Features" link (unauth)
  U->>F: Click "Get Started Free"
  F->>O: initiateOAuthFlow()
  O-->>U: Redirect to OAuth provider
  U->>F: Click "View Pricing"
  F->>N: Navigate to /pricing
<h2>Greptile Overview</h2> <h3>Greptile Summary</h3> - Adds a new `/features` product tour page with multiple animated sections (pillars, capabilities list, trust signals, setup steps, CTA). - Updates header navigation to show a “Features” link for unauthenticated users while keeping “Tools” for authenticated users. - Adds a “Features” link to the footer Company column. - Bumps app version to 0.1.3 and updates `@ciphera-net/ui` to ^0.0.46 (lockfile updated accordingly). <h3>Confidence Score: 4/5</h3> - This PR is generally safe to merge after fixing a small UI-rendering bug on the new Features page. - Changes are mostly additive UI/content and dependency bumps. The main functional issue found is JSX interpreting a literal `<script>` token in copy, which will render incorrectly and should be escaped. No other behavior changes appear risky. - app/features/page.tsx <details><summary><h3>Important Files Changed</h3></summary> | Filename | Overview | |----------|----------| | app/features/page.tsx | Adds new client-rendered /features page using framer-motion animations and @ciphera-net/ui components; contains JSX text that will be interpreted as an HTML <script> element instead of displaying literal text. | | app/layout-content.tsx | Updates Header nav items to show 'Features' for unauthenticated users and keep 'Tools' for authenticated users; change is straightforward. | | components/Footer.tsx | Adds 'Features' link to footer Company column; low-risk routing change. | | package.json | Bumps app version to 0.1.3 and updates @ciphera-net/ui dependency to ^0.0.46. | | package-lock.json | Updates lockfile for version bump and @ciphera-net/ui 0.0.46 resolution/integrity. | </details> </details> <h3>Sequence Diagram</h3> ```mermaid sequenceDiagram participant U as User (unauth) participant N as Next.js App Router participant F as /features (FeaturesPage) participant H as LayoutContent/Header participant O as OAuth endpoint U->>N: GET /features N->>F: Render FeaturesPage (client component) F-->>U: Page UI + framer-motion animations U->>H: View header nav H-->>U: Shows "Features" link (unauth) U->>F: Click "Get Started Free" F->>O: initiateOAuthFlow() O-->>U: Redirect to OAuth provider U->>F: Click "View Pricing" F->>N: Navigate to /pricing ```
greptile-apps[bot] (Migrated from github.com) reviewed 2026-02-07 00:56:43 +00:00
greptile-apps[bot] (Migrated from github.com) left a comment

5 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

<sub>5 files reviewed, 1 comment</sub> <sub>[Edit Code Review Agent Settings](https://app.greptile.com/review/github) | [Greptile](https://greptile.com?utm_source=greptile_expert&utm_medium=github&utm_campaign=code_reviews)</sub>
@@ -0,0 +320,4 @@
className="inline-flex items-center gap-1 text-sm font-medium text-brand-orange hover:underline"
>
View all integrations <ArrowRightIcon className="w-4 h-4" />
</Link>
greptile-apps[bot] (Migrated from github.com) commented 2026-02-07 00:56:43 +00:00

JSX renders <script> tag

In the “How it works” steps, the string Paste one <script> tag. is parsed as JSX/HTML, so it won’t display the literal <script> text (and can produce surprising DOM output). Escape it (e.g. Paste one <script /> tag. via &lt;script&gt;) or wrap the literal in a string/<code> element so the UI shows what you intend.

Prompt To Fix With AI
This is a comment left during a code review.
Path: app/features/page.tsx
Line: 321:323

Comment:
**JSX renders `<script>` tag**

In the “How it works” steps, the string `Paste one <script> tag.` is parsed as JSX/HTML, so it won’t display the literal `<script>` text (and can produce surprising DOM output). Escape it (e.g. `Paste one <script /> tag.` via `&lt;script&gt;`) or wrap the literal in a string/`<code>` element so the UI shows what you intend.

How can I resolve this? If you propose a fix, please make it concise.
**JSX renders `<script>` tag** In the “How it works” steps, the string `Paste one <script> tag.` is parsed as JSX/HTML, so it won’t display the literal `<script>` text (and can produce surprising DOM output). Escape it (e.g. `Paste one <script /> tag.` via `&lt;script&gt;`) or wrap the literal in a string/`<code>` element so the UI shows what you intend. <details><summary>Prompt To Fix With AI</summary> `````markdown This is a comment left during a code review. Path: app/features/page.tsx Line: 321:323 Comment: **JSX renders `<script>` tag** In the “How it works” steps, the string `Paste one <script> tag.` is parsed as JSX/HTML, so it won’t display the literal `<script>` text (and can produce surprising DOM output). Escape it (e.g. `Paste one <script /> tag.` via `&lt;script&gt;`) or wrap the literal in a string/`<code>` element so the UI shows what you intend. How can I resolve this? If you propose a fix, please make it concise. ````` </details>
Sign in to join this conversation.
No description provided.