Browse Source
- Prisma schema: added `changelog Json @default("[]")` to Block model
- Migration: 20260324141120_add_changelog_field
- Seed: 8 blocks with actual versions (v1.0–v1.2) and changelog entries
- API: PATCH /blocks/by-path accepts changelog field
- CORS: accept any localhost port (regex pattern)
- BlockChangelog component: renders version history from API or fallback
- BlockMetaBar: loads changelog from API, passes to BlockChangelog
- Removed "API офлайн" text, replaced with subtle gray dot
- Added defaultChangelog prop for offline fallback
- Block pages: removed hardcoded changelog JSX, use defaultChangelog prop
- Updated SPRINTS.md with completed tasks
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
main
14 changed files with 349 additions and 197 deletions
@ -0,0 +1,2 @@
|
||||
-- AlterTable |
||||
ALTER TABLE "Block" ADD COLUMN "changelog" JSONB NOT NULL DEFAULT '[]'; |
||||
@ -0,0 +1,41 @@
|
||||
"use client"; |
||||
|
||||
export interface ChangelogEntry { |
||||
version: string; |
||||
date: string; |
||||
changes: string[]; |
||||
} |
||||
|
||||
interface BlockChangelogProps { |
||||
changelog: ChangelogEntry[]; |
||||
} |
||||
|
||||
export function BlockChangelog({ changelog }: BlockChangelogProps) { |
||||
if (!changelog || changelog.length === 0) return null; |
||||
|
||||
return ( |
||||
<section className="space-y-3"> |
||||
<h2 className="font-semibold text-base" style={{ color: "var(--bb-text)" }}> |
||||
История версий |
||||
</h2> |
||||
<div className="space-y-2 text-sm" style={{ color: "var(--bb-text-muted)" }}> |
||||
{changelog.map((entry) => ( |
||||
<div |
||||
key={entry.version} |
||||
className="p-3 rounded-lg" |
||||
style={{ background: "var(--bb-sidebar-bg)", border: "1px solid var(--bb-border)" }} |
||||
> |
||||
<p className="font-semibold text-xs mb-1" style={{ color: "var(--bb-text)" }}> |
||||
{entry.version} — {entry.date} |
||||
</p> |
||||
<ul className="list-disc list-inside space-y-0.5 text-xs"> |
||||
{entry.changes.map((change, i) => ( |
||||
<li key={i}>{change}</li> |
||||
))} |
||||
</ul> |
||||
</div> |
||||
))} |
||||
</div> |
||||
</section> |
||||
); |
||||
} |
||||
Loading…
Reference in new issue