Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 38 additions & 128 deletions apps/weatherbard/weatherbard.star
Original file line number Diff line number Diff line change
Expand Up @@ -20,57 +20,41 @@ poems = {
"All things stretch toward light and call it good.",
"No curtain today between earth and sky.",
"Each petal, lifting, receives the sun’s secret.",
"In light's quiet presence, I am a blade of grass.",
"The meadow wears sunlight like a shawl.",
"Under a bright sky, the stones sing.",
"The morning opens its palms to the sun.",
"I wake into the hush of a golden day.",
"Each leaf praises the morning in silence.",
"Even the shadows are kind when the sky is clear.",
"The breeze lifts the grasses like prayer.",
"Every bird is a bell rung by light.",
"The hill rests under a blue cathedral.",
"My heart climbs the sunlight like a vine.",
"The path is lit with a thousand small intentions.",
"A clear sky is a door I step through.",
"I kneel in the grasses and call it enough.",
"The world is tender when the sky is kind.",
"Sunlight stitches the field with golden thread.",
"All around me, the light hums with knowing.",
"The world leans toward clarity.",
"The wind speaks only in kindness today.",
"My breath is wide as the morning sky.",
"Light drips from the petals like honey.",
"A single crow crosses the empty blue.",
"The air is made of beginnings.",
"The world lifts its face to be seen.",
"Even the stones breathe under a clear sky.",
"The sun keeps its promises in silence.",
# completed
],
"clouds": [
"A hush in the sky, soft with remembering.",
"The sky speaks in softened syllables.",
"Today, the sky is thinking deeply.",
"The morning is a study in pale gray.",
"Clouds wander like sheep without shepherds.",
"The field waits quietly beneath the wool sky.",
"A veil of sky, soft and slow.",
"Even the breeze walks more softly today.",
"The sky curls inward, dreaming.",
"Under clouds, the light speaks in riddles.",
"The sparrow perches, listening to the hush.",
"The clouds are the sky's long breath.",
"Stillness blankets the garden.",
"The sky forgets to shine and hums instead.",
"A grayness rests over everything.",
"I walk inside the softness of thought.",
"A field of light, dulled with mercy.",
"The clouds offer no answers, only pauses.",
"The wind drapes the clouds over the trees.",
"Everything becomes a little slower in the gray.",
"In the cloudlight, every branch waits.",
"The edges of the world go missing.",
"The dog sleeps in a curl of gray light.",
"A heron moves as though inside a dream.",
"The sky is a shroud of thought.",
Expand All @@ -92,7 +76,6 @@ poems = {
"The field drinks slowly.",
"Puddles gather sky and swallow it whole.",
"The moss celebrates quietly.",
"I watch the earth receiving its lesson.",
"Water writes its wisdom on the wind.",
"Even the fox waits beneath the pine.",
"I open my hands and they fill with weather.",
Expand All @@ -115,42 +98,34 @@ poems = {
# completed
],
"mist": [
"The morning wears its veil with grace.",
"Mist rises slowly, like a forgotten thought.",
"The field listens with its eyes closed.",
"The horizon slips away into breath.",
"I walk among whispers and pale light.",
"Mist bends the world toward reverence.",
"Everything is a suggestion this morning.",
"The path dissolves, but still I follow.",
"The river hushes itself with fog.",
"This is the day the trees disappear.",
"Mist curls like old poems across the field.",
"A single crow writes in gray ink.",
"What you can't see still sings.",
"I dissolve like sugar in this softness.",
"The mist is a pause before the sentence continues.",
"The forest dreams in white shroud.",
"It is not lost, but waiting.",
"Light hums through the veil.",
"The earth has drawn a curtain for a moment of rest.",
"The flowers remain, cloaked and patient.",
"I could vanish here and be content.",
"The hush is a kind of blessing.",
"Every branch is a memory without edges.",
"The horizon retreats kindly.",
"The dew waits without hurry.",
"It is enough to breathe in a world like this.",
"I find the world made new in this haze.",
"Mist paints the hills in a single color: wonder.",
"This is how the morning forgets itself.",
"I stay quiet and let the fog speak.",
"Mist drifts low, soft as breath.",
"The valley fills with silver air.",
"Mist lies close upon the ground.",
"The hillside fades into whiteness.",
"Footsteps blur where paths dissolve.",
"The river runs beneath a ghostly veil.",
"The horizon folds into gray silence.",
"Mist curls in quiet ribbons through the field.",
"Shapes melt like sugar into fog.",
"Mist gathers, holding the morning still.",
"The forest is hushed in drifting white.",
"The world is hidden, not gone.",
"Light scatters softly in the haze.",
"A gauze of earthbound cloud drapes the land.",
"Petals glisten beneath the pale cover.",
"I could step inside and be erased.",
"This stillness is the mist’s gift.",
"The distance folds gently away.",
"Dew thickens in the quiet air.",
"Breath joins the veil, then disappears.",
"Mist remakes the morning in gray brushstrokes.",
"The hills wear cloaks of shifting white.",
"The day forgets its outlines here.",
"I wait as the fog writes its silence.",
],
"fog": [
"The world walks in silence, hooded and barefoot.",
"What you cannot see is still breathing.",
"Step softly — the world is dreaming out loud.",
"The trees blur into themselves.",
"I walk through milk and breath.",
"Each sound is a whisper of itself.",
"The lake forgets its shape.",
Expand All @@ -160,8 +135,6 @@ poems = {
"My breath is part of the sky now.",
"A heron stands where the world ends.",
"Fog teaches us to feel instead of see.",
"The forest becomes an idea.",
"I dissolve into the waiting hush.",
"The sun is a rumor in the distance.",
"Even time forgets its ticking here.",
"I listen with my whole skin.",
Expand All @@ -185,7 +158,6 @@ poems = {
"Rain traces thoughts on my sleeves.",
"Drizzle hushes the thorns.",
"Every leaf leans toward its sip.",
"The sparrow stays one branch lower.",
"Each drop small but whole.",
"The moss loves this more than sun.",
"I walk a little slower, in rhythm.",
Expand All @@ -198,54 +170,13 @@ poems = {
"I am covered in sky without realizing.",
"A thousand silent gifts.",
"The rain hardly speaks, but still it says.",
"I learn to listen in gray.",
"The soil softens like old bread.",
"Nothing is hard in this moment.",
"Even the trees breathe differently.",
"I trace poems in the wet dust.",
"The air smells of earth made gentle.",
"Each step carries a hush.",
"My jacket remembers other rains.",
"The drops fall like old stories.",
"The drizzle waits for no applause.",
"A slow wetness, as if the sky is remembering.",
],
"snow": [
"The world forgets its name under white silence.",
"Each flake a note in winter’s lullaby.",
"Stillness falls in bright abundance.",
"The hush of snow carries its own music.",
"I walk into the whiteness and am remade.",
"Snow tucks the field in with a prayer.",
"Every branch is a hymn in white.",
"The wind moves slow in a world erased.",
"Each footprint writes a small confession.",
"The quiet is deep enough to listen.",
],
"haze": [
"The sky carries weight you cannot name.",
"Light diffused, like memory before sleep.",
"You walk slower in this kind of light.",
"The horizon wears a mask of longing.",
"Each color has forgotten its name.",
"The air is soft with forgetting.",
"I drift through the day like a leaf.",
"Haze teaches me not to rush.",
"The world is wrapped in an old thought.",
"I squint at the sky and still trust it.",
],
"thunderstorm": [
"The sky speaks in a furious tongue.",
"Lightning sketches warnings in the air.",
"This is no time for silence.",
"The wind runs wild like a story undone.",
"Rain hammers out a hard rhythm.",
"Each flash reveals the hidden.",
"The trees hold their breath.",
"I wait, small beneath the shouting sky.",
"Thunder rolls through my bones.",
"The storm rewrites the silence.",
],
}

def get_schema():
Expand Down Expand Up @@ -285,7 +216,6 @@ def main(ctx):
)

# Fetch weather (with caching)

cache_key = "weatherbard:" + location + ":" + units
weather_json = cache.get(cache_key)

Expand All @@ -303,10 +233,6 @@ def main(ctx):
weather_data = json.decode(weather_json)

condition = weather_data["weather"][0]["main"].lower()
unit_label = "°F" if units == "imperial" else "°C"
raw_temp = weather_data["main"]["temp"] if "temp" in weather_data["main"] else None

temp = str(int(raw_temp)) + unit_label if raw_temp != None else "--" + unit_label

# Select poem locally and rotate lines
poem_lines = poems.get(condition, ["No verse today."])
Expand All @@ -315,37 +241,21 @@ def main(ctx):
line2 = ""
line3 = ""

# Layout with top box 7 high, flush against the top, right-aligned temp, spaced label
# Layout: just scroll the poem text
return [render.Root(
delay = 150,
child = render.Column(
children = [
render.Box(
width = 64,
height = 7,
color = "#000055",
child = render.Row(
main_align = "space_between",
children = [
render.Text("weatherbard", font = "CG-pixel-3x5-mono"),
render.Text(temp, font = "CG-pixel-3x5-mono"),
],
),
),
render.Marquee(
scroll_direction = "vertical",
offset_start = 0,
offset_end = 0,
width = 64,
height = 25,
child = render.Column(
children = [
render.WrappedText(content = line1, font = "5x8", width = 60),
render.WrappedText(content = line2, font = "5x8", width = 60),
render.WrappedText(content = line3, font = "5x8", width = 60) if line3 else render.Text("", font = "5x8"),
],
),
),
],
child = render.Marquee(
scroll_direction = "vertical",
offset_start = 0,
offset_end = 0,
width = 64,
height = 32,
child = render.Column(
children = [
render.WrappedText(content = line1, font = "5x8", width = 60),
render.WrappedText(content = line2, font = "5x8", width = 60),
render.WrappedText(content = line3, font = "5x8", width = 60) if line3 else render.Text("", font = "5x8"),
],
),
),
)]