Skip to content

chore: release v3.5.0#233

Merged
raaymax merged 39 commits into
mainfrom
dev
Feb 9, 2026
Merged

chore: release v3.5.0#233
raaymax merged 39 commits into
mainfrom
dev

Conversation

@raaymax
Copy link
Copy Markdown
Owner

@raaymax raaymax commented Dec 10, 2025

What's Changed

Features

Bug Fixes

Improvements

Docs & CI

@github-actions
Copy link
Copy Markdown
Contributor

Docker image

ghcr.io/raaymax/quack:build-48

- Remove deprecated storybook addon-essentials and addon-interactions (Storybook 9)
- Enable search route that was commented out in Router
- Fix import path in DiscussionHeader.stories.tsx
- Add null checks in MessageListScroller to prevent crashes
- Add navigation on search close and null check for messages model
- Enable network access for Vite dev server (host: true)
- Change default backend port from 8080 to 3001
- Fix default database from 'tests' to 'chat'
@github-actions
Copy link
Copy Markdown
Contributor

Docker image

ghcr.io/raaymax/quack:build-49

- Remove MobX observer wrappers from atom components
- Remove direct client/API dependencies from atoms
- Pass data via props instead of accessing global state
- Move LoggedUser from atoms to molecules (it uses app context)
- Create ThemeButtonConnected molecule for stateful theme toggle
- Update parent components to pass required props
- Simplify Image, File, ProfilePic to be pure presentational components
- Use proper directory handling with DIR variable
- Create separate windows: nvim, claude, dev servers
- Organize dev servers (frontend, backend, storybook) in split panes
- Start in nvim window by default
- Remove obsolete pushd/popd commands
@github-actions
Copy link
Copy Markdown
Contributor

Docker image

ghcr.io/raaymax/quack:build-50

@github-actions
Copy link
Copy Markdown
Contributor

Docker image

ghcr.io/raaymax/quack:build-51

* fix(storybook): resolve molecules layer rendering issues

- Add viteFinal config to inherit define/alias from vite.config.ts
- Fix emoji mock data to use hex codes instead of Unicode characters
- Add missing channel mocks (toolbar-test, test, unknown-channel)
- Fix TextMenu.stories.tsx import path for InputContext
- Convert MessageToolbar and Reactions stories to render pattern
  to ensure loaders run before app.getMessages() is called
- Add useFileUrl hook and isUserActive utility
- Refactor LoggedUser to base/connected pattern
- Remove unnecessary observer wrappers from Files and NavUserButton
- Update Storybook deps to v10.2.3 and add playwright for testing
- Add check-storybook.mjs for automated story validation

Storybook pass rate improved from 0% to 97.5% (119/122 stories)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor(molecules): address code review feedback

