# Changelog

All notable changes to this project will be documented in this file.

## [0.0.71] - 2023-06-03

### Bug Fixes

- "database is locked" errors on init (?)
- UpLink not updating
- Text overflow
- Prevent bonkers behavior on PUT (deny_unknown_fields)
- Useful attribute mouseover
- (group) previews getting hung up on a spinner
- Overflow & spacing issues
- Audio preview sizing issue
- Image group overflow
- Sort attributes by label too
- Update upend_js to include entry provenance and timestamp
- Don't use "Link" under the button
- Unresolved audio annotations labels
- Invariant entries have 0 timestamp
- Pdf viewer
- Tests
- Taskfile
- Put types
- Commands
- Don't show tags if empty
- Image fragment viewing
- Selector unlabeled attr handling
- Suggest attributes on empty selector
- Empty selector attr option
- Selector hanging open
- Incorrect max_size in /api/address
- Proper error message when web ui not enabled
- Increase multihash size to 256 bytes
- Panics due to async black magic
- Proper external fetch error handling
- Don't needlessly insert hashy filename
- Content-type for cors
- Url labels on client, not backend
- Await upend visit, contentType isn't array

### Documentation

- Add conceptual tutorial

### Features

- Attribute label display in Selector, create attribute feature
- [**breaking**] Add provenance & timestamp to Entry
- Add "as entries" inspect option
- Display entity type in banner
- Also show timestamp & provenance in EntryList
- Add optional `provenance` query parameter to API calls
- Only suggest type's attributes in attributeview editing
- [CLI]: Insert entities for files with =, urls
- Guess entryvalue in cli
- Add `@=` support in cli queries
- [CLI]: Implement tsv format for queries
- Add addressing/hashing of remote urls
- Proof of concept v0.1 web extension companion
- Add external blobs via url at /api/blob
- Add PUT /api/hier handler (for creation)
- Extension supports adding
- Webext display added time
- Web extractor adds LBLs

### Media

- Add more buttony upend icon

### Miscellaneous Tasks

- Clippy lints
- [WEBUI]: Fix eslint errors
- Add text examples
- Gitattributes fix
- Add 2 levels of directories to example
- [**breaking**] Separate server functionality into a crate
- Fix missing vendor files in dev
- Rename to entries
- Remove duplicate sort
- Add clean:vault task
- Don't necessarily build jslib
- Update `webpage`
- `cargo update`, fix clippy lints
- [**breaking**] Separate PUT /api/obj and PUT /api/blob endpoint
- Server -> cli
- Update repository in Cargo.toml
- Fix clippy
- Silence storybook errors
- Open browser on `task dev`
- Get rid of MTIME
- Allow 127.0.0.1 origin by default
- Cli docstrings
- Use url instead of string in address
- Add user agent to reqwests
- Remove jsconfig.json
- Lint webext
- Fix rust lints
- Update actix deps, get rid of one future incompat warning
- Use api client from upend.js in webui
- Forgotten placeholder var
- Update yarn.lock for webui
- [WEBEXT]: Fix url desync, types
- Prevent double browser opening
- Rename uploadFile to putBlob, enable remote url
- Send a header with version
- Safeguard in webext against running in upend
- Version bump webext
- Stuff for mozilla webext packaging
- Bump webext version
- Fancify readme
- Links in readme

### Refactor

- Unify put input handling
- Move tools/upend_cli functionality to the cli crate
- Various
- Move entitylisting to upend.js, dry, formatting
- Add api client to upend.js
- Use global reqwest client

### Styling

- !is_release instead of is_debug
- Smaller add icon
- Improve browse icons
- Add text to iconbuttons
- Also show attr in type

### Ci

- Update clean task
- Fix deps
- Switch from Gitlab CI to Woodpecker, Taskfile fixes
- Conditions on lints

## [0.0.70] - 2023-03-08

### Bug Fixes

