Skip to content
CLEPSOdocs

Project / Changelog

Changelog // 189 commits

Every commit, newest first. Each one passed all 15 quality gates before it was pushed.

Clepso was called Pulse until 18 Oct 2026. Older commits keep the name they were written with.

Latest increment · 24a1d6d

2.1–2.3: limit alerts at 80, 95 and 100%, reset expected and ready again

Passed every gate:

toolchain pinnedstrict build (warnings=errors)testshelper links no networkingrelease build has no debug codenetworking only in Syncclock injecteddesign tokens onlymotion through tokenskeyboard reachableredaction auditsecret scanno committed accounts projectemail templatesapp bundle

  • Merge fix/Merge fix/perf-flake: paired perf rounds; helper sends a frame however long it took to build6d2bebc
  • HelperHelper: send a frame however long it took to build415ff9e
  • make perfmake perf: paired rounds, honest frame-delivery checke64048c
  • ReleaseRelease: scripted Developer ID build up to notarisation, v0.1 feature gate, release notesfd3a0a7
  • SiteSite: rebuild at f66a9bf (decision sheet work)020af47
  • Merge exacMerge exact running-now from Claude Code's background list, Tasks footnote, approved names for Codex (decisions 8-10)f66a9bf
  • AgentsAgents: exact "running now" from Claude Code's background list; Tasks footnote; approved names for Codex toof346748
  • Merge CodeMerge Codex Reserve fix, unmeasured spans on the Limits chart, reading age in the inspector (decisions 1-3)dc1036c
  • Codex ReseCodex Reserve readings never count as Codex's limits; old readings drawn as unmeasured; inspector age and reset-passed row2018782
  • Merge pixeMerge pixel activity strips on the player card and the Models dossier (decision 7)0198d3f
  • READMEREADME: the Claude desktop app's Code tab runs hooks but not the status line (founder's test, 19 Oct)732ab36
  • Card activCard activity log and Models ACTIVITY strip as pixel-density tiles9bf557e
  • SiteSite: rebuild with the new screenshots (#7)9aa090f
  • READMEREADME: screenshots from tonight's app, and the new Models screen (#7)540dc70
  • SiteSite: rebuild at bc9c5aa (records, loose ends, de-duplicated progress)1b1498e
  • Merge loosMerge loose ends: probe/debug runs isolated from the live install, perf harness fixes, CodeQL notebc9c5aa
  • Isolate deIsolate debug and probe runs from the installed app; make perf time the release helpera3e9612
  • Merge recoMerge records catch-up: INTEGRATION.md reflects what is applied7856b75
  • Brand INTEBrand INTEGRATION.md: record what is applied; the app icon is wired3944faa
  • Merge websMerge website fixes: rebuilt pages, font licence wording (OFL 1.1), Progress page de-duplicated7972c5c
  • SiteSite: rebuild for current main; one row per increment; font licence as in TRADEMARKS54e227d
  • Merge fit Merge fit every Dashboard page at the 1100 pt minimum windowe73a59b
  • Fit every Fit every Dashboard page at the 1100 pt minimum window22cf598
  • Merge 30-dMerge 30-day calendar: text on the plain square, activity as a pixel band (no cut-out box)cddb2cf
  • 30-day cal30-day calendar: figures on plain ground, level as a pixel band below them46d50bb
  • Merge ModeMerge Models redesign: roster + dossier, level track, how-to-level-up cards (founder's 5 references)d21712e
  • ModelsModels: roster + dossier (founder's pick, proposal A)ab491d2
  • Merge apprMerge approved custom agent names: exact-match allowlist set in Settings, enforced by the helper and the appd3bf40d
  • Agent nameAgent names: show approved custom Claude Code agents by name4651679
  • READMEREADME: logo, website docs and design system; bring features up to date (#6)4bb2986
  • Merge menuMerge menu bar decisions: flatline only for windows that hit their limit; % follows the driving card65875f3
  • Menu bar iMenu bar icon: flatline only for a window that hit its limit; % from the driving card5abb1db
  • CI, CodeQLCI, CodeQL: runs on main always finish; only a newer pull-request push replaces a run3c48f17
  • Merge pixeMerge pixel activity calendar and year switcher back to 2025847fd24
  • Activity cActivity calendar: levels as pixel density; the year switcher goes back to 20252d831f9
  • Merge pixeMerge pixel bars: fills follow the frame's stepped pixels; bar charts drawn as pixel columns12ba130
  • Code scannCode scanning: CodeQL advanced setup with Swift (#5)707fe7c
  • Pixel barsPixel bars: progress fills follow the frame's steps; bar charts drawn as pixel bars75b89e0
  • Merge agenMerge agents panel: subagents running now across tasks, readable types, latest-task layoutd601d19
  • Merge CodeMerge Codex provenance and reading fixes: Codex's own source in the inspector, last reading caught, other allowances ignored, honest stale cards4453ebb
  • Agents perAgents per task: show subagents running now across tasks; readable types; latest-task card layout0a15fd7
  • CodexCodex: its own provenance, the newest reading, honest stale cardsb348d4c
  • Merge menuMerge menu bar states: stale mark follows the cards behind the shape; crisp % text6348de3
  • Menu barMenu bar: stale mark follows the readings behind the shape; crisp % text382e60c
  • Web dashboWeb dashboard: escape every notice; record the applied GitHub settingsd9058a3

  • CICI: run the quality gates on GitHub Actions; Dependabot version updates (#4)150e5ee
  • SiteSite: rebuild with quiet hours and reminders, current names and the changelog naming notea2bee71
  • Merge quieMerge quiet hours and scheduled reset reminders (2.1, 2.3)00c3e64
  • Quiet hourQuiet hours with a morning digest, and scheduled reset reminders (2.1, 2.3)0fc4eb8
  • Stop timinStop timing flakes in helper tests; CLI moves old Pulse installs; drop PULSE_ config names484ac20
  • Remove theRemove the unused Silkscreen, Pixelify Sans and VT323 fonts020afef
  • Merge pullMerge pull request #3 from obileonardo/docs/add-chimexxd92a6fa0
  • READMEREADME: add a Contributors sectionb0f139c
  • Merge inteMerge internal rename Pulse → Clepso, with the launch-time move of existing installs9c79a45
  • Retry the Retry the settings.json rewrite within the same launch5696ec8
  • Docs and sDocs and site: Clepso paths, names and the move from the old layout65464f3
  • Move existMove existing installs to the Clepso folders at launch430df49
  • Rename PulRename Pulse to Clepso in code and build namesce7f14d
  • App identiApp identifier: com.elvisobi.clepso (helper com.elvisobi.clepso.statusline), sign-in scheme clepso://bfdd776
  • Rename to Rename to Clepso: the repository (obileonardo/clepso) and the Swift package514b75a
  • Brand pipeBrand pipeline: Pillow 12.3.0, CairoSVG 2.9.1, Brotli 1.2.0, fonttools 4.60.2 (Dependabot advisories)4aec185
  • Open-sourcOpen-source Stage C: release validation and go-public record2863a6c
  • Dashboard Dashboard opens at three quarters of the screen, then where it was left; Card page: card on the right, text level with its top, actions with its bottoma84b2c6
  • Delete CleDelete Clepso data: checkboxes instead of a trash icon per line; delete only what's ticked8348b7c
  • Merge keybMerge keyboard-only and Reduce Motion pass (item 9)07c3716
  • docsdocs: keyboard-only and Reduce Motion checks (item 9)1a835c2
  • KeyboardKeyboard: pixel focus ring on every self-drawn control, charts and calendar by arrow keys, ⌘, opens Settingsc22f026
  • Reduce MotReduce Motion through one switch and the motion tokens; probe tooling for item 9ba56f33
  • Merge popoMerge popover open speed (item 8): cached formatters, launch warm-up, Codex reads off the main actore968cb6
  • ProbeProbe: time opens after an idle gap6454ca6
  • Popover spPopover speed: read Codex's files off the main actor, parse timestamps with shared parsers67071ab
  • Popover spPopover speed: render the popover once off screen at launch5cb6bf2
  • TestsTests: wait for the Codex snapshot instead of racing the scan's refresh828d30f
  • Popover spPopover speed: make each date formatter once, not on every render01031f3
  • Merge lateMerge later milestones (item 10): time-travel harness and its three fixes, .ics calendar (hidden in Stage A), release and Apple-platforms notes2cc8d99
  • Merge branMerge branch 'main' into feat/later-milestones57692e6
  • DocsDocs: release runbook (4.1) and iPhone, Watch and widgets feasibility (4.2)20ee7fd
  • One-tap CaOne-tap Calendar for weekly resets, as an .ics file (2.5)bd71710
  • Agents perAgents per task: earlier days name the day in recent tasks; the Claude Code section says so when Codex's is shown8c2b221
  • Alerts tooAlerts too old to be news are dropped, logged once; time-travel harness (2.4)b7c9e0a
  • Times follTimes follow the locale's 12/24-hour convention (2.4)87bd656
  • Time zone Time zone and locale follow the Mac while the app runs (2.4)1347863
  • Merge CodeMerge Codex agents per task (item 4)7184449
  • Session paSession page: Codex agents per task, while reading Codex is ond7c9138
  • CodexCodex: agents per task from its session files, read without decoding6dcc2af
  • Merge menuMerge menu-bar state family (item 7)7eb3477
  • Menu barMenu bar: the brand kit's state family (beat, approaching, flatline, clock, demo, waiting, not connected) from one generated table5c226d0
  • SiteSite: rebuild (email logo asset)8f003c0
  • Merge branMerge branded Clepso account emails (templates, local config, CI check, EMAIL.md)8ddf236
  • Stats › OvStats › Overview: Codex's tokens per day by model, with total, output, active days and top model for the range4eccc84
  • DocsDocs: account emails (templates, previewing, hosted project, SMTP recommendation)e97d3dd
  • Web dashboWeb dashboard counts agents as the Mac does: Claude Code's internal (typeless) agents left out of uploadsb22c1eb
  • Account emAccount emails: Clepso-branded Supabase Auth templates for sign-in, new account, email change and recovery573c689
  • BrandBrand: header logo for account emails, deployed with the site9f63134
  • Merge dashMerge dashboard premium pass: 32 pt section air, stat cards, aligned titles, agents-per-task counting fixf53658d
  • Dashboard Dashboard pass: hero figures on Limits and Goals, one heading per chart, Arena meters aligned52f8e6f
  • Merge branMerge branch 'main' into design/dashboard-premiumb64df9d
  • Dashboard Dashboard cards: Agents per task, Session's figures and Overview at a glance in the pixel card languagefd6435e
  • DashboardDashboard: page title aligned to the column; pages fit the window at its minimum width31135e6
  • Dashboard Dashboard sections: 32 pt of air above and below each section's content4fc94bd
  • Agents perAgents per task: Claude Code's internal agents aren't counted as subagents89f1a99
  • Codex tokeCodex tokens per day and model: each thread's running total, read once in the background, then only what's appended510f083
  • Upload on Upload on quit: when signed in, counts not yet sent go up before Clepso quits, waiting 3 s at most0b5ff72
  • Merge playMerge player card redesign: Clepso mark, totals, lines, accurate streaks, live updates, tilt and flipec32398
  • SiteSite: rebuild with the web dashboard in the menu, roadmap rows 3.5-3.9 and the village's planned agents6d5bbb7
  • Card backCard back: days before the first session drawn faintly; the back never outgrows the front6dcf805
  • Player carPlayer card redesign: mark, total tokens, lines, clear streaks, live updates, flip29c2706
  • DesignDesign system: the Clepso mark as a view, and a display size for a card's hero figure2294529
  • Merge web Merge web dashboard (/app): email-link sign-in and read-only viewsdd5bc6f
  • Popover foPopover footer: 4 pt more room between the freshness line and Quit5ac329b
  • Accounts cAccounts config: site URL and sign-in redirect for clepso-app.vercel.app/app36ab64d
  • Privacy anPrivacy and security: the web dashboard (§9.1)b600515
  • SiteSite: generate the web dashboard at /app921f0b3
  • Web dashboWeb dashboard (2.0 step 3): /app page, email-link sign-in and read-only views7a10c4e
  • Card dataCard data: lines added and removed over the sessions Clepso keeps2c8a4aa
  • Popover foPopover footer: a refresh button beside the freshness line, and Quit framed with a power glyph so it reads as an actionf625dc7
  • CardCard: streaks count days Clepso saw after the stats file's last day8a65113
  • Menu bar cMenu bar counts Codex: icon and % take the highest of both agents; site village marks Gemini, Grok, Cursor, Copilot, Windsurf as roadmap2db559b
  • 2.1–22.1–2.3: limit alerts at 80, 95 and 100%, reset expected and ready again24a1d6d
  • Fix 3a41a8Fix 3a41a85: the window-frame helper is nonisolated (strict build was red)4ce9217
  • 1.171.17: the Dashboard opens filling the screen; the page column grows with it3a41a85
  • Rename theRename the product to Clepso (founder decision, DECISIONS C6)f6597c6

  • SiteSite: ship the OFL beside the published font filescee088f
  • Brand liceBrand licence: fonts under the SIL OFL, name and logo reserved48abaff
  • Strict buiStrict build: no warnings, and the gate now fails on any0be8821
  • SiteSite: rebuilt after Stage B (current screenshots with a neutral profile name, no private project names)20d1d9f
  • Open sourcOpen source: Stage B record, owner decisions, CI proposal in contributor mode121dad8
  • RepositoryRepository hygiene: .editorconfig and .gitattributes3efefde
  • READMEREADME: current features, local configuration, Sync off in source builds49b2ba3
  • Community Community files: contacts, contributor CI mode, public design docseb18cbe
  • LicenceLicence: MIT at the root; notices list brand assets as an open decisiond989fb9
  • CommentsComments: no references to private planning documentsa16a634
  • Public desPublic design docs: architecture, data model, privacy and security, fixtures33011e5
  • ScreenshotScreenshots: neutral profile name and a synthetic statistics file3d32276
  • make cimake ci: strict by default, --contributor opt-in, accounts-project gatee52577c
  • Ship thirdShip third-party licences inside Pulse.appafc293c
  • Build confBuild configuration: signing and accounts project from local xcconfig2841e56
  • Sync off iSync off in builds without an accounts projectc8826ff
  • GitHubGitHub: issue forms and pull request template53d5d48
  • Community Community files: contributing guide, security policy, code of conduct, noticesfc6d215
  • READMEREADME: detailed public README checked against the code6628293
  • Open sourcOpen source: proposed LICENSE, CI workflow and Dependabot config (inactive)3cfa6a5
  • Open sourcOpen source: Stage A readiness audit and GitHub settings plan339190b
  • 1.161.16: Pulse's own typefaces, app icon and menu bar mark in the app3d70caf
  • SiteSite: the Pulse identity on every page; design-system page shows the five themes261c05b
  • Merge branMerge brand/identity: the Pulse mark, Pulse Pixel and Pulse Mono, brand and design-system guidelinesdcd064f
  • BrandBrand: favicon.ico carries 16, 32 and 48 px; review screenshotsd209333
  • SiteSite copy: Codex is read today (village, Metrics sources, Privacy, footer)af74060
  • DesignDesign system page rebuilt as brand and design-system guidelines7c66b9e
  • BrandBrand: export brand.json for the design-system page8fca5bb
  • 3.4c3.4c (screens): Codex in the panel, the Limits page and Settings553845f
  • Merge desiMerge design/themes-premium: five colour themes and the premium detail pass417394c
  • HomeHome: limit meters use the state colour, matching the popover in every themea151b1a
  • BrandBrand: CoreText specimens, font checks, reproducible pipeline, notesa19fde9
  • Plan pickePlan picker: one ruled action row (Skip or Cancel left/beside, Save right)1d529b4
  • Sheets, onSheets, onboarding and Dashboard pages: pixel chrome, figures over sentences18f74d9
  • BrandBrand: the Pulse mark, lockups, app icon, menu bar icon and favicon7b2aad6
  • BrandBrand: Pulse Pixel and Pulse Mono, drawn in code8f64438
  • PopoverPopover: one action bar, demo strip, equal cards, status chips0f6cdc1
  • SettingsSettings: choose a colour theme; every window follows itdfec6e1
  • DesignDesign: four colour themes (Amber, Cobalt, Orchid, Graphite) beside Phosphor1509862
  • 3.4c3.4c (data): Codex in the app model and the overview snapshot9ee28c7
  • 3.4a–b3.4a–b: Codex limits reader and a store with one account per agentaecfbb1
  • SiteSite: the footer village, coding agents living around the Pulse tower8c5e31d
  • SiteSite: rebuilt from the founder's 50 Mobbin picks4af903c
  • SiteSite: screens for 1.11-1.14, light mode; regenerated2154a42
  • 1.141.14: every page in the Account page's structure28ea8f4
  • 1.131.13: pixel icon set, Phosphor light mode, appearance switchc4ff386
  • 1.121.12: every Dashboard page re-laid out after the founder's Mobbin picks9ac706c
  • 1.111.11: wide, short menu bar panel; settings in the Dashboard; pixel menu bar icondfbd95d
  • SiteSite: Privacy page; Account screen; regenerated00d9902
  • 2.02.0 step 2: sign in by email link and upload daily counts (Sync module)8bb4720
  • 2.02.0 step 1: accounts backend schema with row-level security and account deletion (local Supabase)8d913c9
  • SiteSite: Home, Card, Goals, Account and Settings screens; regenerated87f5680
  • 1.101.10: dashboard restructure after the Aqua Voice reference, in pixel styleec6977d
  • SiteSite: agents per task on Metrics and Architecture; regenerated5a7f6ee
  • 1.91.9: agents per task through Claude Code hooks (counts only, opt-in)0d4d527
  • DesignLevel legend in the app; documentation website around the design systemdf0dca7
  • DesignArena levels from output tokens on fixed targets, bar labelled exactlyd7bccdf
  • 1.81.8 UI refinement: readable text, sidebar navigation, true charts, model arena2476304
  • DesignDesign system update: Phosphor specimens, app screens, classic set kepte24bf5c
  • 1.7e-g1.7e-g: Details window, Stats view, Phosphor redesign rollout2876f81
  • 1.7d1.7d: opt-in reader for Claude Code's statistics file (/stats data)7b2c478
  • 1.7c1.7c (part 2): usage history and labelled pace estimate775eaa1
  • 1.7c1.7c (part 1): store changes and check-ins, not every repeat; retention3ea0e07
  • 1.7b1.7b: Phosphor pixel design layer (concept approved)5eeaebe
  • 1.7a1.7a: session detail data (durations, lines, prompt cache) and migration v2d4908b2
  • C7C7: say only what the source reports; count unread limit windows4d160ea
  • MilestoneMilestone 0 and increments 1.1–1.5: Pulse status-line monitor for macOS7aa1026