Repository navigation
Releases: faraz-35/dayapp
Release list
DayApp v0.3.15
Changes
- the command palette gets a header button — the mouse door for ⌘P, first in the icon cluster so the primary door is reachable without the chord. the glyph mirrors the platform's real modifier: ⌘ on macOS (the icon is the key), and on Windows/Linux the prompt field — the modifier there is Ctrl and no pictograph for Ctrl exists, so the icon says 'type a command' instead of naming a key nobody can press. isMac in lib.ts (the MobileView UA-sniff pattern) picks the glyph and the tooltip's chord (⌘P / Ctrl+P); the button joins Settings → Header as the 'Command palette' row (default on, first — array order is the cluster order), and existing installs default it on via the !== false read.
- copy repositioning at his call: the auto-journal identity phrasing ('live today list with auto-journaling', 'the journal writes itself') is retired — the app presents as a hyper-minimal, power-user superapp (tasks, notes, goals, analytics, journaling) the user shapes via appearance editing and settings feature toggles; README tagline + intro line, AGENTS.md app description, and the Cargo.toml crate description carry the new positioning (journal stays documented as a feature: ##j entries, the --journal flag, the Settings toggles)
- reminder promotion rode launch only, so an app left open across the boundary never fired it — the tick's run_sweep already ran every minute but promotion wasn't invited. It joins the sweep: promote_due_reminders moves out of launch_sweeps into every run_sweep call (day-boundary work stays gated on last_sweep_date, promotion runs ungated after it — after, because a just-promoted item landing ahead of the fall would drop straight back to backlog). Both bodies extract to free fns on &Connection so run_sweep's held lock can reach them
DayApp — Windows dev build
Rolling test build of main. WebView2 (the runtime) is preinstalled on Windows 10/11. Run the DayApp_*-setup.exe — it installs per-user, no admin needed.
DayApp — Linux dev build
Rolling test build of main. Needs the WebKit runtime: sudo pacman -S webkit2gtk-4.1 (Arch/Omarchy). Then chmod +x DayApp-*.AppImage && ./DayApp-*.AppImage.
DayApp v0.3.14
Changes
- publish's verify globbed windows-setup/… and linux-appimage/… without the dist/ prefix the download-artifact step lays them under — the .sig globs in the generate step carried it, the exe globs in the verify step didn't, so the artifact set was proven complete only for the manifest and blind for the verifier
- release.yml's re-sign died: tauri signer sign decodes TAURI_SIGNING_PRIVATE_KEY as the key's base64 content, while the bundler accepts a file path in the same var — feeding it the path put /home/runner/work/_temp/… through a base64 decoder (Invalid symbol 95 = the underscore). Hand the signer the file's contents instead; the strip itself verified clean
- the update channel goes all-platform: latest.json now carries windows-x86_64 and linux-x86_64 beside darwin-aarch64, so the header update icon and ⌘P update flow work everywhere the app installs (the updater plugin and its poll were already cross-platform — the channel just had nobody to serve). release.yml gains a linux job on ubuntu-22.04 (the dev builds' glibc 2.35 base) building the signed AppImage: the strip rewrites the file after the bundler's signing pass, so the artifact is re-signed via tauri signer sign and the shipped signature covers the shipped bytes; the windows job builds through the release config too — createUpdaterArtifacts signs the NSIS installer the updater runs. latest.json generation and the signature verify move to the publish job where every platform's artifacts are in one place, each entry asserted against its .sig and the embedded file: name; the install-path gate grew to all three installers (install.sh for macOS + Linux, install.ps1 for Windows — all resolve the versioned channel, never the dev tags, or updates fork between lineages). The strip/repack/mode-normalize lives in scripts/appimage-strip.sh now, shared with linux.yml whose inline copy is deleted. install.sh's Linux path flips from the rolling linux-dev tag to releases/latest — the flip its own comment was waiting for: fresh installs land on the updater-capable lineage and the in-app updater takes over (it replaces the AppImage at the running path, so install.sh's ~/.local/bin placement keeps working). README's Linux badge and download door follow the same versioned channel. v0.3.14
- the AppImage catalog's test sandbox execs the AppImage tree as a plain user, and linuxdeploy's prebuilt AppRun launcher sits inside at 0770 root:root — a real FUSE mount remaps uid so nothing ever showed (0.3.9 ran on the Omarchy test box), but the catalog's firejail run died with Permission denied before AppRun could even start (their diagnose.sh carries a literal rule for this Tauri/linuxdeploy quirk). Normalize the extracted tree to a+rX (a+x on AppRun/AppRun.wrapped) before the repack — a no-op for real users, executable everywhere else; catalog PR AppImage/appimage.github.io#10304 gets a /retest once linux-dev refreshes
- release notes picked the wrong previous tag: the rolling linux-dev/windows-dev prerelease tags sort above vN.N.N in --sort=-v:refname, so head -1 chose windows-dev and the walk narrowed to the last push — only the version-bump commit remained, the filter dropped it, and v0.3.13 shipped reading 'initial release'. The selection now greps to version tags before head -1 (flaw inherited verbatim from release.sh; it never showed because the rolling tags are new and the last releases all carried custom NOTES). v0.3.13's notes edited in place with the real range
DayApp v0.3.13
Changes
- releases move to CI — the release script retires: every push to main runs release.yml, whose gate reads tauri.conf.json's version and ships only when that version has no GitHub release yet (the anti-spam: a literal release per push would light the in-app update icon after every commit — the ritual reduces to bump the version, push). A release run builds the signed macOS updater bundle (keychain key → repo secret TAURI_SIGNING_PRIVATE_KEY, same bytes release.sh read) and the Windows NSIS installer in parallel, generates latest.json, verifies manifest==version and signature==.sig (the script's python gates, verbatim), and publishes one v release at the pushed commit carrying all four assets — then re-runs the end gates: the channel check (releases/latest/download/latest.json polled until it serves the new version) and the install-path check (the site's versionless curl one-liner must serve the new release's bytes). The tag-race dies with it: windows.yml loses its v* tag branch and its release-wait step (release.yml builds its own installer — GITHUB_TOKEN tag pushes don't trigger workflows, so the old handoff couldn't survive CI), keeping only the rolling windows-dev prerelease; linux.yml untouched. scripts/release.sh + the npm run release entry deleted — one path, no plan B; notes are auto-generated commits since the last tag (the manual custom-prose pass has no CI equivalent)
- demo mode teaches the capture grammar and grows a standing exit: the three capture inputs (tasks / notes / goals) rotate example lines while they sit empty — TokenField's demoExamples render a .token-ph layer under the mirror (prose in --text-faint, the raw sigils ##t/!1/$2/@/#tag in the dull accent rgba(accent,.5) — raw, never the display forms, the hint teaches what to TYPE), each line split over the surface's own scanTokens kinds so a token colors exactly when the surface would parse it, and gated per feature (SectionList on routes/priorities/projects/agent, Notes on entryRoutes/note axes, Goals on timeframes/projects) so a switched-off axis never teaches its token; the swap re-arms on a timeout chain at 6.5s ± 0.7s jitter per step (no metronome beat) and the keyed remount fades each new line in slowly (ph-in, 0.8s ease-out, 2px rise); real-db surfaces pass nothing — the resting capture stays bare there. Beside it the header carries Exit Demo in demo mode: the one labeled text pill, first in the right cluster left of the icon buttons, because it IS the first-run tour's on-ramp — same demoApi.exit the palette fires, the demo.enter/exit trace riding the existing transition effect
- the README header and the repo About speak for every platform the app ships on — tagline and badges read macOS · Windows · Linux (Windows badge lands on the latest release's setup.exe, Linux on the rolling linux-dev AppImage; Android keeps its companion badge), the links line carries the three download doors, and the GitHub description + windows/linux topics drop the macOS-only claim
DayApp v0.3.12
DayApp 0.3.12 — goals drag between horizons, and exiting demo mode stopped asking for your name.
Goals drag
The grip on a goal row drags now. Drop a goal in another group to change its timeframe — Short term to Long term, or to Timeless. Drop it within its own group to reorder. Achieved and paused goals don't drag. Empty groups stay reachable: their dividers and drop strips appear while you drag.
Timeframe tokens
better entrepreneur $2 creates a long-term goal. $1 is short, $2 is long, $3 is timeless. The token sits anywhere in the line, like #tag and !2. Money stays money: $100k doesn't set a tier.
The old leading word (long better entrepreneur) is gone. Settings → Goals has a Goal timeframes switch — off, goals are one flat list with no tiers.
j/k walks goals
The j/k walk now spans the whole page: goals, then notes, then tasks.
Demo exit keeps your name
Exiting demo mode asked for your name every time, even if you already set it. It doesn't anymore.
DayApp v0.3.11
DayApp 0.3.11 — the theme icon is a sun or moon by the theme's mode, and clicking outside unfocuses.
Theme icon
The header icon is a moon for dark themes and a sun for light ones. The app reads the theme's background to decide, so custom themes get the right icon too. The small number is the theme's position among themes of its own kind, and it only shows when there is more than one: Dark alone is a bare moon, Dark and Midnight are moon 1 and moon 2.
Click outside
Clicking outside a focused row, note, or goal now clears the focus, like Esc. Clicking another row just moves the focus there. With a menu open, the first outside click closes the menu and keeps the row; the next one clears.
DayApp v0.3.10
DayApp 0.3.10 — Settings in six cards, per-surface switches, and goal pause.
Settings
The Features card is gone. The page is six cards now: Tasks, Notes, Goals, Header, Appearance, Views. Each surface card is led by its on/off master with its sub-features underneath, and a sub-row goes inert while its master is off. Journal and Quotes sit on the Notes card but never dim, because their pages capture on their own.
Projects, per surface
One Projects switch used to arm the #tag label everywhere. There are three now: Task projects, Note projects, Goal projects. Switch one off and that surface stops parsing, labeling, and filtering #tags; the other two keep theirs.
Hide and pause, per surface
Task hide and note hide are separate switches, each with its own reveal in the command palette. Daily habits pause under their own switch, with their own reveal: Show/Hide Paused Daily Tasks. Hidden Tasks now means Today and Backlog.
Goal pause
Goals get the pause button. A paused goal sits dimmed in place until you bring it back (⌘P → Show/Hide Paused Goals), and a pause with an end date lifts itself at the day boundary. Deleting a goal is still the × job.
Header
Journal and Quotes start switched off. A fresh header is Hidden, Analytics, Settings, and the theme cycle; turn the two written-entry pages on in Settings → Header.
DayApp v0.3.9
DayApp 0.3.9 — a Settings rebuild and dropdown analytics.
Settings
The page is rebuilt: full-width group cards in the analytics card language, real switches, segmented controls. Themes render as ladder cards, views as cards with an Active state and hover edit/delete, and the view builder shows a live "shows ..." summary of what a view will display. Rows know what they depend on — switch Tasks off and the section toggles go inert with a "needs Tasks — it's off in Features" hint. The Features card splits into Features, Task actions, and Note actions, and Task details and Note download get their own switches.
Analytics
The whole toolbar is dropdowns now: subject (Done or Created), range, the three filters (Projects, Priority, Delegation), and the date picker, which is a month-grid popover instead of the native date inputs. The projects card shows the top ten and tucks the rest behind a click, and the day ledger paginates.
Header
The theme button cycles the whole ladder — moon for dark, sun for light, a swatch for each custom theme. Every button glyph in the app is drawn from one icon set now; nothing rides font metrics anymore. Time and reminder chips stay visible on hover instead of fading with the buttons.
Fixes
- Completed agent tasks read as yours in analytics once their rows left the list. The agent flag is snapshotted at completion now, the way project and priority always were.
DayApp v0.3.8
DayApp 0.3.8 — a smaller download, a Linux build, and a popover fix.
Screensaver
The quote screensaver's idle wait is a setting: Settings → UI, 1, 2, 5, or 10 minutes. Default is 2.
Linux
Every push to main builds an AppImage on CI and refreshes the rolling linux-dev prerelease. It needs webkit2gtk-4.1 on the host.
Smaller download
Release binaries strip their debug symbols. The macOS app goes from 21.2 to 15.2 MB.
Fixes
- Picking from a row's popover (project, reminder, hide) no longer lets the next keystroke through to the row. A key repeat after a pick could complete a done Backlog task, silently — two tasks were lost this way. Escape and clicking outside still leave the row focused.
- A custom view with no project picked means all projects, not none.