Skip to content

Commit 2b5ce67

Browse files
committed
website update
1 parent 49ae235 commit 2b5ce67

7 files changed

Lines changed: 120 additions & 5 deletions

File tree

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
slug: kashcal-theme-picker-supporter-icon
3+
title: "Make KashCal yours: a theme picker and a supporter icon"
4+
authors: [kashcal]
5+
tags: [releases, announcements]
6+
keywords:
7+
- kashcal release notes
8+
- kashcal changelog
9+
- android calendar themes
10+
- dark mode calendar android
11+
- custom app icon calendar android
12+
- teal calendar app
13+
description: "KashCal 2026.07.06 adds a theme picker with a KashCal Teal palette, and a supporter app icon you can switch to from Settings. Here's what changed."
14+
image: /img/social/home.png
15+
---
16+
17+
This release is about making KashCal yours. Two new choices, both in Settings, one for how the app looks and one for how it shows up on your home screen.
18+
19+
{/* truncate */}
20+
21+
## Pick your colors
22+
23+
KashCal now has a proper theme picker. Stay on System, pin Light or Dark, or switch on **KashCal Teal**, our own palette that follows your phone's light and dark setting while keeping the brand green front and center. It runs through the whole app, contrast-checked so text stays readable on every surface, light or dark. You'll find it under [Settings, then Appearance](/docs/features/settings).
24+
25+
## Wear your support
26+
27+
The second choice is the icon on your home screen. If you've chipped in to keep KashCal free and ad-free ([or you'd like to](https://kashcal.onekash.org/donate)), you can now wear it: a gold **Supporter** icon with a little heart on the calendar card. Pick it under Settings, then App Icon, in whichever flavor you like. Keep the KashCal name, or go incognito with the same icon labeled simply "Calendar."
28+
29+
Whether you're already a supporter or about to become one, here's a thank you from us.
30+
31+
## Everything in this release
32+
33+
- New theme picker in Settings: System, Light, Dark, or KashCal Teal
34+
- KashCal Teal palette follows your phone's light and dark setting and is applied app-wide, with contrast checked for readability
35+
- New supporter app icon: a gold card with a heart, chosen under Settings, then App Icon
36+
- Two supporter variants, sharing one icon: one keeps the "KashCal" name, one shows a discreet "Calendar" name on the home screen
37+
38+
KashCal, the calendar you already love, now in your colors and wearing your badge.
39+
40+
Supporting open source has always felt good. Now it looks good too, right there on your home screen. Not a supporter yet? [Join in](https://kashcal.onekash.org/donate). It's quicker than your coffee order.

docs/features/settings.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Open the navigation drawer (swipe from the left edge, or tap the menu icon) and
2323
- **System default** follows your phone's light or dark setting and switches automatically when your phone does.
2424
- **Light** and **Dark** pin the app to that appearance regardless of the system setting.
2525
- **KashCal Teal** applies the app's teal palette, still following your phone's light or dark setting.
26+
- **App Icon:** choose the icon KashCal wears on your home screen. Keep the default, or switch to the **Supporter** icon, a gold card with a heart, to show you've chipped in (or [would like to](https://kashcal.onekash.org/donate)). The supporter icon comes two ways: one keeps the KashCal name, and one shows a discreet **Calendar** name instead. Changing the icon may restart the app, and notifications always use the default icon and name.
2627
- **Event Emojis:** when on, KashCal shows an emoji next to an event based on its title (a cake for a birthday, a plane for a flight). Turn it off for a plainer list.
2728
- **Time Format:** 12-hour, 24-hour, or follow the system. The row shows a live example of the current format.
2829
- **Start Week On:** whether your week begins on the system default, Monday, Sunday, or Saturday. This changes every calendar grid at once.

src/pages/features/beautiful-calendar-android.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ Twelve curated colors in the primary grid for quick picks, plus 92 named CSS3 co
6666

6767
**Does KashCal have a dark mode?**
6868

69-
Yes, and it is designed dark, not inverted colors. KashCal follows your Android system light/dark setting by default.
69+
Yes, and it is designed dark, not inverted colors. A theme picker lets you follow your Android system light/dark setting (the default), pin Light or Dark, or switch on **KashCal Teal**, the app's own palette that still tracks light and dark with your phone.
7070

7171
**Is KashCal free?**
7272

src/pages/work-with-us.module.css

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@
3535
color: var(--ifm-color-primary);
3636
}
3737

38+
/* Two-audience track cards: the bold audience line is the heading. */
39+
.track h3 {
40+
font-size: 1.3rem;
41+
line-height: 1.3;
42+
margin: 0 0 0.75rem;
43+
}
44+
45+
.track .colLabel {
46+
color: var(--ifm-color-primary);
47+
}
48+
3849
.kicker {
3950
margin: 2rem 0 0;
4051
font-size: 1.2rem;

src/pages/work-with-us.tsx

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ const AUDIENCE = [
2525
title: 'Vertical SaaS with a calendar gap',
2626
body: 'Field service, healthcare, education, scheduling. You need a calendar feature next quarter, not three roadmaps from now.',
2727
},
28+
{
29+
title: 'Smart display & wall-calendar makers',
30+
body: 'You build a family display, a fridge screen, or a digital wall calendar on Android. Bring the hardware; the calendar is done. It runs offline and syncs when it can.',
31+
},
2832
{
2933
title: 'Anyone allergic to building one',
3034
body: 'You looked at the timeline, the hiring, and the maintenance, and decided your team’s time is better spent elsewhere. We agree.',
@@ -56,13 +60,17 @@ const GET = [
5660
title: 'We sweat the sync',
5761
body: 'iCloud tweaks a header, a CalDAV server bends a spec, and somewhere a recurring event goes sideways. We catch it so your users never feel it.',
5862
},
63+
{
64+
title: 'Runs offline, on your screen',
65+
body: 'Offline-first by design, so a wall display or kiosk shows the day even when the network blinks, then syncs when it returns. Built to sit on a screen, not just a phone.',
66+
},
5967
];
6068

6169
export default function WorkWithUs(): ReactNode {
6270
return (
6371
<Layout
6472
title="Work with us"
65-
description="License KashCal and ship a calendar under your own brand. Years of engineering, ready now.">
73+
description="License KashCal and ship a calendar under your own brand, or on your own hardware. Years of engineering, ready now.">
6674
<header className="kc-hero">
6775
<div className="container">
6876
<p className="kc-eyebrow">For teams</p>
@@ -72,8 +80,8 @@ export default function WorkWithUs(): ReactNode {
7280
<p className="kc-hero__lead">
7381
Building a polished Android calendar from scratch is a year and a half
7482
of engineering, design, and edge-case grinding. We have already done
75-
that part. License KashCal and release it under your own brand in
76-
weeks, not quarters.
83+
that part. License KashCal and put it in your customers' hands, under
84+
your brand or on your hardware, in weeks, not quarters.
7785
</p>
7886
<div className="kc-hero__cta">
7987
<Link
@@ -91,6 +99,42 @@ export default function WorkWithUs(): ReactNode {
9199
</header>
92100

93101
<main>
102+
{/* Two audiences */}
103+
<section className="kc-section">
104+
<div className="container">
105+
<div className="kc-section__head">
106+
<p className="kc-eyebrow">Two ways in</p>
107+
<Heading as="h2">You bring the audience. We bring the calendar.</Heading>
108+
</div>
109+
<div className={styles.compare}>
110+
<div className={`${styles.col} ${styles.track}`}>
111+
<div className={styles.colLabel}>Software</div>
112+
<Heading as="h3">
113+
<strong>A calendar provider who needs an Android app.</strong>
114+
</Heading>
115+
<p>
116+
You sell calendar storage, sync, or a productivity suite, and
117+
your customers keep asking for a native Android client that looks
118+
like yours. Ship KashCal under your brand instead of pointing
119+
them at a generic CalDAV picker.
120+
</p>
121+
</div>
122+
<div className={`${styles.col} ${styles.track}`}>
123+
<div className={styles.colLabel}>Hardware</div>
124+
<Heading as="h3">
125+
<strong>A hardware maker who needs software.</strong>
126+
</Heading>
127+
<p>
128+
You build the device, a wall calendar, a family display, a
129+
kitchen screen, and you do not want to also become a software
130+
company. You bring the hardware, we bring the calendar. It runs
131+
offline out of the box and syncs when it can.
132+
</p>
133+
</div>
134+
</div>
135+
</div>
136+
</section>
137+
94138
{/* Build vs. buy */}
95139
<section className="kc-section">
96140
<div className="container">

src/theme/DocCard/Description/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ export default function DocCardDescription({description}: Props): ReactNode {
99
return (
1010
<p
1111
className={clsx(
12-
'text--truncate',
1312
ThemeClassNames.docs.docCard.description,
1413
styles.cardDescription,
1514
)}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
11
.cardDescription {
22
font-size: 0.8rem;
3+
line-height: 1.5;
4+
/* Let the description wrap instead of truncating to one line with an ellipsis.
5+
Clamp to a few lines so an unusually long entry can't ruin the grid, but on a
6+
phone the full short description shows. */
7+
display: -webkit-box;
8+
-webkit-box-orient: vertical;
9+
-webkit-line-clamp: 3;
10+
line-clamp: 3;
11+
overflow: hidden;
12+
}
13+
14+
/* On phones the cards stack in one column, so ragged heights don't matter.
15+
Drop the clamp entirely there so nothing is ever cut off. */
16+
@media (max-width: 768px) {
17+
.cardDescription {
18+
-webkit-line-clamp: unset;
19+
line-clamp: unset;
20+
display: block;
21+
overflow: visible;
22+
}
323
}

0 commit comments

Comments
 (0)