Skip to content

!!! DONT MERGE YET !!! feat(site): refresh product positioning - #1567

Open
tinsever wants to merge 3 commits into
mainfrom
chore/site-positioning
Open

!!! DONT MERGE YET !!! feat(site): refresh product positioning#1567
tinsever wants to merge 3 commits into
mainfrom
chore/site-positioning

Conversation

@tinsever

@tinsever tinsever commented Aug 12, 2026

Copy link
Copy Markdown
Member

Description

  • Refresh the landing page positioning, calls to action, and card styling.
  • Keep the site and web app metadata and tagline consistent.

Type of Change

  • Other: site positioning and visual polish

How Has This Been Tested?

  • Other:
    • pnpm exec biome check apps/site/app/layout.tsx apps/site/components/landing/features.tsx apps/site/components/landing/footer.tsx apps/site/components/landing/hero.tsx apps/site/components/landing/pricing-plans.tsx apps/web/index.html apps/web/src/main.tsx
    • pnpm --filter @kaneo/site build
  • pnpm --filter @kaneo/web typecheck is currently blocked by the unrelated missing sendTrialReminderEmail export used by apps/api/src/scheduler/trial-reminders.ts.

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • My changes generate no new warnings

Summary by CodeRabbit

  • New Features

    • Updated landing-page messaging to highlight streamlined project management.
    • Renamed primary actions to “Start for free” and “Self-host.”
    • Added a “View on GitHub” action with an external-link indicator.
    • Removed the Pricing button from the hero section.
  • Style

    • Refined feature and pricing card corner styling for a more consistent appearance.
  • Documentation

    • Updated page titles, descriptions, social sharing metadata, footer tagline, and startup messaging.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5a945a58-1e5b-477b-8970-d58b35de3b39

📥 Commits

Reviewing files that changed from the base of the PR and between 48e87e4 and 95c5b4d.

📒 Files selected for processing (7)
  • apps/site/app/layout.tsx
  • apps/site/components/landing/features.tsx
  • apps/site/components/landing/footer.tsx
  • apps/site/components/landing/hero.tsx
  • apps/site/components/landing/pricing-plans.tsx
  • apps/web/index.html
  • apps/web/src/main.tsx
🚧 Files skipped from review as they are similar to previous changes (7)
  • apps/web/src/main.tsx
  • apps/site/components/landing/pricing-plans.tsx
  • apps/site/components/landing/features.tsx
  • apps/web/index.html
  • apps/site/components/landing/hero.tsx
  • apps/site/app/layout.tsx
  • apps/site/components/landing/footer.tsx

Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The change updates Kaneo’s tagline and project-management messaging across metadata, landing-page content, and the web app banner. It also changes hero actions and reduces card corner radii on the landing page and pricing plans.

Changes

Landing page refresh

Layer / File(s) Summary
Branding and metadata
apps/site/app/layout.tsx, apps/site/components/landing/footer.tsx, apps/web/index.html, apps/web/src/main.tsx
The new Kaneo tagline appears in page metadata, Open Graph and Twitter titles, the footer, and the startup banner.
Hero messaging and actions
apps/site/components/landing/hero.tsx
The hero copy now focuses on project management. The actions are renamed to “Start for free” and “Self-host”. The GitHub action now uses “View on GitHub” with an external-link icon, and the Pricing action is removed.
Landing card styling
apps/site/components/landing/features.tsx, apps/site/components/landing/pricing-plans.tsx
Feature cards use rounded-md. Pricing cards use a radius calculated from --radius-2xl.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 95c5b

This PR makes localized landing-page positioning, styling, and metadata updates without any identified merge-blocking correctness, security, availability, or deployment risk. It is merge-ready after normal checks and review.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 6 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title identifies the main change as a refresh of the site's product positioning. The merge warning and feature prefix add noise but do not make the title unrelated.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 6 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/site-positioning

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Refresh Kaneo marketing tagline, CTAs, and landing card styling

✨ Enhancement 🕐 10-20 Minutes

Grey Divider

AI Description

• Update Kaneo tagline/positioning across the site and web app metadata.
• Refine landing hero CTAs to emphasize “Start for free” and self-hosting.
• Polish landing card styling by tightening border radius consistency.
Diagram

graph TD
  P["Positioning copy"] --> B["Site SEO metadata"]
  P --> C["Hero headline/CTAs"] --> H{{"Cloud/Docs/GitHub"}}
  P --> E["Footer tagline"]
  P --> G["Web index meta"]
  P --> I["Web console banner"]
  P --> D["Card styling"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Centralize marketing copy in a shared constant/package
  • ➕ Prevents tagline/meta drift across apps/site and apps/web
  • ➕ Simplifies future copy updates and A/B iterations
  • ➖ Requires introducing a shared dependency or moving web shell metadata generation into TS/JS
2. Drive landing copy via config/CMS (JSON/YAML)
  • ➕ Non-code copy updates and easier experimentation
  • ➕ Can localize/variant copy without redeploying app code
  • ➖ Adds tooling/runtime complexity for a small marketing site
  • ➖ Requires governance to avoid inconsistent SEO defaults

Recommendation: For this scope, inlining updates in each surface is fine and keeps changes easy to review. If the tagline/metadata is expected to evolve frequently, centralizing the shared strings (at least within apps/site, and optionally via a shared package) would reduce future inconsistency across site + web app.

Files changed (7) +34 / -43

Enhancement (7) +34 / -43
layout.tsxRefresh site SEO title and description to new positioning +4/-4

Refresh site SEO title and description to new positioning

• Updates the default metadata title and long description, and aligns OpenGraph/Twitter titles with the new tagline.

apps/site/app/layout.tsx

features.tsxTighten landing feature card border radius +6/-6

Tighten landing feature card border radius

• Adjusts feature section card styling by switching rounded corners from xl to md for a sharper look.

apps/site/components/landing/features.tsx

footer.tsxUpdate footer tagline to match new messaging +1/-1

Update footer tagline to match new messaging

• Replaces the old slogan with the new product positioning tagline in the footer blurb.

apps/site/components/landing/footer.tsx

hero.tsxRewrite hero headline/description and simplify primary CTAs +16/-25

Rewrite hero headline/description and simplify primary CTAs

• Updates the hero headline and supporting copy, changes the primary CTA to “Start for free”, and refocuses secondary actions on self-hosting and GitHub (removing the pricing button from the hero).

apps/site/components/landing/hero.tsx

pricing-plans.tsxAlign pricing plan card radius with landing styling +1/-1

Align pricing plan card radius with landing styling

• Tweaks the pricing plan card border radius to better match the outer container and overall landing card styling.

apps/site/components/landing/pricing-plans.tsx

index.htmlAlign web app HTML title/meta tags with new positioning +5/-5

Align web app HTML title/meta tags with new positioning

• Updates the page title and meta title/description along with OG/Twitter titles to match the refreshed tagline.

apps/web/index.html

main.tsxUpdate web app console banner tagline +1/-1

Update web app console banner tagline

• Replaces the old console banner slogan with the new product positioning tagline.

apps/web/src/main.tsx

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ade1f7242e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/site/components/landing/hero.tsx Outdated
@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Aug 12, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (1) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Hardcoded layout metadata copy 📘 Rule violation ⚙ Maintainability
Description
apps/site/app/layout.tsx, apps/site/components/landing/hero.tsx, and
apps/site/components/landing/footer.tsx introduce or update user-facing copy (including metadata,
landing hero marketing text/CTAs, and the footer tagline) as hardcoded English string literals
rather than static i18n keys. This breaks localization consistency and violates the requirement that
user-facing copy changes use i18n/en-US.json as the English source of truth.
Code

apps/site/app/layout.tsx[R15-19]

+    default: "Kaneo - Project management that doesn't become the project.",
  template: "%s | Kaneo",
},
description:
-    "All you need. Nothing you don't. Open source project management that works for you, not against you.",
+    "Fast, open-source project management for teams that want clear ownership without heavy process. Use Kaneo Cloud or host it yourself.",
Evidence
PR Compliance ID 12 requires all user-facing copy changes to be represented via static i18n keys,
with i18n/en-US.json serving as the canonical English source. The cited files show this
requirement is not met: apps/site/app/layout.tsx hardcodes metadata strings such as
title.default, description, and social titles; apps/site/components/landing/hero.tsx embeds
visible marketing text literals (headline, description, and CTA labels) directly in the component;
and apps/site/components/landing/footer.tsx sets the visible footer tagline as an English string
literal instead of an i18n key.

