9.9 KiB
NE Hub 2.0 roadmap
A family-first hub. Status: [ ] planned, [~] in progress, [x] done. Size: S (a day or less), M (a few days), L (a week or more).
Decided: no photos tab, no voice or video calling (text messaging only).
1. Family Chat (a built-in messenger; text only)
A messenger inside the hub for the family, so family chats do not need Signal. Every hub account is a contact, and a "Family" group exists from the start. Family chats and Signal chats are meant to show in one inbox (labelled by source; not built yet: for now Chat and Signal are separate tabs); people outside the family still use Signal. Messages are kept on the family's own server.
Phase 1: the basics (L): done (chat.js, public/chat-view.js; the Chat tab)
- Direct chats and group chats (names, members, add and remove people)
- Text with links, emoji and line breaks
- Attachments: photos, video, files (stored on the server)
- Replies (quote), reactions
- Unread counts, search, drafts that survive closing the app
- Live delivery in the open app, push notifications in the background
- Mute and archive per chat
Phase 2: feels like Signal (M): done
- Edit and delete for everyone
- Sent, delivered and read ticks
- Typing indicators and online presence
- Disappearing messages (a timer per chat)
- @mentions in groups, pinned messages, forward a message
Phase 3: richer messages (M): done except the GIF picker and shared places
- Voice notes (record and play, with a waveform)
- Link previews (fetched safely by the server)
- Polls
- GIF or sticker picker (optional)
- Share a place as a link
Family extras (M): mostly done
- Turn a message into a task, an event or a shopping item in one tap
- Share a song, recipe, book or podcast episode from the hub into a chat
- Pinned family announcement on Home ("dinner at 6")
- [~] Kid accounts can only message family (already true: only hub accounts can chat); quiet hours are set by each person for themselves (a parent setting them for a child is not built); sharing so far covers recipes and songs, not books or podcast episodes
Privacy (decide first)
- Open question: server-side storage on the family's own machine to start (TLS + encrypted disk), or end-to-end encryption from day one? Starting without E2EE and adding it later is much harder than choosing now.
- [~] Per-person notification settings (mute, quiet hours; the push kind can be turned off in the reminders settings)
Not planned: voice and video calls, stories, usernames and phone-number lookup, sealed sender.
2. Family core
- Family Home (M): one shared start page: who is around, today's family calendar, shared shopping list and chores, what everyone is listening to or reading Done: the Family page: calendar, chores, shopping, notes, chat and tasks on one start page.
- Shared lists and notes (M): done (notes.js, the Notes tab): a real Notes and Lists tab the whole family edits (grocery, packing, gift ideas, house to-dos)
- Chores and routines (M): recurring chores per person, check-offs, optional points and a weekly summary; kids see their own Done: chores.js and the Chores tab: repeats, points, weekly and monthly board.
- Family calendar (M): Done: the Family calendar shows each event in the colour of whoever added it (Settings > Look sets yours); birthdays and anniversaries come from Contacts; inviting people puts the event on their calendar and tells them (no accept or decline). The week view already existed.
- Meal planning (M): Done: a shared week plan (Recipes > Meal plan) that adds the week's ingredients to the shopping list, and a Pantry (items with a count and a running-low level) that the plan checks against. Pantry counts are kept by hand; they do not go down when you cook.
- Worship and devotion (S): a shared daily verse, a Bible reading plan with check-ins, a family prayer list Done: Bible > Devotion (devotion-view.js, bible.js).
3. Kids and safety
- Kid profiles (M): tabs limited per child, content filters (the Smashwords-style filter, Store, podcasts and music in a clean mode), screen-time limits Done: child accounts get a clean Store, podcasts and daily time limit and bedtime (kidlimits.js); tabs per child already existed.
- Approvals (S): Done: requests.js ("Can I have..."). a child asks to add a book, app or extension and a parent approves
- Family device and profile picker (M): a shared screen opens on the family board; kids tap their name, everyone else enters a PIN; it returns to the board when idle Done: board.js, devices.js
- Simple mode (S): Done: simple-mode.js. a big-button layout with few tabs for young kids or grandparents
4. Everyday convenience
- Search everywhere (M): one search across mail, tasks, notes, recipes, contacts, books, songs, chats and Bible verses Done: one search across mail, tasks, events, notes, chat, contacts, chores, recipes, files, music, books and the web.
- Continue row (S): Done: Home, today.js. the last audiobook, episode, book, movie and song on Home
- Notifications center (M): one inbox for reminders, chores, new episodes, mail and chat, with quiet hours per person Done: a bell with a per-person list (chat, reminders, announcements); quiet hours still apply to phone alerts.
- Tasks 2.0 (M): Done: a due time with a notification at that time, Today and Upcoming views, and subtasks on iCloud lists too. Lists serve as projects.
- Mail 2.0 (L): Done: an All inboxes view (newest of each account), snooze, templates, and saving an attachment to Files. Not tried against real Outlook, Gmail or iCloud accounts, only the tests.
- Contacts 2.0 (S): anniversaries and reminders, gift ideas Done: anniversaries show in the calendar every year; gift ideas on each contact.
5. Media
- Movies & TV 2.0 (L): Done: favorites, a shared Movie night list with votes, mixes (random, family night, short, classics) and Your stats (counts, hours, favourite genres from Plex's last-watched dates). The Plex-based ones are tested only against the counting code, not a real Plex.
- Podcast and audiobook stats (S): listening history like Music has Done: time listened per day, streak and audiobooks finished, as a Home card (progress.js).
- Reading goals (S): Done: a yearly goal for books finished (audiobooks and e-books, an e-book counts at 98% read), a listening streak, a family challenge with one shared goal, and downloading notes and highlights.
- [~] Browse and search by genre (M): in the Store, search books and audiobooks by genre (fiction, mystery, history, children's, Christian and so on) across the sources, with genre buttons, and the same genre filter on your own library and shelf. Needs each source's genre data (Gutenberg subjects, Open Library subjects, Standard Ebooks tags, Smashwords categories, LibriVox genres), normalised into one list. Search by genre is done in the Store, Free Books and LibriVox (genres.js); filtering your own library by genre is not built.
- Casting (M): Done: cast.js (AirPlay and the browser's cast picker). pick AirPlay or Cast targets for audio
6. Reliability (the admin's side)
- [~] Browser smoke tests in CI (M): Done: tools/frontend-test.js loads every page script in one shared scope and fails on a syntax error, a name declared twice or a script that throws as it loads. Not a real browser: nothing clicks through the screens.
- Admin health page (S): Done: Settings > Admin checks Plex, Seafile, OnlyOffice, audiobooks, podcasts, Mealie, mail and storage.
- Backup and restore screen (S): one-click restore, per-person export Done: Settings > Admin restores a backup (old data kept aside); Settings > General downloads your own data.
- Offline mode (L): Done: tasks, notes, recipes, the calendar, contacts and chores can be read with no signal (the last saved copy, kept per person); saved podcast episodes and albums already played; books can be saved on the device; adding a task, ticking one, adding to the shopping list and writing a note are kept and sent when the connection returns. Other changes still need a connection.
- Performance pass (S): Done: the Bible text, the reader libraries and the video player were already loaded on demand; page scripts now load deferred. Text was already compressed and cached.
- Accessibility (M): Done: text size, high contrast and reduce motion (Settings > Look and reading); focus outlines and the skip link already existed; dialogs now keep focus inside and give it back; Bible verses can be picked with the keyboard. The main screens were scanned for things only a mouse can click and that was the one gap found.
7. Platform (later)
- Extensions 2.0 (L): Done: notes, recipes and what is playing in the bridge; a Permissions screen per extension; an Updated notice when an admin changes one.
- Automations (L): Done: per-person rules (Settings > Automations): every day at a time, a task is finished, new mail arrives, a pantry item runs low or a new podcast episode comes out, then add a task, add to Shopping or notify.
- Themes (S): accent colours and an AMOLED dark mode per person Done: themes.js, Settings > General > Look.
Suggested order
- Family Chat phase 1, Family Home, Shared lists and notes, Chores
- Kid profiles, Search everywhere, Notifications center, Family Chat phase 2
- Meal planning, Family calendar, Family Chat phase 3 and family extras
- Reliability items alongside everything, so each step stays safe to ship
Done already (for reference, 1.x)
Store (books, audiobooks, radio, My Store, extensions), Recipes with a shared shopping list, Contacts, Music (Featured, Mixes, Favorites, Stats, smart and Family playlists), podcast discovery and transcript search, Smashwords with a family filter, and the sidebar and Radio fixes.