- Always resolve UpObject when banner (check for blobbiness)
- Unnecessary underline on UpObject banner
- Endless loading on group preview
- Selector mouse behavior, focus event
- Inflight queryonce cache never revalidated
- Rotate models right side up in (pre)view
- Audio regions editable state
- Blobpreview endless loading state
- Image overflow in inspect detail
- Various audioviewer bugs & improvements
- Only record annotation color if not default
- Blob viewer jumping
- Resize AudioViewer
- Detail mode

### Features

- Add arrow key support to Selector
- Double click on surface to add a point
- Update surface URL when changing axes
- Shift+click to add on right
- Resizable columns

### Miscellaneous Tasks

- Rename /media to /assets
- Add example vault with 1 video
- Add blobpreview, blobviewer video stories
- Add vertical video + stories
- Add example images
- Add image stories for blobs
- Add upobjectcard story, routerdecorator, link upobject story
- Add Gallery story
- Stories
- Add Selector stories
- Add Surface story
- Add --reinitialize to sb command
- Fix Surface story, add prefilled story
- Add example files (2 photos, 2 stls)
- Add 3d model stories
- Warn when reinitializing
- Add audio example, update ATTRIBUTION
- Run release version of upend for storybook
- Add RouterDecorator to BlobViewer story
- Add yarn interactive tools
- Release upend version 0.0.70

### Refactor

- Gallery thumbnail is now UpObjectCard

### Styling

- No min-height for blob preview (?)

### Build

- Storybook init

## [0.0.69] - 2023-01-15

### Bug Fixes

- [UI]: Don't update last/num visited if object is nonexistent
- [UI]: Simplify BlobPreview markup, improve loading state
- [UI]: Jobs update after reload triggered
- [API]: Malformed entries aren't parsed as invariants during PUT
- [ERROR]: Address deserialize errors include origin
- [UI]: Footer space, markup
- [UI]: Selector initial attribute value
- [UI]: Surface inaccuracies, zoom reacts everywhere, points are centered

### Features

- [UI]: Footer is persistent and can be hidden
- [CLI]: Initial upend cli
- Add cli addressing from `sha256sum` output
- Add attribute view
- Add rudimentary surface view
- [UI]: Reverse surface Y scale, add loading state
- Add current position display to Surface view

### Miscellaneous Tasks

- [UI]: Adjust OFT features on videoviewer timecode
- [UI]: Footer is hidden by default
- Ignore rel-noreferrer
- [UI]: Remove unnecessary imports

### Performance

- [UI]: Supply labels from sort keys
- Load d3 asynchronously

### Styling

- [UI]: Switch Inter for IBM Plex
- [UI]: Switched root font size from 15px to 16px

### Wip

- Multiple modes of display for surface

## [0.0.68] - 2022-12-22

### Bug Fixes

- Add custom logging handler (elucidate db locked errors?)
- .wavs also detected as audio
- Add proper targets to db logging, panic in debug mode
- Format duration, also change formatting to xhxmxs
- Duration attribute label
- Target
- Tracing target has to be static
- Properly set WAL, eliminate (?) intermittent `database locked` errors
- Box-sizing: border-box
- Centered spinner on image previews
- Placeholder width/height for spinner in blobpreview
- .identified on UpObject
- Border on play icon
- Spinner centering
- Update vite, fix dynamic imports
- Unsupported display in detail mode
- Gallery without sort

### Features

- Add --allow-hosts CLI option
- Add i18next, move attribute labels
- Supported format detection in videoviewer
- Loading state in videoviewer preview

### Miscellaneous Tasks

- Log instrumenting
- Don't package by default
- Log -> tracing
- ...
- Update web deps
- Css fix

### Performance

- Only resort once initial query has finished
- Only show items in gallery once sorted
- Enable lazy loading of images (?)

### Ci

- Make makefile more command-y

### Ui

- Replace spinner

## [0.0.67] - 2022-10-23

### Bug Fixes

- Icons when ui served from server
- Continue with other extractors when one fails
- Audio detection of .oggs
- Also loading peaks
- Add .mp3 override to type detection
- .mp3 override in media extractor

### Features

- Download blob with identified filename
- Add media (duration) extractor
- Add duration display for audio preview

