📊 Daily Overview
Total Activity: 26 commits + 1 merges across 3 repositories
🚀 GitHub Activity
1. VipinKaushik 🔒 — 14 commits + 1 merges
feat(vipin): practitioner dashboard + CMS content editor · 73cc327
- Three-panel dashboard: nav sidebar, week timeline, booking detail panel
- Week navigation (prev/next), mobile tab bar, hamburger menu
- Settings sub-pages (pricing, availability) with VipinAdminFrame sidebar
- Site content CMS: /vipin/content — per-key EN/HI editor with draft/publish
- Multi-env MongoDB: MONGODB_DB e…
fix(booking): split mongoose model types out of client bundle · eaa3770
Client components were importing SESSION_TYPES / BookingStatus from the
mongoose model file, dragging mongoose into the client bundle where
mongoose.models is undefined and module evaluation threw
“Cannot read properties of undefined (reading ‘PublicBookingRequest’)”.…
feat(vipin): settings panel + dashboard wiring fixes · 444f72a
Adds practitioner settings surface (contact, availability defaults) and
threads server-driven time options through the public booking form so
the dashboard can override slots without a redeploy. …
fix(booking): widen buildLocalTimeOptions to accept baseOptions override · 0b53fc0
BookingFormPublic already passes a third serverTimeOptions argument; the
two-arg signature was breaking the Vercel build with TS2554. Add the
optional baseOptions param (defaults to TIME_OPTIONS) so the existing
caller compiles while keeping the same behaviour when omitted.
feat(panchang): mandala rewrite, L1+L2 cache, geolocation chip · 950f743
SkyMandala — canonical Jyotish wheel with 108 pada subdivision ticks at the
outer rim, 27 always-visible nakshatra labels, 12 rashi labels (English over
Devanagari), rashi-boundary spokes, and graha glyphs superimposed at their
longitudes. …
chore: section error boundaries, timezone-aware panchang dates, pricing/CMS polish · 908c0a1
- SectionBoundary component wrapping each homepage section so a single
section throw can’t take down the whole page; each section degrades
independently.- panchang-cache pure helpers (timezone-aware date resolution + cache
key normalization) extracted from the route handler so they can be
unit-tested without p…
…and 8 more commits in this repo.
Merges:
- Merge pull request #35 from Rupali59/redesign/homepage-components
2. SSJK-bot 🔒 — 7 commits
feat: SSJK-bot scaffold — grammY + Express webhook + healthz · 6149382
Phase 1.5 SM 3 (first half). New sibling project to SSJK-mb. One bot
token, one process. Webhook receives Telegram updates here; state
mutations route through SSJK-mb’s /api/internal/* via X-Internal-Token.…
fix(config): load .env.local before .env (workspace convention) · 8318efa
The workspace uses Next.js .env.local convention across all client projects.
A bot user (Rupali) put credentials in SSJK-bot/.env.local, but dotenv was
only reading .env. Now we load .env.local first, then .env (latter overrides
former — opposite of typical, but matches what users expect when they have
both files).…
feat: POST /api/internal/dispatch — bot owns Telegram API surface · 8673a16
Pair to SSJK-mb commit on the same topic. Bot is now the only process
that holds TELEGRAM_BOT_TOKEN and talks to api.telegram.org.POST /api/internal/dispatch
Auth: X-Internal-Token (shared with SSJK-mb’s /api/internal/*)
Body: { chat_id: number | numeric-string, text: non-empty string }
200: { ok: true,…
feat: Phase 1.5 SM 6a — inline keyboard + Start/Done/Snooze callbacks · d06f1b8
Adds the daily UX layer the design doc bet on. Bot now owns:
- keyboard rendering for task DMs (4 buttons per status)
- callback_query routing → SSJK-mb T5 internal API
- in-memory dedup (Telegram retries within minutes; surviving
bot restart deferred to Phase 2 Mongo-backed dedup)…
fix(keyboards): swap emoji for geometric Unicode (▷ ✓ ✗) + drop snooze emoji · 59ddff5
Phase 1.5 SM 6a button labels were rendering with full-colour emoji
(💤 ⛔ and ▶ on some clients). User wanted icons, not emoji.Telegram inline keyboards accept text only, so the trick is using
codepoints that don’t have an emoji variant. New label set:…
feat: Phase 1.5 SM 6b — Blocked conversation + /tasks command · 78e42f1
Closes the keyboard UX loop from SM 6a. Tapping ⛔ Blocked now opens
a real reply flow instead of showing a placeholder toast.Blocked conversation (src/lib/pendingBlocks.ts + src/handlers/messages.ts):
- In-memory Map<tgUserId, {taskId, fromStatus, expiresAt}> with 60s TTL
- Tap ⛔ → ctx.reply(“What’s blocking you?…
…and 1 more commits in this repo.
3. SSJK-mb 🔒 — 5 commits
feat: Phase 1.5 T5 — internal API for SSJK-bot (transition / open-tasks / snooze) · 1a18097
New routes on SSJK-mb, mounted at /api/internal/* BEFORE telegramAuth so
the sibling SSJK-bot process can call them without holding a Telegram
WebApp initData token. Gated by a separate shared secret
(SSJK_MB_INTERNAL_TOKEN) verified via timing-safe compare.…
feat: Phase 1.5 SM 3 — route Telegram dispatch through SSJK-bot · 04f0b87
Incremental Path B (dispatch-only) split. Telegram Bot API contract now
lives in exactly one place: SSJK-bot. SSJK-mb’s sendDM still owns
notifications row writes + Motherboard usage reporting + retry queue —
we kept the data-ownership boundary clean and only moved the wire.…
feat: Phase 1.5 SM 6a — thread intent+taskId through dispatch wire · 10a6185
Task-assignment DMs now carry the metadata SSJK-bot needs to render
the inline keyboard. Two-line plumbing change:server/telegram/sendDM.js
- sendTelegramDM accepts optional
intentarg, threads to dispatch- dispatchTelegram POSTs { intent, taskId } to the bot’s
/api/internal/dispatch when set; bot uses the…
feat: Phase 1.5 SM 6b — POST /api/internal/task/:id/block · dab1260
Orthogonal-to-status block route. Sets blocked=true + blockedReason +
blockedOnId on a task. Status is unchanged (the design doc treats blocked
as orthogonal — an open or in_progress task can be blocked).…
feat: Phase 1.5 SM 6c — staff preferences routes (buttonLanguage) · 8ed12f5
GET + PATCH /api/internal/staff/:tgid/preferences. One pref today
(buttonLanguage: ‘en’ | ‘hi’); the shape is ready for more without
needing new routes.GET behavior:
- Falls back to buttonLanguage=‘en’ when no staff doc exists
(keeps the bot’s dispatch path working before first auth or
add-staff CLI invocat…
📈 Development Analytics
Daily Summary
| Metric | Today |
|---|---|
| Commits | 26 |
| Merges | 1 |
| Skill runs | 0 |
| Decisions | 0 |
| Eurekas | 0 |
| CEO plans | 0 |
| Notes touched | 0 |
Decisions logged today
None today.
Eurekas
None today.
Strategic plans authored
None today.
Notes touched
None today.
Running totals (as of this date)
Active days last 90: 63 / 90 (substantive)
Days with any signal last 90: 66 / 90
Skill runs (since 2026-03-25): 75
Commits this year (authored): 1097
Decisions logged this year: 0
Eurekas this year: 5
CEO plans authored this year: 12
Projects touched this year: 54
Top projects last 90: portfolio (25d), Mothership (19d), VipinKaushik (17d), motherboard-shared (11d), Astroclarity (10d)
💭 My Notes
[Your own thoughts, observations, or context for this day — this section is never overwritten by automation]