mirror of
https://github.com/hoornet/vega.git
synced 2026-05-13 14:48:35 -07:00
Fix large font overflow on Windows — flex-wrap all dense rows
Feed header, note card header, note actions, compose box, settings theme grid, font size presets, media feed tabs, and profile header buttons all now wrap gracefully when CSS zoom makes content overflow the viewport. Also add AgentDocs fetch instruction to CLAUDE.md.
This commit is contained in:
@@ -6,6 +6,14 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
|
|
||||||
Wrystr is a cross-platform Nostr desktop client built with Tauri 2.0 (Rust) + React + TypeScript. It connects to Nostr relays via NDK (Nostr Dev Kit) and aims for Telegram Desktop-quality UX. Long-form content (NIP-23) is a first-class, distinguishing feature — not an afterthought.
|
Wrystr is a cross-platform Nostr desktop client built with Tauri 2.0 (Rust) + React + TypeScript. It connects to Nostr relays via NDK (Nostr Dev Kit) and aims for Telegram Desktop-quality UX. Long-form content (NIP-23) is a first-class, distinguishing feature — not an afterthought.
|
||||||
|
|
||||||
|
## AgentDocs
|
||||||
|
|
||||||
|
When the user shares an AgentDocs URL, fetch the raw content using:
|
||||||
|
```
|
||||||
|
curl https://agentdocs.exe.xyz/api/shared/<token>/raw
|
||||||
|
```
|
||||||
|
The `<token>` is the hash at the end of the shared URL. This returns the document as plain text/markdown with embedded image references.
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ export function ComposeBox({ onPublished, onNoteInjected }: { onPublished?: () =
|
|||||||
<p className="text-danger text-[11px] mb-2">{error}</p>
|
<p className="text-danger text-[11px] mb-2">{error}</p>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className="flex items-center justify-between mt-1">
|
<div className="flex flex-wrap items-center justify-between gap-y-1 mt-1">
|
||||||
<span className={`text-[10px] ${overLimit ? "text-danger" : warnLimit ? "text-warning" : "text-text-dim"}`}>
|
<span className={`text-[10px] ${overLimit ? "text-danger" : warnLimit ? "text-warning" : "text-text-dim"}`}>
|
||||||
{uploading ? (
|
{uploading ? (
|
||||||
<span className="inline-flex items-center gap-1">
|
<span className="inline-flex items-center gap-1">
|
||||||
@@ -241,7 +241,7 @@ export function ComposeBox({ onPublished, onNoteInjected }: { onPublished?: () =
|
|||||||
<span className="ml-1 text-text-dim">(draft)</span>
|
<span className="ml-1 text-text-dim">(draft)</span>
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex flex-wrap items-center gap-3">
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<button
|
<button
|
||||||
onClick={() => setShowEmoji((v) => !v)}
|
onClick={() => setShowEmoji((v) => !v)}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ export function Feed() {
|
|||||||
return (
|
return (
|
||||||
<div className="h-full flex flex-col">
|
<div className="h-full flex flex-col">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<header className="border-b border-border px-4 py-2.5 flex items-center justify-between shrink-0">
|
<header className="border-b border-border px-4 py-2.5 flex flex-wrap items-center justify-between gap-y-1 shrink-0">
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
<button
|
<button
|
||||||
onClick={() => setTab("global")}
|
onClick={() => setTab("global")}
|
||||||
@@ -144,7 +144,7 @@ export function Feed() {
|
|||||||
Trending
|
Trending
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex flex-wrap items-center gap-2">
|
||||||
<select
|
<select
|
||||||
value={feedLanguageFilter ?? ""}
|
value={feedLanguageFilter ?? ""}
|
||||||
onChange={(e) => setFeedLanguageFilter(e.target.value || null)}
|
onChange={(e) => setFeedLanguageFilter(e.target.value || null)}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ export function NoteActions({ event, onReplyToggle, showReply }: NoteActionsProp
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="flex items-center gap-4 mt-2">
|
<div className="flex flex-wrap items-center gap-x-4 gap-y-1 mt-2">
|
||||||
<button
|
<button
|
||||||
onClick={onReplyToggle}
|
onClick={onReplyToggle}
|
||||||
className={`text-[11px] transition-colors ${
|
className={`text-[11px] transition-colors ${
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ export function NoteCard({ event, focused, onReplyInThread }: NoteCardProps) {
|
|||||||
|
|
||||||
{/* Content */}
|
{/* Content */}
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
<div className="flex items-baseline gap-2 mb-0.5">
|
<div className="flex flex-wrap items-baseline gap-x-2 gap-y-0.5 mb-0.5">
|
||||||
<button
|
<button
|
||||||
className="text-text font-medium truncate text-[13px] cursor-pointer hover:text-accent transition-colors text-left"
|
className="text-text font-medium truncate text-[13px] cursor-pointer hover:text-accent transition-colors text-left"
|
||||||
onClick={() => openProfile(event.pubkey)}
|
onClick={() => openProfile(event.pubkey)}
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ export function MediaFeed() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full flex flex-col">
|
<div className="h-full flex flex-col">
|
||||||
<header className="border-b border-border px-4 py-2.5 flex items-center justify-between shrink-0">
|
<header className="border-b border-border px-4 py-2.5 flex flex-wrap items-center justify-between gap-y-1 shrink-0">
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex flex-wrap items-center gap-1">
|
||||||
<h1 className="text-text text-sm font-medium mr-3">Media</h1>
|
<h1 className="text-text text-sm font-medium mr-3">Media</h1>
|
||||||
{(["all", "videos", "images", "audio"] as const).map((t) => (
|
{(["all", "videos", "images", "audio"] as const).map((t) => (
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ export function ProfileView() {
|
|||||||
return (
|
return (
|
||||||
<div className="h-full flex flex-col">
|
<div className="h-full flex flex-col">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<header className="border-b border-border px-4 py-2.5 flex items-center justify-between shrink-0">
|
<header className="border-b border-border px-4 py-2.5 flex flex-wrap items-center justify-between gap-y-1 shrink-0">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<button
|
<button
|
||||||
onClick={editing ? () => setEditing(false) : goBack}
|
onClick={editing ? () => setEditing(false) : goBack}
|
||||||
@@ -104,7 +104,7 @@ export function ProfileView() {
|
|||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
{!isOwn && loggedIn && (
|
{!isOwn && loggedIn && (
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex flex-wrap items-center gap-2">
|
||||||
{(lud16 || profile?.lud06) && (
|
{(lud16 || profile?.lud06) && (
|
||||||
<button
|
<button
|
||||||
onClick={() => setShowZap(true)}
|
onClick={() => setShowZap(true)}
|
||||||
|
|||||||
@@ -291,12 +291,12 @@ function ThemeSection() {
|
|||||||
<h2 className="text-text text-[11px] font-medium uppercase tracking-widest mb-3 text-text-dim">
|
<h2 className="text-text text-[11px] font-medium uppercase tracking-widest mb-3 text-text-dim">
|
||||||
Theme
|
Theme
|
||||||
</h2>
|
</h2>
|
||||||
<div className="grid grid-cols-4 gap-2">
|
<div className="flex flex-wrap gap-2">
|
||||||
{themes.map((theme) => (
|
{themes.map((theme) => (
|
||||||
<button
|
<button
|
||||||
key={theme.id}
|
key={theme.id}
|
||||||
onClick={() => setTheme(theme.id)}
|
onClick={() => setTheme(theme.id)}
|
||||||
className={`flex flex-col items-center gap-1.5 p-2 border transition-colors rounded-sm ${
|
className={`flex flex-col items-center gap-1.5 p-2 border transition-colors rounded-sm w-20 ${
|
||||||
themeId === theme.id
|
themeId === theme.id
|
||||||
? "border-accent bg-bg-hover"
|
? "border-accent bg-bg-hover"
|
||||||
: "border-border hover:border-accent/40"
|
: "border-border hover:border-accent/40"
|
||||||
@@ -333,7 +333,7 @@ function FontSizeSection() {
|
|||||||
<h2 className="text-text text-[11px] font-medium uppercase tracking-widest mb-2 text-text-dim">
|
<h2 className="text-text text-[11px] font-medium uppercase tracking-widest mb-2 text-text-dim">
|
||||||
Font Size
|
Font Size
|
||||||
</h2>
|
</h2>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex flex-wrap items-center gap-2">
|
||||||
{FONT_PRESETS.map(({ label, size }) => (
|
{FONT_PRESETS.map(({ label, size }) => (
|
||||||
<button
|
<button
|
||||||
key={size}
|
key={size}
|
||||||
|
|||||||
Reference in New Issue
Block a user