# Changelog All notable changes to this project will be documented in this file. ## [0.0.76] - 2024-02-06 ### Features - [WEBUI]: Start upload on Enter press - [WEBUI]: Select all uploaded files when done - [WEBUI]: Files can be added or removed from the upload dialog - [WEBUI,JSLIB]: Upload progress ### Bug Fixes - [JSLIB]: Fix types for `putBlob()`, returns a single address ### Operations & Development - Git ignore uploaded files in example_vault - Intellij dev config builds jslib before webui launch - [WEBUI]: Force rebundling of dependencies for `dev` script - Remove parallelization - Update Earthly image version - Get rid of AppImage upload to S3 - Cache all rust earthly targets - --force pnpm install, DRY Earthfile slightly - Enable CACHE ### Styling - [WEBUI]: Upload progress bar spacing, hide add button ### Build - Fix upend-bin target - Further refactor Earthfile & build process - [WEBEXT]: Update shared paths with webui, fix build ## [0.0.75] - 2024-02-02 ### Bug Fixes - [WEBUI]: Fix upload, re-add forgotten components (Footer, AddModal, DropPasteHandler) ### Operations & Development - Update Earthly image version ### Styling - [WEBUI]: Fix uneven heights of roots ## [0.0.74] - 2024-01-28 ### Features - [WEBUI]: Required & optional attributes - [JSLIB]: Add timeouts / aborts to all api calls ### Bug Fixes - [JSLIB]: Correct types for `UpObject.attr()` - [WEBUI]: Ordering of attributes in Selector - [CLI]: Serving web ui in Docker/AppImage - [WEBUI]: Selector race conditions / wonkiness - [CLI]: Serve new SPA version ### Miscellaneous - [WEBUI]: Put /dist into .eslintignore ### Operations & Development - Make `dev` intellij config not run --release version - [WEBUI]: Fix HMR ### Styling - [WEBUI]: Blob preview labels ### Build - Optimize Earthly target dependencies - [WEBUI]: Finish webui SPA build config ## [0.0.73] - 2024-01-27 ### Features - [WEBUI]: Add section links from Home - [WEBUI]: Add Keyed display to Home - [WEBUI]: Vault name in title on home - [WEBUI]: Display KEYs in UpObject banner - [WEBUI]: Allow search / selection of entries via their attributes - [CLI]: Add ID3 image extraction - Add spinner to Selector - [JSLIB]: Implement toString for UpObject - [WEBUI]: Stable type sort in Inspect: by amount of attributes, address - [CLI,WEBUI]: Check file presence via HEAD, disable download button if necessary - [WEBUI]: Proper autofit of SurfaceColumn - [WEBUI]: Press shift and click close to reload a column - [WEBUI]: SurfaceColumn automatically finds PERPENDICULAR attributes, if set - [JSLIB]: Or/and/not/join query builder support - [WEBUI]: SurfaceColumn's axes are fully reflected in URL - [WEBUI]: "Last searched" options in header - [CLI]: Add `--rescan_mode` CLI option, fix storybook cmd - [WEBUI]: Surface view as Column in Browse - [WEBUI]: Surface: add "display as point" - [WEBUI]: Distinguish between correctly & incorrectly typed members in Inspect - [JSLIB]: Add variables to jslib query builder - [WEBUI]: Show current vault mode in setup - [JSLIB]: Add vault options functions - [DB]: Duplicate blob paths on initial scan - [DB]: Add an "INCOMING" rescan mode - [DB]: Add an "INCOMING" rescan mode - [DB]: Add new vault scan modes (flat, depthfirst) - [WEBUI]: Turn groups view into a column, allow selection - [WEBUI]: Quick & dirty reverse path resolution for duplicate group distinction - [WEBUI]: Add group view, duplicate group view - [WEBUI]: Proper set operations ### Bug Fixes - [WEBUI]: Selection in EntryList - [WEBUI]: Sort & optimize Keyed section - [CLI]: Add ID3_PICTURE attribute description - [CLI]: Image previews work for paths without extensions - Uploads via API are assigned paths like via FS - [WEBUI]: Editable overflow - [WEBUI]: Attribute columns being squashed to unreadability - [WEBUI]: Url type display in UpObject - Selectors keep focus while adding entries - Prevent crashes while formatting unexpected value types - [DB]: Handling (again) existing files + tests - [WEBUI]: Fix duplicate Selector options (?) - [WEBUI]: Surface centering on resize - [WEBUI]: Position of selector on surface - [WEBUI]: Multiple Surface columns - [WEBUI]: "initial" Selector values are no longer uneditable - [WEBUI]: Error in SurfaceColumn due to missing `y` - [WEBUI]: SurfaceColumn with new Selectors - [WEBUI]: Error on search confirm - [WEBUI]: Surface starts at center - [WEBUI]: Surface: point position matches axes - [WEBUI]: Z-index on surface - [WEBUI]: Remove surface story, fix lint - [WEBUI]: Lint - [WEBUI]: Overflow of "Used" section in Attribute Inspect - [WEBUI]: UpLink label overflows - [WEBUI]: Surface allows rudimentary rescaling - [WEBUI]: Fix editing through inspect attribute list - [WEBUI]: Upobject label overflow - [WEBUI]: Fix sizing / overflows on <=1080 screens? - [WEBUI]: Various app sizing fixes - [WEBUI]: Allow selection with cmd for macos - [WEBUI]: "Groups" label in Inspect column - [WEBUI]: "Required" without "Included" also now works in Combine - [WEBUI]: Don't require confirmation for set remove in combine - [WEBUI]: Version display ### Miscellaneous - Fix types - Add intellij run configurations - [JSLIB]: Bump version - [WEBUI]: Update entity addresses for storybook - [WEBUI]: Update storybook - [JSLIB]: Fix eslint - [JSLIB]: Version bump - [JSLIB]: Rebuild before running tests - [JSLIB]: Add eslint ava - Specify crate resolver ### Operations & Development - Fix prerelease step - Remove mail (for the time being) - Fix mail? - Add mail pipeline step - Use detached signature for appimages - Test before lint - Add appimages & changelogs to gitea releases ### Performance - [WEBUI]: Early set for static Selector options - Cancel unfinished updates in Selector - [JSLIB]: Add `attr` cache - [WEBUI]: Use addressToComponents to get attribute addresses without querying backend - [WEBUI]: Only check for file existence for UpObjct banners ### Styling - [WEBUI]: Hide type keys - [WEBUI]: Monospace & diminished key display - [WEBUI]: Key display in non-banners also - [WEBUI]: # -> ⌘ - Show multiple roots as banners instead of full cards - [WEBUI]: 2 columns at home - [WEBUI]: Column/inspect sizing, avoid scrollbar overlap - [WEBUI]: Fix partially hidden Home footer; spacing - [WEBUI]: Reorder options in selector - [WEBUI]: Embolden 0 axes in Surface, text shadow - [WEBUI]: Roots on home are in a column - [WEBUI]: Notes in properties, enlarge scrollable area - [WEBUI]: Padding on groups in inspect - [WEBUI]: Non-inspect columns are lighter ## [0.0.72] - 2023-10-22 ### Features - [WEBUI]: All "combined" can now be selected - [WEBUI]: :sparkles: rudimentary combine column - Add selection & batch operations - [WEBUI]: :sparkles: batch adding/removing groups - [WEBUI]: :construction: allow selection removal - [WEBUI]: :construction: base of select all - [WEBUI]: :construction: generic `BrowseColumn`, EntryView accepts `entities` - [WEBUI]: :construction: selection via ctrl+drag - [JSLIB]: :sparkles: getRaw() just returns URL, fetchRaw() fetches the actual content - [JSLIB]: :recycle: eav helper getters for uplisting - [JSLIB]: :sparkles: add basic query builder - :package: upend jslib + wasm can be used from node - Show URL types in non-banner upobjects - Always show members in inspect - Modeless entrylist editing - Modeless group operations - Property adding in entrylist - Add group count - Add basic group section to home - Allow specifying vault name as env - Use `audiowaveform` for audio preview generation - Add debug logging for external command extractors - Concurrent image loading indication - Add download button to UpObject - Rudimentary type editor - Add link to typed entry views - Extractors append types - Upend.js `attr` includes backlinks - Limit concurrent image loading - Add endpoint to aid with db migration - Provenance, vault stats - [CLI]: Request the whole obj listing for `get` - Add `get` cli command, cli commands don't panic - [WEBEXT]: Add link to instance ### Bug Fixes - [CLI]: Proper version in vault info - [WEBUI]: Make non-inspect columns play nice with index context - [WEBUI]: Properly center banner select highlight - [JSLIB]: :wrench: fix gitignore - [WEBUI]: :ambulance: fix upend wasm import - [DB]: :bug: actually fix join behavior, improve performance as well - [JSLIB]: :technologist: better error messages for api/query - [DB]: :bug: fix join behavior - [JSLIB]: :rotating_light: fix lint fail due to missing type-only imports - [WEBUI]: :bug: add placeholder to indicate url pasting in entitylist - [JSLIB]: :wrench: moved wasm from dependencies to dev dependencies - [JSLIB]: :sparkles: allow initialization of wasm via wasm modules - Selector overflow in entitylist - Entitylist entry add - Audio annotations not being saved properly - Accessibility & lints - Hide browse add column after blur - Don't duplicate columns unless shift is pressed - 3d model preview overflow - Webui, detail doesn't take up the whole screen - Add url attributes to url type address - Webui layout & sizing fixes - Make `componentsToAddress` usable from JS - Wasm lint - Entrylist scroll hijack - Don't show type editor for nontypes - Duplicate wasm initialization - Footer only showable when jobs present - Don't hide jobs - Never cache index.html, prevent stale assets - Audiopreview overflow - Upgrade vite, get rid of vite build voodoo - Docker-minimal missing libssl3 - Appimage webui path - (loading) image overflow - Docker improvements - Impl display for upmultihash, fix preview debug log - Concurrent image loading - Unclickable items in detail mode, fixes #57 - Backlinks, untyped links don't include OFs - Minor entity not yet loaded bug - Upend js lib build (`files`) - Build wasmlib before frontend - Local js dependencies - Disable libgit2 shadow-rs functionality, actually fix build - Upgrade shadow-rs, fix libgit build - Gallery empty state - [WEBUI]: Resolve upobjects with empty labels, explicitly disable resolving - Api fetch store info - Web ui flag - Fix mime detection on mac os - [WEBEXT]: External instances, link opens stored instance - Double ^C actually stops - [WEBUI]: Ultrawide detail mode - [WEBUI]: Various mobile improvements (#23) - [WEBUI]: Inner group preview sizing ### Miscellaneous - [JSLIB]: :bookmark: version bump to 0.0.5 - [JSLIB]: :recycle: use wasmlib from npm - [JSLIB]: :wrench: tidy up gitignore - :technologist: add earthly to recommended extensions - [JSLIB]: :recycle: tidy up tsconfig.json - Change wording on "Create object", i18n - Update git cliff config - Fix stories errors - Logging for swr fetch - Rename Gallery to EntityList - Update upend logo - Update cargo & webui deps - Remove prod tasks from Taskfile - Reformat? - Pnpm lock update - Dev:frontend relies on build:jslib - Log level to trace - Change db/store traces to trace level - Add deploy:docker task - Add prettier for webui - Rename build dockerfiles - Add .editorconfig - Add VS Code recommended extensions - Reformat webui w/ prettier - Remove unnecessary std::, reformat - Rename photo extractor to EXIF extractor - Lock update - Fix taskfile (pnpm --frozen-lockfile) - Migrate from yarn to pnpm - Deprecate get_all_attributes (#38) - Include versions of all packages in /info - EntryList default columns - Fix tests on mac - Remove unused dependencies - [CI]: Include web-ext artifacts in (pre)releases - [WEBEXT]: Version bump - [CLI]: Gracefull failback if API format changes - Don't print header if result is empty in cli - Add `debug` - [WEBEXT]: Version bump - [WEBEXT]: More descriptive message for visiting upend ### Operations & Development - [JSLIB]: :ambulance: do not attempt to publish jslib unless we're on `main` - :construction_worker: sequential js publish - [JSLIB]: :bug: fix earthly publish target - [JSLIB]: :rocket: publish wasmlib to repo - [JSLIB]: :sparkles: publish jslib whenever version is bumped - [JSLIB]: :white_check_mark: test jslib in CI - [JSLIB]: :rocket: publish jslib on tag - Add `--push` to deploy target - Add earthly target to update changelog - Add logging to Inspect - Add an audit target - Only publish dockers from main - Also build a minimal docker image - Add `gpg-agent` to upend-deploy docker - Fix docker tasks - Upload packages to minio - Only upload nightlies from main - Also cache target for incremental builds - Also use local node docker image - Move from using global `rust` image to local `rust-upend` - Verbose build of upend.js - Prerelease every push to main - Fix woodpecker path check - Fix publish api key (?) ### Refactor - [**breaking**] Unify groups, tags, types (on the backend) ### Styling - [WEBUI]: Slightly reduce empty space in selectedcolumn - [WEBUI]: Transition select state in EntityList - No more labelborder, more conventional table view - Referred to after members - Don't use detail layout under 1600px width - Smaller iconbutton text ### Testing - [BASE]: :bug: `in` actually tested - Improve db open tests - [SERVER]: Add test for /api/obj/ entity info - Add /api/hier test - Rudimentary route test ### Release - V0.0.72 ## [0.0.71] - 2023-06-03 ### Features - Web extractor adds LBLs - Webext display added time - Extension supports adding - Add PUT /api/hier handler (for creation) - Add external blobs via url at /api/blob - Proof of concept v0.1 web extension companion - Add addressing/hashing of remote urls - [CLI]: Implement tsv format for queries - Add `@=` support in cli queries - Guess entryvalue in cli - [CLI]: Insert entities for files with =, urls - Only suggest type's attributes in attributeview editing - Add optional `provenance` query parameter to API calls - Also show timestamp & provenance in EntryList - Display entity type in banner - Add "as entries" inspect option - [**breaking**] Add provenance & timestamp to Entry - Attribute label display in Selector, create attribute feature ### Bug Fixes - Await upend visit, contentType isn't array - Url labels on client, not backend - Content-type for cors - Don't needlessly insert hashy filename - Proper external fetch error handling - Panics due to async black magic - Increase multihash size to 256 bytes - Proper error message when web ui not enabled - Incorrect max_size in /api/address - Selector hanging open - Empty selector attr option - Suggest attributes on empty selector - Selector unlabeled attr handling - Image fragment viewing - Don't show tags if empty - Commands - Put types - Taskfile - Tests - Pdf viewer - Invariant entries have 0 timestamp - Unresolved audio annotations labels - Don't use "Link" under the button - Update upend_js to include entry provenance and timestamp - Sort attributes by label too - Image group overflow - Audio preview sizing issue - Overflow & spacing issues - (group) previews getting hung up on a spinner - Useful attribute mouseover - Prevent bonkers behavior on PUT (deny_unknown_fields) - Text overflow - UpLink not updating - "database is locked" errors on init (?) ### Documentation - Add conceptual tutorial ### Media - Add more buttony upend icon ### Miscellaneous - Release - Switch to using git cliff for changelogs - Links in readme - Fancify readme - Bump webext version - Stuff for mozilla webext packaging - Version bump webext - Safeguard in webext against running in upend - Send a header with version - Rename uploadFile to putBlob, enable remote url - Prevent double browser opening - [WEBEXT]: Fix url desync, types - Update yarn.lock for webui - Forgotten placeholder var - Use api client from upend.js in webui - Update actix deps, get rid of one future incompat warning - Fix rust lints - Lint webext - Remove jsconfig.json - Add user agent to reqwests - Use url instead of string in address - Cli docstrings - Allow 127.0.0.1 origin by default - Get rid of MTIME - Open browser on `task dev` - Silence storybook errors - Fix clippy - Update repository in Cargo.toml - Server -> cli - [**breaking**] Separate PUT /api/obj and PUT /api/blob endpoint - `cargo update`, fix clippy lints - Update `webpage` - Don't necessarily build jslib - Add clean:vault task - Remove duplicate sort - Rename to entries - Fix missing vendor files in dev - [**breaking**] Separate server functionality into a crate - Add 2 levels of directories to example - Gitattributes fix - Add text examples - [WEBUI]: Fix eslint errors - Clippy lints ### Operations & Development - Conditions on lints - Switch from Gitlab CI to Woodpecker, Taskfile fixes - Fix deps - Update clean task ### Styling - Also show attr in type - Add text to iconbuttons - Improve browse icons - Smaller add icon - !is_release instead of is_debug ## [0.0.70] - 2023-03-08 ### Features - Resizable columns - Shift+click to add on right - Update surface URL when changing axes - Double click on surface to add a point - Add arrow key support to Selector ### Bug Fixes - Detail mode - Resize AudioViewer - Blob viewer jumping - Only record annotation color if not default - Various audioviewer bugs & improvements - Image overflow in inspect detail - Blobpreview endless loading state - Audio regions editable state - Rotate models right side up in (pre)view - Inflight queryonce cache never revalidated - Selector mouse behavior, focus event - Endless loading on group preview - Unnecessary underline on UpObject banner - Always resolve UpObject when banner (check for blobbiness) ### Miscellaneous - Release upend version 0.0.70 - Add yarn interactive tools - Add RouterDecorator to BlobViewer story - Run release version of upend for storybook - Add audio example, update ATTRIBUTION - Warn when reinitializing - Add 3d model stories - Add example files (2 photos, 2 stls) - Fix Surface story, add prefilled story - Add --reinitialize to sb command - Add Surface story - Add Selector stories - Stories - Add Gallery story - Add upobjectcard story, routerdecorator, link upobject story - Add image stories for blobs - Add example images - Add vertical video + stories - Add blobpreview, blobviewer video stories - Add example vault with 1 video - Rename /media to /assets ### Styling - No min-height for blob preview (?) ### Build - Storybook init ## [0.0.69] - 2023-01-15 ### Features - Add current position display to Surface view - [UI]: Reverse surface Y scale, add loading state - Add rudimentary surface view - Add attribute view - Add cli addressing from `sha256sum` output - [CLI]: Initial upend cli - [UI]: Footer is persistent and can be hidden ### Bug Fixes - [UI]: Surface inaccuracies, zoom reacts everywhere, points are centered - [UI]: Selector initial attribute value - [UI]: Footer space, markup - [ERROR]: Address deserialize errors include origin - [API]: Malformed entries aren't parsed as invariants during PUT - [UI]: Jobs update after reload triggered - [UI]: Simplify BlobPreview markup, improve loading state - [UI]: Don't update last/num visited if object is nonexistent ### Miscellaneous - [UI]: Remove unnecessary imports - Ignore rel-noreferrer - [UI]: Footer is hidden by default - [UI]: Adjust OFT features on videoviewer timecode ### Performance - Load d3 asynchronously - [UI]: Supply labels from sort keys ### Styling - [UI]: Switched root font size from 15px to 16px - [UI]: Switch Inter for IBM Plex ## [0.0.68] - 2022-12-22 ### Features - Loading state in videoviewer preview - Supported format detection in videoviewer - Add i18next, move attribute labels - Add --allow-hosts CLI option ### Bug Fixes - Gallery without sort - Unsupported display in detail mode - Update vite, fix dynamic imports - Spinner centering - Border on play icon - .identified on UpObject - Placeholder width/height for spinner in blobpreview - Centered spinner on image previews - Box-sizing: border-box - Properly set WAL, eliminate (?) intermittent `database locked` errors - Tracing target has to be static - Target - Duration attribute label - Format duration, also change formatting to xhxmxs - Add proper targets to db logging, panic in debug mode - .wavs also detected as audio - Add custom logging handler (elucidate db locked errors?) ### Miscellaneous - Css fix - Update web deps - Log -> tracing - Don't package by default - Log instrumenting ### Operations & Development - Make makefile more command-y ### Performance - Enable lazy loading of images (?) - Only show items in gallery once sorted - Only resort once initial query has finished ### Ui - Replace spinner ## [0.0.67] - 2022-10-23 ### Features - Add duration display for audio preview - Add media (duration) extractor - Download blob with identified filename ### Bug Fixes - .mp3 override in media extractor - Add .mp3 override to type detection - Also loading peaks - Audio detection of .oggs - Continue with other extractors when one fails - Icons when ui served from server ### Miscellaneous - Change extractor error level to debug, add extractor markers - Enable tracing span for extractors - Shut up svelte check - Unused css rule ## [0.0.66] - 2022-10-22 ### Bug Fixes - Remove BlobViewer duplicity in Inspect - Confirm before generating audio peaks in browser, avoid lock-ups in Chrome ### Miscellaneous - Disallow `console.log` - 32 max port retries - --ui-enabled actually does something ## [0.0.65] - 2022-10-21 ### Features - On group preview, prefer objects with previews - Recurse up to 3 levels resolving group previews - Group preview - Add cli option to open executable files ### Bug Fixes - Minor css fixes - Blobpreview hashbadge more in line with handled - Blobpreview sizing - Forgot to denote `TYPE` as denoting to types - Markdown display - Use `cargo clean` in Makefile/CI - Update tests to handle Skipped paths - Skip empty files on vault update ### Miscellaneous - Switch from `built` to `shadow_rs` - Separate clean commands in Makefile - Update address constants (fix file detection, group adding) - Put config into its own struct ## [0.0.64] - 2022-10-16 ### Features - If `audiowaveform` is present, generate & cache peaks on backend - Add options to previews - [**breaking**] Multiple vaults - [**breaking**] Switch from k12 to sha256, use proper multihash /base impl - Add timecode display to VideoViewer during previewing - Use `match-sorter` instead of just levenshtein distance - Levenshtein sort entries in Selector ### Bug Fixes - No spurious "Database locked" on startup - Svg (pre)views - Actually remove objects on rescan - Image thumbnails of audio (size query arg collision) - Don't run an initial full-hash update every start - Create store dir if not exists - Previews are cached re: mimetype as well - Limit previews to NUM_CPU/2 at a time, avoid brown lock-ups - Restore store stats functionality somewhat - Reenable initial quick vault scan - Reenable locks - VideoViewer vertical thumbnails - Consistent font sizing of timecode - Lint due to `NodeJS` types - Limit thumbnail generation to 1 thread per image - VIdeoViewer size in detail - VIdeoViewer play after click - .avi previews as video - HashBadge display in Chrome* - Video loading state in VideoViewer - Only get() connection in UpEndConnection when necessary - Remember atttributeview state in search - Use Gallery in Search, order by match order - Do not needlessly trigger drop handler UI - Add global locks to db, fix sqlite errors (?) - Update project url, fix tests ### Miscellaneous - Fix typo - Add logging - Lower default size&quality of image previews - Fix vault/db path semantics, previews in db path, `--clean` param - No default debug output in tests - Allow CORS from localhost - Extract all API URLs into a global variable - Fix svelte warnings - VideoViewer preview optimization - Refactor widgets + gallery - Note to self about detail animations - Log failed path updates immediately - Switch from log to tracing - Missing types, fix (some) Svelte check warnings - Fix frontend lint - Add logging to fs tests ### Operations & Development - Update Makefile for new webui build also ### Performance - Add checks to avoid duplicate metadata extraction - SQLite NORMAL mode on fs vault connections - Remove `valid` index on files - Implement speed-ups for vault db - Correct `ffmpeg` params for efficient video previews - Lower seek time for thumbnails - First check for files in /raw/ ### Build - Switch from Rollup to Vite, upgrade Svelte ### Hotfix - Disable transactions for now ## [0.0.6] - 2021-06-19 ### Line-break - Anywhere for attr tables ## [0.0.3] - 2021-06-19 ### Models - :File uses Hash instead of plain Vec