Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
Recall App
A desktop app that builds a timeline of your prior workdays so you can fill in Harvest losing your mind.
Pick a date, and Recall pulls your activity from multiple sources into one view.
Calendar, GitHub, Local git commits, JIRA, Zulip, and more planned.
This app has built almost entirely with AI.
First with cursor, then with Claude Code.
I have also experimented with AI-design for the logo.
See the process here
• Svelte 5 + SvelteKit 2
• Tauri 2
• Rust backend
• SQLite for settings/credentials.Read the full README ↗Calendar, GitHub, Local git commits, JIRA, Zulip, and more planned.
| Platform | Link |
|---|---|
| macOS (Apple Silicon) | Recall-macOS-AppleSilicon.dmg |
| macOS (Intel) | Recall-macOS-Intel.dmg |
| Windows | Recall-Windows.exe · Recall-Windows.msi |
| Linux | Recall-Linux.AppImage · Recall-Linux.deb · Recall-Linux.rpm |
This app has built almost entirely with AI.
First with cursor, then with Claude Code.
I have also experimented with AI-design for the logo. See the process here
nvm use
npm install
npm run tauri dev
recall)recall prints your timeline for a day or range, using the data sources and credentials you set up in the app. It is meant for scripts and AI agents: they get the merged timeline without being handed your GitHub / Jira / Zulip tokens.
On macOS it ships inside the app: /Applications/recall.app/Contents/MacOS/recall (symlink it onto your PATH if you like). Or build and install it from a checkout (it lands in ~/.cargo/bin):
npm run cli:install
recall timeline # yesterday, as JSON
recall timeline --date last-workday --format markdown
recall timeline --from 2026-10-26 --to yesterday
recall help
Each event has a logged flag: whether you have ticked it off as logged in Harvest in the app. Exit status 2 means the timeline was printed but some sources failed (they are listed under errors), so it is incomplete. Before reading, it re-fetches your iCal feeds unless they were synced in the last 15 minutes (--no-calendar-sync skips that).
Create a scheduled task in the Claude desktop app (a local one: a cloud routine cannot reach a program on your machine) that runs every weekday morning, with a prompt along the lines of:
Run
recall timeline --date last-workday --format markdown. Summarise what I worked on, grouped by project/ticket, with rough time spans, so I can enter it in Harvest. Skip events marked as logged in Harvest. If the exit status is 2, say which sources failed.
Allow the task to run recall timeline and nothing else. The CLI is what keeps your credentials away from Claude, but they are still in plain text in the app's database (see the security warning below), so a session that may run arbitrary shell commands could read them directly.
Recall sends one anonymous usage summary per day so I can tell whether anyone uses the app and which features matter. There is no opt-out: nothing in it can identify you, and the list below is the complete contract.
What is sent, once a day:
macos/aarch64), UI language, theme, current grouping mode, and how long ago the app was installed (bucketed: 0to7d, 8to30d, …).0, 1, 2, 3plus), and whether a custom export prompt is set.recall timeline runs, outbound link clicks per source, settings saves and test-connection outcomes per source, cache clears, and update-toast interactions.lt1s, 1to3s, 3to10s, gt10s), per-source event-count buckets per loaded day (0, 1to10, 11to50, 50plus), per-source error classes (auth, rate_limit, network, config, other), and calendar sync ok/fail counts.What is never sent: titles, URLs, repository names or paths, ticket keys, usernames, emails, calendar summaries, hostnames, error message text, your timezone, or any timestamp finer than the calendar day. The server does not log IP addresses.
The full implementation is in src-tauri/src/telemetry.rs (the build_payload function is exactly what leaves the machine, and a test asserts it contains no settings values) and the server side in worker/src/index.js.
⚠️ Your API tokens are stored in plain text. - just like every other app does..
GitHub / Jira / Zulip tokens and iCal secret URLs are saved unencrypted in the SQLite file under the app-data directory (e.g.
~/Library/Application Support/com.recall-app.app/db.sqliteon macOS). Anything running as your user — a malicious npm postinstall script, a rogue VS Code extension, a cloud-synced backup on a stolen laptop — can read them.If that matters to you, use tokens with the narrowest scope you can, and treat them as rotatable.
See TODO.md for the roadmap and ideas list.