Commit Graph

23 Commits

Author SHA1 Message Date
beo3000 6ac087f3e0 chore: ignore project-local .claude/ settings 2026-06-26 08:29:54 +02:00
beo3000 bc45d28f26 fix(tray): load icon from embedded resource stream so it actually shows
icon.ico is a WPF <Resource> embedded in the assembly, but the code
loaded it from the filesystem (AppContext.BaseDirectory) where no copy
exists -> FileNotFoundException, silently swallowed by the catch -> blank
tray icon. Load via pack:// resource stream instead. Also log the failure
to Debug output instead of swallowing it silently.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 08:29:54 +02:00
beo3000 d2f8319772 fix(process): derive target date from message send day, not processing day
A message sent yesterday but processed today (e.g. by the next service
run) landed in today's daily note. The send time was captured in
received_at but only HH:MM reached the LLM; the date defaulted to
date.today(). Now today/weekday in the processor context are derived per
item from received_at, so "gestern"/"heute" resolve relative to when the
message was actually written. Adds day_context() helper and a regression
test (sent 2026-06-25, processed 2026-06-26 -> note 2026-06-25).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 08:19:29 +02:00
beo3000 5bf79d6b92 feat(tray): use antialiased multi-size B icon (Brain) 2026-06-16 10:24:02 +02:00
beo3000 4613909da6 feat(tray): replace placeholder icon with a J glyph 2026-06-16 09:45:28 +02:00
beo3000 08756f99ed feat: windows service + WPF tray GUI for journal-bot
Two thin .NET 10 shells around the Python CLI (tools/JournalBot.slnx):

- JournalBot.Service: Windows Service (LocalSystem), PeriodicTimer runs
  `journal_bot ingest` every 15 min, logs to runtime/logs/service.log.
- JournalBot.Tray: WPF tray app, status banner + Historie/Log tabs +
  Ingest/Process/Both buttons; runs `process` (needs user-session LM Studio).
- JournalBot.Shared: QueueItem DTO, BotRunner (subprocess, kills tree on
  cancel), RuntimeReader (history/status/log); 7 xUnit tests.

Python side: QueueItem gains optional result fields (target_path,
written_entry, processed_at); complete() rewrites JSON atomically;
process_once records them so the GUI can show what was written where.

Install via scripts/{build-tools,install-service,install-tray}.ps1;
replaces the old install-task.ps1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:37:39 +02:00
beo3000 cf152c55af docs: add CLAUDE.md project guide; fix(processor_lmstudio): use json_schema response_format 2026-06-16 08:21:51 +02:00
beo3000 cf2a6614f9 feat(scripts): windows scheduled task for auto-run at logon 2026-06-15 17:44:17 +02:00
beo3000 39a02d8fdd test(prompt): regression cases for date resolution, meta filter, clarification 2026-06-15 17:42:39 +02:00
beo3000 58b515abe9 refactor(process): break after first fail instead of failed_ids workaround 2026-06-15 17:39:15 +02:00
beo3000 c3d345b6a7 feat(cli): ingest/process/both/write subcommands wiring all components 2026-06-15 17:36:02 +02:00
beo3000 2cbe19fecc feat(processor_lmstudio): openai-compatible client with health-check and retry 2026-06-15 17:29:03 +02:00
beo3000 3f61204444 feat(processor): protocol, pydantic schemas, system prompt 2026-06-15 17:25:50 +02:00
beo3000 bc91e61167 feat(context): collect persons and active projects from vault 2026-06-15 17:22:38 +02:00
beo3000 3a9c298a2c feat(transcribe): faster-whisper with telegram premium fallback 2026-06-15 17:19:33 +02:00
beo3000 37a1a58024 feat(telegram): poll, allowlist-filter, parse text/voice/photo, react 2026-06-15 17:12:21 +02:00
beo3000 7aca733735 chore(vault_writer): drop unused datetime import 2026-06-15 17:09:51 +02:00
beo3000 9703ae7c10 feat(vault_writer): append entries with frontmatter and clarifications callout 2026-06-15 17:06:10 +02:00
beo3000 b87462fb4c refactor(queue): use utf-8, drop unused imports, atomic fail() 2026-06-15 17:02:44 +02:00
beo3000 fbed5829db feat(queue): file-based queue with atomic claim/complete/fail 2026-06-15 16:57:03 +02:00
beo3000 16b75e212a feat(state): persist last_update_id and rolling processed_ids 2026-06-15 15:08:53 +02:00
beo3000 c7ca7099b2 feat(config): load settings from env via pydantic-settings 2026-06-15 15:05:55 +02:00
beo3000 ba50f9c148 chore: bootstrap journal-bot project skeleton 2026-06-15 15:01:04 +02:00