Changelog
Track the evolution of hq.adatepe.dev
v4.5.0
August 7, 2026Two corrections you only see once you look
Two defects that were invisible in the code and obvious on the screen: simultaneous calendar events drawn exactly on top of each other, and every AI answer printing its own markdown syntax as literal asterisks.
Column layout for overlapping events
Every event card was absolutely positioned across the full column width, so two simultaneous events lay exactly on top of each other and the second hid the first completely. In a real week that hit 25 of 85 cards. The layout maths now lives in its own engine, computed in Berlin time, with the minimum card height in the engine rather than in CSS, and a day view on mobile.
Model prose renders as markdown
Every model in the hub writes markdown whether it was asked to or not. Through a bare paragraph a heading came out with its asterisks showing and a numbered plan collapsed into one grey block. A single Markdown component now turns that string into elements across 24 call sites, carrying no colour and no font size of its own so an answer still looks like the card it lives in.
Safe by construction, not by sanitising
The renderer produces React elements, never an HTML string, and the raw-HTML plugin is deliberately absent, so markup in model output is escaped instead of parsed. Links carry noopener and noreferrer and open in a new tab unless they point inside the hub.
v4.4.0
August 6, 2026Fashion: menswear only, and fits you can see yourself in
The feed stops showing womenswear by reading the signal the shop actually carries instead of the product title, and a fit card can now show the owner wearing the outfit.
Gender read from the shop, not the title
Pegador sells a women's tee whose title says nothing about it, so the title is not the signal. The ingest reads Shopify's product type and tags into the product cache and the feed filters on that again as a second line of defence. Three details are load-bearing: one shop separates its women's tag with a non-breaking space, another joins tags with an underscore, and the same shop tags unisex pieces as both men's and women's, so a men's signal has to beat a women's one.
Try-on renders
A fit card can show him actually wearing the outfit, generated from his reference photo plus the real product images. It costs money and about forty seconds, so it is a claimed job with the same compare-and-swap as the food queue. The fit id is unique and that is the cost control rather than a limit in the UI: the id is a hash over the pieces, so the same combination always resolves to the image that already exists.
Private storage behind the page cookie
The reference photo and every render live in a private storage bucket and are served through their own routes, so the page password still gates them. Moving them into the public folder would have served them to anyone.
A fit is composed by rules, not by luck
The composer used to pick one random item per slot out of a pool tagged by shop, which produced a leather moto over a peach tee with blue shorts captioned as one coherent mood. Hard rules now reject a combination outright, everything else is points, and forty seeded combinations are scored per fit so the best one survives.
v4.3.0
August 6, 2026The food analysis survives leaving the tab
Photographing a meal used to hold the request open for a thirty-second vision call, so closing the tab threw the work away. The analysis is now a durable job, and three independent paths advance it.
Enqueue and return, never await
The analyze route enqueues and answers immediately instead of waiting for the model. The work is a row, so closing the tab, backgrounding the app or losing signal cannot discard a call that has already been paid for.
Three idempotent advancers
A background task on the enqueueing request, the hourly tick as a reaper for a function killed mid-flight, and a kick when the page loads. All three are safe to race because claiming a job is a compare-and-swap on its attempt count. A dead worker's job is reclaimed after five minutes, and past the attempt limit it fails visibly with a retry button rather than spinning forever.
An outbox for the upload itself
The upload cannot be made durable on the server, because there is no row yet. The payload is written to local storage before the request and cleared on acknowledgement, with an idempotency key so a replayed entry resolves to the existing job instead of logging the meal twice.
Corrections are the model's only ground truth
Editing a meal keeps the values from before the edit, and those pairs plus the owner's recurring dishes feed every later prompt. Deleting a wrong meal instead of correcting it throws that signal away.
v4.2.0
August 6, 2026Month One
A 31-day training and nutrition programme inside the gym tab, built around the actual failure rather than a better split. The record showed eight sessions in a hundred days against six prescribed per week, so the problem was the dose, not the design.
A seven-day rotation at maintenance
Push, pull, legs, push, pull, shoulders, recovery at 2.850 kcal a day. Maintenance rather than a deficit, because a deficit is the first thing that breaks adherence and adherence was the diagnosis.
Cardio and abs are scheduled, not implied
Both appear explicitly per day instead of being left to whatever time is left at the end of a session.
Exercise guidance that resolves German names
The programme names its exercises in German and the guide knew thirty-five English ones, so most sessions linked to nothing. A four-stage lookup over 1.324 indexed exercises closes the gap.
Cost per session
The programme carries its own cost model, landing at roughly 0,83 euro per session, so the plan is answerable in money as well as in time.
v4.1.0
July 27, 2026Typed push channels, real deep links, honest delivery
Three things were weak after the push layer shipped: every notification was delivered identically, the tap target was free text, and the UI promised a delivery time the scheduler cannot keep.
A delivery profile per kind
Urgency and lifetime are real Web Push fields that decide how hard iOS wakes the device and how long an undeliverable push is retained. Everything used to be high with a three-hour lifetime, which is the same as no priority at all. Each kind now carries its own profile, and the lifetime is an argument rather than a number: a morning nudge is worthless at 14:00 so it expires, while an overdue deadline stays true for hours. One table owns it and the notifications page renders the same rows, so behaviour and UI cannot drift.
A registry instead of a text field
The reminder target used to be free text, so a typo produced a notification that silently does nothing when tapped, which no test catches. A registry now lists every valid destination, the form is a native select, creating a reminder rejects an unknown target instead of storing it, and every outgoing link is hardened in one place. Verified both directions: every target resolves to a real page, and no authenticated route is missing from the list.
A delivery preview that tells the truth
The tick is hourly, so an 08:30 reminder arrives at 09:00, and the form and the list now say so from one shared function. It also names the two cases that cannot work at all. The first draft of that function promised 08:00 for a 00:30 reminder, which was a straight lie; it is now checked against the same occurrence logic that fires it, so preview and behaviour cannot disagree.
An app badge that counts something real
The badge was plumbed through the service worker but nothing ever set it, so the capability was dead. It now counts open items rather than notifications sent, computed once per tick so every push in a run agrees, and reconciled once per app launch, because a tick with nothing to send never updates it and a stale number teaches you to ignore the icon.
v4.0.0
July 26, 2026The hub becomes an app
A major bump: the hub stops being a site you visit and becomes an app on the home screen that reaches you. iOS delivers Web Push only to an installed PWA and has no local scheduling API, so this ships both halves, the install surface and the server that does the scheduling.
Installable PWA shell
A manifest that opens standalone on the dashboard, touch and maskable icons, the apple-prefixed metadata older iOS still reads, and a push-only service worker. The worker deliberately has no fetch handler: a stale cache sitting in front of server actions and the cookie gate breaks more than offline support buys.
Server-driven reminders in wall-clock time
Once, daily, weekdays or weekly, stored as Berlin wall-clock strings rather than timestamps, so an 08:30 reminder stays 08:30 across daylight saving and across six months abroad. The tick claims each occurrence through a unique key, so retries and overlapping runs cannot notify twice.
Delivery that prunes itself
Configuration fails loudly rather than deep inside a cron run, subscriptions the push service reports as gone are pruned on exactly those responses, and a device is disabled after eight consecutive failures instead of being retried forever.
The notifications control room
Install instructions gated on real standalone detection, enable and disable, a test push, the device list with its failure state, reminder editing, and a delivery log.
v3.12.0
July 19, 2026The dashboard collapses to the exam
While an open exam sits inside a seven-day window, the dashboard answers what counts now with that exam instead of the usual cross-source mix.
Exam-week focus
Mission, the becoming band, the dimension grid, quick stats, finance, nudges, ops triage and the latest idea all step aside. The work feed, deadlines, habits and the calendar column stay, because those are what you actually use while studying.
A rule that changes by phase
The band shows the countdown, date and room plus one rule for the current phase. The eve of an exam is its own phase on purpose: starting something new the night before is the costliest mistake in the study plan, so that day says stop and sleep.
Derived, not duplicated
The derivation is a pure function over the modules the dashboard already fetches, so there is no new query and no second source of exam dates. Exam time and room move into one shared constant that the exam-prep view had been keeping its own copy of.
v3.11.0
July 17, 2026Cash Cockpit
A tile cluster at the top of the finance tab that answers why does it feel tight by separating the two different questions hiding inside it: the feeling, and the leak.
The feeling versus the leak
Two columns. On one side the payday countdown and a one-month buffer, on the other the discretionary cap, the recurring load, forward instalment commitments and an investment gate. Everything is computed on the server from raw rows, so no balance and no personal data leaves.
A discretionary gauge with history
Dining, shopping and entertainment against a hard cap, with a trailing six-month chart, plus a recurring-load ratio that alarms once it passes fifteen percent of income.
Commitments counted as already spent
Forward instalments are tracked so money that is already committed is never counted as spendable, and an investment gate locks broker transfers until three straight positive months.
v3.10.0
July 13, 2026Sidebar regrouped by purpose
The archive drawer hid six tabs that were still in daily use. Every tab now lives in a themed group instead.
Themed groups that cannot hide the active route
Groups collapse individually and default to open, and the group holding the current route can never be collapsed away, subroutes included.
Editorial active state
The active marker moves from blue to the editorial charge palette, matching the rest of the redesign.
v3.9.0
July 12, 2026Calendar declutter
The calendar moves toward Reclaim-style planning: less noise above the fold, and planner blocks that visibly admit they are flexible.
Capped rows with expanders
The all-day row and the conflict radar are capped and expandable rather than pushing the grid down the page, with category filter chips to narrow what is shown.
Flexible blocks look flexible
Planner blocks render dashed and pass through as mirrors, so a block the planner may still move is visually distinct from a commitment that will not move.
Plan the day from the header
A plan-the-day action with auto-build, the planner and the deadline rail side by side above the fold, and the rail grouped by time band.
v3.8.0
July 12, 2026Leantime-inspired ND layer
Three borrowings from Leantime's neurodivergent-friendly design: one feed of what to work on, a full-screen focus mode, and a deliberate reward on completion.
Work feed
Everything actionable merged into one band on the dashboard, so starting does not first require deciding which tab to open.
Focus overlay
A full-screen pomodoro overlay with persisted sessions, stats and preferences, so a focus block becomes a recorded thing rather than an intention.
Completion is celebrated
A confetti burst when the directive is completed. Small and deliberate: for this design the reward is the point, not decoration.
v3.7.0
July 10, 2026Intelligent planner and crew decisions
The calendar learns to plan itself, auto-placing deadlines into free slots by urgency and energy, and the crew stops merely commenting and starts helping you decide, with council votes that aggregate into a weighted recommendation and personas graded on how their calls actually turn out.
Intelligent calendar planner
Auto-plans open deadlines into free calendar slots with a deterministic scheduler: greedy by urgency, energy-window aware, buffer-safe, and front-loaded then spread across eligible days, never past the due day. Accepted blocks are written to Google as mirror events, each journaled with a delete inverse for one-tap undo, and deadlines gain effort, progress, subtasks, and an urgency score.
Free-slot finder, quick-add, and overbooking radar
Find where a given duration fits (finde mir 2h), add a block from natural language (morgen 2h Klausur lernen), and scan the week for overlaps, missing buffers, and overloaded days. Plus routines, recurring blocks, a day agenda, category analytics, and a weekly review.
Crew decision layer
A focused council of the most relevant personas each casts a structured vote, which aggregates into one weighted recommendation and a trade-off matrix. An options generator turns a fuzzy dilemma into concrete choices, and the whole decision plus votes is persisted.
Executable decisions with credibility feedback
Choosing an option can execute one attached write action (journaled and undoable) or capture the decision as a ticket or idea. Later you record the real outcome, which grades the personas who backed the chosen option and feeds their credibility, and pending decisions are surfaced proactively from live data.
v3.6.0
July 10, 2026One directive, sharper crew, configurable brief
The dashboard gets a single urgency-ranked directive hero above everything, the crew's reads stop paraphrasing each other and speak from their own domain data, and the daily brief becomes card-configurable. Plus a batch of brief and deadline fixes.
Directive hero on the dashboard
One urgency-ranked directive sits above everything: a serif Tagesziel and the top item with one-tap check-off, two runner-ups, and always-visible exam countdown chips. It runs the same priority engine as the brief over a slim gather (no FitX login or year-long calendar fetch) and records a per-day ziel and done flag.
Domain-grounded crew differentiation
Persona reads now speak from their own domain data instead of fourteen paraphrases of the same next step, with a convergence gate that suppresses near-duplicate and global-echo dossier notes. Adds a Stabschef synthesis, a live thinking line, a morale trend, and persona debates.
Configurable brief sections
Turn individual brief cards on or off from a panel on the /zeitkapsel page, persisted in settings, while the hero and footer stay fixed.
v3.5.0
July 8, 2026Crew: mascots, living reads, morale
The coaching personas become a visible crew with animated SVG mascots, nightly data-grounded reads on you, a modal chat that remembers each persona's history, and a team morale meter that explains its own score.
SVG mascots with mood-driven faces
A parametric drop-body mascot family, recolored per persona with a role prop and a face driven by the persona's current mood. Idle bob, random blink, and cursor-tracking pupils all gate behind prefers-reduced-motion and a fine-pointer check.
Living, data-grounded reads
Each night every persona regenerates its own read on you (read, standup line, mood, and the one driving signal) from your real data, persisted with a history row so the crew's view of you evolves over time.
Modal persona chat with memory
Clicking a card opens a modal with the mascot and a mood sparkline beside a persisted per-persona chat thread. Each persona's background (its Flugbahn trend, last read, and dossier notes) is injected into the prompt, and after each exchange it re-reads you and auto-appends a durable dossier note, no manual remember button.
Team morale meter and voice
Averages the twelve doer personas' moods into a verdict and a count-up gauge with a mood-trend sparkline; observers comment but do not count. A per-persona text-to-speech control can read a persona's take aloud.
v3.4.0
July 7, 2026Agent-OS orchestrator and deadline layer
The hub gains a real agent: a server-side tool loop that reads live state and writes changes autonomously, every write journaled and undoable. Under it sits one central deadline layer that unifies every dated obligation and reconciles the calendar three ways.
Agent-OS orchestrator
A function-calling loop over the hub's tool registry: the model pulls live data with read tools, executes write tools directly without a confirmation dialog, and can consult the coach personas as sub-agents. Every step is traced so a run can be replayed, and the loop is bounded by iteration, time, and fail-streak guards.
Central deadline layer and rail
One read path merges exams, sheets, tickets, leads, goals, and manual deadlines into a normalized list with a deterministic urgency score and progress from subtasks. Overdue items now stay visible for seven days instead of silently vanishing, and the rail can re-sort by what to do first.
Three-way calendar reconciliation
Deadline dates reconcile against Google using an hqDay stamp of the last day both sides agreed on, so the reconciler can tell a manual drag in Google apart from an app-side move and resolve the conflict correctly.
Nightly nudges with journaled undo
A nightly agent round reads your real state and emits one to three concrete, signal-backed nudges, each able to carry a single one-tap write action. Every write across the agent stack logs an inverse so it can be undone from the journal.
v3.3.0
July 5, 2026Daily brief becomes a coach
The daily brief grows a deadline-first hero, a weekly AI read that remembers its own past advice, a browsable archive of every mail sent, and live external signals for trending repos and gym check-ins.
Deadline-first hero
The brief now leads with the single most urgent obligation, chosen by a shared priority engine across exams, sheets, tickets, leads, goals, and manual deadlines, so the mail opens on the one thing that matters most today.
Weekly AI analysis with self-continuity
Compares this week's real metrics against a stored snapshot from seven days ago and references its own last analysis, so it can tell you honestly whether its previous advice moved the numbers. Deltas are computed and the run is saved, degrading silently when the key or comparison data is missing.
Zeitkapsel brief archive
Every sent brief (daily, weekly close, week plan) is archived to a browsable time capsule, which doubles as the send-idempotency gate so a redeploy or second cron hit cannot re-mail the same day.
Trendshift and live FitX gym signal
Adds a Trendshift section of trending GitHub repos (daily, weekly, monthly) and a real gym-recency signal that reads your actual FitX check-ins from mein.fitx.de rather than only the manual log.
v3.2.0
July 5, 2026Fashion: infinite feed and auto-fits
A new Fashion tab with a style profile, a never-ending shuffled drop feed pulled live from real stores, and head-to-toe outfits composed entirely from in-stock products so every look is shoppable.
Fashion tab with style profile and live drops
Save your moods, sizes, budget tier, and color rule, then browse live drops ingested by a cron from open Shopify product feeds (Moonlight and others) plus Grailed. Fits can be saved or dismissed and persist with their own snapshot.
Infinite tabbed feed
A seeded-shuffle feed served through a Postgres RPC and split by category; when the client exhausts a page it bumps the seed and keeps scrolling, so the feed is effectively endless while staying deterministic within a session.
Auto-generated shoppable fits
Composes deterministic head-to-toe outfits from the live product cache, one real item per slot (top, bottom, shoes, optional outerwear and accessory), each tagged to a mood with an occasion, why, and styling rule. Every piece links to a buyable product.
v3.1.0
July 3, 2026Mission Deck, Der Spiegel, affirmations
Three self-direction surfaces land together: a hard-numbers tracker for the 10k business goal, a mirror that infers who you are from your own usage and proposes goals, and a daily identity-affirmation loop. The daily brief also gets its first overhaul pass.
Mission Deck (10k tracking)
A pure compute model that scores progress toward 10.000 euro by the best rolling 30-day window of paid invoices before year-end, with the funnel, an assumption-labeled pitch-to-deal quota per week, deal scenarios, and a live status. Only real paid business income counts, never salary.
Der Spiegel: usage-inferred personality mirror
Gathers evidence from your real hub data, has the model infer traits, gaps, and a projection with cited receipts, then proposes concrete goals. Accepting a proposal creates a real goal (guarded by a compare-and-swap so a double-accept cannot insert twice) and mirrors the inferred traits into the durable self-model.
Self-affirmations tracker
A rep counter for identity sentences with a rotating daily focus line, a suggestions library, and a completion streak that survives an unfinished today. Pure persistence, no LLM, plus a compact read for the daily brief.
v3.0.0
July 2, 2026Locked-down: edge auth on everything
A major bump: the hub stops being a render-gated dashboard and becomes a locked-down, connected system where every mutating request is authenticated before it runs. This is the security floor the later autonomous agent, planner, and write-tool layers are built on.
Middleware auth gate over every server action and API route
A single edge middleware now requires a valid page_access_v1 HMAC cookie for every Server Action POST and every non-public /api route, recomputing the signature with Web Crypto and comparing it in constant time. Previously the authenticated layout only decided what got rendered and left the underlying POST endpoints open.
Explicit allowlist for the few genuinely public endpoints
The login bootstrap, anonymous ticket intake, and the cron routes are whitelisted, with the crons self-authorizing via a Bearer CRON_SECRET and the one-tap mail actions via a signed HMAC token. Everything else is closed by default.
v2.9.0
June 30, 2026Finance mirrors
Two honesty-first finance cards: a full-history bottom line that counters alarmist single-month framing, and a quarterly mirror of the save-then-splurge cycle.
Reality Check
The honest all-time bottom line across the entire record: net position, plus versus minus months, and average per month, counting money moved into savings and investments as kept rather than lost, so one mild negative month reads in context.
Consumption Rhythm
The save-then-splurge cycle made visible per quarter. Each bar shows consumption as a share of income against an income tick, turning red when a quarter spent more than it earned, so the oscillation between disciplined and splurge quarters is obvious.
v2.8.0
June 28, 2026The Doubter
A deliberate anti-mentor at /doubter that generates hostile spite-fuel grounded in your real gaps, with a hard safety boundary that keeps it fuel instead of poison.
The anti-mentor taunt
An AI hater generates a short, cutting taunt grounded in your real trajectory gaps (weakest lever, Owner-Quote near zero, score and tier) plus your own logged doubts, so the contempt always points at something you can disprove by acting.
Doubt ledger
Log the doubts real people voiced or your own, then mark them proven wrong once you've disproved them. A beaten doubt lights up as a win in the ledger.
Hard safety boundary
The persona attacks only your record and standing, things you can overturn by acting, and never your core worth, protected traits, appearance, or anything self-harm-adjacent. The boundary lives in the persona prompt itself.
v2.7.0
June 27, 2026Flugbahn: the Outlier-Index
An honest 0-100 behavior-mirror at /flugbahn that measures whether your tracked behavior is compounding toward outsized outcomes, never a prophecy and able to read low.
The Outlier-Index
A 0-100 trajectory score across five levers (Reach, Discipline, Output, Skill, Surface) mapped to tiers from Konsument through Operator, Builder, Owner, to Outlier. It is a feedback loop, not a probability.
Honest tracking model
Each lever reports both a value and whether it is tracked. An untracked lever reads no signal and is excluded from the composite instead of counting as a misleading zero, with weights re-normalized over the tracked set.
Real GitHub output + Owner-Quote
Output is driven by real commit cadence over the last 90 days, the truest shipping signal. Reach stays gated on real external traction (revenue, pitches, won clients) so it can't be faked with more internal tooling, and the Owner-Quote exposes the share of income from what you actually own.
Position vs momentum + AI read
The score splits into position (where you stand today) and momentum (the slope over recent snapshots, with an honest neu cold-start). An AI mentor read narrates the number, and weekly reads plus snapshots persist (migrations 047-048).
v2.6.0
June 27, 2026The Becoming-Engine
One coach voice grades yesterday at dawn and withholds the dream machine until today's discipline is real. Ships ten growth ideas plus an editorial design refresh.
Earned Hub + Verdict at Dawn
A new /today surface where a single mentor voice grades the prior day at dawn and gates the motivation tooling until today's work is earned. Walk the Spine ridge and the Sigil wall make kept days visible.
The Debate + Letters Across the Gap
New /debate and /letters surfaces: a structured self-debate that argues both sides of a decision, and letters written between your present and future self.
Forfeit Ledger, Winter Mode, Annual Verdict
Consequences for broken contracts, a seasonal low-power mode, and a yearly season verdict, all driven by a nightly verdict/forfeit/season/letters cron pipeline (migrations 043-046).
Editorial design refresh
The Food tab and every new surface rebuilt on the PageHeader and ui-tokens primitives to match the Feelings tab's editorial look.
v2.5.0
June 23, 2026Becoming Spine + Self-Model
A connective layer that reads every tab into one live LifeState, adds a global data-grounded Hub-Agent, mirrors daily items into Google Calendar, and lets you capture by voice.
Cross-tab LifeState engine
getLifeState pulls gym, food, finance, BMW, entrepreneur, LMU, LeetCode, habits, quests, and goals into seven becoming dimensions, each with signals, deep links, and one leverage move for today. Surfaced as the BecomingBand and DimensionGrid widgets.
Global Hub-Agent
A site-wide agent that reads live LifeState and your self-model, answers grounded in real numbers, and returns interactive widgets with deep links. Coach-skill routing pulls in the right specialist persona when depth is needed.
Self-Model + daily ask-back
A persistent store of facts about the owner (migration 042, hq-self-model) that a single daily question keeps growing. It feeds gatherLifeContext so every AI surface reasons about who you actually are.
Calendar mirror + voice brain-dump
Mirrors the daily step, quest, and goals into Google Calendar idempotently with drag-safe upsert, so a manual move is never clobbered. Voice capture drops a spoken brain-dump into the hub with confirm-before-write.
v2.4.0
June 22, 2026Entrepreneur Path
Turns /entrepreneur into an outreach-first path to the first paid invoice, backed by a real lead pipeline and Kleinunternehmer invoicing.
Festgemeißelter Pfad
A fixed, sequential milestone chain from the first three pitches to the first paid invoice. Deadlines are computed once on start, and outreach is pulled to week one instead of hiding behind weeks of prep.
Truthful pitch loop + pipeline
Milestones gate on real pipeline data (leads counted, and pitches counted only when actually recorded as sent), never free-text proof. The lead board tracks each contact through idea, contacted, in talks, offer, won, or lost.
Invoices + CRM
Section 19 Kleinunternehmer invoices generated from your own stored letterhead, with the 25k ceiling tracked against money actually received and the top-client income share surfaced as the pension-insurance trap.
v2.3.0
June 10, 2026Entrepreneur tab
A new /entrepreneur tab pairing a researched Kleingewerbe launch roadmap with an offer explorer tuned to the owner's real skills.
Kleingewerbe roadmap
A 17-step roadmap across four phases (Klarheit, Anmeldung, Go-live, Betrieb) with per-step done-tracking and notes, built on verified 2026 numbers: KVR registration fee, the Kleinunternehmer 25k/100k thresholds, KVdS, the RV one-client trap, and the Grundfreibetrag.
Angebot (offer) explorer
Ranks five concrete service offers derived from an analysis of adatepe.dev, alongside nine website quick-wins to act on first.
Spielregeln (rules)
Lays out the eight legal and tax limits that actually matter for a Kleingewerbe, each shown with its source.
v2.2.0
June 9, 2026Food tracker
A new /food tab where a photo of a meal is analyzed by GPT vision into full nutrition and a health verdict, backed by day and week views, an AI coach, and body-mind correlations.
Photo-to-nutrition capture
Photograph a meal (or several photos of the same occasion, with iOS Photos upload supported) and GPT vision returns the item list, calories, macros, sodium, sugar and fiber, a 0-100 health score and a healthy/moderate/unhealthy verdict.
Explanatory feedback + Insights
Every meal gets a WHY: an assessment of what drove the score, genuine positives, concrete improvement swaps, and eight sub-factor scores (protein, carb and fat quality, fiber, sugar, sodium, processing, portion). The Insights view charts day and week trends.
Targets, budget & quick-log
Set daily calorie and macro targets with a running budget, log meals by text description when there is no photo, and favorite or one-tap re-log recent meals.
AI coach + body-mind correlations
A coach report and meal suggestions over the last N days, plus correlations linking food (health score, sugar) to mood, energy, and bodyweight from the mood and bodyweight trackers.
v2.1.0
June 8, 2026Becoming: Jim Rohn discipline re-anchor
Re-anchors the Manifest mentor from a pure hype voice to a Jim Rohn discipline philosophy where affirmation is earned, not given. Adds an always-on identity layer and Rohn-register modes for whys, disciplines, a daily check-in, journaling, and seasons.
Identity Header
An always-on header across the Manifest tab shows the owner's "person I am becoming" statement (AI-seedable and lockable) plus the current season, keeping every mode anchored to who they are becoming.
Whys mode
The four editable "whys" that act as the engine; the mentor returns the owner to them by name, and a deepen action sharpens any why into a stronger personal line. Goal inflation is now grounded to a chosen why.
Disciplines mode
Designate core disciplines (mapped to real habits) as the slight edge. The mentor gates fuel and affirmation on whether today's disciplines are kept, so hype is only handed out once the work is done.
Journal + Season review
A "book of your life" journal aggregates check-ins, lessons, and reframes into a dated feed, and a season review (winter/spring/summer/fall) names what the owner became this stretch and the one focus for the next.
v2.0.0
June 3, 2026Manifest + Daily Quest
Major release: the hub grows beyond ops tools into a self-development platform. It ships its first two "becoming" surfaces, an AI delusion-mentor and a daily quest engine, both grounded in a new shared cross-tab life-context layer that lets every AI feature speak from the owner's real data.
Manifest tab (delusion mentor)
A new /manifest tab with a five-mode mentor that teaches 10x thinking: daily check-in drills, a goal-inflation machine that blows a realistic goal up 10-100x and argues why it is reachable, a reframe machine for doubts, and a receipts ledger of real wins the mentor cites as proof. Everything is grounded in the owner's live context.
Daily Quest
A new /daily-quest tab that generates one small, doable-today quest from the owner's live context, with a daily theme that rotates so it never feels repetitive. Includes complete, skip, and reroll (once per day) plus a completion streak and history.
Mantra line + earned fuel
A repeatable daily "line" in the mentor's voice, playable via text-to-speech, plus an Inject button that hands out a charged affirmation. The mentor refuses to inflate feelings the day's work has not earned.
Shared life-context spine
A new gatherLifeContext() layer pulls signals from across the hub (goals, habits, deadlines, finances and more) into one string every AI feature reads from, backed by cron infrastructure for daily generation.
v1.11.0
May 31, 2026Protocol Odin motivation studio
A motivation studio (Protocol Odin) that generates an AI motivational speech from a prompt and plays it back as spoken audio, optionally grounded in your real hub data.
AI motivational speech with voice
Type a prompt, pick a persona, and gpt-4o writes a script that is immediately synthesized to speech and played back through the Web Audio API. A one-tap panic prompt is there for when you need it now, and finished speeches download as WAV.
Personas, voices, durations + languages
Five personas (Aggressive/Goggins, Stoic/Aurelius, Balanced/Jocko, Future Self, Doubter) each with a default voice, eight selectable voices, four length presets from Short to Podcast, and German, English or Turkish output.
Life-context grounding + session history
Toggle 'use context' to feed the script your real life context so the speech references your actual situation. Every session is saved with its transcript, can be favorited, replayed, or deleted.
v1.10.0
May 26, 2026BMW shift planner
The BMW Fastlane tab grows a working shift planner: log shifts individually or in bulk, group them by department, verify completed ones, and read work-pattern analytics over your history.
Shift journal, bulk entry + verification
Add shifts one at a time or in bulk, attach per-shift journal notes, tag department and role, and mark a shift verified (with who verified it). Departments and locations autocomplete from what you have already entered.
Department grouping + semester progress
Shifts group under a per-department tab view with upcoming vs past splits, and a progress track counts verified net hours toward the 360-hour semester target.
Work-pattern analytics + search
Analytics over completed shifts surface heaviest weekday, average start/end times, average net hours per week and per shift, average break length, and net earnings, all searchable across your shift history.
v1.9.0
May 18, 2026Finance tab
A full personal-finance surface: import raw Sparkasse CSV exports, auto-categorize every transaction, and read a deep single-scroll analysis of spending, saving, earning and investing. German date format rolled out across the whole app.
Sparkasse CSV import + auto-categorization
Drop a Sparkasse CSV export and it decodes, dedupes by content hash, resolves merchant names, and categorizes each transaction via rules with an AI fallback (capped per import). Everything lands in a filterable transaction table you can hand-correct.
Deep money analytics
One scrollable dashboard covering spending (biggest expenses, category trends, heatmap), saving (savings-rate by month, habits, goal projector), earning (income by source and stability), efficiency (fixed vs variable, subscription bloat detector), and investing. Cash-flow waterfall, balance trajectory, year-over-year and a runway card round it out.
AI insights + Monte-Carlo prognosis
A weekly narrative read plus an ask-anything box, both fed an aggregate-only context (totals and ratios, never raw transactions, IBANs or references). The forecast panel runs a Monte-Carlo wealth prognosis, and every plot carries a footer with its interpretation and raw data points.
Investment portfolio + dashboard widget
A portfolio panel tracks holdings by asset class (ETF, stock, metal, crypto, bond, cash) with a last-updated timestamp and auto-detected Trade Republic transfers, plus persisted savings goals. A finance summary widget now sits on the dashboard overview.
v1.8.0
April 28, 2026Jira-grade ticket triage + LMU exercise tracking
A Jira-style overhaul of the ticket desk with a full detail drawer and workflow tooling, plus per-module LMU exercise and assignment tracking.
Jira-grade ticket detail drawer
A detail drawer with inline edit, threaded comments, and a per-ticket activity log, backed by six workflow statuses (TODO, PLANNED, ONGOING, IN_REVIEW, BLOCKED, DONE). Adds sub-tasks with parent/child rollup, sprint field, watchers, URL attachments, and time tracking against an estimate.
Auto-prioritize heuristic
Suggests a ticket priority from due-date proximity, blocker status, and keyword scanning: overdue or blocked-and-due-soon go CRITICAL, security/outage/p0 keywords escalate, and stale no-due TODOs are demoted to LOW, each with a visible reason.
LMU exercise tracker
Per-module exercise tracking with eight statuses, notes, open and due datetimes, score, time spent, difficulty, partners, and attachments. A predict-next action infers submission cadence from the median gap between existing due dates and seeds upcoming rows.
Ticket power tools
Keyboard shortcuts (c, /, 1-6, Esc, ?), sortable columns, bulk select and bulk actions, server-persisted saved filter views, and filtered CSV export/import with a preview modal.
v1.7.0
April 26, 2026Comprehensive hub sync
Wires the hub to its external sources: a Puppeteer LSF course scraper, an idempotent Google Calendar push for LMU modules, and a server-side settings store, plus a mobile pass across every page.
LSF course sync
A Puppeteer scraper logs into LMU's LSF portal and pulls full module details (type, SWS, instructors, schedule slots, comments) into the hub. It runs as an async background job that reports live progress through fetching, login, scraping, and saving steps.
Google Calendar push
Pushes a module's weekly lecture and seminar blocks to Google Calendar in correct Munich wall-clock time. Writes are idempotent via tagged extended properties, deleting prior copies before re-inserting, with a one-click remove.
Server-side settings store
A generic scope/key JSONB settings table that replaces per-feature browser localStorage, so preferences persist server-side and follow the owner across devices.
Mobile-responsive hub
Every dashboard page reworked for a 375px phone target: rescaled padding, single-column grids, larger tap targets, stacked flex layouts, and hover-only actions made tappable.
v1.6.0
March 30, 2026Gym analytics suite
A full analytics layer for the gym tracker, turning raw FitX check-in logs into rankings, charts, heatmaps, and a computed stats dashboard.
Personal records board
Ranks every logged exercise by the heaviest weight lifted, with gold/silver/bronze trophies for the top three and the date each PR was set.
Three-tier stats dashboard
Computes a layered stats view from check-in history: hero numbers (total sessions, average and longest duration, sessions per week), pattern cards for current and best streak, and trend pills, all with inline SVG mini bar charts.
Duration chart with four views
A hover-tooltip chart that switches between duration over the last 20 sessions, monthly frequency across 12 months, time-of-day distribution, and year-over-year comparison.
12-month activity heatmap
A GitHub-style check-in heatmap, Monday-aligned with de-DE month and day labels, a FitX-orange intensity scale, future-date dimming, and a fixed-position hover tooltip.
v1.5.0
January 7, 2026FitX gym auto check-in
Your FitX gym visits now flow into the hub on their own. The gym tracker authenticates against mein.fitx.de, pulls your real check-in history, and imports attended sessions without manual logging.
FitX check-in auto-import
The gym tracker logs into your FitX account, fetches the check-in history report, and imports every attended visit so the gym log reflects real attendance instead of hand-typed entries.
Headless Chromium login on Vercel
FitX authentication runs inside the serverless function via Puppeteer and @sparticuz/chromium-min against a self-hosted Chromium pack. The session cookie is cached with a 30-minute TTL and login retries with exponential backoff over three attempts.
Stepped sync feedback in the tracker
The import shows live progress through login, fetching, and processing steps with per-step icons, and surfaces authentication or connection errors instead of failing silently.
v1.4.0
December 25, 2025Visual Overhaul & Productivity Boost
Major efficiency updates including full-width calendar layout, drag-and-drop rescheduling, and a fully collapsible sidebar for focused work.
Calendar 2.0
Drag and drop events to reschedule instantly. Multi-select with Shift+Click for bulk deletion. Cleaner header with optimized controls.
Focus Mode
Collapse the sidebar (Cmd/Ctrl+Shift+B) to reclaim screen real estate. The main layout adapts fluidly to use 95% of available width.
v0.1.0
December 20, 2025Foundations & Calendar Integration
Initialized the complete web app structure and integrated the Google Calendar API, with AI-powered event creation.
Calendar API Integration
Full read/write integration with the Google Calendar API. Events sync between the Hub and the personal calendar.
AI Calendar Copilot
Smart event creation from natural language, with a Recent Actions card to quickly undo or edit AI-created events.
Smart Categorization
Category taxonomy mapped to Google color IDs, with keyword prediction (Training is labeled Exercise).
Web App Structure
Core layouts, sidebar navigation, and dashboard routing for the Ops Hub architecture, behind a page password.