This changelog covers all five packages, as they are (for now) updated as a whole
- #981 Fix bug where the service worker would not update cache with updated code.
- #989 Added an edit button to the resource selector inputs.
- #992 Fix Searchbox overflowing when displaying long names.
- #999 Fix parseMetaTags character escape issue.
- #1014 Fix date input always showing required error even when filled in.
- #1008 Showcase standard properties in the resource selector
- #1008 Add 'New Property' button to the property list in the ontology editor.
- #1008 Fix disabled resource selectors still get highlighted on hover.
- #1008 Add 'open' option to classes and properties in the ontology edit view.
- #1008 Updated the look of the resource selector and made it more responsive.
- #1008 Add info dropdowns to different sections of the ontology editor for more information about the section.
resource.props
is now writeable:resource.props.name = 'New Name'
.- Added
store.preloadResourceTree()
method, see docs for more info. - Fix generated ontologies not working in a Next.js server context.
- SEMI BREAKING CHANGE: When using generated types by cli, @tomic/lib now requires them to be generated by @tomic/cli v0.41.0 or above.
- Fix types masquerading as esm module in cjs build.
- BREAKING CHANGE:
useCanWrite
now only returns a boolean. There is no longer a message returned. - BREAKING CHANGE:
useCanWrite
does not take an agent as argument any more and only checks the agent set in the store. If you need to explicitly check a different agent, useawait resource.canWrite(agent)
. - BREAKING CHANGE:
useDebounce
anduseDebouncedCallback
are no longer exported. - Added
useDebouncedSave
hook. - Add a cjs build.
- #983 Give clear error when name collisions are found in an ontology.
- Generates class definitions that enables doing:
resource.props.name = 'New Name'
;
- #700 Update to Svelte 5. There are significant changes to the API.
- BREAKING CHANGE: Dropped support for Svelte 4 and below.
- BREAKING CHANGE:
getResource()
now returns a reactive proxy instead of a readable store. - BREAKING CHANGE:
getResource()
now takes a function returning a subject instead of the subject directly. e.g.getResource(() => 'https://my-atomicserver.com/my-resource');
. - BREAKING CHANGE: Removed
getValue()
. It is no longer needed. Instead useresource.props.name
directly or doconst name = $derived(resource.get(core.properties.name));
. - BREAKING CHANGE: Removed
initStore()
. You now need to set your store on a context usingcreateAtomicStoreContext()
. - BREAKING CHANGE: Removed
loadResourceTree()
. It is now a method onstore
:store.preloadResourceTree()
. - Added
createAtomicStoreContext()
andgetStoreFromContext()
.
- #700 Update SvelteKit-site template to Svelte 5 and the new @tomic/svelte.
- #966 Add NextJS template.
- #1036 Provide clearer errors when resources couldn't be fetched.
- #993 Fix template not working when the drive subject has a path after the origin.
- #952 Add templates containing pre made ontologies and resources.
- #970 Add "show commit" button in History
- #968 Allow users to pick files by entering a subject into the file picker search bar.
- #969 Fix markdown editor sometimes doesn't update the value after saving.
- #975 Add create button to resource selector without classtype.
- Fix markdown editor closing the edit page when a button is clicked.
- Add an edit button to the default resource view.
- BREAKING CHANGE: removed the
importJsonAdString
function. - Added
store.importJsonAD()
method. - Added support for commonJS modules.
- Fix shortnames in externals.ts are not converted to camelCase.
- Filter out duplicate classes and properties in generated types.
- Added
@tomic/create-template
package to create new templates.
- #855 Add a dialog that shows how to fetch and use the current resource in your code.
- #896 Fix an issue where sidebar items require a double tap on iOS.
- Updated look of the default resource form.
- #896 Fix an issue where sidebar items require a double tap on iOS.
- Updated the look & feel of the sidebar a bit.
- #893 Fix tables not showing any rows when viewing from a different server.
- Fix an issue where the resource-array properties would be set to an empty array instead of removing the property when removing all items in the input.
- Fix an issue where dropdown menus sometimes jump from the upper left corner of the screen.
- Added a full page view for tags.
- Redesigned the ontology page.
- Moved the resource context menu to the top of the page.
- #861 Fix long usernames overflowing on the share page.
- #906 Reset changes after clicking the cancel button in a form or navigating away.
- #914 Fix an issue where changing the subject in a new resource form could update the parent of existing resources if their subject matched the new subject.
- #925 Added export to CSV option to tables.
- #919 Automatically sort classes and properties in the ontology editor.
- #936 Updated the address bar to make it clearer it's also search bar.
- Added
LocalChange
event toResource
. - Added
resource.refresh()
method. - Removed
cross-fetch
, if your environment does not support fetch make sure to add a polyfill or inject one usingstore.injectFetch()
.
- BREAKING CHANGE: Removed the
useLocalStorage
hook. - When using any
useValue
type hook, values will now update when local changes are made to the resource from elsewhere in the app. - #257 Added
<Image />
component that automatically optimizes images for the web.
- #257 Added
<Image />
component that automatically optimizes images for the web.
- #845 Add option to create instances and tables from the ontology view.
- #845 Add default Ontology option to drives.
- #841 Add better inputs for
Timestamp
andDate
datatypes. - #842 Add media picker for properties with classtype file.
- #850 Add drag & drop sorting to ResourceArray inputs.
- #757 Add drag & drop sorting to sidebar.
- #873 Add option to allow multiple resources in relation columns (Tables).
- #825 Folder display styles are now saved locally instead of on the resource. The display style property will now act as the default view style.
- #884 Add new markdown editor.
- #840 Added
store.search()
. - Deprecated
resource.getSubject()
in favor ofresource.subject
. - Deprecated
store.getResouceAsync()
in favor ofstore.getResource()
. - Deprecated
resource.pushPropval()
in favor ofresource.push()
. - Deprecated
resource.removePropval()
in favor ofresource.remove()
. - Added
resource.matchClass()
method. - Added
resource.setVersion()
method. - Added
collection.getMembersOnPage()
method. - Added
collection.totalPages
. - Fix lib not working in non-secure browser contexts.
- BREAKING CHANGE: Renamed
resource.getCommitsCollection
toresource.getCommitsCollectionSubject
. - BREAKING CHANGE:
resource.getChildrenCollection()
now returns aPromise<Collection>
instead of a subject. - BREAKING CHANGE:
resource.createSubject()
no longer accepts a class name as an argument and defaults to a fully random subject. - BREAKING CHANGE: Resource now keeps a reference to store internally, therefore all methods that required you to pass a store have been changed to not require a store.
These methods are:
resource.canWrite()
resource.getHistory()
resource.getRights()
resource.destroy()
resource.save()
resource.set()
resource.removeClasses()
resource.addClasses()
- Added
useCollectionPage
hook. - Fix bug where
useCollection
would fetch the collection twice on mount. useServerURL
no longer stores the server url in localstorage.
- #837 Fix timestamp is mapped to string instead of number.
- #831 Give clear error when trying to generate types from a non ontology resource
- #830 Create output folder if it doesn't exist
- Use type import in generated files.
- #747 Show ontology classes on the new resource page.
- #770 Display more info on the search result page.
- #771 Tables: Don't paste in multiple rows when focused on an input
- #758 Fix Relation column forms to close when clicking on the searchbox
- #780 Use tags in ontology editor to create enum properties.
- #810 Add button to resource selectors to navigate to the selected resource.
- #764 Add option to format numbers as currency in tables.
- #819 Fix number input always shows 'required' even when it's optional.
- #816 Fix bug where editing a column in a table would not submit when pressing enter.
- Fix server not rebuilding client when files changed.
- Added persistent scrollbar to table
- Improved table header UX
- Numbers in tables now respect user locale
- #798 Add
store.newResource()
to make creating new resources more easy. - Always fetch all resources after setting + authenticating new agent with websockets #686
- Add progress callback to
resource.getHistory()
And increased its performance for resources with a large number of commits #745 - Fix websocket bug on port localhost with port 80
- Add support for types generated by @tomic/cli
- Proxy resource objects instead of cloning them for reactivity.
- Fix bug where an externals.ts file was generated for properties that are already available through @tomic/lib.
Collection
is now an async iterator- Added
getAllMembers
method toCollection
- Fix
set
call with equal arrays #715 - Fix ontologies export bug #728
- Add table editor #639. Add resource instances using table columns, add properties as rows, paste and copy CSV, keyboard support, sorting.
- Add ontology editor #648. Easily create classes, properties and visualize their relationships.
- Show resource usage (incoming links) in data view.
- New resource selector that uses searchbox #677
- Sidebar redesign
- Switch to current drive button #681
- Add support for typed resources through
resource.props
, powered by@tomic/cli
(see below) - When saving a resource whose parent has not yet been saved we now add them to a batch that gets saved later when the parent is saved.
- The
scope
option inSearchOpts
has changed toparents
and now accepts an array of subjects instead of a single subject. - BREAKING: Removed
getCommitBuilder()
method fromResource
- Added
hasUnsavedChanges()
method toResource
- Fix bugs in state management: proxy resources instead of clone (for react) #682 #675 #657
- NEW
- Generate typescript files from ontologies #665
- Improve performance collapsed sidebar items.
- Add article view #319
- Add resource history view
- New subjects have nested paths by default
- BREAKING:
buildSearchSubject
now takes a serverURL instead of the store. - Fix bug where @tomic/lib would not work in a non-browser context.
- Add
resource.getHistory
method that returns a list of previous versions of the resource. - Add
store.getResourceAncestry
method, which returns the ancestry of a resource, including the resource itself. - Add
resource.title
property, which returns the name of a resource, or the first property that is can be used to name the resource. store.createSubject
now accepts aparent
argument, which allows creating nested subjects.
- Move static assets around, align build with server and fix PWA #292
- Add
useChildren
hook andStore.getChildren
method - Add new file preview UI for images, audio, text and PDF files.
- Add new file preview types to the folder grid view.
- Fix Dialogue form #308
- Refactor search, escape query strings for Tantivy
- Add
import
context menu, allows importing anywhere
- Add more options to
useSearch
- Add
Store.parseMetaTags
to load JSON-AD objects stored in the DOM. Speeds up initial page load by allowing server to set JSON-AD objects in the initial HTML response. store.createSubject
allows creating nested paths- Add
Store.postToServer
method, addendpoints
,importJsonAdString
- Add
store.preloadClassesAndProperties
and removeurls.properties.getAll
andurls.classes.getAll
. This enables usingatomic-data-browser
without relying onatomicdata.dev
being available. - Fix Race condition of
store.getResourceAsync
#309 - Add
buildSearchSubject
insearch.ts
which allows you to build full text search queries to send to Atomic-Server. - Add
importJSONADString
function, allowing you to import resources from external sources.
- Remove
initAgentFromLocalStorage()
. - No longer save agent to local storage.
- Add the ability to change the
fetch
function used to fetch resources over http. store.addResource
is depricated in favor ofstore.addResources
.- Add
AgentChange
event on store that is fired whenever the stores agent changes. store.fetchResourceFromServer
now returns the requested resource.- Add
postCommit
method tostore
that respects the injectedfetch
function.
uploadFiles()
has moved tostore.uploadFiles()
.- Remove
Agent.fromJSON()
tryValidURL
andisValidURL
are now static methods onClient
and have been renamed totryValidSubject
andisValidSubject
.- Rename
store.fetchResource
tostore.fetchResourceFromServer
. - Rename
store.handleError
tostore.notifyError
. - Rename
agent.checkPublicKey
toagent.verifyPublicKeyWithServer
. - Remove
store.errorHandler
and replace with newStoreEvents.Error
event.
- Don't use WebSocket in Node context #280
- Fix @tomic/lib exports for non-ts contexts #270
- Fix back / forward buttons in desktop build #263
- Fix
isOffline
for node
- Add folders with list & grid views, allow drag & drop uploads #228
- Show icons in sidebar
- Add scoped search, funded by NGI NLnet Discovery #245 #254
- Make web app installable #30
- Add cookie based authentication #241
- Get rid of
useWindowSize
#256 canWrite
check should succeed forpublicAgent
#252- Improve error look & text
- Lock ed25519 version #230
- Changed
null
toundefined
in many places useTitle
returns anarray
with asetTitle
function, similar touseState
resource.getError()
is deprecated in favor orresource.error
- Add Hierarchy in sidebar #75
- Add DriveSwitcher #209
- Add
new drive
option - Add
EventManager
to run custom functions when resources are added / edited / etc. - Add dialog / modal view #24 #181
- Add bookmark import / reader mode #187
- Stricter non-null checks, improved typings #220
- Switch from
yarn
topnpm
#210 - Various improvements to Dropdown forms #194
- Fix crash in circular parent rendering
- Fix race condition #189
- Make all titles editable #199
- Don't subscribe to search endpoint #200
- Refactor e2e tests
- Render floats
- Hide unsortable items in tables
- Fix dropdown resource select input #222
- Fix Dropdown input bug
- Fix autogrow textarea bug
- Add ChatRooms #153
- Improve UX for creating new Resources, instantly open new ChatRooms and Documents
- Refer to
previousCommit
s in Commits #140 - Disable websockets out of browser context for
@tomic/lib
- Fix NPM builds for
@tomic/lib
and@tomic/react
in non-ts environments #155 - tauri back buttons, new tab external links #115
- Fix concurrency issue with commits #91
- Make bugsnag optional #133
- Add
parseCommit
function - Use
href
attribute in sidebar menu #148 - Use relative links in About page #149
- Show
CommitDetail
that displays audit info (creator, edit date) #145 - Prevent using
localhost
Agents for external Servers - Implement
push
, for appending new Resources to (existing) Arrays in Commits. - Replace snowpack with vite #156
- Use yarn v2 and replace lerna #105
- Prevent default actions for keyboard shortcuts
- Improve cross-OS keyboard shortcuts compatibility (cmd & ctrl, option & alt)
- Fix markdown being shown shortly
- Don't use WebSockets if they're not supported #131
- Fix
@noble
build issues
- Switch to
dnd-kit
for drag and drop #92 - Improved views for external resources in Documents
- Add upload dropzone to documents
- Replace
react-helmet
withreact-helmet-async
@tomic/react
can now be used without@tomic/lib
- it re-exports the library- More performant subject updates in new resource form
- Allow
@tomic/lib
to be used in non-browser (Node) context #128 - Add
useMarkdown
function to@tomic/react
- Make search result previews smaller
- Fetch full collections when showing CollectionCard
useResource
defaults to not accepting incomplete resources- Add
sign in
button to invite form - Rename
baseUrl
toserverUrl
- Add
useServerSearch
to@tomic/react
- Improve UX in Tauri (desktop) mode
- Regular Links open in your browser, instead of in Atomic
- Add File management views. Preview images and videos, download them. #121
- Add
uploadFiles
method to @tomic/lib. #121 - Add upload field to forms #121
- Fix bug resourcearray input #123
- Add WebMonetization support #124
- Add Share settings screen where you can see & edit rights / access control #113
- Add Invite form #45
- Convert Classes to typescript interfaces. Show button for this in Class view. #118
Create new resource
button on Drive- Show multiple parents in breadcrumbs
- Refresh collection on opening page
- Don't auto-accept invites
- Improve server switcher design
- Change default port of localhost to 9883 (issue)
- Small fix
- Add authentication: sign requests, so the server knows who sent it. This allows for better authorization. #108
- Refactor Error type, improve Error page / views
- Automatically retry unauthorized resources (but I want a prettier solution, see #110)
useResource
no longer returns an array, but only the resource.- Improved EndpointPage (show results, useful for Search, for example)
- Added server-side full text search #106
- Add a seperate document show page #2, improved performance in Documents
- Improved
canWrite
hook (more stable, faster) - Improved sidebar performance (less re-renders)
- Improve styling tables and sort dropdown
- It's mostly an
atomic-server
version bump :)
- Fix setting Agent bug
- Add constructor to Store
- Include all Properties and Classes in the initial view, speeding up the app even further. #65
- Parse nested, named JSON-AD resources #98
- Refactor resource status - remove
Resource.status
, prefer.loading
and.error
- Add loading and error status to Property class, include in
useProperty
- Improve loading and error states for various components
- Refactor
store.getResourceLoading
,store.fetchResource
,useResource
- add option toacceptIncomplete
.
- Add Typedoc documentation #100
- Fix bug not showing resource form fields
- Fix circular parent handling in
canWrite
- Update references to changed resources #102
- Use
ws
instead ofwss
for HTTP connections
- Fix
wss
websockets - Update typescript type exports
- Added WebSockets for live synchronization with server #80
- Add Commit parsing #80
- Custom fonts
- Prevent re-applying locally defined commits #90
- Fix race condition commits #91
- Added
opts
parameter to react hooks - Simplify internal Value model (better performance, less bugs) #88
- Fix bugs when setting Agent, validate public key before setting
- Add integration / end to end tests #70
- Add Document editor (demo) #2
- Improved performance and less concurrency bugs while quickly saving resources
- Improve styling (soft background on light mode)
- Add baseURL settings page + edit function in top left
- Improve resource selector dropdown, show previews, remove dependency #60
- Add toast notifications #63
- Enable
resource.save()
with custom agent - Add JSON AD array parser
Addremoveddefault_store.json
resource to the browser to make things snappier- Improve type checking for value initialization and serialization types
- Improve view for nested resources
- Match version number of atomic-data-rust
- Add Version button to menu
- Disable menu buttons that are not usable
- Improve error view in cards
- Only show plus icon in suitable collections
- Fix tests
- Cleaned up Resource form #51
- Handle usages left in Invites #45
- Add social meta tags #44
- Add fetch as JSON / JSON-AD / Turtle and more to data pages
- Fix bug with invites
- Various styling improvements
- Add Atomic Data Logo
- Dark mode syncs with user
- Scroll to top on page change #47
- Improve keyboard shortcuts for edit / data view #52
- Move Agent settings to sidebar item
- Add rights check
- Change routes and settings structure
- Add Disabled state to form fields
- Improved hotkey handling
- Fix edit subject in resource form
- Resources will update when properties change (notify listeners on update)
- clean up package.json / dependencies
- Add rights check hook
- Add
getCommitBuilder
andhasChanges
function toresource
andcommitBuilder
- Add rights check to resource
- Split packages, switch to monorepo
- Publish
@tomic/lib
and@tomic/react
libraries to npm - Add changelog