Skip to content

Releases: fccview/jotty

Stable 1.21.1

20 Mar 10:42
935ee11

Choose a tag to compare



Join our communities


Little dev note

Hi all,
This is a tiny release to fix two fairly annoying bugs that were affecting performance for a few people.
I have made an announcement on discord a few days ago but on the 16th my kid finally had his second liver transplant!

Things are proceeding well but slowly, he's doing great so far and making us very proud indeed.
Obviously things are very slow release-wise but you can see a nice open PR from a branch to develop that should tell you a nice big change is coming for Jotty.

I'm refactoring the kanban and tasks lists to hopefully be much more reliable and up to production standards.
It will just take a fair bit as I don't want to rush such a big feature and obviously I'm much slower nowadays.

Just wanted to give a little update tho as I don't like things being stale for too long.

Changelog

bugfixes

  • Fix websocket looping connection when unauthenticated
  • Fix assets being blocked when unauthenticated causing redirect loops

Stable 1.21.0

02 Mar 11:08
25af7c4

Choose a tag to compare



Join our communities


Little dev note

Hi all, I know you are used to me pushing out features/bugfixes extremely fast with Jotty but I need to give a little heads up things will be slowing down for a little while. I'm still on top of it, I'll still reply to every single issue open and interact with the community and I will still work on new features/bug fixes, however it'll be at a slightly slower pace.

