Skip to content

Releases: zxw1992/TimeMachine

v1.7.0 — Capture web links

05 Jun 02:40

Choose a tag to compare

v1.7.0 — Capture web links

Drop a URL into the time machine and it becomes a searchable memory: the page is fetched, the article text extracted, and the AI writes a summary, a title, and suggested tags — all on your local timeline.

Highlights:

  • New "link" capture type: paste an article / blog / news URL. The original text is archived locally so it survives link rot and stays full-text + semantic searchable; the AI summary leads, with the original text kept below.
  • Summaries follow your app language: an English page saved with the Chinese UI gets a Chinese summary up top, with the English original preserved underneath.
  • Link cards: the timeline and entry drawer show the source site, cover image, and a one-click jump to the original article.
  • Graceful fallback: paywalled or JS-rendered pages that can't be fetched fail with a clear message so you can paste the text manually.
  • Added a GitHub source link in the header.

v1.6.1 — Fix vector search dropping relevant results

30 May 12:30

Choose a tag to compare

v1.6.1 — Fix vector search dropping relevant results

Highlights:

  • Search now ranks with true cosine similarity (1 - distance**2 / 2) instead
    of treating sqlite-vec's raw L2 distance as a similarity score.
  • The relevance cutoff is now a meaningful cosine threshold (0.3), so genuinely
    related memories surface while unrelated noise stays filtered.
  • Fixes cases where searching a short term (e.g. a single keyword) returned no
    results even though a clearly matching memory existed and ranked first.
  • No database reindex required; stored embeddings are unchanged.

v1.6.0 — Weekly / monthly AI review, and a toggle for tag suggestions

26 May 15:11

Choose a tag to compare

v1.6.0 — Weekly / monthly AI review, and a toggle for tag suggestions

Highlights:

  • AI Review page — a new "Review" tab that turns a week or month of memories into a reflection. Period stats show instantly and for free (entry count, kind breakdown, favorites, a daily-activity chart, and a top-tags cloud). On demand, the primary model writes a review — an evocative headline, a story-like narrative, theme phrases, a highlight line, and a decorative SVG poster — generated once per period and cached. The SVG is sanitized before rendering (tag/attribute allowlist, no scripts) and falls back gracefully if it can't be parsed.
  • AI tag-suggestion toggle — a setting (Settings → Roles) to turn off the per-capture tag-suggestion call when you'd rather save cost or latency. On by default.

Notes:

  • The database migrates in place automatically (adds a reports cache table). Existing data is preserved.
  • "Every Sunday" auto-generation isn't possible in a browser-local app that isn't always running; the Review page shows stats instantly and generates the AI summary on demand (cached), so cost stays in your control.

v1.5.0 — Edit entries, tags & favorites, AI tag suggestions, and full export/import

26 May 13:02

Choose a tag to compare

v1.5.0 — Edit entries, tags & favorites, AI tag suggestions, and full export/import

Highlights:

  • Edit existing entries — change the title, body, or time of any memory. The vector index re-embeds automatically (on a title or body change) so semantic search stays in sync; full-text search was always live via triggers.
  • Tags & favorites — tag entries by hand, mark favorites with a heart, and filter the timeline by tag or favorites. Search results show tags and favorites too.
  • AI-suggested tags — after a capture is processed, the primary model proposes a few topical tags in the content's own language. They are shown as one-click suggestions and never auto-applied, so you stay in control.
  • Export & import — download a complete backup (data + all media) as a zip, or a readable Markdown archive grouped by day. Restore a backup with an additive, de-duplicated import; imported entries are re-embedded in the background.

Notes:

  • The database migrates in place automatically (adds a favorite column and normalized tag tables, and upgrades an older experimental tag table if present). Existing data is preserved.

v1.4.2 — Multi-image captures become one memory

26 May 08:02

Choose a tag to compare

v1.4.2 — Multi-image captures become one memory

Highlights:

  • A capture with several images is now saved as a single entry instead of one entry per image. All photos attach to the same memory, are described together, and share one AI-generated title. Existing single-image entries are unaffected.

Docs:

  • README now leads with Alibaba Bailian (Qwen) as the example provider and adds a "Switching providers" overview (provider × capability table, region endpoints).

