oxynote/web
FredApps 7e8f58f854 feat(notifications): filter inbox by read status
Add All, Unread, and Read controls backed by the existing server filter.
Keep separate paginated query caches and reconcile mutations and live
updates across filters, including rollback after filter switches.

Adapt the All/Unread/Read UI approach proposed by adityawaghamare in
https://github.com/oxynote/oxynote/pull/203 (head
90b4fa6ad3). The current implementation
integrates server filtering and paginated caches on current main.

WIP transfer snapshot v1. Focused API and component tests, formatting,
and independent source review pass. Static, aggregate, coverage, and
end-to-end gates remain pending; this is not release-ready.
2026-10-10 16:07:16 +02:00
..
app feat(notifications): filter inbox by read status 2026-10-10 16:07:16 +02:00
electron improve file block 2026-09-17 13:02:18 +02:00
i18n feat(notifications): filter inbox by read status 2026-10-10 16:07:16 +02:00
modules optimise doc icon loading 2026-09-06 20:58:46 +02:00
public update logo 2026-08-13 22:03:27 +02:00
.dockerignore update docker configs 2026-08-05 17:50:32 +02:00
.nuxtrc deps(web): bump the breaking group across 1 directory with 4 updates (#110) 2026-09-12 15:29:55 +03:00
.prettierignore move promql grammar parsing to a separate package 2026-09-01 14:57:21 +02:00
AGENTS.md overhaul the search box 2026-10-07 23:58:08 +02:00
CLAUDE.md add AGENTS.md files 2026-09-08 20:51:36 +02:00
colada.options.ts initial commit 2026-08-03 18:40:10 +02:00
components.json initial commit 2026-08-03 18:40:10 +02:00
Dockerfile.dev deps(docker): bump the safe group across 2 directories with 1 update (#143) 2026-09-12 16:01:33 +03:00
eslint.config.mjs add status column to hooks 2026-10-04 15:15:26 +03:00
forge.config.ts initial commit 2026-08-03 18:40:10 +02:00
index.d.ts improve file block 2026-09-17 13:02:18 +02:00
knip.ts move promql grammar parsing to a separate package 2026-09-01 14:57:21 +02:00
nuxt.config.ts overhaul the search box 2026-10-07 23:58:08 +02:00
package.json generate default org and user avatars 2026-10-05 14:29:52 +02:00
pnpm-lock.yaml generate default org and user avatars 2026-10-05 14:29:52 +02:00
pnpm-workspace.yaml pin higher tmp and tar versions in web 2026-09-09 11:29:50 +03:00
prettier.config.js initial commit 2026-08-03 18:40:10 +02:00
README.md improve auth 2026-08-07 18:17:59 +02:00
sentry.client.config.ts update docker files 2026-08-31 11:25:59 +02:00
sentry.server.config.ts update docker files 2026-08-31 11:25:59 +02:00
tsconfig.json initial commit 2026-08-03 18:40:10 +02:00
vite.electron.config.ts update env vars 2026-08-06 12:07:32 +02:00
vitest.config.ts deps(web): bump the breaking group across 1 directory with 4 updates (#110) 2026-09-12 15:29:55 +03:00
vitest.nuxt-setup.ts deps(web): bump the breaking group across 1 directory with 4 updates (#110) 2026-09-12 15:29:55 +03:00

Web

Nuxt 4 + Vue 3 frontend of Oxynote. Ships two ways: a server-rendered web app and an Electron desktop app.

Tools and dependencies:

I18N

All text needs to be placed in the i18n/ directory.

We use a separate package for validation and it uses its own internal error messages: https://vee-validate.logaretm.com/v4/guide/i18n/

Setup

Install dependencies and run the prepare step:

pnpm run setup

Environment variables are read from .env — make setup at the repository root creates it from docker/env/web.example.env.

Development

Start the web development server on http://localhost:3000 (the backend stack must be running — make dev at the repository root does both):

pnpm run start:dev:web

Run the desktop app against the same dev server:

pnpm run start:dev:desktop

Production

Build the web application:

pnpm run build:web

Package the desktop application (or build installers with make:desktop):

pnpm run package:desktop

QA

pnpm run qa      # check-types + check-lint + check-fmt
pnpm run qa-fix  # check-types + lint --fix + prettier --write