Some of you know, some of you don't, my personal life is pretty tough at the moment, my first born had a liver transplant when he was 6 months old and he unfortunately needs another one already, we've been on the transplant list for a year and half now (he's 3yo).

Me and my wife got tested as living donor and she may be accepted, which means we may get a date soon for the new transplant (if we don't get a deceased donor sooner of course). We did this as he's going downhill much faster now, so we spend a lot of time in hospital. Trying to be as transparent as possible here so you understand why things will be slower.

Jotty (and all my other apps) are an escape for me, and I develop them because coding is my passion (and my job, how fucking lucky am I). So I'm obviously gonna keep at it even through these times, I however have my priorities pretty straight in mind haha ❤️

p.s. more than happy to talk about this on discord, I try to keep my personal life private however organ donation is something very close to my heart (as you can imagine) and if anyone has any questions I'll always be happy to chat ❤️

Changelogs

This is a fairly big release btw, I have refactored how markdown files are processed, you should be able to run Jotty with 5k+ notes without any lag/slowness. It should feel extremely snappy now. As always make sure to back up your data before upgrading to a major release.

bugfixes

  • Huge performance improvements, bulk grep operation for frontmatters are now in place, on top of heavily caching metadata for notes/checklists, cache is invalidated if file system changes (so every time a note changes, something is dropped on folders and so on). First page load may still be SLIGHTLY slow with 5k+ notes/checklists, once cached it'll be pretty fast and slick tho. You can expect lighting fast performance with anything < 1k notes. I'll continue working on performance improvements with the next releases, but this one's frankly huge.
  • Fix drag and drop inconsistencies on checklists #413
  • Fix cascading issue on checklists #418 - by @spaghetti-coder
  • Fix unchecking single sub-item in kanban card doesn't uncheck parent - by @spaghetti-coder
  • Fix kanban public url not working #423
  • Increase max body size to 100mb #422
  • Reduce min username length to 2 characters and allow password update for SSO users #402
  • Confirm password field not cleared after changing password #426
  • Fix issue with checklist reordering from top to bottom #413

features

  • Add tags for checklists
    • Notes and checklists now share the same tags
    • A new item in the sidebar is now present, this will allow you to see all tags in the sidebar and fiter by tag on the right side of the page. This is only present if tags are enabled and you have at least one tag
    • Clicking on tags in notes/checklists now brings you to the tags page with the right tag filtered.
    • If you import notes/checklists with tags in them you can navigate to settings -> content and click on the update tags button, this will re-index all files, extract all the tags it finds and adds them to the metadata.
  • Improve nested checklists calculation towards completion. When an item has children it won't count towards total progress or it'll be a ghost +1 - by @spaghetti-coder #409
  • Add snippets of searched text into search results #407
  • Add themed code block as a choice from settings so it reflects the chosen user theme (defaults to the current code block view)
  • Add more details to search result #407
  • Trigger numeric keypad for 2FA code entry on mobile #437 - by @sethgregory

translations

security

  • markdown-it is has a Regular Expression Denial of Service (ReDoS) - moderate
  • ajv - ReDoS when using $data option - moderate
  • minimatch - ReDoS via repeated wildcards with non-matching literal in pattern - high
  • minimatch – ReDoS (matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments) – high
  • minimatch – ReDoS (nested () extglobs cause catastrophic backtracking) – high
  • rollup – Arbitrary File Write via path traversal – high

Stable 1.20.0

12 Feb 09:23
47267d7

Choose a tag to compare



Join our communities


Changelog

This release upgrades Jotty from Next.js 14 to the latest Next.js 16.
I had to do this on all my projects due to some concerning security issues that happened in React, Vercel fixed them from Next 15 and above but didn't apply a fix to Next 14, it was about time (I was dreading this lol)

This however means we now use an entirely different system for the PWA, so... WE FINALLY HAVE OFFLINE CACHING, in read mode only , for now, but this means if you visit a page on your PWA, it'll stay cached for 30 days. So if you go offline you'll be able to still visit any note/checklist you previously visited. I'm thinking of optimal ways to pre-fetch all notes/checklists so it caches the whole page without having to first visit one, but good progress so far. You WILL need to re-install your PWA and clear your browser cache.

All unit tests pass, all linting/typing pass and I have manually testes as much as I could think of, spent days testing and fixing any minor bug that was caused by the upgrade. This SHOULD be very stable, however if you find any issues please raise it as soon as possible and I'll jump right on it. I apologise in advance, this was A LOT for one person 😆

bugfixes

  • Fix sidebar state when navigating back from notes/checklists and fix flickering on first page load when mode is not set to 'last-visited' #384
  • Make new lines more consistent #382
  • Fixed circular loop where if User A was sharing a note with User B and User B was sharing a note with User A the whole app would crash (YIKES) #389
  • Fix visual bug on long checklist items with no spaces #387
  • Fix table of contents scroll behaviour #398
  • When creating a quick note from within a category said category should be prioritised over default in user settings #397
  • Fix inconsistent behaviour around deleting shared notes/checklists #399

features

minor features

  • Add ruler to markdown editor to set one or multiple visual breaking points to keep your line size in check #311
  • Make sure markdown editor settings persist in your session across multiple notes (e.g. ruler disappear from any notes if you disable it)
  • Public URLs will now use uuid rather than category/name, this keeps the sharing link safer to use. Old public links will continue work just fine, but newly shared notes will follow this new pattern
  • Change order of new list items, they'll now show up on top of the todo list, it makes way more sense. Let me know if this is an issue for you and I'll consider making it a setting :) #392
  • Add swipe gestures to notes on mobile, you can now swipe between notes as long as the editor is not active, this means you can navigate to previous/next note by swiping. Notes order is defined by sidebar order. You can find a video here #388
  • Using the same gesture from the above, I have also updated the sidebar open/close gesture on mobile and it should feel more fluid and native app/like.

major features

  • Read only offline cache for the PWA. This means when visiting any page within Jotty it'll get cached and you'll be able to re-visit it without your internet active, cache lasts 30 days. When you are offline you'll see a nice red dot on the logo to tell you there's no internet connection. #281 #390
  • LIVE UPDATES on pretty much everything aside from the editor. If something changes on one screen, you'll see the change happening live on the other (give it a second, give or take). This will make working on shared checklists a breeze and if you are looking at a note and somebody changes it, you'll see that change in real time. Editor MAY or MAY NOT be coming, I can't promise, it's A TON of work, that's google level shit and I'm one dude, so we'll see lol #355
    • There's a nice little dot on the logo to show that the websocket is active and you will see live updates, while I think it's quite handy it can also be hidden from settings -> user prererences -> hide connection indicator from logo.
    • If you have any issues with the dot staying orange and the console telling you that websocket can't connect i'd logout/log back in, it may be that it's not recognising a stale session.

optimisations

I have spent quite a bit of time refactoring things, it now shouldn't matter if you have 10 or 1000 files in your system, the speed difference should be laughable.

  • Keep only 12 notes/checklist in store rather than your full catalog for the most recent notes, clicking on categories now fetches notes from the server side in chunks only if they are within that category (recursive search is not yet implemented, sorry)
  • Search by uuid using grep instead of cross matching all notes metadata, this is almost instantaneous, should make a HUGE improvement in performance, especially if you have a lot of notes/checklists
  • Sidebar only uses metadata rather than full note content, using sed to only fetch the yaml from the markdown files frontmatter
Been testing locally with 500 markdown files image

security

  • @isaacs/brace-expansion has Uncontrolled Resource Consumption - High
  • Next.js HTTP request deserialization can lead to DoS when using insecure React Server Components - High
  • Next.js self-hosted applications vulnerable to DoS via Image Optimizer remotePatterns configuration - Moderate

small note on offline caching

I know we all want offline write operation, I truly want to make it happen but due to the nature of Jotty and the lack of database making it happen is a whole different beast, I wish I had done this from the get go but I would NEVER thought my little app would grow to this extent.

Here's a breakdown of what Jotty would need to make this happen:

  • An IndexDB queue to store pending mutations (note edits, checklist toggles, etc.)
  • Intercepting every server action to write in the local indexDB first
  • A background Sync action to replay queued operation when back online (e.g. you go back online the indexDB queue starts happening and it syncs with the server)
  • Conflict resolution (this WILL be a huge pain) if the same item was edited on another device while offline
  • An innumerable amount to UI changes to make sure users are aware of all that's going on in the background or it'll be a mess

Feel free to fork and help out with it, and let's see if we can all make it happen together

Stable 1.19.1 - Security update

26 Jan 21:30
0c234dd

Choose a tag to compare



Join our communities


Changelog

Someone pointed something important out in the demo, not sure if intentionally or not but it made me think about the exports functionality and how legacy that is (it's one of the very first features I've added), it needed authentication so it's safe don't worry, however it caused users to be able to see other users content if exported. It also didn't include the check to see if admin should/should not be able to see other users content.

This is now patched and I'll continue monitoring legacy functionality from before Jotty (rwMarkable).
The unit tests help, but community and user test will always be the best way to see these issues and sort them as fast as possible so PLEASE keep raising problems if you see any, most of you know how responsive I am when a bug is serious and needs addressing ❤️

If you are the only user in your instance or everyone is admin or you just share your instance with family/trusted friends this is not an urgent pull, it's the only change, but it really had to be done for the few users here who have a bit of a bigger user base on their servers.

Stable 1.19.0

26 Jan 13:16
58bd04f

Choose a tag to compare



Join our communities


Changelogs

Been a while since a big feature! This release brings Tags to Jotty.

I have been juggling with the ideas of tags for a while now and I was always weary that implementing it would disrupt the simplicity of the app. I think I found a good compromise for it. Please consider this initial version of tags to be fairly beta, I'll make sure to address every issues you raise in small releases within 1.19.x but this was getting way too big, so I want to push it live and fix things forward should they show up.

You can FULLY disable tags from the editor admin settings, secondly if you don't use tags you'll never even know they are there as the sidebar will only populate IF tags exist and are indexed.

If you are importing a large amount of notes with tags please back up your data.
Navigate to settings -> content and update all tags from there, this will add tags to the yaml frontmatter for every note indexing them. Everything should work smoothly, however @wein-geist did raise a potential issue on an older beta version (which I could not replicate in the latest version) where some notes gets deleted once imported in bulk, please make sure to back up data between releases, always.

bugfixes

  • Fix note cards on homepage sometime scrolling #366
  • Table controls now show up above the highlighted cell and not above the full table #363
  • Fix issue where embedded images disappear if they are the first element in a note (also fix it for drawio and excalidraw) #364
  • Fix various issues around the pdf view/print #367

features

  • Add menu item for notes to copy raw markdown to clipboard #371
  • Clicking on category/tags names from the home page will update the right side of the home with the notes/checklists within that category/tags. Clicking on the chevron will still toggle the category open/closed. This only happens from the home pages, behaviour is as it used to be from any other page #350
  • When clicking on "clone" it now opens a modal to choose in which category you want to clone the note/checklist to, it defaults to the current category, so it's just an extra click in case that's what you'd rather it do #365
  • Add tags support 👀 #360 #173
    • Tags will be above categories on the sidebar, defaulting as collapsed, uncollapsing it will be remembered by your browser for next time you refresh the page
    • Tags can be fully disabled from admin settings -> editor
    • Disabling tags will still allow you to create new tags in notes but it won't show them on the sidebar nor will it load them in memory (making the app effectively faster if your system struggles to handle the tagging system - it's fairly beta, let me know how it goes).
    • You can have the same note within multiple tags, you can have subtags (e.g. #tag/subtag) and it'll nest them in the sidebar
    • Hovering on a tag in the rich editor or in note view will show all notes that use that same tag ❤️
    • Tags are stored as plain text in your markdown, no fancy/proprietary stuff #tag-here.
  • Submitted a new Unraid template (third time's the charm) as I misunderstood and apparently it needs to be in its own repository, you can find the template here if you want to test it locally before it gets added to the store.
  • Add support for zig syntax in code blocks #375
  • Reduced the size of checklist items on mobile so more fit within the screen, also overall improved spacing on the list #351

translations
ko.json - Korean (thank you @prologos #377 )

dependency vulnerabilities

Addressed the following dependency vulnerabilities (I try to be on top of them but when they are moderate or low they tend to slip through, sorry). Worth mention these are out of my control and can only be fixed in the moment the developers of the dependencies release a fix in a pathed version (it usually happens pretty fast)

  • Lodash has Prototype Pollution Vulnerability in _.unset and _.omit functions opened 9 hours ago • Detected in lodash (npm) • yarn.lock_
  • Lodash has Prototype Pollution Vulnerability in _.unset and _.omit functions opened 2 days ago • Detected in lodash-es (npm) • yarn.lock
  • Mermaid improperly sanitizes sequence diagram labels leading to XSS opened 3 weeks ago • Detected in mermaid (npm) • yarn.lock
  • DOMPurify allows Cross-site Scripting (XSS) opened 3 weeks ago • Detected in dompurify (npm) • yarn.lock
  • Predictable results in nanoid generation when given non-integer values opened 3 weeks ago • Detected in nanoid (npm) • yarn.lock
  • Predictable results in nanoid generation when given non-integer values opened 3 weeks ago • Detected in nanoid (npm) • yarn.lock
  • jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch opened 3 days ago • Detected in diff (npm) • yarn.lock

Stable 1.18.1

21 Jan 19:16

Choose a tag to compare



Join our communities


Changelog

Hi,

Quick release today, I just wanted to address a couple of annoying little bugs and have a few quick wins.
From tomorrow I'll start focusing on big features implementations like websocket support, tags (maybe) and some amazing requests that have been piling up in the issues lately.

I know it feels like I have been doing a lot of small releases, but I NEEDED to add these tests and there were a lot of minor small bugs that I really wanted to address, the app is becoming more and more professional and it makes me very very happy.

Please don't think I'm ignoring your feature requests, I just don't want to implement things for the sake of it without properly planning stuff or it'll end up being a huge mess in the long run, trust me!

bugfixes

  • Fix bulk checklist create allowed to users with read only permissions
  • Fix delete checklist item allowed to users with read only permissions
  • Fix permission issue when sharing to non admin user, introduced when changing all sharing permissions to uuid based search a couple of releases ago #361.
    • Sorry about all the sharing bugs that came up lately, I have added comprehensive sharing tests now, so this should not happen any longer, LOVING the tests btw, it's making my life so much easier.
  • Fix sidebar scrolling to active item on page load, looking sluggish #354
  • Fix history move actions when they happen from sidebar, it was only working from the note header, forgot you can move items within the sidebar, whops #358
  • Fix code highlight in list, it didn't show up as black with orange text like it does anywhere else (to whom it may concern.. I REMEMBERED TO FIX IT, BEEN AN ISSUE FOR 3 RELEASES ALREADY AND I KEPT FORGETTING)

translations

zh.json - Simplified Chinese - Thank you @resomi #352

Stable 1.18.0

18 Jan 19:00
1dd46e2

Choose a tag to compare



Join our communities


Changelog

features

  • Add note history
    • This will need to be enabled from Admin Settings -> Editor (I didn't want to risk suddenly pushing something that may conflict with an already present git folder in your local environments)
    • Each user will have a git init . within the ./data/notes/users folders
    • Each note MANUAL save is tracked (autosave won't be tracked or your file system will seriously cry out) and committed locally, on revert the file gets reverted to a specific commit hash, it's pretty powerful in its simplicity
    • The application technically tracks rename/delete but I have not implemented a UI for it yet, not sure if I will, for now it's nice to have proper content history
    • Added full on git diff look in each revision, so you can easily see what's different and what you are reverting into
    • Encrypted note WON'T be committed on save, the only way to create history for an encrypted note is to decrypt it first, this is by design, I purposely disabled it, feel free to come argue in the issues if needed, but I'm fairly confident having a local history of changes for encrypted note is kinda dumb
  • Create an animated SVG to replace the pulsing logo on page loads, because why not, feels more... Jotty now
  • Add callout blocks to rich editor using the [!INFO] | [!WARNING]... syntax (see the markdown page in the help section for more info) #346
  • Add visual indicators of theme colours in the theme dropdown because I saw it in another project and I thought it was a good idea, I obviously gave it a Jotty twist 😆

bugfixes

  • Fix issue where PWA icon doesn't center nicely on some devices, you'll need to uninstall your PWA, clear cache/storage and re-install it for the change to apply #341
  • Fix theme bug where the sakura themes were showing up on top of the custom ones (whops)
  • Fix theme editor to look a bit more up to Jotty standards
  • Fixed functionality around slash commands and @ bylateral note linking, it now should work so much more fluidly, you can type / and just select with arrows, OR start typing and enter to select the only available option straight away, no more mouse needed. sorry it took this long.
  • Tweaked mobile sidebar swipe in to be slightly less responsive, also it won't trigger while dragging of checklist items

tests

  • As promised I started working on unit testing and e2e tests. The e2e stuff is not ready yet, I am getting the grasp of playwright, it's a powerful tool and it has a lot of nuances, I don't want to rush it and do half assed work. However I have now started implementing unit testing on important server actions and security testing to make sure data never leaks and user sessions are protected.
  • Setup a new pipeline on pr creation that checks new pull requests from contributors are pointing at develop and runs linting/type checks and unit tests. This should ensure at the very least contributions will have some structure finally.

Full disclosure, I have set up the tests myself, configured it all myself, wrote the first two dozens for the most important part of the site and fed it to AI to copy-paste my work and speed up the process 10x. If you have issues with that please feel free to message me and we can discuss why you're wrong and I'm right 😆

Anyhow, everything should make sense, I went through them all individually and double check the logic, I'm not a tester tho, so if you are an automation tester and you have opinions/ideas PLEASE open a pr, i'm out of my depth a little with tests.

This is what will be pushed with this release:

Test results
# yarn test:run --reporter=verbose                                                              
yarn run v1.22.22
$ vitest run --reporter=verbose

 RUN  v4.0.17

 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Note Actions > createNote should reject unauthenticated requests 316ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Note Actions > deleteNote should reject unauthenticated requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Note Actions > getUserNotes should reject unauthenticated requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Checklist Actions > createList should reject unauthenticated requests 22ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Checklist Actions > deleteList should reject unauthenticated requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Checklist Actions > getUserChecklists should reject unauthenticated requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > User Actions > deleteUser should reject non-admin requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > User Actions > updateUser should reject non-admin requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > User Actions > updateProfile should reject unauthenticated requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > User Actions > updateUserSettings should reject unauthenticated requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > User Actions > deleteAccount should reject unauthenticated requests 0ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Category Actions > createCategory should fail for unauthenticated users 12ms
 ✓ tests/security/auth-required.test.ts > Security: Authentication Required > Category Actions > deleteCategory should fail for unauthenticated users 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItem > should update item text 13ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItem > should mark item as completed 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItem > should update item description 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItem > should return error when permission denied 4ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItem > should skip revalidation when flag is set 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItem > should update child items when parent is completed 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItem > should update due date for task items 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > createItem > should create a new item 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > createItem > should create item with description 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > createItem > should return error when permission denied 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > createItem > should create task item with status for task checklists 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > createItem > should create item with custom status for task checklists 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > createItem > should create item with due date 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > deleteItem > should delete an item 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > deleteItem > should return success when item does not exist 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > deleteItem > should handle list not found 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > deleteItem > should delete item with children recursively 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItemStatus (Task/Kanban) > should return error when listId or itemId missing 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItemStatus (Task/Kanban) > should return error when neither status nor timeEntries provided 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItemStatus (Task/Kanban) > should update item status 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItemStatus (Task/Kanban) > should update to completed status and mark item completed 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItemStatus (Task/Kanban) > should return error when permission denied 0ms
 ✓ tests/server-actions/checklist-item.test.ts > Checklist Item Actions - Comprehensive Tests > updateItemStatus (Task/Kanban) > should return error when list not found 0ms
 ✓ tests/server-actions/checklist-...
Read more

Stable 1.17.2

14 Jan 19:06
cea38cd

Choose a tag to compare



Join our communities


Changelog

Small release to address a few bugfixes that were annoying me.
I also tried to focus a bit on the accessibility score, it's the only one slightly lacking in lighthouse, unfortunately the biggest hit is due to branding, I'd need to change primary color/background color slightly and I REALLY don't want to do that.

If you have any issue seeing things in Jotty let me know and I'll personally create a high contrast easy to see theme you can use ❤️

Otherwise, here's the consistent result in my production environment

image

bugfixes

  • Keep working on drag/drop on checklists, fixed bug where swiping left deletes a checklist item, fixed bug where moving nested items at times deletes them, fixed issue with delay on hover to create a child item doesn't matter (it does now)
  • Fix a whole bunch of shortcuts in markdown mode
  • Add aria-label to all icon button for accessibility reason

features

  • In markdown mode, pasting a link in selected text make it a link
  • In markdown mode you can now easily continue adding bullet points

still outstanding

  • Continue work on the markdown editor shortcuts, they are still not perfect and as good as the tiptap editor shortcuts
  • Continue improving drag and drop for checklist page, although I feel I am getting very close to something I am extremely proud of.

Stable 1.17.1

12 Jan 21:34
7376def

Choose a tag to compare



Join our communities


Changelog

Sorry for the double release, this only affects fresh install so no need to pull until 1.17.2 if you already have accounts setup, but I don't want new users to not be able to register easily. This was caused by my attempt of hiding the register step when there's no users if only oidc is enabled (no local auth fallback).

Jotty caches routes heavily and when I tested the registration it worked just fine.. A user warned me on discord right after release (gosh thank you so much @dawiddyd !!!) and I have jumped on it and fixed it right away.

I DESPISE redirects.

bugfixes

  • Fix redirect loop on new registration

Stable 1.17.0

12 Jan 20:08
b141ce3

Choose a tag to compare



Join our communities


ALERT [BROKEN FRESH INSTALL, I'M RELEASING IN HALF HOUR OR SO]

If you are trying to install Jotty for the first time there's a redirect loop caused by a change I made to the setup to try and secure it more when oidc is enabled, you won't be able to register, I am on it and will fix in half hour, unfortunately that means I'll need to release twice today, I'm sorry.

Changelog

Seems like @BaccanoMob got busy suggesting new features and reporting bugs, which helped me find a ton of small annoying issues that were very easily fixable and will definitely improve user experience, so big shout out to our first unofficial tester 😆

bugfixes

  • Fixed issue where in wysiwyg mode you can't see the last couple of lines of text in a note
  • Fixed OIDC user info claims when response is still a jwt instead of a raw json object
  • Fixed editor dirty state, people were alerted of potentially losing their note updates even if they didn't make any changes to the note itself, the new system actually detects user change rather than comparing previous/new content, this should be more reliable and less subject to breaking on nuance cases
  • Changed checklist drag and drop to use draggable rather than sortable, it's a bit more complex code-wise but the UI improvements to the user experience are outstanding (works like the sidebar now). #320
  • Fix public routes being inaccessible if the .sharing.json file doesn't have a category. Category lookup is legacy and redundant, so from now on sharing is not using categories at all, it's finally all being migrated to uuid usage. #323
  • Local auth still visible when fallback is set to no/false if using OIDC #333
  • Make sure checklist items are always accessible from mobile #332
  • Complete/Reset all subtasks in a task wasn't working properly #327
  • Fixed issue around autosave where sometimes it'd push the markdown editor input to the very end of the textarea, frankly one of the most annoying things i've ever had to deal with.

features

  • Add ability to get secret values from files for OIDC #324
  • Add OIDC_USER_GROUPS and OIDC_USER_ROLES so admins can map specific users to specific roles and have more control over them #325
  • Add a modal with some info about the app (like an about page) #322
  • Added an autocomplete input in the statuses modal next to each status, this allows user to set a complete status that'll automatically check an item as complete in the markdown #329 this means we can now safely convert between task/checklist without losing data, which brings us to next feature
  • Persist data when converting between task/simple checklist #334
  • Add editor toolbar to markdown mode (pretty much in beta, please raise as many bugs as you can find around it, I just don't want to hold release up because of it, it all works as it should in tiptap, so the worst that should happen is that a few of these items don't work as expected in markdown mode, but that's ok as they didn't even exist until this release ❤️ ) #330

work in progress

  • This is not ready yet, but I am trying to have bilateral linking/slash commands/text bubble in markdown mode too, just like the rich editor one, that'd increase usability by MUCH
  • Also playing around with a tagging system, no promises but I know tags are important to a lot of you
  • Started work on e2e test, I have a private repo that I'll eventually make public with playwright tests :)