- Rename useFileUrl.ts to fileUrl.ts and functions to getFileUrl,
  getThumbnailUrl, getDownloadUrl (they're not React hooks)
- Extract magic number to ACTIVE_USER_THRESHOLD_MS constant in utils.ts
- Add proper TypeScript types to Attachments.stories.tsx
- Add proper TypeScript types to TextMenu.stories.tsx

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 1, 2026

Docker image

ghcr.io/raaymax/quack:build-52

* feat(mobile): add theme colors and status bar styling

Add colors.xml with brand colors matching the web app theme:
- colorPrimary: #201F22 (dark navbar)
- colorPrimaryDark: #1a1d21 (status bar)
- colorAccent: #FF8C00 (orange accent)

Update styles.xml to apply status bar and navigation bar colors
to both the splash screen and main app themes.

* feat(mobile): add Quack launcher icons from Tauri

Copy custom launcher icons from the deleted Tauri Android app
to the Capacitor mobile app. Includes all density variants
(mdpi through xxxhdpi) and adaptive icon resources.

* feat(mobile): replace splash screen with solid dark background

Use colorPrimaryDark (#1a1d21) as splash background instead of
the default Capacitor splash image for a cleaner launch experience.

* refactor(mobile): replace Tauri with Capacitor for Android app

Remove Tauri-based mobile implementation and replace with Capacitor:

- Remove app/src-tauri/ (Rust/Tauri Android wrapper)
- Add mobile/ directory with Capacitor 6.0.0 Android app
- Implement custom notification service via SSE for real-time messages
- Add mobile config export endpoint and backend routes
- Update API client to support mobile platform detection
- Remove Tauri dependencies from app/package.json

The new Capacitor app features:
- Background notification service with persistent SSE connection
- Custom Quack notification sound and vibration
- Deep linking support (quack:// scheme)
- Network-aware auto-reconnection
- Boot receiver for auto-start capability

* chore(app): add storybook-static to gitignore

* fix(api): remove unused lint ignore directive

* fix(mobile): address architectural concerns from deep review

- Use EncryptedSharedPreferences for secure auth token storage
- Add wake lock timeout (10 min) to prevent battery drain
- Implement exponential backoff for SSE reconnection (1s to 60s)
- Add server-side heartbeat (30s) for connection health monitoring
- Filter own messages server-side to reduce client processing
- Fix isServiceRunning to check actual service state vs config
- Remove duplicate URL normalization (keep only in QuackConnection)
- Simplify notification tests for better reliability

* docs(mobile): add mobile app build documentation

Add comprehensive documentation for building the Android mobile app:
- Prerequisites and quick start guide
- Local development setup with HTTPS
- Notification system explanation
- Customization options (icons, sounds, package name)
- Troubleshooting common issues

Also update README.md to reference the new documentation.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 2, 2026

Docker image

ghcr.io/raaymax/quack:build-53

The WebView URL wasn't being transformed for Android emulator
compatibility. Now both the WebView and SSE connections properly
use 10.0.2.2 to reach the host machine from the emulator.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 2, 2026

Docker image

ghcr.io/raaymax/quack:build-54

Replace hardcoded SSL task with a script that dynamically detects
all local network interfaces and includes them as SANs. This allows
HTTPS to work from any device on the local network, not just localhost
and the Android emulator IP.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 2, 2026

Docker image

ghcr.io/raaymax/quack:build-55

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 4, 2026

Docker image

ghcr.io/raaymax/quack:build-56

raaymax and others added 2 commits February 5, 2026 12:43
* chore(deps-dev): bump vite from 7.1.5 to 7.1.11 in /app

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.5 to 7.1.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.1.11/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.1.11
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump glob from 10.4.5 to 10.5.0 in /app

Bumps [glob](https://github.com/isaacs/node-glob) from 10.4.5 to 10.5.0.
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](isaacs/node-glob@v10.4.5...v10.5.0)

---
updated-dependencies:
- dependency-name: glob
  dependency-version: 10.5.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump react-router and react-router-dom in /app

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) to 7.13.0 and updates ancestor dependency [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom). These dependencies need to be updated together.


Updates `react-router` from 7.9.1 to 7.13.0
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.13.0/packages/react-router)

Updates `react-router-dom` from 7.9.1 to 7.13.0
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.13.0/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.13.0
  dependency-type: indirect
- dependency-name: react-router-dom
  dependency-version: 7.13.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump lodash from 4.17.21 to 4.17.23 in /app

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 5, 2026

Docker image

ghcr.io/raaymax/quack:build-57

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 5, 2026

Docker image

ghcr.io/raaymax/quack:build-58

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 5, 2026

Docker image

ghcr.io/raaymax/quack:build-59

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 6, 2026

Docker image

ghcr.io/raaymax/quack:build-60

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 6, 2026

Docker image

ghcr.io/raaymax/quack:build-61

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 6, 2026

Docker image

ghcr.io/raaymax/quack:build-62

refactor(components): extract SearchBoxInput atom, MessageInfo molecule, and FlexRow atom
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-72

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-73

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-74

- Add BACKLOG.md to the repository (previously gitignored) to track cleanup, refactoring, and feature work
- Remove BACKLOG.md from .gitignore
- Backlog covers: storybook cleanup (complete), code cleanup, architecture refactoring, file/attachment DB refactoring, and planned features
- Includes section 3.8 for Valibot-based type safety in the database layer
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-75

…gration

* chore(lint): add frontend eslint with atomic design rules and CI integration

* fix(ci): use npm ci and npm run lint instead of npx eslint

* fix(test): remove object constraint from Arg type to allow string args

* fix(test): restore Object constraint with lint suppression for Arg type

* chore(lint): remove incomplete atomic design import rules
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-76

- Upgrade valibot from 0.31.1 to 1.1.0 in deno/server/
- Replace BaseSchema with GenericSchema in command.ts and query.ts (5 occurrences)
- Fix transform parameter types in types.ts for v1 compatibility
- Mark valibot and @planigale backlog items as done
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-77

)

- Gate Router render on `isLoading` to prevent components rendering before channel validation completes
- Upsert fetched channel into MobX store during route loading so it's available for rendering
- Change `getThread()` and `getMessages()` to return `null` instead of throwing when channel not found
- Add null guards in SideConversation, MainConversation (Desktop + Mobile), Conversation, and MessageInfo components
- Add null check in `channels.find()` for non-existent channel API responses
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-78

- Replace full-screen isLoading gate with isInitialLoading that only blocks UI during first app.init()
- Channel fetch (getChannelById) runs in background using app.setLoading() for inline spinner
- Remove debug console.log statements from route handler
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-79

- Add release.yml workflow that auto-creates GitHub Release when dev→main PR with vX.Y.Z label is merged
- Add docs/RELEASE_PROCESS.md documenting the full release flow
- PR body is used as release notes, tag creation triggers existing docker.yml pipeline
@raaymax raaymax changed the title chore: release Release v3.5.0 Feb 8, 2026
@raaymax raaymax added the v3.5.0 Release v3.5.0 label Feb 8, 2026
@raaymax raaymax changed the title Release v3.5.0 chore: release v3.5.0 Feb 8, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

Docker image

ghcr.io/raaymax/quack:build-81

Update Deno Docker image from alpine-2.5.0 to alpine-2.6.8
Fix arm64 Docker build failure caused by denoland/deno:alpine-2.6.8 shipping glibc-linked libcrypto.so.3. Prefix apk commands with LD_LIBRARY_PATH=/usr/lib to use Alpine musl-based system libraries.
Replace LD_LIBRARY_PATH workaround with removing Deno glibc-linked libs from /usr/local/lib/ before running apk.
Fix Docker multi-arch build (amd64+arm64) by moving Deno glibc-linked libs aside during apk install and merging them back after. Also adds workflow_dispatch trigger to dev workflow.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 9, 2026

Docker image

ghcr.io/raaymax/quack:build-87

@raaymax raaymax merged commit a6e7bdd into main Feb 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v3.5.0 Release v3.5.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant