HaBit turns daily check-ins, wellness sliders, and journaling into
- a simple game. Keep streaks alive, take your once-per-day quiz,
+ a simple game. Keep streaks alive, take your once-per-day check-in,
and watch your bit change with you.
@@ -35,7 +35,7 @@ export default function Home() {
diff --git a/components/avatar/avatar-page-content.tsx b/components/avatar/avatar-page-content.tsx
index 64c24d7..1c9f891 100644
--- a/components/avatar/avatar-page-content.tsx
+++ b/components/avatar/avatar-page-content.tsx
@@ -4,6 +4,7 @@ import { useCallback, useEffect, useState } from "react";
import { DailyQuizForm } from "@/components/daily-quiz/daily-quiz-form";
import { HabitTracker } from "@/components/habits/habit-tracker";
+import { JournalCalendar } from "@/components/journal/journal-calendar";
import { PetHabitat } from "@/components/pet/pet-habitat";
import { HABIT_PET_DATA_UPDATED_EVENT } from "@/lib/app-events";
import {
@@ -37,6 +38,14 @@ export function AvatarPageContent() {
};
}, [loadCustomization]);
+ useEffect(() => {
+ const hash = window.location.hash.replace("#", "");
+
+ if (hash === "bit-daily-quiz") {
+ window.location.hash = "bit-daily-check-in";
+ }
+ }, []);
+
if (loadError) {
return
{loadError}
;
}
@@ -66,10 +75,14 @@ export function AvatarPageContent() {
-
+
+
+
+
+
);
}
diff --git a/components/avatar/avatar-status-card.tsx b/components/avatar/avatar-status-card.tsx
index 7732704..71160a4 100644
--- a/components/avatar/avatar-status-card.tsx
+++ b/components/avatar/avatar-status-card.tsx
@@ -94,21 +94,21 @@ export function AvatarStatusCard({ customization }: AvatarStatusCardProps) {
Health {condition.health}/{WELLNESS_SCALE_MAX}
- {hasCheckedInToday ? "Checked in today" : "Quiz pending"}
+ {hasCheckedInToday ? "Checked in today" : "Check-in pending"}
{hasCheckedInToday
? completedTaskCount > 0
- ? `Your bit reacts to today's quiz and ${completedTaskCount} completed task${completedTaskCount === 1 ? "" : "s"}. Meals, hydration, sleep, and relaxing habits boost health and mood.`
+ ? `Your bit reacts to today's check-in and ${completedTaskCount} completed task${completedTaskCount === 1 ? "" : "s"}. Meals, hydration, sleep, and relaxing habits boost health and mood.`
: "Your bit is reacting to today's wellness check-in. Complete habits to boost mood, energy, and health."
: completedTaskCount > 0
- ? "Complete today's quiz for a full wellness read, then keep completing habits to boost your bit."
- : "Complete today's quiz to update your bit's mood, energy, and health."}
+ ? "Complete today's check-in for a full wellness read, then keep completing habits to boost your bit."
+ : "Complete today's check-in to update your bit's mood, energy, and health."}
);
}
@@ -155,7 +155,7 @@ export function DailyQuizForm() {
- Today's quiz is complete
+ Today's check-in is complete
Your answers are saved below. Come back tomorrow for your next
@@ -264,7 +264,7 @@ export function DailyQuizForm() {
{!isCompleted ? (
) : null}
diff --git a/components/daily-quiz/daily-quiz-link-button.tsx b/components/daily-quiz/daily-quiz-link-button.tsx
index ab09384..a815a13 100644
--- a/components/daily-quiz/daily-quiz-link-button.tsx
+++ b/components/daily-quiz/daily-quiz-link-button.tsx
@@ -23,14 +23,14 @@ export function DailyQuizLinkButton() {
if (!isReady || isCompleted) {
return (
);
}
return (
);
}
diff --git a/components/habits/habit-tracker.tsx b/components/habits/habit-tracker.tsx
index a74ef98..4f12d89 100644
--- a/components/habits/habit-tracker.tsx
+++ b/components/habits/habit-tracker.tsx
@@ -81,7 +81,7 @@ function DailyTaskList({
if (tasks.length === 0) {
return (
- No daily tasks yet. Complete your daily quiz or update your profile so
+ No daily tasks yet. Complete your daily check-in or update your profile so
AI can suggest habits for you.
);
@@ -450,7 +450,7 @@ export function HabitTracker({ mode = "daily" }: HabitTrackerProps) {
@@ -508,17 +508,17 @@ export function HabitTracker({ mode = "daily" }: HabitTrackerProps) {
How daily tasks are picked
Your tasks combine focus preferences, custom habits, and today's
- quiz.
+ check-in.
- Suggested habits can appear when your quiz shows low energy, high
+ Suggested habits can appear when your check-in shows low energy, high
stress, or poor sleep.
@@ -571,7 +571,7 @@ export function HabitTracker({ mode = "daily" }: HabitTrackerProps) {
How daily tasks are picked
Your tasks combine custom habits and AI suggestions based on your
- profile, onboarding, daily quiz, and journal.
+ profile, onboarding, daily check-in, and journal.
@@ -580,7 +580,7 @@ export function HabitTracker({ mode = "daily" }: HabitTrackerProps) {
{focusTopic ?? "None selected"}
+ );
+}
diff --git a/components/profile/profile-preferences-form.tsx b/components/profile/profile-preferences-form.tsx
index f1b8b81..3fba700 100644
--- a/components/profile/profile-preferences-form.tsx
+++ b/components/profile/profile-preferences-form.tsx
@@ -247,13 +247,13 @@ export function ProfilePreferencesForm({ email }: ProfilePreferencesFormProps) {
try {
await resetTodaysDailyQuiz();
setQuizResetMessage(
- "Today's quiz was reset. Open the Quiz tab to take it again.",
+ "Today's check-in was reset. Open the Bit page to complete it again.",
);
} catch (resetError) {
setError(
resetError instanceof Error
? resetError.message
- : "Could not reset today's quiz.",
+ : "Could not reset today's check-in.",
);
} finally {
setIsResettingQuiz(false);
@@ -337,7 +337,7 @@ export function ProfilePreferencesForm({ email }: ProfilePreferencesFormProps) {
Notification preferences
- Control reminders for your daily quiz and habits.
+ Control reminders for your daily check-in and habits.
@@ -425,7 +425,7 @@ export function ProfilePreferencesForm({ email }: ProfilePreferencesFormProps) {
- Reset clears today's wellness quiz entry so you can complete it
+ Reset clears today's wellness check-in entry so you can complete it
again immediately. Demo points are for testing the shop only.
{quizResetMessage ? (
{quizResetMessage}
diff --git a/components/shop/shop-content.tsx b/components/shop/shop-content.tsx
index ba143c2..e304949 100644
--- a/components/shop/shop-content.tsx
+++ b/components/shop/shop-content.tsx
@@ -22,6 +22,7 @@ import {
} from "@/lib/shop-storage";
import {
getLayerLabel,
+ getShopItemDisplayName,
type ShopItemRecord,
type ShopLayerId,
} from "@/lib/shop-catalog";
@@ -103,6 +104,8 @@ function ShopItemCard({
? null
: getShopItemThumbnailColors(item, characterColors);
+ const displayName = getShopItemDisplayName(item);
+
const actionLabel = (() => {
if (isPending) {
return owned ? "Updating..." : "Processing...";
@@ -123,27 +126,33 @@ function ShopItemCard({