Skip to content

v 1.4.6 - Improves AI configuration, adds dynamic news feed, and enforces version checks - #226

Merged
fboucher merged 39 commits into
mainfrom
v-next
Oct 27, 2026
Merged

fboucher merged 39 commits into
mainfrom
v-next

Conversation

@fboucher

Copy link
Copy Markdown
Owner

Enhances AI provider support and configuration:

  • Transitions from a Reka-specific AI API key to a flexible, OpenAI-compatible setup.
  • Allows users to configure various AI providers (e.g., OpenRouter, Ollama, OpenCode.ai) using new AI_API_KEY, AI_BASE_URL, and AI_MODEL_NAME settings.
  • Updates environment variables, refines configuration fallback logic in the API and Blazor apps, and maintains backward compatibility for REKA_API_KEY.
  • Provides comprehensive documentation on how to set up and configure different AI providers.

Adds a dynamic "News & Updates" section to the Blazor web app's home page:

  • Fetches and renders the latest release notes and product updates from a markdown file in the GitHub main branch.
  • Consolidates markdown rendering and asset handling logic into a shared UI component, ensuring consistent and secure content display across both Blazor and MAUI apps.

Introduces a new GitHub Actions workflow:

  • Automatically verifies if the application versions declared in project files (.csproj, Directory.Build.props) match the release tag during push or release events, preventing version inconsistencies.

Bumps the application version across the Blazor, MAUI, and core projects to 1.4.6.

