Commit Graph

110 Commits

Author SHA1 Message Date
Ylber Gashi
36b08964b5 Mobile: QoL polish sprint — toast, haptics, chat sorting, skeletons, scroll-to-bottom (#356)
Replace blocking Alert.alert error callbacks with non-blocking slide-down toast
notifications across ~15 mutation error handlers. Add expo-haptics for tactile
feedback on long-press actions, message send/edit, emoji selection, and reaction
toggles. Sort chat lists by updatedAt instead of createdAt so most-recently-active
conversations appear first. Bold unread chat names and improve preview contrast.
Add skeleton loading placeholders (page, file, message, list variants) replacing
generic spinners. Add scroll-to-bottom floating button in message lists. Extract
reusable ListSeparator component. Gate SQL query logging behind __DEV__. Tune
FlatList performance with removeClippedSubviews and render batching. Fix home
screen space avatars and simplify quick action labels.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 11:26:38 +01:00
Ylber Gashi
0bac909477 Mobile: reliability, polish, and test infrastructure sprint (#349)
Consolidate duplicated utility functions into shared format-utils module.
Replace unsafe static ref pattern in PageWebView with forwardRef/useImperativeHandle.
Stabilize useNodeListQuery memoization by replacing JSON.stringify deps.
Add React.memo to FlatList item components (MessageItem, ChatListItem,
SpaceListItem, FileItem). Wrap all tab route layouts with ErrorBoundary.
Set up jest-expo test infrastructure with initial format utility tests.
Add empty states for message list and home screen. Add accessibility
labels to buttons, inputs, list items, and navigation elements. Create
animated skeleton loading components for node lists. Fix pre-existing
lint errors in import ordering.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:47:10 +01:00
Ylber Gashi
c945579abd Mobile: WebView-based page editor with TipTap (#345)
* Mobile: replace inline page editor with WebView-based TipTap editor

Replaces the plain-text block-by-block page editor with a Vite-built
WebView that runs the full TipTap rich text editor. The editor HTML is
bundled as a single self-contained asset, loaded via expo-asset and
rendered in react-native-webview. Communication between RN and the
WebView uses postMessage/onMessage bridge for init, mutations, queries,
theme changes, and navigation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Mobile: reorganize WebView editor as standalone package

Moves the editor WebView app from apps/mobile/src/editor-webview/ to
apps/mobile/webviews/editor/ as a first-class build target with its own
package.json, tsconfig.json, and vite.config.ts. This fixes TypeScript
compilation (editor code no longer typechecked as React Native) and
makes the build story clearer.

- WebView editor is now at apps/mobile/webviews/editor/
- Built artifact copied to apps/mobile/assets/editor-dist/ on prestart
- Vite dev server support for fast iteration
- Tailwind CSS @source path fixed (../../../../packages/ui)
- Page title editing restored via RenameNodeSheet
- File preview now converts file:// to base64 data URLs for WebView
- WebView hidden until ready to avoid white flash
- Keyboard accessory bar hidden on iOS

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

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:43:17 +01:00
Ylber Gashi
0711b24d5b Mobile: set up EAS Build and TestFlight for iOS team testing (#343)
* Mobile: set up EAS Build and TestFlight distribution for iOS team testing

- Add eas.json with production build profile (Node 22.16.0)
- Configure iOS app signing and provisioning via EAS
- Add Metro mocking for Kysely FileMigrationProvider (Hermes compilation error)
- Pin react-dom@19.1.0 to match react version (package.json overrides)
- Store EAS projectId in app.json for Expo CLI integration

The app now builds on EAS cloud and distributes to TestFlight. Team members can be added as internal testers for easy installation on their iPhones.

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

* Mobile: set up EAS Build and TestFlight distribution for iOS team testing

- Add eas.json with production build profile (Node 22.16.0)
- Configure iOS app signing and provisioning via EAS
- Add Metro mocking for Kysely FileMigrationProvider (Hermes compilation error)
- Pin react-dom@19.1.0 to match react version (package.json overrides)
- Store EAS projectId in app.json for Expo CLI integration

The app now builds on EAS cloud and distributes to TestFlight. Team members can be added as internal testers for easy installation on their iPhones.

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-14 22:24:45 +01:00
Ylber Gashi
7c0a226bc4 Mobile: add inline page editing with CRDT persistence (#341)
* Mobile: add inline page editing with CRDT persistence

- Inline Notion-style editing: tap and type directly on pages (no separate edit mode)
- Permission-gated via useNodeRole hook (editor access required)
- CRDT save pipeline: debounced YDoc updates via document.update mutation
- Title saved separately via node.update on blur and navigation
- Block type changes via long-press (paragraph, headings, lists, tasks, quotes, dividers)
- Unsupported blocks (tables, code, files, embeds) preserved unchanged and rendered read-only
- Auto-flush on app background, navigation away, and unmount
- Remote reconciliation when no pending local edits

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Mobile: restore full BlockRenderer for non-editable page blocks

Revert to using BlockRenderer for non-editable blocks in the page
editor (files, pages, folders render with rich previews). Revert
hacky kysely-service transaction retry — the SQLite transaction
error is a pre-existing infrastructure issue.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Mobile: add keyboard toolbar for page editor

Toolbar with + (block type) and dismiss keyboard buttons appears
above the keyboard when editing. Uses Keyboard events instead of
InputAccessoryView for Expo compatibility.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Mobile: update README with page editing and current feature set

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 13:20:32 +01:00
Ylber Gashi
298f3cc173 Rewrite mobile app with Expo Router and React Native
Migrate from Vite/web-based setup to native React Native with Expo Router.
Includes auth flows, chat/spaces/settings screens, CRDT sync, file upload,
workspace switching, emoji picker, message reactions, and iOS/Android projects.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 16:07:20 +01:00
Hakan Shehu
1259f7bd91 Update packages (#322) 2026-02-09 15:42:21 +01:00
Ylber Gashi
075c835286 Web: add test setup and first tests (#313)
* test(server): add vitest harness and initial integration tests
* add web test setup and initial tests
2026-02-09 15:24:22 +01:00
Hakan Shehu
5ea69ba06d Update packages (#311) 2026-01-30 17:38:34 +01:00
Ylber Gashi
3e1070f3a6 test(server): add vitest harness and initial integration tests (#302) 2026-01-19 22:17:32 +01:00
Hakan Shehu
734f59fa95 Minor improvements and fixes (#286) 2026-01-10 23:04:03 +01:00
Hakan Shehu
84a88cc257 Remove langchain dependencies and disable ai code for now (#281) 2026-01-09 00:43:51 +01:00
Hakan Shehu
98fe12f90c Improve markdown parser for editor 2026-01-08 12:41:08 +01:00
Hakan Shehu
3ccde245e9 Update pakcages (#278) 2026-01-08 11:17:53 +01:00
Hakan Shehu
6a89303e7e Refactor forms with tanstack-form (#276) 2026-01-07 16:58:30 +01:00
Hakan Shehu
c93f416a5a Use tanstackdb for queries and mutations (#275)
* Use tanstackdb for records query

* Use tanstackdb for chat list

* Use tanstackdb for database and view queries

* Use tanstackdb for space queries

* Remove unused query

* Use tanstackdb for files query and update live query deps

* Use tanstackdb for message queries

* Use tanstackdb for some node queries

* Use tanstackdb for channel deletes

* Improve node delete handling

* Use tanstackdb for channel creation

* Use tanstackdb for folder creation

* Use tanstackdb for space creation

* Flatten node object attributes

* Use tanstackdb for page creation

* Use tanstackdb for record creation

* Use tanstackdb for record updates

* Use tanstackdb for channel update

* Use tanstackdb for folder updates

* Use tanstackdb for space update

* Use tanstackdb for page update

* Use tanstackdb for database created & update

* Use tanstackdb for view create & delete

* Use tanstackdb for some field mutations

* Use tanstackdb for select option mutations

* Refactor workspace collections

* Use paced mutations for some rename inputs

* Use paced mutations for select option settings

* Use paced mutations for record updates

* Refactor some record queries

* Improve some view update handlers

* Improve view filters and sorts

* Use live infinite queries for some paginated lists

* Use tanstack/db for node reactions

* Fix message reactions dialog

* Remove unused file

* Remove node tree get query with tanstackdb recursive queries

* Replace live queries with plain ones for emojis and icons

* Replace some live queries

* MInor updates

* fix node updates

* fix tanstack db queries

* cleanup some inputs
2026-01-07 16:05:26 +01:00
Hakan Shehu
7149ef5466 Update packages (#267) 2025-11-19 13:55:39 -08:00
Ylber Gashi
90b7e2f8b0 Introduce config.json-driven server config (#246)
* feat: implement JSON-based configuration system with env var overrides
- Add config.json support (replaces .env file dependency)
- Implement deepMerge and normalizeValue functions in loader.ts
- Support env:// syntax in JSON for runtime environment variable injection
- Add optional env var support with ? suffix (e.g., env://VAR_NAME?)
- Extract schema.ts to separate concerns (validation vs loading)
- Rename read*ConfigVariables to read*ConfigFromEnv for clarity
- Improve boolean env var parsing (handle false explicitly, not just truthy)
- Document configuration precedence: env > config.json > defaults
- Add config.json and config.local.json to .gitignore
- Update .env.example with migration guide for new system
- Maintain backward compatibility: env vars still work without JSON files
* - add docker compose and kuberenetes support for the new configuration flow.
- document config.json workflow for self-hosting
* update config json implementation
2025-11-19 13:00:18 -08:00
Hakan Shehu
03587b4e53 Merge with upstream 2025-11-19 12:51:38 -08:00
Alex G
c9a145a622 chore: fix npm security vulnerabilities (#250)
Update vulnerable dependencies to address security issues:
- tar: 7.5.1 -> 7.5.2 (moderate severity)
- vite: 7.1.10 -> 7.2.2 (moderate severity)

Also removes unused peer dependencies detected by npm audit fix.

Tested: Server starts successfully and API responds correctly.
2025-11-13 08:55:56 -08:00
Hakan Shehu
3e4c8b8125 Implement new routing with tanstack router and mobile app kickoff (#248)
* Init mobile app
* Minor fixes and improvements
* Improve assets loading
* Fix event bus proxy
* Improve emojis and icons loading
* Improve app initialization in web
* Init tanstack router
* Refactor components
* Refactor some more components
* Refactor layouts
* Improve routing
* Improve routing
* Routing improvements
* Make sidebar work in mobile
* Refactor container and breadcrumb
* Fix some packages and warnings
* Encode and decode yjs update for ipc communication
* Refactor servers in client
* Fix some errors and warnings in editor and sidebar
* Add route masking for web
* Improve container layout
* Improve ui for mobile
* Improve mobile ui
* Create custom link component
* Router improvements
* Implement tabs for desktop
* tabs improvements
* Refactor routes
* Layout improvements
* Improve desktop tabs
* Use tanstack-db for global collections
* Improve tanstack db collections
* Refactor workspaces and accounts databases and routes locally
* Use tanstackdb for users
* Use tanstackdb for uploads and downloads
* Use tanstackdb for temp files
* Rename database to collections
* Improve tabs
* Fix packages
* Improve local file handling
* Rename sync cursor keys
* Save some bootstrap data in a file
* Reset all data on new version update in desktop
* Minor refactor
* Implement app reset on startup
* UI fixes and improvements
* More Ui improvements
* Fix logout
* Add tab in route contexts for workspace routes
* Store last used workspace id as metadata
* Fix account logout
* Fix file preview
* Fix file thumbnail loading in tabs
* Fix chat tab loading
* Fix some redirect handling
* Disable staletime for icon.svg.get query
* Fix not found pages and throws
* add readme for mobile
* fix some keys
* Improve add tab handler
* Fix path
2025-11-11 07:00:14 -08:00
Jonathan Hyry
316a388d4a Fix node22 lightningcss workaround (#231)
* Latest npm in @colanode/web Docker, add optional plat/arch dependencies

There are a number of issues with lightningcss and node 22/npm.
This is related to platform-/architecture-specific packages.
This uses a number of pieces from multiple solutions found in the notes
 for #160.

This addresses the issues by the following measures:
- Make sure npm is up-to-date in the @colanode/web Docker build
- Add optional dependencies for all the platform-specific lightningcss
  packages that are most likely to be used in the project (HSF and
  mainline) in the npm project modules that require them:
  - @colanode/desktop
  - @colanode/web
  - @colanode/ui

Closes #159.

* Fix darwin-arm64 version.

* Remove unnecessary optional dependencies; remove duplicate version property

* Fix merge issue where the version field got deleted.

* Move the version field back to where it was before.
2025-11-04 05:47:30 -08:00
Hakan Shehu
80b4235bf2 Update packages (#233) 2025-10-15 09:37:45 +02:00
Ylber Gashi
2f8438549e Add configurable storage backends (File, S3, GCS, Azure) (#225) 2025-10-11 01:59:30 +02:00
Hakan Shehu
c64c5a6406 Update packages (#224) 2025-10-07 20:22:27 +02:00
Hakan Shehu
3217764a7b Update packages (#212) 2025-09-11 14:19:45 +02:00
Hakan Shehu
fd8cfb63d5 Remove electron-fuses dependency (#202) 2025-09-01 23:50:07 +02:00
Hakan Shehu
4a2ac3f1ed Update packages (#196) 2025-08-29 16:25:52 +02:00
Hakan Shehu
185ec4abbd Update emojis and icons (#195) 2025-08-29 15:57:59 +02:00
Hakan Shehu
a3de8a84ac Update packages (#191) 2025-08-12 10:31:28 +02:00
Hakan Shehu
363ed3c51e Use tsx for running scripts (#190) 2025-08-11 20:47:02 +02:00
Hakan Shehu
84f7cb70f0 Downgrade typescript version tempirary (#184) 2025-08-08 14:32:40 +02:00
Hakan Shehu
4fb5b7db85 Update packages (#183) 2025-08-08 13:42:31 +02:00
Hakan Shehu
766952b31e Add plain tables to editor (#180) 2025-08-08 11:19:19 +02:00
Hakan Shehu
fd675d7d9b Add hard break node for editor (#177) 2025-08-02 17:14:22 +02:00
Hakan Shehu
d747ebb0da Update packages (#171) 2025-08-02 08:40:10 +02:00
Hakan Shehu
79925e1fc6 Improve file uploads and downloads (#164)
* Track upload progress in clients
* Implement client side jobs
* Separate local files, downloads and uploads
* Use dates instead of timestamps in jobs
* Improve some recurring jobs
* Local file improvements
* Remove job schedules on cancel
* Improve avatar handling
* Fix manual download
* Improve file uploads and downloads
* Improve downloads
* Use tus resumable uploads
* Drop file states table migration
* Remove some unused file system methods and types
* Use Redis KV and Locker for distributed TUS deployments
* Fix file name generation
* Add uploads clean job
* Have a dedicated endpoint for TUS uploads
* Do not revert uploads state because ot TUS resumables
* Use integer instead of text for job and job schedule status
* Rename a query
* Fix error handling for file uploads and downloads jobs
* Check node sync for file uploads
* Rename the temp files clean job
* Minor renames for consistency
* Improve uploads badge
* Small refactor in server job service
* Add env varaibles config for some tus stuff
* Use ms package for millisecond conversions
* Fix some migrations
* Fix logout
* Update hosting values
2025-08-01 14:13:40 +02:00
Hakan Shehu
6212e7c65e Update packages (#155) 2025-07-23 10:10:23 +02:00
Hakan Shehu
170a801603 Upgrade to Tiptap v3 (#154) 2025-07-23 08:30:22 +02:00
Hakan Shehu
b1ebfcf2e2 Use pino for server logging (#144) 2025-07-21 11:33:07 +02:00
Hakan Shehu
6a2635320f Update packages (#112) 2025-07-04 09:12:30 +02:00
Hakan Shehu
1fd2cb0245 Update packages (#94) 2025-06-25 19:58:24 +02:00
Hakan Shehu
9294600c61 Update packages (#66) 2025-06-15 11:55:43 +02:00
Hakan Shehu
f454856ea4 Add bufferutil as desktop dependency - Fixes #63 (#64) 2025-06-15 11:17:42 +02:00
Hakan Shehu
756af021d1 Implement login with google (#57) 2025-06-12 22:08:54 +02:00
Hakan Shehu
574f617f90 Fix desktop build issues (#53) 2025-06-12 12:11:57 +02:00
Hakan Shehu
29d7fcdb0d Prepare for release 0.2.0 (#49) 2025-06-11 20:07:12 +02:00
Hakan Shehu
eb3a8a9216 Docker and workflow improvements (#46) 2025-06-11 12:31:52 +02:00
Hakan Shehu
30e15e4bd3 Web version (#43)
* Create client package
* Create the UI package
* Init web app
* Use isomorphic 'ws' for web sockets
* File and asset implementations
* Use Opfs SAH version of sqlite in browser
* Generate Svg sprites for emojis and icons
* Include emojis sprite
* Improve and refactor assets
* More assets improvements
* Implement emoji and icons db import as readonly
* Improve import paths
* Handle concurrency limits for sqlite
* Fix event broadcast in web
* Pass windowId for subscribe and unsubscribe queries in desktop
* Remove asset context
* Implement avatar upload/download with the new structure
* Improve file handlings
* Move the necessary dependencies to client and ui packages
* Update packages
* Improve open file dialog
* Make sure database files are deleted in browser
* Improve avatar loading
* Improve file loading
* Fix some assets
* Implement asset caching for offline access
* Small fixes and improvements
* Use server instead of pre signed urls for file upload/download
* Cleanup some client related metadata
* Switch Axios with ky
* Refactor mutation results
* Minor concurrency fix
* Refactor web sockets
* Improve file uploading
* Handle connection close on server
* Use stream for downloading the file
* Add config options for cors
* Update document in all tabs on local change
* Include necessary icons for web
* Update docker compose
* Implement server upgrade required component
* Use correct client type and platform in web and desktop
* Improve service worker
* Improve versioning
* Fix an import
* Minor fixes
* Update some user endpoints
* Minor endpoint changes
* Enable app badge for desktop
* Add error handling in some database operations
* Update mutation naming convention
* Update query naming convention
* Update event and some metadata naming conventions
* Update event and job naming conventions in server
* Update Github workflow files
* Restructure assets directory
* Update packages
* Upgrade to Zod v4
* Upgrade to react 19
* Upgrade to tailwind v4
* Minor ui improvements
* Fix some cursor pointers
* Add browser not supported message in web
* Enhance server create flow, allow insecure connections and custom api paths
* Execute electron-rebuild as postinstall command
* Update docker compose
2025-06-11 00:14:17 +02:00
Hakan Shehu
b6c21ac3db Update packages (#23) 2025-05-01 23:19:31 +02:00