story-kit: merge 144_story_add_build_timestamp_and_persist_chat_history_across_rebuilds

This commit is contained in:
Dave
2026-02-24 14:01:55 +00:00
parent 8a37c958e7
commit de79644263
5 changed files with 35 additions and 0 deletions

View File

@@ -131,6 +131,11 @@ describe("ChatHeader", () => {
expect(onToggleTools).toHaveBeenCalled(); expect(onToggleTools).toHaveBeenCalled();
}); });
it("displays the build timestamp in human-readable format", () => {
render(<ChatHeader {...makeProps()} />);
expect(screen.getByText("Built: 2026-01-01 00:00")).toBeInTheDocument();
});
it("shows disabled placeholder when claudeModels is empty and no API key", () => { it("shows disabled placeholder when claudeModels is empty and no API key", () => {
render( render(
<ChatHeader <ChatHeader

View File

@@ -1,3 +1,13 @@
function formatBuildTime(isoString: string): string {
const d = new Date(isoString);
const year = d.getUTCFullYear();
const month = String(d.getUTCMonth() + 1).padStart(2, "0");
const day = String(d.getUTCDate()).padStart(2, "0");
const hours = String(d.getUTCHours()).padStart(2, "0");
const minutes = String(d.getUTCMinutes()).padStart(2, "0");
return `Built: ${year}-${month}-${day} ${hours}:${minutes}`;
}
interface ContextUsage { interface ContextUsage {
used: number; used: number;
total: number; total: number;
@@ -109,6 +119,18 @@ export function ChatHeader({
</div> </div>
<div style={{ display: "flex", alignItems: "center", gap: "16px" }}> <div style={{ display: "flex", alignItems: "center", gap: "16px" }}>
<div
style={{
fontSize: "0.75em",
color: "#555",
whiteSpace: "nowrap",
fontFamily: "monospace",
}}
title={__BUILD_TIME__}
>
{formatBuildTime(__BUILD_TIME__)}
</div>
<div <div
style={{ style={{
fontSize: "0.9em", fontSize: "0.9em",

View File

@@ -1,5 +1,9 @@
/// <reference types="vite/client" /> /// <reference types="vite/client" />
declare global {
const __BUILD_TIME__: string;
}
declare module "react" { declare module "react" {
interface InputHTMLAttributes<T> { interface InputHTMLAttributes<T> {
webkitdirectory?: string; webkitdirectory?: string;

View File

@@ -8,6 +8,7 @@ export default defineConfig(() => {
plugins: [react()], plugins: [react()],
define: { define: {
__STORYKIT_PORT__: JSON.stringify(String(backendPort)), __STORYKIT_PORT__: JSON.stringify(String(backendPort)),
__BUILD_TIME__: JSON.stringify(new Date().toISOString()),
}, },
server: { server: {
port: backendPort + 2172, port: backendPort + 2172,

View File

@@ -3,6 +3,9 @@ import { defineConfig } from "vitest/config";
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
define: {
__BUILD_TIME__: JSON.stringify("2026-01-01T00:00:00.000Z"),
},
test: { test: {
environment: "jsdom", environment: "jsdom",
globals: true, globals: true,