AGENTS.md: User-Facing Web Copy Must Use Static i18n Keys (en-US Source of Truth): AGENTS.md: User-Facing Web Copy Must Use Static i18n Keys (en-US Source of Truth): AGENTS.md: User-Facing Web Copy Must Use Static i18n Keys (en-US Source of Truth): AGENTS.md: User-Facing Web Copy Must Use Static i18n Keys (en-US Source of Truth)
apps/site/app/layout.tsx[12-55]
apps/site/components/landing/hero.tsx[15-59]
apps/site/components/landing/footer.tsx[12-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
User-facing copy updates were implemented as inline English string literals (in site metadata, landing hero content/CTAs, and the footer tagline) instead of being sourced from static i18n keys, violating compliance requirements for localization.
## Issue Context
PR Compliance ID 12 requires that user-facing web copy—including browser/tab title, share-preview metadata, and visible UI/marketing text—be sourced from static i18n resources, with `i18n/en-US.json` as the canonical English source of truth. Replace the hardcoded strings in the affected components with i18n key lookups and add/update the corresponding keys in `i18n/en-US.json`.
## Fix Focus Areas
- apps/site/app/layout.tsx[12-55]
- apps/site/components/landing/hero.tsx[15-60]
- apps/site/components/landing/footer.tsx[12-14]
- i18n/en-US.json[1-200]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Site meta descriptions mismatch ✓ Resolved 🐞 Bug ≡ Correctness
Description
The standard meta description has been updated to new positioning copy, but OpenGraph and Twitter
descriptions (and the JSON-LD SoftwareApplication description in the site app) still use the old
text, leading to inconsistent messaging across SEO metadata and social link previews. This affects
both apps/site/app/layout.tsx and apps/web/index.html, depending on which tag a crawler or
platform reads.
Code

apps/site/app/layout.tsx[19]

+    "Fast, open-source project management for teams that want clear ownership without heavy process. Use Kaneo Cloud or host it yourself.",
Evidence
In apps/site/app/layout.tsx, the primary metadata.description is updated to the new positioning
text, but metadata.openGraph.description, metadata.twitter.description, and the JSON-LD
SoftwareApplication.description remain on the older copy, demonstrating inconsistent metadata
outputs within the same module. Similarly, in apps/web/index.html, the meta name="description"
content is updated to the new copy while og:description and twitter:description still contain
the previous description string, showing social preview tags are out of sync with the main
description.

apps/site/app/layout.tsx[12-55]
apps/site/app/layout.tsx[70-97]
apps/web/index.html[6-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The standard meta description has been updated to new positioning copy, but the OpenGraph/Twitter descriptions (and, in the site app, the JSON-LD `SoftwareApplication.description`) still contain the old description string. Update these fields so crawlers and social platforms see consistent messaging regardless of which metadata tag they consume.
## Issue Context
- In `apps/site/app/layout.tsx`, all related description fields are defined in the same module (`metadata.description`, `metadata.openGraph.description`, `metadata.twitter.description`, and the JSON-LD `SoftwareApplication.description`) and should be kept in sync, ideally by updating all strings together or centralizing them into a shared constant.
- In `apps/web/index.html`, the title and `meta name="description"` were updated, but the corresponding OG/Twitter description meta tags were not; they should match the updated positioning copy.
## Fix Focus Areas
- apps/site/app/layout.tsx[12-55]
- apps/site/app/layout.tsx[70-97]
- apps/web/index.html[8-24]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can enable the Remediation agent and Qodo fixes findings in a dedicated fix PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread apps/site/app/layout.tsx Outdated
Comment thread apps/site/app/layout.tsx Outdated
@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant