Skip to content

Releases: neopostmodern/structure

Structure 0.25.1

01 Feb 09:05

Choose a tag to compare

This release greatly improves performance for users with thousands of notes in many (but not all) interactions. It also merged the "links" and "texts" distinction into a unified "note" where a URL can be added and removed at any time. Behind the scenes many packages were updated.

Detailed changes

  • feat: improve performance of NotePage and TagPage with fragments and deferred component renders (50d719a)
  • feat: merge links and texts into unified notes (dec6416)
  • feat(client): directly modify cache after creating note (78c04bb)
  • feat(client): logging and performance measurement infrastructure (fcd0b72)
  • feat(client): migrate @apollo/client to v4 (e5703fb)
  • feat(client): reworked cache writes (6fcc66c)
  • feat(client): use new logging and performance measurements (0402fa5)
  • feat(server): script for generting testing data (notes, tags) (b38975d)
  • fix: correctly show initial loading state on notes page (7152a14)
  • fix(client): don't require URL on notes in form validation (c1b9e1a)
  • fix(client): force remount of note page when note ID changes (75e460b)
  • fix(client): in useDataState honor 'no-cache' policy explicitly (fa256c5)
  • fix(client): increase debounce time of search field (ed7c092)
  • fix(client): remove dev logging (2bea15b)
  • fix(client): replace deprecated onCompleted option in useQuery/useLazyQuery (399b231)
  • fix(client): replace deprecated variables option in useLazyQuery (4a637aa)
  • fix(client): show "loading note first time" indicator again (d15038f)
  • fix(client): update apollo client initialization (1c65243)
  • fix(client): update in-app outbound docs URL (b43127e)
  • fix(server): CWD-independent path in utility script (ed9a34c)
  • fix(server): update version info (02b6de7)
  • chore: generate both schema and types on server with root npm script (3e1beaa)
  • chore: re-configure prettier (2438dbb)
  • chore(android): bump TWA app version after 0.24.2 release (5da39ca)
  • chore(client): reformat with prettier (48440dd)
  • chore(client): remove unused code (7786568)
  • chore(client): update eslint config (49f4b6b)
  • chore(server): update to slightly more maintained passport-github2 package (5e263ae)
  • deps(client): bump electron to v39 and @apollo/client to v4.1 (1a7fc7e)
  • deps(client): switch to own fork of apollo3-cache-persist with build fixes (3632de4)
  • deps(client): temporarily switch to fork of apollo3-cache-persist with support for apollo v4 (0f9e3a0)
  • deps(client): update package-lock.json (a850080)
  • docs: update release info in README (d485beb)

Full Changelog: v0.24.2...v0.25.1

Structure 0.24.2

23 Oct 09:42

Choose a tag to compare

This is a patch release mostly addressing regressions introduced with 0.24 – but to get a build out a lot of infrastructure/build changes were necessary.

Changes

Bug fixes

  • fix: fetch noteCount explicitly when possibly creating new tag (c48b631)
  • fix(client): balance spacing of error page in mobile layout (8ece913)
  • fix(client): correct application of markdown styling (eb96e6f)
  • fix(client): correct naming for comparing to injected variable (f004776)
  • fix(client): log errors for unavailable developer extensions instead of throwing errors (ce7c8f3)
  • fix(client): show children of ComplexLayout even when profile query fails (6e7f06f)

Build and infrastructure changes

  • fix: downgrade node to v22.20 (3d6e809) d'oh – see below
  • build: bump node verison to v25 (ce9720c)
  • build: convert config to regular JS package (no direct JSON export) (02d5ea9)
  • build: update lerna to v9, drop explicit versioning script (b6c5ee1)
  • build(client): correct TWA signing keystore path for prod (bbb03a6)
  • build(client): forge config explicit ESM extension (729b377)
  • build(client): switch to ESM entirely (d602a57)
  • chore: treat top-level package as module too, bump typescript (a103bd9)
  • chore: update all package-lock.json (0490e4b)
  • chore(client): bump deps (electron 38) (803090f)
  • chore(client): update dependencies, electron 38 (1da8c8e)
  • chore(client): update package-lock.json (c461cc2)
  • chore(client): upgrade electron-forge packages to v7.10.2 (6f3abaa)
  • ci: don't fail-fast on os-matrix build tasks (360b6a1)
  • ci: don't suppress sub-package npm ci errors anymore (98694f4)

Full Changelog

v0.24.1...v0.24.2

Structure 0.24.1

07 Sep 08:50

Choose a tag to compare

(Release notes pending)

Full Changelog: v0.23.1...v0.24.1

0.23.1

20 May 14:34

Choose a tag to compare

Patch release with bug fixes for Alcoholism 0.23.0, check the original release notes for user-facing info.

Changes

Bug Fixes

  • client: actually calculate notes count for tag sorting (71a35b6)
  • client: actually run client-side migrations, fixes #215 (3f15603)
  • client: add new tag reference directly to query cache, fixes #221 (d6a8538)
  • client: pass autocomplete InputProps to input on LinkNameField, fixes #216 (a98751a)
  • client: reduce pollution of cache by ephemeral queries (3c08433)
  • client: show actual tag name in color picker, fixes #217 (c21b71e)
  • client: show add tag form input while tags load, fixes #220 (8990198)
  • client: text ellipsis for note menu buttons, fixes #218 (5fe5e18)
  • server: only send back minimum version when not fulfilled (45fe6e7)
  • sort notes by createdAt for server cache stability (30460cf)

Alcoholism 0.23.0

18 May 23:36

Choose a tag to compare

alcohoism (noun) continued excessive or compulsive use of alcoholic drinks

Shared tags (and notes)! What sounded simple ended up requiring significant rewrites.

Hints to get started with sharing:

  • Click on a tag which you want to share, enter the other person's username in the Sharing section and ta-da.
  • A shared tag by default only makes the tag and the notes you tagged with it visible to the other person. You can grant them four granular permissions:
    • Editing all notes with this tag
    • Adding this tag to notes (and removing it)
    • Sharing the tag with other people
    • Editing the tag itself
  • If something doesn't show up immediately you can manually refresh (on the main / notes page) by hitting r
  • Sharing works only via tags, you can't share an individual note.

Also: quite some UI and UX updates, especially an overhauled and extended keyboard/shortcut experience (a quick switcher!) and performance improvements. Bonus: a color picker for tags, based on your existing tag colors!

Breaking changes

  • The signature of the entitiesUpdatedSince query has changed and is not backwards compatible (the old approach doesn't work with shared tags)

Known issues

  • If you have thousands of notes and tags some actions, such as opening the tag search but also loading the app unfortunately, sometimes take a while despite a variety of new optimizations. Maybe the future will bring even more performance tweaks.
  • Opening the tag search for the first time on a device can be really slow, be patient.

Next up

v0.24 a maintenance release (refactoring, rewriting)

Changes

Bug Fixes

  • always allow users to unshare another user's tag from themselves (490c1c0)
  • client: accept quick submit shortcut from within other input fields (make "global") (cc0c0e9)
  • client: check sortBy when reading extended filtered notes cache (bc795ee)
  • client: clear localStorage on logout (b549b1f)
  • client: correct select-all logic for notes list (c5e69d2)
  • client: don't treat everything with a colon as a URL, fixes #208 (6b3f589)
  • client: ensure ErrorSnackbar is visible (d385bae)
  • client: ensure light text color in light-mode shortcuts (76ab641)
  • client: ensure proper cache-removal of deleted note (4cabfb9)
  • client: ensure tag autocomplete renders on top of other elements (d2f6071)
  • client: filter out tags without 'use' permission for add tag form (1a41e06)
  • client: focus and shortcut management for ctrl+tab (0d5eb6b)
  • client: hide internal tags from tags page (a39d112)
  • client: increase space between text notes and secondary actions on mobile, fixes #211 (66b1643)
  • client: prevent visual content jumps (159aa3d)
  • client: proper read-only form field props and styles (8b0c4ff)
  • client: remove electron-store (87c7c82)
  • client: remove unshared tag from cached notes (87df758)
  • client: run visibility check and note list length expansion also when 5-10 notes are to be displayed, closes #210 (023e342)
  • client: show errors in UI when deleting tag (c68a6c0)
  • client: wait for apollo cache to mount react app (9a30b43)
  • server: add ownership tag to created URL notes (links) (3f4d280)
  • server: pass redirect as callback to .logout, fixes #209 (298b58d)
  • server: retain local GraphQL playground (74454d8)
  • server: simplify data export, also making it compatible with new data structure (b0c4014)

Features

  • client: (re-)add shortcut 'r' to refresh notes (de5c45d)
  • client: add web shortcut for last visited notes + show in tooltip (e3d73ba)
  • client: color picker for tags, closes #188 (0656820)
  • client: copy URL button and menu item for note, closes #189 (a0e1354)
  • client: design improvements for tag sharing (4526c1f)
  • client: don't show search tooltip when focused (8d00531)
  • client: intersection observer for infinite scroll and decreased initial rendering (b4d68ac)
  • client: memoize sorted and filtered notes across (un)mounts (c30b8a5)
  • client: more manual cache mappings for apollo (b9d1dd6)
  • client: more manual cache mappings for apollo (0a48f7d)
  • client: only save forms if the value was changed (76b61bb)
  • client: pass keyboard event to bindShortcut / useShortcut (4253d2f)
  • client: persist last visited notes locally across page (re)loads (0257197)
  • client: read-only UI for notes without write permissions (e7cf204)
  • client: replace custom TextField with MUI TextField (c69932d)
  • client: shortcut for accessing last visited notes, closes #205 (760e477)
  • client: shortcut for adding URL from clipboard, closes #185 (83b4223)
  • client: shortcut to open first through ninth note in list (cb3ff54)
  • client: shortcuts for title suggestions, closes #206 (b6003ae)
  • client: show basic metadata for notes and tags on their page (3c53b79)
  • client: show indicators if tags and notes are shared (97a0b6c)
  • client: some note typogr...
Read more

Albinism 0.22.1

16 Dec 18:27

Choose a tag to compare

albinism (noun) the condition of an albino

A new logo! Minor UI update, especially for mobile. Improved tagging experience and search performance. Some bug fixes.
Heads up: notes are now sorted by last edited instead of last created – but there's a new switch to change the behavior, too.

Known issues

  • the new tag sorting might take some usage before it 'warms up'

Next up

v0.23 new features, but still evaluating which. Maybe #43 or #49 finally.

Changes

0.22.1 (2022-12-16)

Bug Fixes

  • client: don't treat key presses on textarea as shortcuts (1380e07)

0.22.0 (2022-12-13)

Bug Fixes

  • client: completely close app even on macOS when window is closed, workaround for #182 (28c3256)
  • client: fetch notes on tag when untagging, updates cache (7967881)
  • client: workaround to fit notes menu in a single line on even smaller displays (8673f05)
  • ensure migrations pass on a new/clean database (f24cab4)
  • include a smaller icon for macOS, fixes #132 (62551d0)
  • prevent crash on accounts with no notes or tags (8865d8d)

Features

  • add browser-compatible hotkeys/keyboard shortcuts, remove refresh shortcut (68b56d0)
  • client: compact notes page menu on mobile (535e7e9)
  • client: option to change 'sort by', closes #125 (dcecb4e)
  • client: secondary sort tags by usage (09f0e7c)
  • delete tags, closes #136 (0e78333)
  • display nicer pages when there is no content to show, closes #147 (39c5e79)
  • new logo, closes #46 (a752f6b)
  • proper error handling when single entities are not found (2e613ba)
  • replace custom tag search with @mui's autocomplete, closes #141 (166bf32)
  • rudimentary importer (f8c25fb)
  • server: log apollo errors on server (8cd7bf1)
  • sort tags with match-sorter (7cdad45)
  • user data-export self-service, closes #47 (7f1ed24)

Alarmism (0.21.0)

03 Sep 12:37

Choose a tag to compare

alarmism (noun) the often unwarranted exciting of fears or warning of danger

Mostly bug fixes, TWA support.

Known issues

None

Next up

v0.22 new features

Changes

  • feat: add links and text by sharing to PWA, closes #57 (54e03e6)
  • feat: redesign add note page clipboard & url input, closes #171 (3f43e8d)
  • deps: bump top-level dependencies (lerna, prettier, typescript) (4bfcbd1)
  • deps: update dependencies (3d7d7c0)
  • fix(client): add migration to new backend URL for electron app (009831e)
  • fix(client): base cache reconciliation in useEntitiesUpdatedSince on received entity (119c00f)
  • fix(client): correct checklist rendering in markdown, fixes #165 (5ab4775)
  • fix(client): correct merging of incoming newly created notes and tags, fixes #170 (cf3e6e9)
  • fix(client): disable sandboxing for preload script (78c6e72)
  • fix(client): fetch updatedAt on note when adding tag, fixes #164 (c39fc4a)
  • fix(client): fetch entire tag fragment on added tags, fixes #161 (f4e885e)
  • fix(client): include 512px icon in web build (67a8fbb)
  • fix(client): re-allow tag, fixes #167 (5d1a405)
  • fix(config): correct config entry key (f67ad7d)
  • fix(server): read config with arrays as field values for deploy (7b2796c)
  • fix(server): trim title suggestions, fixes #162 (a8a6402)
  • chore: add assetlinks.json files (a907467)
  • chore: change domains, closes #163 (6e091ee)
  • chore: fix config reading in backup script (9514edd)
  • ci: drop collections before restoring (staging only) (15d12a3)

Agrarianism (0.20.2)

15 Aug 07:43

Choose a tag to compare

agrarianism (noun) a social or political movement designed to bring about land reforms or to improve the economic status of the farmer

Mostly performance improvements, some UI/UX polishing and minor bug fixes.

Known issues

#161 Sometimes: Searching tags to add crashes app
#164 Can't edit note after adding a tag
#165 Markdown checklists render incorrectly

Next up

v0.21 with bug fixes & finalized TWA support
v0.22 with new features

Changes

  • v0.20.2 (cb6d2e2)
  • chore(client): add short_name and larger icon to webmanifest (35cf39f)
  • chore(client): bump @apollo/client (ef220fa)
  • chore(client): dynamic allowed hosts & web socket URL from config for webpack dev server (349da48)
  • feat: only fetch data since last fetch, closes #122 (882fa52)
  • feat: reject saves when updatedAt is stale, closes #155 (b1cd50c)
  • feat(client): useIsOffline hook with reactive network status (ba3ba27)
  • feat(client): add advanced setting to change network mode (88d5936)
  • feat(client): add error color to 'Save failed!' warning (88d6d73)
  • feat(client): adjust theme color with dark-mode preference, closes #139 (12e7930)
  • feat(client): advanced settings section, ability to clear cache (c1e2b7e)
  • feat(client): replace marked with react-markdown, closes #142 (7fe51f7)
  • feat(client): respect env(safe-area-inset-bottom), closes #127 (1964018)
  • fix: use cached tags in AddTagForm (95531e3)
  • fix(client): adapt to new media query structure in MUI theme object (f6b8ba7)
  • fix(client): always close notes list action menu after any action, closes #149 (2ef6ccf)
  • fix(client): ensure spinner displays properly under load, fixes #144 (43c882e)
  • fix(client): fit apollo error message on small screen (e7675aa)
  • fix(client): forgiving access to navigator.permissions API, closes #153 (a9fb8b9)
  • fix(client): only used cached profile data in ComplexLayout (maybe related to #138) (e98568e)
  • fix(client): prevent double submission and display of notes added through bookmarklet to web or desk (9723ae2)
  • fix(client): show errors in UI on TagPage (a846b33)
  • fix(client): sync all forms when receiving prop (e.g. after mutation), fixes #160 (19fb53c)
  • fix(client): use default export of package.json (689b4c4)
  • refactor(client): improve shared fragments (62479e9)
  • refactor(client): migrate from apollo client:codegen to graphql-codegen, closes #159 (76ee424)
  • deps(client): update react to v18 and misc other packages, closes #143 (39dc907)

Full Changelog: v0.20.1...v0.20.2

Agnosticism (0.20.1)

13 May 07:06

Choose a tag to compare

Ageism (0.20.0)

10 May 13:17

Choose a tag to compare

ageism / agism (noun) prejudice or discrimination against a particular age-group and especially the elderly

Major update on several levels:

  • overhauled user interface
    • layout, much more responsive
    • look-and-feel (based on Material UI)
    • dark mode
  • usability improvements
    • error handling
    • reflect network state in UI (offline, saving, background fetching)
    • server-side title suggestion generation (works in browser now too!)
  • repository restructure
    • start from scratch, archive all old commits in v0.19.x branch
    • mono-repo (with lerna)

Tech changes:

  • rely on mongoDB 4.2+
  • prefer volta
  • electron 18

Up next

0.20.1 performance and stability improvements, bug fixes
0.21.0 new features