### Miscellaneous Tasks

- Unused css rule
- Shut up svelte check
- Enable tracing span for extractors
- Change extractor error level to debug, add extractor markers

### Refactor

- Unify media type detection

## [0.0.66] - 2022-10-22

### Bug Fixes

- Confirm before generating audio peaks in browser, avoid lock-ups in Chrome
- Remove BlobViewer duplicity in Inspect

### Miscellaneous Tasks

- --ui-enabled actually does something
- 32 max port retries
- Disallow `console.log`

## [0.0.65] - 2022-10-21

### Bug Fixes

- Skip empty files on vault update
- Update tests to handle Skipped paths
- Use `cargo clean` in Makefile/CI
- Markdown display
- Forgot to denote `TYPE` as denoting to types
- Blobpreview sizing
- Blobpreview hashbadge more in line with handled
- Minor css fixes

### Features

- Add cli option to open executable files
- Group preview
- Recurse up to 3 levels resolving group previews
- On group preview, prefer objects with previews

### Miscellaneous Tasks

- Put config into its own struct
- Update address constants (fix file detection, group adding)
- Separate clean commands in Makefile
- Switch from `built` to `shadow_rs`

## [0.0.64] - 2022-10-16

### Bug Fixes

- Update project url, fix tests
- Add global locks to db, fix sqlite errors (?)
- Do not needlessly trigger drop handler UI
- Use Gallery in Search, order by match order
- Remember atttributeview state in search
- Only get() connection in UpEndConnection when necessary
- Video loading state in VideoViewer
- HashBadge display in Chrome*
- .avi previews as video
- VIdeoViewer play after click
- VIdeoViewer size in detail
- Limit thumbnail generation to 1 thread per image
- Lint due to `NodeJS` types
- Consistent font sizing of timecode
- VideoViewer vertical thumbnails
- Reenable locks
- Reenable initial quick vault scan
- Restore store stats functionality somewhat
- Limit previews to NUM_CPU/2 at a time, avoid brown lock-ups
- Previews are cached re: mimetype as well
- Create store dir if not exists
- Don't run an initial full-hash update every start
- Image thumbnails of audio (size query arg collision)
- Actually remove objects on rescan
- Svg (pre)views
- No spurious "Database locked" on startup

### Features

- Levenshtein sort entries in Selector
- Use `match-sorter` instead of just levenshtein distance
- Add timecode display to VideoViewer during previewing
- [**breaking**] Switch from k12 to sha256, use proper multihash /base impl
- [**breaking**] Multiple vaults
- Add options to previews
- If `audiowaveform` is present, generate & cache peaks on backend

### Miscellaneous Tasks

- Add logging to fs tests
- Fix frontend lint
- Missing types, fix (some) Svelte check warnings
- Switch from log to tracing
- Log failed path updates immediately
- Note to self about detail animations
- Refactor widgets + gallery
- VideoViewer preview optimization
- Fix svelte warnings
- Extract all API URLs into a global variable
- Allow CORS from localhost
- No default debug output in tests
- Fix vault/db path semantics, previews in db path, `--clean` param
- Lower default size&quality of image previews
- Add logging
- Fix typo

### Performance

- First check for files in /raw/
- Lower seek time for thumbnails
- Correct `ffmpeg` params for efficient video previews
- Implement speed-ups for vault db
- Remove `valid` index on files
- SQLite NORMAL mode on fs vault connections
- Add checks to avoid duplicate metadata extraction

### Refactor

- Use trait objects instead of FsStore directly

### Build

- Switch from Rollup to Vite, upgrade Svelte

### Ci

- Update Makefile for new webui build also

### Hotfix

- Disable transactions for now

## [0.0.6] - 2021-06-19

### Line-break

- Anywhere for attr tables

## [0.0.3] - 2021-06-19

### Refactor

- Remove query_entries(), from_sexp into TryFrom, query_to_sqlite is a method

### Models

- :File uses Hash instead of plain Vec<u8>

<!-- generated by git-cliff -->
