fix: all-day label top-aligned, weather 502 silent, toggle consistency
- All-day label column uses flex-start so label is visible in small area - Weather API returns empty data (200) instead of 502 when forecast range is out of bounds, suppressing console noise on future/past navigation - QuickSettings toggles for project icons and checkboxes now use effective (per-view-aware) value, consistent with other toggles v1.81.13
This commit is contained in:
parent
091004e87e
commit
86c462c920
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "my-weekly-todo-list",
|
"name": "my-weekly-todo-list",
|
||||||
"version": "1.81.12",
|
"version": "1.81.13",
|
||||||
"description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view",
|
"description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -40,7 +40,8 @@ export async function GET(request: NextRequest) {
|
|||||||
const res = await fetch(url, { next: { revalidate: 900 } });
|
const res = await fetch(url, { next: { revalidate: 900 } });
|
||||||
|
|
||||||
if (!res.ok) {
|
if (!res.ok) {
|
||||||
return NextResponse.json({ error: 'Weather API failed' }, { status: 502 });
|
// Silently return empty data (e.g. date out of forecast range)
|
||||||
|
return NextResponse.json({ hourly: {} });
|
||||||
}
|
}
|
||||||
|
|
||||||
const raw = await res.json();
|
const raw = await res.json();
|
||||||
|
|||||||
@ -5208,10 +5208,10 @@ export default function WeeklyView() {
|
|||||||
display: "flex",
|
display: "flex",
|
||||||
flexDirection: "column",
|
flexDirection: "column",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
justifyContent: "center",
|
justifyContent: "flex-start",
|
||||||
cursor: "pointer",
|
cursor: "pointer",
|
||||||
borderRight: "1px solid var(--weekly-border)",
|
borderRight: "1px solid var(--weekly-border)",
|
||||||
padding: "2px 4px",
|
padding: "4px 4px 2px",
|
||||||
gap: "0px",
|
gap: "0px",
|
||||||
marginLeft: "-1px",
|
marginLeft: "-1px",
|
||||||
position: "relative",
|
position: "relative",
|
||||||
@ -5494,13 +5494,13 @@ export default function WeeklyView() {
|
|||||||
</div>
|
</div>
|
||||||
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
|
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
|
||||||
<span style={{ fontSize: "0.75rem", fontWeight: 600, color: darkMode ? "#9ca3af" : "#6b7280" }}>{profile.language === "de" ? "Checkboxen" : "Checkboxes"}</span>
|
<span style={{ fontSize: "0.75rem", fontWeight: 600, color: darkMode ? "#9ca3af" : "#6b7280" }}>{profile.language === "de" ? "Checkboxen" : "Checkboxes"}</span>
|
||||||
<button onClick={() => { const v = !profile.showTaskCheckboxes; setProfile({ ...profile, showTaskCheckboxes: v }); saveSetting("showTaskCheckboxes", v); }} style={{ background: "none", border: "none", cursor: "pointer", padding: "2px", color: darkMode ? "#9ca3af" : "#6b7280" }}>
|
<button onClick={() => { const v = !effectiveShowTaskCheckboxes; saveSetting("showTaskCheckboxes", v); }} style={{ background: "none", border: "none", cursor: "pointer", padding: "2px", color: darkMode ? "#9ca3af" : "#6b7280" }}>
|
||||||
{effectiveShowTaskCheckboxes ? <Eye size={16} /> : <EyeOff size={16} />}
|
{effectiveShowTaskCheckboxes ? <Eye size={16} /> : <EyeOff size={16} />}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
|
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
|
||||||
<span style={{ fontSize: "0.75rem", fontWeight: 600, color: darkMode ? "#9ca3af" : "#6b7280" }}>{profile.language === "de" ? "Projekt-Icons" : "Project Icons"}</span>
|
<span style={{ fontSize: "0.75rem", fontWeight: 600, color: darkMode ? "#9ca3af" : "#6b7280" }}>{profile.language === "de" ? "Projekt-Icons" : "Project Icons"}</span>
|
||||||
<button onClick={() => { const v = !profile.showProjectIcons; setProfile({ ...profile, showProjectIcons: v }); saveSetting("showProjectIcons", v); }} style={{ background: "none", border: "none", cursor: "pointer", padding: "2px", color: darkMode ? "#9ca3af" : "#6b7280" }}>
|
<button onClick={() => { const v = !effectiveShowProjectIcons; saveSetting("showProjectIcons", v); }} style={{ background: "none", border: "none", cursor: "pointer", padding: "2px", color: darkMode ? "#9ca3af" : "#6b7280" }}>
|
||||||
{effectiveShowProjectIcons ? <Eye size={16} /> : <EyeOff size={16} />}
|
{effectiveShowProjectIcons ? <Eye size={16} /> : <EyeOff size={16} />}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user