qgallouedec HF Staff commited on
Commit
20810d7
·
1 Parent(s): dec9131

Widen the column from 700px to 960px

Browse files

The measure was chosen for prose, but most of the app isn't prose: the
before/after comparison is two answers meant to be compared side by side,
and the dataset preview is a fixed 420px panel. Both were sharing 700px
while half the screen sat empty, and the vertical space that costs is
exactly what was in short supply.

Safe to widen because text already carries its own caps in ch -- the lede
at 34ch, notes and descriptions at 62-70ch -- so nothing prose-like
stretches with the column.

The exception was the conversation preview, whose turns were capped at 86%
of the container: at 960px that is 825px, well past 120 characters a line.
Those now use a 68ch measure, so a turn still looks like a turn.

src/components/Chrome.tsx CHANGED
@@ -78,7 +78,7 @@ function Runs({ runs, onOpen }: { runs: Run[]; onOpen: (id: string) => void }) {
78
  onClick={() => setOpen(false)}
79
  />
80
  <div className="absolute inset-x-0 top-12 z-50 border-b border-line bg-panel">
81
- <div className="mx-auto max-w-[700px] px-5">
82
  {runs.map((r) => {
83
  const done = r.status === "done";
84
  const failed = r.status === "error";
@@ -132,7 +132,7 @@ export function Header({
132
  return (
133
  <header className="sticky top-0 z-40 border-b border-line bg-bg/90 backdrop-blur">
134
  {/* Same measure as every screen — the wordmark lines up with the column. */}
135
- <div className="mx-auto flex h-12 max-w-[700px] items-center justify-between gap-4 px-5">
136
  {onHome ? (
137
  <button onClick={onHome} aria-label="Back to the start">
138
  <Wordmark />
 
78
  onClick={() => setOpen(false)}
79
  />
80
  <div className="absolute inset-x-0 top-12 z-50 border-b border-line bg-panel">
81
+ <div className="mx-auto max-w-[960px] px-5">
82
  {runs.map((r) => {
83
  const done = r.status === "done";
84
  const failed = r.status === "error";
 
132
  return (
133
  <header className="sticky top-0 z-40 border-b border-line bg-bg/90 backdrop-blur">
134
  {/* Same measure as every screen — the wordmark lines up with the column. */}
135
+ <div className="mx-auto flex h-12 max-w-[960px] items-center justify-between gap-4 px-5">
136
  {onHome ? (
137
  <button onClick={onHome} aria-label="Back to the start">
138
  <Wordmark />
src/components/ConversationPreview.tsx CHANGED
@@ -77,7 +77,7 @@ function Turn({
77
  if (message.role === "tool") {
78
  return (
79
  <div className={cn("flex justify-start", dimmed && "opacity-35")}>
80
- <div className="min-w-0 max-w-[86%] border-l-2 border-line pl-3">
81
  <div className="cap mb-1 text-dim">
82
  {message.name ? `${message.name} answered` : "the tool answered"}
83
  </div>
@@ -92,7 +92,7 @@ function Turn({
92
  if (calls.length > 0) {
93
  return (
94
  <div className={cn("flex justify-end", dimmed && "opacity-35")}>
95
- <div className="min-w-0 max-w-[86%]">
96
  <div className="cap mb-1.5 text-right">assistant</div>
97
  <div className="flex flex-col gap-2">
98
  {calls.map((call, index) => (
@@ -110,7 +110,12 @@ function Turn({
110
 
111
  return (
112
  <div className={cn("flex", reply ? "justify-end" : "justify-start")}>
113
- <div className={cn("max-w-[86%] min-w-0", dimmed && "opacity-35")}>
 
 
 
 
 
114
  <div className={cn("cap mb-1.5", reply && "text-right")}>{message.role}</div>
115
  <div
116
  className={cn(
 
77
  if (message.role === "tool") {
78
  return (
79
  <div className={cn("flex justify-start", dimmed && "opacity-35")}>
80
+ <div className="min-w-0 max-w-[68ch] border-l-2 border-line pl-3">
81
  <div className="cap mb-1 text-dim">
82
  {message.name ? `${message.name} answered` : "the tool answered"}
83
  </div>
 
92
  if (calls.length > 0) {
93
  return (
94
  <div className={cn("flex justify-end", dimmed && "opacity-35")}>
95
+ <div className="min-w-0 max-w-[68ch]">
96
  <div className="cap mb-1.5 text-right">assistant</div>
97
  <div className="flex flex-col gap-2">
98
  {calls.map((call, index) => (
 
110
 
111
  return (
112
  <div className={cn("flex", reply ? "justify-end" : "justify-start")}>
113
+ {/*
114
+ A character measure, not a percentage. The column is wider than it was, and a
115
+ line of dialogue at 86% of it would run past 120 characters — unreadable, and
116
+ the turns would stop looking like turns.
117
+ */}
118
+ <div className={cn("max-w-[68ch] min-w-0", dimmed && "opacity-35")}>
119
  <div className={cn("cap mb-1.5", reply && "text-right")}>{message.role}</div>
120
  <div
121
  className={cn(
src/screens/Auth.tsx CHANGED
@@ -31,7 +31,7 @@ export function Auth({ onSignedIn }: { onSignedIn: (token: string) => Promise<vo
31
  };
32
 
33
  return (
34
- <div className="mx-auto flex min-h-[calc(100vh-3rem)] max-w-[700px] flex-col justify-center gap-7 px-5 pb-24">
35
  <Lede className="max-w-[30ch]">
36
  <i>Fine-tune a model on your own conversations.</i>
37
  </Lede>
@@ -80,7 +80,7 @@ export function Auth({ onSignedIn }: { onSignedIn: (token: string) => Promise<vo
80
  /** Shown for the moment the session check takes. */
81
  export function Checking() {
82
  return (
83
- <div className="mx-auto flex min-h-[calc(100vh-3rem)] max-w-[700px] items-center px-5">
84
  <Cap>Checking your session…</Cap>
85
  </div>
86
  );
 
31
  };
32
 
33
  return (
34
+ <div className="mx-auto flex min-h-[calc(100vh-3rem)] max-w-[960px] flex-col justify-center gap-7 px-5 pb-24">
35
  <Lede className="max-w-[30ch]">
36
  <i>Fine-tune a model on your own conversations.</i>
37
  </Lede>
 
80
  /** Shown for the moment the session check takes. */
81
  export function Checking() {
82
  return (
83
+ <div className="mx-auto flex min-h-[calc(100vh-3rem)] max-w-[960px] items-center px-5">
84
  <Cap>Checking your session…</Cap>
85
  </div>
86
  );
src/screens/CheckData.tsx CHANGED
@@ -27,7 +27,7 @@ function Notes({ issues }: { issues: Issue[] }) {
27
 
28
  function Reading({ dataset }: { dataset: DatasetSummary }) {
29
  return (
30
- <div className="mx-auto max-w-[700px] px-5 pt-32">
31
  <div className="flex items-center gap-3 text-[13px] text-mut">
32
  <Spinner className="text-hot" />
33
  Reading {dataset.id}
@@ -62,7 +62,7 @@ export function CheckData({
62
 
63
  if (error) {
64
  return (
65
- <div className="mx-auto flex max-w-[700px] flex-col items-start gap-6 px-5 pt-32">
66
  <Lede>
67
  <i>{error}</i>
68
  </Lede>
@@ -90,7 +90,7 @@ export function CheckData({
90
  );
91
 
92
  return (
93
- <div className="mx-auto flex max-w-[700px] flex-col gap-7 px-5 pt-10 pb-16">
94
  <button
95
  onClick={onBack}
96
  className="cap self-start transition-colors hover:text-ink"
 
27
 
28
  function Reading({ dataset }: { dataset: DatasetSummary }) {
29
  return (
30
+ <div className="mx-auto max-w-[960px] px-5 pt-32">
31
  <div className="flex items-center gap-3 text-[13px] text-mut">
32
  <Spinner className="text-hot" />
33
  Reading {dataset.id}
 
62
 
63
  if (error) {
64
  return (
65
+ <div className="mx-auto flex max-w-[960px] flex-col items-start gap-6 px-5 pt-32">
66
  <Lede>
67
  <i>{error}</i>
68
  </Lede>
 
90
  );
91
 
92
  return (
93
+ <div className="mx-auto flex max-w-[960px] flex-col gap-7 px-5 pt-10 pb-16">
94
  <button
95
  onClick={onBack}
96
  className="cap self-start transition-colors hover:text-ink"
src/screens/Done.tsx CHANGED
@@ -66,7 +66,7 @@ export function Done({ run, onRestart }: { run: Run; onRestart: () => void }) {
66
  * minutes for is the proof that their model came out different, and that belongs
67
  * above the fold. So: what happened, shown; then where it lives.
68
  */
69
- <div className="mx-auto flex max-w-[700px] flex-col gap-8 px-5 pt-10 pb-20">
70
  <Lede>
71
  <i>Your model is ready.</i> <em>Here's what changed.</em>
72
  </Lede>
 
66
  * minutes for is the proof that their model came out different, and that belongs
67
  * above the fold. So: what happened, shown; then where it lives.
68
  */
69
+ <div className="mx-auto flex max-w-[960px] flex-col gap-8 px-5 pt-10 pb-20">
70
  <Lede>
71
  <i>Your model is ready.</i> <em>Here's what changed.</em>
72
  </Lede>
src/screens/Running.tsx CHANGED
@@ -87,7 +87,7 @@ export function Running({ run }: { run: Run }) {
87
 
88
  if (run.status === "error") {
89
  return (
90
- <div className="mx-auto flex max-w-[700px] flex-col gap-6 px-5 pt-10 pb-20">
91
  <Lede>
92
  <i>This run stopped early.</i>
93
  </Lede>
@@ -100,7 +100,7 @@ export function Running({ run }: { run: Run }) {
100
  }
101
 
102
  return (
103
- <div className="mx-auto flex max-w-[700px] flex-col gap-8 px-5 pt-10 pb-20">
104
  <Lede>
105
  <i>{eta(run.etaSeconds)}.</i> <em>You can close this page.</em>
106
  </Lede>
 
87
 
88
  if (run.status === "error") {
89
  return (
90
+ <div className="mx-auto flex max-w-[960px] flex-col gap-6 px-5 pt-10 pb-20">
91
  <Lede>
92
  <i>This run stopped early.</i>
93
  </Lede>
 
100
  }
101
 
102
  return (
103
+ <div className="mx-auto flex max-w-[960px] flex-col gap-8 px-5 pt-10 pb-20">
104
  <Lede>
105
  <i>{eta(run.etaSeconds)}.</i> <em>You can close this page.</em>
106
  </Lede>
src/screens/Start.tsx CHANGED
@@ -181,7 +181,7 @@ export function Start({
181
  }, [query, user, token]);
182
 
183
  return (
184
- <div className="mx-auto flex max-w-[700px] flex-col gap-8 px-5 pt-10 pb-24">
185
  <Lede>
186
  <i>Pick a model and a dataset.</i>
187
  </Lede>
@@ -256,7 +256,7 @@ export function Start({
256
  {/* -------------------------------------------------------- sticky bar */}
257
  {dataset && (
258
  <div className="fixed inset-x-0 bottom-0 z-30 border-t border-line bg-bg/95 backdrop-blur">
259
- <div className="mx-auto flex max-w-[700px] items-center justify-between gap-4 px-5 py-3">
260
  <span className="min-w-0 truncate text-[12.5px]">
261
  {dataset.id} <span className="text-dim">· {fmt(dataset.rows)} conversations</span>
262
  </span>
 
181
  }, [query, user, token]);
182
 
183
  return (
184
+ <div className="mx-auto flex max-w-[960px] flex-col gap-8 px-5 pt-10 pb-24">
185
  <Lede>
186
  <i>Pick a model and a dataset.</i>
187
  </Lede>
 
256
  {/* -------------------------------------------------------- sticky bar */}
257
  {dataset && (
258
  <div className="fixed inset-x-0 bottom-0 z-30 border-t border-line bg-bg/95 backdrop-blur">
259
+ <div className="mx-auto flex max-w-[960px] items-center justify-between gap-4 px-5 py-3">
260
  <span className="min-w-0 truncate text-[12.5px]">
261
  {dataset.id} <span className="text-dim">· {fmt(dataset.rows)} conversations</span>
262
  </span>