@yosr-ai/template-next-fullstack 0.1.0-alpha.3 → 0.1.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @yosr-ai/template-next-fullstack
2
2
 
3
+ ## 0.1.0-alpha.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Note times show in the viewer's timezone; release waits up to 5 minutes for the registry; test cleanup retries on macOS.
8
+
9
+ ## 0.1.0-alpha.4
10
+
11
+ ### Patch Changes
12
+
13
+ - A fresh Yosr Seed project already contains the Next.js agent block, so the first dev server does not edit AGENTS.md. The closing suggestion asks for a delete button on each note. The initial commit step is labeled Initial commit. Note times show a local date and time, and the README gives the alpha install command.
14
+
3
15
  ## 0.1.0-alpha.3
4
16
 
5
17
  ### Patch Changes
@@ -1,5 +1,7 @@
1
1
  import type { Note } from "@domain/notes/note-schema";
2
2
 
3
+ import { NoteWhen } from "./note-when";
4
+
3
5
  export function NoteList({ notes }: { notes: Note[] }) {
4
6
  if (notes.length === 0) {
5
7
  return <p className="text-sm text-muted-foreground">No notes yet.</p>;
@@ -10,12 +12,10 @@ export function NoteList({ notes }: { notes: Note[] }) {
10
12
  {notes.map((note) => (
11
13
  <li key={note.id} className="rounded-md border p-3">
12
14
  <p className="font-medium">{note.title}</p>
13
- <time
14
- dateTime={note.createdAt.toISOString()}
15
+ <NoteWhen
16
+ iso={note.createdAt.toISOString()}
15
17
  className="text-xs text-muted-foreground"
16
- >
17
- {note.createdAt.toISOString()}
18
- </time>
18
+ />
19
19
  </li>
20
20
  ))}
21
21
  </ul>
@@ -0,0 +1,30 @@
1
+ "use client";
2
+
3
+ import { useSyncExternalStore } from "react";
4
+
5
+ import { formatNoteWhen } from "@domain/notes/format-note-when";
6
+
7
+ function subscribe(): () => void {
8
+ return () => {};
9
+ }
10
+
11
+ /** Renders a note time in the viewer's timezone on the client; ISO on the server. */
12
+ export function NoteWhen({
13
+ iso,
14
+ className,
15
+ }: {
16
+ iso: string;
17
+ className?: string;
18
+ }) {
19
+ const label = useSyncExternalStore(
20
+ subscribe,
21
+ () => formatNoteWhen(iso),
22
+ () => iso,
23
+ );
24
+
25
+ return (
26
+ <time dateTime={iso} className={className}>
27
+ {label}
28
+ </time>
29
+ );
30
+ }
@@ -0,0 +1,19 @@
1
+ import { describe, expect, it } from "vitest";
2
+
3
+ import { formatNoteWhen } from "./format-note-when";
4
+
5
+ describe("formatNoteWhen", () => {
6
+ const iso = "2026-06-15T12:00:00.000Z";
7
+
8
+ it("formats with medium date and short time in a fixed timezone", () => {
9
+ const utc = formatNoteWhen(iso, "UTC");
10
+ expect(utc.length).toBeGreaterThan(0);
11
+ expect(utc).toMatch(/2026/);
12
+ });
13
+
14
+ it("changes the clock face when the timezone changes", () => {
15
+ const utc = formatNoteWhen(iso, "UTC");
16
+ const tokyo = formatNoteWhen(iso, "Asia/Tokyo");
17
+ expect(tokyo).not.toBe(utc);
18
+ });
19
+ });
@@ -0,0 +1,8 @@
1
+ /** Format a note timestamp for display (viewer timezone when timeZone is omitted). */
2
+ export function formatNoteWhen(iso: string, timeZone?: string): string {
3
+ return new Intl.DateTimeFormat(undefined, {
4
+ dateStyle: "medium",
5
+ timeStyle: "short",
6
+ ...(timeZone === undefined ? {} : { timeZone }),
7
+ }).format(new Date(iso));
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yosr-ai/template-next-fullstack",
3
- "version": "0.1.0-alpha.3",
3
+ "version": "0.1.0-alpha.5",
4
4
  "description": "Yosr Seed next-fullstack template.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -2,7 +2,7 @@
2
2
  "$schema": "../../../docs/engineering/schemas/seed.template.schema.json",
3
3
  "schemaVersion": "0.1",
4
4
  "name": "next-fullstack",
5
- "version": "0.1.0-alpha.3",
5
+ "version": "0.1.0-alpha.5",
6
6
  "title": "Next.js full-stack (TypeScript)",
7
7
  "description": "Prototype of Yosr Seed's first base template (Next.js + TypeScript, Tailwind + shadcn/ui, Vitest + Playwright smoke test). Implemented: base files with the ADR 0006 defaults, the orm-drizzle and orm-prisma overlays (database=postgres), database=none (base without either overlay), deploy=docker (standalone image, compose Postgres only when database=postgres), Auth.js, Clerk, tRPC, Stripe, and a recorded AI delta for domain-features. x-prototype.stubbedFeatures is empty. Dependency versions pinned from the npm registry on 2026-10-19 (Prisma adapter on 2026-10-28, Clerk on 2026-10-28, tRPC on 2026-10-29, Stripe on 2026-10-29).",
8
8
  "license": "MIT",