fboucher-os and others added 30 commits August 8, 2026 08:34
…or (issue #92) (#183)

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>
… in blob storage (#185)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>
…d remove ILocalHtmlCache (#186)

* feat: implement async background post content extraction to save HTML in blob storage

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache
…on (#187)

* feat: configure protected Azure Function Parser API and key propagation

* bump: version to 1.4.0

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>
# Conflicts:
#	src/NoteBookmark.BlazorApp.Tests/Tests/PostsTests.cs
#	src/NoteBookmark.BlazorApp/Program.cs
#	src/NoteBookmark.SharedUI/Components/Pages/Posts.razor
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…controls (#192)

* chore: bump version to 1.4.2

* feat: show detailed sync progress messages and progress bar on Posts page

* feat: add back button and text size slider at both top and bottom of reader page
Co-authored-by: fboucher-os <fboucheros+github@gmail.com>
* feat: add MAUI storage tab for offline posts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: refine MAUI storage controls

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: highlight storage actions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… workflow (#204) (#205)

* v1.4.3 - Enhances MAUI sync, local storage, and reader (#202)

* fix(#173): use Id ?? RowKey for checking and opening offline post HTML (#179)

* feat(#176): add sync progress bar and status updates for downloading offline post text (#180)

* should have done that long ago

* fix: resolve Android MAUI app crash when opening URLs (issue #177) (#181)

* feat: add up/down reordering for categories and notes in summary editor (issue #92) (#183)

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>

* feat: add text size slider and fix text wrapping on offline reader page (issue #178) (#182)

* bumb version

* feat: implement async background post content extraction to save HTML in blob storage (#185)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache (#186)

* feat: implement async background post content extraction to save HTML in blob storage

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache

* feat: configure protected Azure Function Parser API and key propagation (#187)

* feat: configure protected Azure Function Parser API and key propagation

* bump: version to 1.4.0

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* update missing env variable

* fix

* chore: bump version to 1.4.1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(#190): update actions/cache to v5 for Node.js 24 compatibility in OpenCode triage workflow (#191)

* Update version to 1.4.2, add sync progress tracking, and reader page controls (#192)

* chore: bump version to 1.4.2

* feat: show detailed sync progress messages and progress bar on Posts page

* feat: add back button and text size slider at both top and bottom of reader page

* ci: include version in android apk filename (#193)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* Fix document sync stuck and improve sync progress and offline fallback (fixes #196) (#199)

* fix: constrain reader text size slider and add step buttons (fixes #195) (#198)

* feat: Add markdown saving for reading notes and bump version to 1.4.3

* feat: add MAUI storage tab (#200)

* feat: add MAUI storage tab for offline posts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: refine MAUI storage controls

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: highlight storage actions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: bump application version to 1.4.3 (#201)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(ci): prevent timeout and rate limits in opencode daily triage (#204)

---------

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…let (#203) (#207)

* v1.4.3 - Enhances MAUI sync, local storage, and reader (#202)

* fix(#173): use Id ?? RowKey for checking and opening offline post HTML (#179)

* feat(#176): add sync progress bar and status updates for downloading offline post text (#180)

* should have done that long ago

* fix: resolve Android MAUI app crash when opening URLs (issue #177) (#181)

* feat: add up/down reordering for categories and notes in summary editor (issue #92) (#183)

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>

* feat: add text size slider and fix text wrapping on offline reader page (issue #178) (#182)

* bumb version

* feat: implement async background post content extraction to save HTML in blob storage (#185)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache (#186)

* feat: implement async background post content extraction to save HTML in blob storage

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache

* feat: configure protected Azure Function Parser API and key propagation (#187)

* feat: configure protected Azure Function Parser API and key propagation

* bump: version to 1.4.0

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* update missing env variable

* fix

* chore: bump version to 1.4.1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(#190): update actions/cache to v5 for Node.js 24 compatibility in OpenCode triage workflow (#191)

* Update version to 1.4.2, add sync progress tracking, and reader page controls (#192)

* chore: bump version to 1.4.2

* feat: show detailed sync progress messages and progress bar on Posts page

* feat: add back button and text size slider at both top and bottom of reader page

* ci: include version in android apk filename (#193)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* Fix document sync stuck and improve sync progress and offline fallback (fixes #196) (#199)

* fix: constrain reader text size slider and add step buttons (fixes #195) (#198)

* feat: Add markdown saving for reading notes and bump version to 1.4.3

* feat: add MAUI storage tab (#200)

* feat: add MAUI storage tab for offline posts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: refine MAUI storage controls

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: highlight storage actions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: bump application version to 1.4.3 (#201)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fixes CI timeout and rate limits in triage workflow (#206)

* fix(#173): use Id ?? RowKey for checking and opening offline post HTML (#179)

* feat(#176): add sync progress bar and status updates for downloading offline post text (#180)

* should have done that long ago

* fix: resolve Android MAUI app crash when opening URLs (issue #177) (#181)

* feat: add up/down reordering for categories and notes in summary editor (issue #92) (#183)

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>

* feat: add text size slider and fix text wrapping on offline reader page (issue #178) (#182)

* bumb version

* feat: implement async background post content extraction to save HTML in blob storage (#185)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache (#186)

* feat: implement async background post content extraction to save HTML in blob storage

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache

* feat: configure protected Azure Function Parser API and key propagation (#187)

* feat: configure protected Azure Function Parser API and key propagation

* bump: version to 1.4.0

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* update missing env variable

* fix

* chore: bump version to 1.4.1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(#190): update actions/cache to v5 for Node.js 24 compatibility in OpenCode triage workflow (#191)

* Update version to 1.4.2, add sync progress tracking, and reader page controls (#192)

* chore: bump version to 1.4.2

* feat: show detailed sync progress messages and progress bar on Posts page

* feat: add back button and text size slider at both top and bottom of reader page

* ci: include version in android apk filename (#193)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* Fix document sync stuck and improve sync progress and offline fallback (fixes #196) (#199)

* fix: constrain reader text size slider and add step buttons (fixes #195) (#198)

* feat: Add markdown saving for reading notes and bump version to 1.4.3

* feat: add MAUI storage tab (#200)

* feat: add MAUI storage tab for offline posts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: refine MAUI storage controls

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: highlight storage actions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: bump application version to 1.4.3 (#201)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(ci): fix timeout and rate limit failures in OpenCode Daily Triage workflow (#204) (#205)

* v1.4.3 - Enhances MAUI sync, local storage, and reader (#202)

* fix(#173): use Id ?? RowKey for checking and opening offline post HTML (#179)

* feat(#176): add sync progress bar and status updates for downloading offline post text (#180)

* should have done that long ago

* fix: resolve Android MAUI app crash when opening URLs (issue #177) (#181)

* feat: add up/down reordering for categories and notes in summary editor (issue #92) (#183)

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>

* feat: add text size slider and fix text wrapping on offline reader page (issue #178) (#182)

* bumb version

* feat: implement async background post content extraction to save HTML in blob storage (#185)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache (#186)

* feat: implement async background post content extraction to save HTML in blob storage

* feat: improve sync html download, always display read post button, and remove ILocalHtmlCache

* feat: configure protected Azure Function Parser API and key propagation (#187)

* feat: configure protected Azure Function Parser API and key propagation

* bump: version to 1.4.0

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* update missing env variable

* fix

* chore: bump version to 1.4.1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(#190): update actions/cache to v5 for Node.js 24 compatibility in OpenCode triage workflow (#191)

* Update version to 1.4.2, add sync progress tracking, and reader page controls (#192)

* chore: bump version to 1.4.2

* feat: show detailed sync progress messages and progress bar on Posts page

* feat: add back button and text size slider at both top and bottom of reader page

* ci: include version in android apk filename (#193)

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>

* Fix document sync stuck and improve sync progress and offline fallback (fixes #196) (#199)

* fix: constrain reader text size slider and add step buttons (fixes #195) (#198)

* feat: Add markdown saving for reading notes and bump version to 1.4.3

* feat: add MAUI storage tab (#200)

* feat: add MAUI storage tab for offline posts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: refine MAUI storage controls

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: highlight storage actions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: bump application version to 1.4.3 (#201)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(ci): prevent timeout and rate limits in opencode daily triage (#204)

---------

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: fboucher-os <fboucheros+github@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(ui): add browser bookmarklet support for saving URLs (#203)

* feat(ui): add dedicated quickadd popup and MinimalLayout for bookmarklet (#203)

---------

Co-authored-by: Frank Boucher <2404846+fboucher@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Speed up MAUI sync: delta pull, batched saves, off-UI-thread (#208)

- Pull only posts modified since the last sync; detect server deletions
  with a new lightweight GET api/posts/ids endpoint (falls back to the
  full list on first sync or on servers without the endpoint).
- Save pulled posts in one SQLite transaction and remove deleted posts
  in one batch.
- Fetch full details for unread posts with at most 5 concurrent requests.
- Run sync on the thread pool and throttle progress events to ~250 ms.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kq68qA7Jv7puAF3Kc6GSFY

* Restore CRLF line endings in LocalDataService and PostNoteClient

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kq68qA7Jv7puAF3Kc6GSFY

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve conflicts from squash-merged v1.4.3 content on main by keeping
v-next's versions; main's src tree was identical to v-next at 9d76219.
Keeps main's disabled schedule in opencode-triage.yml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fboucher and others added 8 commits October 4, 2026 09:39
The Quick Add page is rendered with InteractiveServer and prerendering, so
two component instances ran OnParametersSetAsync and each called
ExtractPostDetailsAndSave, which mints a new RowKey per call.

- QuickAdd skips the save while prerendering (RendererInfo.IsInteractive)
  and shows the progress spinner; the interactive render does the save.
- The extractPostDetails endpoint returns the existing post when one is
  already stored for the URL, so repeat requests never add a duplicate.


Claude-Session: https://claude.ai/code/session_014Yup1wuZFURs47VNTrAK7g

Co-authored-by: Claude <noreply@anthropic.com>
* Add offline news feed to home page

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address review feedback on the news feed

- Register NewsFeedService once as a singleton through an explicit
  factory, so DI no longer has to pick between two constructors and
  sync and the home page share a single refresh lock and cache.
- Discover and rewrite images from Markdig's parse tree instead of a
  regex, which adds reference-style images and paths with parentheses
  and ignores image syntax inside code blocks.
- Raise FeedUpdated after a successful refresh and reload the home
  page feed when it fires, so content downloaded by sync shows up
  without navigating away.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HjU7ggv2Jnx9sqVXACepgC

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Resolve add/add conflicts in QuickAdd.razor and QuickAddTests.cs by keeping
the v-next versions, which already contain main's squashed v1.4.4 changes
plus the prerender double-save fix (#211).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NMPHkFaCRSv16LTKQVCRJX
* Add workflow to check versions match release tag (#217)

Fails when Directory.Build.props, the Blazor csproj, or the MAUI csproj
(Version and ApplicationDisplayVersion) don't match the v* tag.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AMesZ45rYbUa63fA5MZDio

* Check out the requested tag on manual version checks

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AMesZ45rYbUa63fA5MZDio

---------

Co-authored-by: Claude <noreply@anthropic.com>
Release notes in docs/news.md and docs/assets/ are updated on main, so the
app was showing only the placeholder when reading from v-next. Add a test
that pins both URLs.


Claude-Session: https://claude.ai/code/session_0196uTHP3Q8Gegu4SCDXV2HW

Co-authored-by: Claude <noreply@anthropic.com>
Add docs/ai-provider-setup.md with OpenCode, OpenRouter and Ollama
examples, the /v1 Base URL rule and the settings precedence. Replace
Reka examples in the Settings page, .env-sample, compose file and
AppHost sample config with generic AiApiKey/AiBaseUrl/AiModelName
settings (REKA_API_KEY still works). Treat empty config values as
missing so unset compose variables fall back correctly.


Claude-Session: https://claude.ai/code/session_01RmvEuV5wuapUH2RHeMRrWR

Co-authored-by: Claude <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Health
NoteBookmark.AIServices 97% 64% ✔
NoteBookmark.Api 89% 79% ✔
NoteBookmark.BlazorApp 14% 15% ❌
NoteBookmark.Domain 93% 76% ✔
NoteBookmark.ServiceDefaults 96% 75% ✔
NoteBookmark.SharedUI 31% 40% ❌
Summary 59% (1261 / 2121) 53% (384 / 721) ❌

@fboucher
fboucher merged commit 38c3ef6 into main Oct 27, 2026
2 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Merged in Open Source Workbench Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Merged

Development

Successfully merging this pull request may close these issues.

3 participants