diff --git a/app/globals.css b/app/globals.css
index 9fe04c0..42aa009 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -684,17 +684,7 @@ body {
.pt-safe { padding-top: max(env(safe-area-inset-top), 0.75rem) }
.pb-safe { padding-bottom: max(env(safe-area-inset-bottom), 0.75rem) }
.pb-tabbar { padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 5.25rem) }
-/* Trailing room under the sticky "Freeze my deck" strip on /create.
- Phones: the strip floats one tab-bar height above the viewport bottom (the
- sticky bottom offset in UploadScreen), so the page only needs that much
- scroll room under it — the strip settles exactly where it was already
- floating, and the bottom bar is never double-counted. Keep 4.6rem in sync
- with the sticky offset. Wider screens: the strip docks to the viewport
- bottom and keeps the roomier 9rem. */
.pb-cta { padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 9rem) }
-@media (max-width: 639px) {
- .pb-cta { padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 4.6rem) }
-}
@media (display-mode: standalone) {
.standalone-hide { display: none }
diff --git a/components/LibraryScreen.tsx b/components/LibraryScreen.tsx
index 2beeea5..ec618ea 100644
--- a/components/LibraryScreen.tsx
+++ b/components/LibraryScreen.tsx
@@ -5,7 +5,7 @@ import { useMemo, useRef, useState, useSyncExternalStore } from "react";
import { DeckCard } from "@/components/DeckCard";
import { FolderBar } from "@/components/FolderBar";
-import { FolderIcon, SnowflakeIcon, SparklesIcon, UploadIcon } from "@/components/icons";
+import { FolderIcon, UploadIcon } from "@/components/icons";
import { Button, EmptyState } from "@/components/ui";
import { folderStore, renameFolder } from "@/lib/folders";
import { useI18n } from "@/lib/i18n";
@@ -224,38 +224,9 @@ export function LibraryScreen() {
-
-
-
-
-
- {t("emptyStateCreateDeck")}
-
-
-
-
-
-
-
- {t("emptyStateHomework")}
-
-
-
+
+ {t("library.makeFirst")}
+
}
>
{t("library.emptyBody")}
diff --git a/components/UploadScreen.tsx b/components/UploadScreen.tsx
index ce488f2..8cbac2c 100644
--- a/components/UploadScreen.tsx
+++ b/components/UploadScreen.tsx
@@ -33,7 +33,7 @@ import { UNORGANIZED_ID, type Difficulty } from "@/lib/schemas";
import { upsertDeck } from "@/lib/storage";
import { openSettings } from "@/lib/ui-events";
import { cn, uid } from "@/lib/utils";
-import { CameraIcon, FolderIcon, IceCubeIcon, PlusIcon, SnowflakeIcon, SparklesIcon, SunIcon } from "@/components/icons";
+import { CameraIcon, ChevronRightIcon, FolderIcon, IceCubeIcon, PlusIcon, SnowflakeIcon, SparklesIcon, SunIcon } from "@/components/icons";
import { Button, ProgressBar } from "@/components/ui";
type Phase = "idle" | "preparing" | "loading" | "error";
@@ -321,39 +321,23 @@ export function UploadScreen() {
- {/* Mode switcher: this page builds a study deck from notes; the other
- card hands the same intake over to the homework flow. */}
-
-
+
-
-
-
-
- {t("actionStudyDeck")}
-
-
-
-
-
-
-
- {t("actionHomework")}
-
-
-
+
+
+
+ {t("homework.entry")}
+ {t("homework.nav")} →
+
+
+
{error ? (
@@ -692,7 +676,7 @@ export function UploadScreen() {
@@ -721,7 +705,7 @@ export function UploadScreen() {
{option.icon}
{t(option.labelKey)}
- {t(option.blurbKey)}
+ {t(option.blurbKey)}
);
})}
diff --git a/lib/i18n-dict.ts b/lib/i18n-dict.ts
index 75d59b4..337951e 100644
--- a/lib/i18n-dict.ts
+++ b/lib/i18n-dict.ts
@@ -172,6 +172,7 @@ const en: Record = {
"homework.title": "Make my homework",
"homework.subtitle":
"Paste the assignment, snap a photo or add a document — then choose whether I should just do it, or guide you through it.",
+ "homework.entry": "Got homework instead of notes?",
"homework.source.title": "1. The assignment",
"homework.source.help": "Paste its text, drop photos, or add a document.",
"homework.source.textLabel": "Assignment text",
@@ -223,12 +224,6 @@ const en: Record = {
"homework.history.openTitle": "Open “{title}”",
"homework.history.deleteConfirm": "Delete this result?",
- /* quick actions (library empty state + /create switcher) ----------- */
- "emptyStateCreateDeck": "Create interactive test",
- "emptyStateHomework": "Help me with my homework",
- "actionStudyDeck": "Study Deck & Quizzes",
- "actionHomework": "Homework Solver",
-
/* library --------------------------------------------------------- */
"library.title": "Your icebox",
"library.subtitle": "Decks frozen from your notes, saved in this browser.",
@@ -240,6 +235,7 @@ const en: Record = {
"library.deckMoved": "Deck moved.",
"library.deckMovedUnorganized": "Deck moved to Unorganized.",
"library.noDecks": "No decks yet",
+ "library.makeFirst": "Make your first deck",
"library.emptyBody": "Freeze a page of notes into a feed of flashcards and quizzes.",
"library.emptyHint": "Using your own Ollama models —",
"library.emptySettings": "check the connection in Settings",
@@ -756,6 +752,7 @@ const cs: Record = {
"homework.title": "Udělej mi úkol",
"homework.subtitle":
"Vlož zadání, vyfoť ho nebo přidej dokument — a pak si vyber, jestli to mám rovnou udělat, nebo tě tím provést.",
+ "homework.entry": "Máš místo poznámek úkol?",
"homework.source.title": "1. Zadání",
"homework.source.help": "Vlož jeho text, přetáhni fotky nebo přidej dokument.",
"homework.source.textLabel": "Text zadání",
@@ -807,12 +804,6 @@ const cs: Record = {
"homework.history.openTitle": "Otevřít „{title}“",
"homework.history.deleteConfirm": "Smazat tento výsledek?",
- /* quick actions (library empty state + /create switcher) ----------- */
- "emptyStateCreateDeck": "Vytvořit interaktivní test",
- "emptyStateHomework": "Pomoct s úkolem",
- "actionStudyDeck": "Studijní balíček a testy",
- "actionHomework": "Řešitel úkolů",
-
/* library --------------------------------------------------------- */
"library.title": "Tvoje mraznička",
"library.subtitle": "Sady zmrazené z tvých poznámek, uložené v tomto prohlížeči.",
@@ -824,6 +815,7 @@ const cs: Record = {
"library.deckMoved": "Sada přesunuta.",
"library.deckMovedUnorganized": "Sada přesunuta do Nezařazených.",
"library.noDecks": "Zatím žádné sady",
+ "library.makeFirst": "Vytvoř si první sadu",
"library.emptyBody": "Zmraz stránku poznámek do feedu kartiček a kvízů.",
"library.emptyHint": "S tvými vlastními modely Ollama —",
"library.emptySettings": "zkontroluj připojení v Nastavení",
diff --git a/public/sw.js b/public/sw.js
index 717801b..24dc175 100644
--- a/public/sw.js
+++ b/public/sw.js
@@ -9,7 +9,7 @@
*
* Bumping CACHE_VERSION is how a new deploy invalidates old assets.
*/
-const CACHE_VERSION = "freezmo-v8";
+const CACHE_VERSION = "freezmo-v6";
const SHELL_CACHE = `${CACHE_VERSION}-shell`;
const ASSET_CACHE = `${CACHE_VERSION}-assets`;