Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ Versions follow [SemVer](https://semver.org/) (`0.1.0-alpha.x` while the public
- MCP / AGENTS docs no longer imply a silent `PRM_PASSWORD=workbench` default
- Settings → AI: OpenAI-compatible gateways are a separate provider from Cursor Cloud Agents
- Empty workspaces land in setup until finished or skipped; demo seed marks onboarding complete
<<<<<<< HEAD
- **Cursor Cloud Agents** chat: stream status and assistant text live via SSE; empty-result errors include agent/run ids and a dashboard link
=======
- Primary CTA hierarchy: NextStep owns the solid primary action; PageHeader/Section duplicates and table-row moves use secondary/ghost so pages like Cycles no longer show the same green button 3–4 times
>>>>>>> bd04ca1 (Clarify primary CTAs across Cycles and other pages)

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion apps/ui/src/pages/BackfillPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export function BackfillPage() {
tone="ok"
label="Dossiers look populated"
detail="Every direct has at least two evidence items. Keep capturing year-round."
action={<Link className="btn" to="/">Back to command center</Link>}
action={<Link className="btn secondary" to="/">Back to command center</Link>}
/>
)}

Expand Down
12 changes: 6 additions & 6 deletions apps/ui/src/pages/ConsistencyPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ export function ConsistencyPage() {
<PageHeader
title="Consistency"
job="Check rating distribution and side-by-side drafts across your directs before you finalize."
primary={
secondary={
data?.cards[0] ? (
<Link className="btn" to={`/cycles/${data.cycleId}/write/${data.cards[0].personId}`}>
<Link className="btn secondary" to={`/cycles/${data.cycleId}/write/${data.cards[0].personId}`}>
Open first writing desk
</Link>
) : undefined
Expand Down Expand Up @@ -114,7 +114,7 @@ export function ConsistencyPage() {
action={
<button
type="button"
className="btn"
className="btn secondary"
onClick={async () => {
try {
await openHtmlExport(`/api/exports/calib-room/${data.cycleId}?format=html`);
Expand Down Expand Up @@ -262,7 +262,7 @@ export function ConsistencyPage() {
})}
<button
type="button"
className="btn"
className="btn secondary"
onClick={async () => {
const decisions = exportedBundle.cards
.map((card) => {
Expand Down Expand Up @@ -303,7 +303,7 @@ export function ConsistencyPage() {
</div>
<button
type="button"
className="btn"
className="btn secondary"
disabled={!importJson.trim()}
onClick={async () => {
const parsed = JSON.parse(importJson) as {
Expand Down Expand Up @@ -375,7 +375,7 @@ export function ConsistencyPage() {
how="Scan flags and competency scores, then open each person’s writing desk to adjust or link evidence."
action={
data.cards[0] ? (
<Link className="btn" to={`/cycles/${data.cycleId}/write/${data.cards[0].personId}`}>
<Link className="btn secondary" to={`/cycles/${data.cycleId}/write/${data.cards[0].personId}`}>
Open first writing desk
</Link>
) : undefined
Expand Down
Loading