v1.4.1 — Windows & Linux support

25 May 11:56

Choose a tag to compare

v1.4.1 — Windows & Linux support

Highlights:

  • Runs on Windows and Linux, not just macOS. Added scripts/start.ps1, a PowerShell launcher mirroring start.sh, and extended the font stacks with Windows/Linux CJK fallbacks (SimSun / Microsoft YaHei / Noto CJK) so text renders with a real CJK face off macOS — no bundled webfont, so the app stays offline and small.
  • README brought up to date with everything through v1.4.0 (in-app settings, custom OpenAI-compatible providers, bilingual UI, calendar heatmap, "On this day", multi-image capture, reindex) plus per-OS launch instructions and a Development section.

v1.4.0 — Onboarding, friendlier errors & an engineering baseline

25 May 05:57

Choose a tag to compare

v1.4.0 — Onboarding, friendlier errors & an engineering baseline

Highlights:

UX polish

  • First-run onboarding: new users with an empty timeline get a two-step guide on the capture page — add an AI API key, then record their first memory. It checks off step one once a key is configured, can be skipped, and disappears for good after the first entry.
  • Friendly errors: raw backend/network failures (missing key, invalid key, offline, rate limit, timeout, server error) are now translated into clear, actionable messages, with an "Open Settings" link for configuration problems.
  • Retry on failure: transient errors offer a retry button instead of a dead end — search re-runs the last query, capture resubmits.
  • Draft preservation: an in-progress note survives a tab switch or reload and is cleared once saved.
  • Multi-image capture: image mode now accepts a batch (multiple picks or pastes), shown as a removable thumbnail grid; each image is saved as its own entry.
  • Clearer progress: the processing tray now names the current stage ("Reading image…", "Transcribing…") alongside the animated steps.

Engineering baseline

  • Test suite: pytest coverage for provider fallback, the full ingestion pipeline, and semantic-search ranking.
  • Logging: structured stdlib logging to the console plus rotating app.log / error.log, with a configurable level.
  • Tooling & CI: ruff linting, a pre-commit hook, and a GitHub Actions workflow that runs backend tests and the frontend build on every push and pull request.

v1.3.2 — On This Day, capture polish & fixes

24 May 15:23

Choose a tag to compare

v1.3.2 — On This Day, capture polish & fixes

Highlights:

  • On This Day: the capture page now resurfaces memories from the same month and day in earlier years (hidden until you have prior-year history).
  • "Recent" list on the capture page now persists (last 5 captures, any status) and survives navigation and reload; click any item to jump to its detail on the timeline.
  • Custom capture time: optionally backdate a memory with a collapsible date/time control.
  • Recording preview now uses the same waveform player as the rest of the app.

Fixes:

  • Deleting a memory also removes its leftover thumbnail.
  • Search drops clearly-unrelated results below a similarity floor.
  • Bailian (DashScope) region/key mismatches (401/403) are detected at startup with a clear hint.
  • Internal: startup migrated to a FastAPI lifespan handler.

v1.3.1 — Fix: processing progress survives navigation

24 May 09:15

Choose a tag to compare

v1.3.1 — Fix: processing progress survives navigation

  • The capture page now restores the in-progress tray when you navigate away
    and come back (or reload). Previously the progress indicator for an entry
    still being processed would disappear, even though the work continued in
    the background. On load, the page re-seeds the tray from any entries that
    haven't finished yet.

v1.3.0 — Non-blocking capture with progress feedback

24 May 09:05
cdd3e69

Choose a tag to compare

v1.3.0 — Non-blocking capture with progress feedback

Highlights:

  • Capturing no longer makes you wait. Your entry is saved instantly and the
    AI work (image description / transcription → title → indexing) runs in the
    background, so you can immediately write the next one or leave the page.
  • Staged progress indicator: the capture page shows each step as it happens
    (upload → read/transcribe → title → index → done), and a browser
    notification fires when an entry finishes — even if you've switched tabs.
  • The timeline and entry drawer now show "processing" and "failed" states,
    and the timeline updates in place as entries finish.

Notes:

  • If the app is restarted while an entry is still being processed, that entry
    is marked as failed on the next startup (instead of spinning forever).