version_history:
  0.0.1 - Alpha:
    - Under development
  0.0.2 - Alpha:
    - Under development - Added tag related functions
  0.0.3 - Alpha:
    - Under development - Internal code structure change
  0.0.4:
    - Added search tools
    - toolbar
    - application style
  0.1.0:
    - Finished toolbar
    - bug fix
    - use setup.py for distribution
  0.1.1:
    - Add bibtex template, Bug fix
  0.1.2:
    - Using argparse when starting
    - add window icon
  0.1.3:
    - Added log file
  0.2.0:
    - Use table view
  0.2.1:
    - Add context menu
  0.2.2:
    - Add pending window
    - support entry without file
  0.2.3:
    - Better support for entry without file
  0.2.4:
    - Better support for pending window, add pdf preview to pending window
  0.2.5:
    - Enable drag-drop in info panel to add file
  0.2.6:
    - Context menu
    - better documentation
  0.2.7:
    - Add markdown render window
  0.2.8:
    - Add markdown editor basic syntax highlight
  0.2.9:
    - UI update
  0.2.10:
    - Better support for proceedings and better copy citation
  0.2.11:
    - Bug fix - not updating file tag
    - implement open file location in context menu
  0.2.12:
    - Add Cover to info panel
  0.2.13:
    - Bug fix - update fitz method naming
    - use integer value resize
  0.2.14:
    - Better image insertion
    - allow copy paste and drag
  0.2.15:
    - Add free document option into file selector
  0.2.16:
    - Add url/doi into file info panel
  0.3.0:
    - Web viewer!
  0.3.1:
    - Icon change & update setup.py distribution & argparse update.
  0.3.2:
    - Frontend add server query.
  0.3.3:
    - Frontend add banner for reloading database, search
    - UI update
    - change frontend server to tornado server
    - start front end and backend with single python cmd argument.
  0.3.4:
    - Frontend small update. change backend port to 8079
  0.3.5:
    - Now can insert no-file entry by cancel in file selection prompt
    - Add file size to file info
  0.3.6:
    - API update - Change resbibman.backend to resbibman.core
  0.3.7:
    - Bug fix - edit weburl or switch mdTab would lead to crash when no file is selected
  0.3.8:
    - Use one server to start front and backend
  0.3.9:
    - Check if file exists, while adding
    - Change cloud icon
  0.3.10:
    - Asynchronous comment saving
    - use logger instead of print
  0.3.11:
    - Allow bibtex editing
  0.3.12:
    - More bibtex template
  0.3.13:
    - Not automatically save comment, show comment save indicator on info panel
    - reset_conf option in CLI
  0.4.0:
    - Offline html support
  0.4.1:
    - Panel collapse buttons
    - Markdown highlight improvements
    - UI changes
    - Minor bug fixes
  0.5.0:
    - Online mode!!
  0.5.1:
    - Synchronize strategy update
    - GUI host settings
    - PDF cover cache
    - Move some window to dialog class
    - Clear cache CLI
  0.5.2:
    - Asynchronous UI update when connection
    - Improved watch file changes
    - Bug fix - basename now not allowed to have question mark
  0.5.3:
    - Better file modification monitering
    - Bug fix - rename/delete tag now will affact unasynchronized data
    - CLI change
  0.5.4:
    - Document update
    - Use asyncio to accelerate dataloading
    - Add delete to context menu of file selector
    - CLI update
    - Bug fixs - rbmweb can serve packed webpages with style, server can serve empty
      database
  0.6.0:
    - Online discussion avaliable
    - Info file record time as floating time stamp
    - Key login required for accessing webpage
    - rbm-collect/rbm-discuss
    - Server can serve notes in html format
  0.6.0a:
    - Using PyQt6!
    - View comment preview in online mode
  0.6.1:
    - Comment CSS update
    - Full screen
    - Bug fixes
  0.6.2:
    - Propmt conflict resolving when synchroning
    - Bug fixes - Now, delete old temp_db when server change, invalid bibtex input won't
      crash the program, etc.
  0.6.3:
    - Better logging in log file
    - Stricter frontend access key requirements
    - Added update script
  0.6.4:
    - Preset server configuration
    - Scroll online markdown in GUI
    - Server-side docker deployment
    - Delete cache and prompt user of unsynced data when quitting
    - Bug fixes - Not freeze GUI if server is down
  0.6.5:
    - Latex equation support
    - Toggle panel button only show one panel
    - Being able to export data
    - Log exceptions
  0.6.6:
    - Better log
    - Discussion tab
    - markdown color font style
    - More help options
    - Binary distribution
  0.6.7:
    - UI update - more help options
    - Font size in configuration file
    - Dark theme icon color
    - Context menu separator
    - Better macos and windows file watcher
    - Kill statusbar updating thread after quitting
  0.6.8:
    - Convert bibtex from nbib
    - Argparser update
    - Global configuration buffer
    - Switch server without restarting
  0.6.9:
    - Being able to add bib&nbib file
    - Not deleting original document when adding to database
    - Bug fixes - mayn not delete remote file
  0.6.10: 
    - New RBMWeb sharing page
    - Hover highlight entire line
    - Add menubar, toolbar can be hidden; Font settings
    - Move cache dir out of system tempdir
    - Sync bug fixes for Macos
  0.7.0:
    - Use RBM_HOME directory for application data storage
    - Open document in new tab
    - Use yaml to record version history
    - Load font settings without restarting
    - Bug fixes
  0.8.0:
    - Hierarchy tag
  0.8.1:
    - Use PDF.js viewer as internal PDF reader
    - rbm-utils
    - Use flow layout to show selected file tags
    - Can hover copy tag in tag-selector
    - Can right click on tag to unfold
    - Bug fix - tag selector sorting
    - Bug fix - now update frames after selected data moved out of the current tags
  0.8.2:
    - rbm-share
    - Markdown TOC and table
    - Socks5 proxy for qt
    - CMD arguments update
  0.8.3:
    - Bibliograhy conversion from endnote
    - Asynchronous search
    - Refactor - RBMWeb.backend -> resbibman.server
  0.8.4:
    - More on search
  0.9.0:
    - Better user management with user identifier and mandatory tags
    - Tag-based user permissions
    - Optimize resizing performance
    - UI - better tableview highlighting; more compact layout
    - Refactor - serverconn
    - rbm-keyman update
  0.9.1:
    - Show header title
    - Search publications
    - Highlight mandatory_tags
    - Document reader show less content on info panel
    - Tag font now affects file tag bubble
    - Fix - include search results when tag change
  0.10.0:
    - RBMWeb2
  0.10.1:
    - RBMWeb2 ui update
    - As ios webapp
    - Sorted tags and file selector
    - Banner for search, logout and theme change
    - Reactive toggle and search with pinia global storage
    - Not showing file tags on small screen
    - Fix - now log adding document
  0.11.0:
    - iRBM module
    - Feature search
    - AI summary
    - New qt stylesheet on windows
  0.11.1:
    - Related works in summary
    - Summary page check key
    - Choose model from summary url
    - 401 -> 403 for unauthorized access
    - Fix - restore node package version
  0.12.0:
    - Sqlite database storage format!
    - Fix - search note; catch last row deletion uuid keyerror
  0.12.1:
    - resbibman.api
    - Update pdf.js version
    - GUI - tageditor as qdialog
    - Fix - rbmweb default sort reverse
    - Fix - close sqlite connection before deleting/reloading
    - Fix - load fontconfig after stylesheet loading
    - Fix - upload tag check
    - Some refactors
  0.12.2:
    - Open external button
    - Auto save comment settings
    - Fix - time modification error
    - Fix - release database resources before deleting/reloading
    - Fix - rbm-reserconf dependency chicken and egg problem
    - update_src.py update
    - Some refactors
  0.13.0:
    - Arxiv daily
    - RBMWeb updates - explore, theme settings for session, file row update
    - Update node packages
    - RBMServer collect handler and iserverproxy handler
    - GUI - Allow multiple delete, abstract in info panel
  0.13.1:
    - RBMWeb - popup & floating window
    - RBMWeb - banner icon and slot
    - RBMWeb - explore button
    - RBMWeb - webui delete
    - RBMWeb - reader
    - RBMWeb - backend pdfjs viewer
    - RBMWeb - unfold one data once a time
    - RBMWeb Arxiv daily - collect & author papers & related works
    - RBMServer - api update - img, fileinfo-supp, iserverproxy, dataman
    - backup on deletion
    - fixes - torch device on featurize
  0.13.2:
    - RBMWeb - add/edit data
    - RBMWeb - better floating window
    - RBMWeb - style change
    - RBMWeb - load database on app loading
    - RBMWeb - stacked multiple popups
    - fixes - RBMWeb reader splitter; update database on collect
  0.13.3:
    - RBMWeb features ⬇️
    - Explore menu
    - Edit abstract
    - Upload document
    - Right click on tag to unfold
    - Banner action shortcuts
    - Note preview
    - Default to preview non-empty note
    - Reader upload button
    - Cite
    - Fix - disable space shortcut on other widgets than datacard more div
    - Fix - update note when reload database on reader
    - Refactor - use datacard container
  0.13.4:
    - RBMWeb features ⬇️
    - Toggle tag display
    - Keep components alive when routing
    - Record recently read documents on reader
    - Shared preferred reader panel width ratio
    - New summary widget
    - Fix - md editor paste image into the cursor position
    - Style - banner fixed height and improved reader and feed page height calulation
    - Resbibman core ⬇️
    - rbm-index update
    - Refactor - move featurize text to resbibman server
  0.14.0:
    - Fully functional RBMWeb
    - Tauri GUI
    - Rename and delete tag via web
    - Use localstorage to store encrypted user key
    - Default to stay login
    - Server HTTPS support
    - Web search publication
    - Fix - reject short PDF summary
  0.14.1:
    - Compact webui layout
    - Handle bibtex encoding correctly
    - Make some of the webui settings persistant
    - Https support on CLI and pyqt GUI
    - Fix - reload info on rbmcollect to allow changing total tag poll
    - Fix - webui reload data when changing database
  0.14.2:
    - Persistent tag panel visibility
    - Use tab to select custom buttons
    - Slightly improved light theme color
    - Server group bibtex parsing with multiprocessing
    - Server terminal color
    - Drop pyqt requirement by default
    - Refactor - remove resbibman.perf
  0.15.0:
    - Use pyproject.toml to manage python dependencies
    - Program entry argument change, remove default subparser
    - Drop support for old RBMWeb and pyinstaller build
    - Update docker build
  0.15.1:
    - Blank placeholder on home page
    - Better docker deployment
    - Improve documentation
    - Rename RBMWeb2 -> RBMWeb
    - Further isolate PyQt GUI
  0.16.0:
    - Use tiny_vectordb for feature storage
    - Feature visualization
    - Tag bubble
    - Able to set backend url at login page
    - UI updates
    - Fix - rbm-share
  0.16.1:
    - Summary show author articles in the database
    - Lazy search
    - Style - optimize floating window size; set feed page min width and height
    - Dev - refactor - logger, textutils, chatstreamiter
    - Dev - local llm support, set docker hf_home
  0.16.2:
    - Webui reload database button
    - Style - loading spinner
    - Refactor - remove cmd/cmdA http handlers
    - Dev - modules rename

  1.0.0 - New start!:
    - Lires! A new name for the project.
    - Main features and refactors:
      - Name change - resbibman -> lires, rbm -> lrs
      - Isolation of the GUI module - lires-qt
      - More detailed version changelog
    - Performance updates:
      - Use asyncio threading and async iter wrap to offload blocking task
    - Developments:
      - Dev - lrs-cluster for server clustering
      - Dev - startup subcommand change, how have four entries - server, web, client, iserver
  
  1.0.1:
    - UI updates:
      - Datacard expand animation
      - Adjust banner icon size and gap
      - Adjust search input size on small screen
    - Permission changes:
      - Check tag permission on AI summary
      - Requires key to get data list and single data information
    - Developments:
      - Rename ilires -> lires_ai
      - Handlers use keyReqired wrapper to check key
      - Log handler initialization
      - AI module dependency isolation
      - Add core optional dependencies
      - Seperate docker build for each module
      - Fix build issues - tauri identifier and setup version read
  
  1.0.2:
    - Lires web updates:
      - Streaming datalist
      - Home loading spinner as a popout
      - Cite as raw document url
      - Use default llm for summary
    - Lires server:
      - Async emit streaming data list
      - Update npm packages and tiny vectordb
      - Optionally build index without llm summary
    - Lires AI:
      - Allowing 'DEFAULT' and 'LOCAL' as llm name;
      - Remove fastchat related args, remove openai-api-base argument
      - Set openai model names from commandline arguments
    - Refactor & developments:
      - Move reload database function to uistate store
      - Chat stream iter class using per-instance settings, can be set in constructor
    - Fix:
      - Server handler base-class init order
    
  1.0.3:
    - Lires web UI:
      - Loading progress bar
    - New feature:
      - Real-time feature reduction for interactive visualization
      - Support eprint as publication
      - Search by author
  
  1.0.4:
    - New features:
      - Bookmark
      - Periodically update search index
      - Update home layout
    - Improve feature visualization:
      - Store 3D visualization state
      - Data not ready prompt
      - Use PCA for small dataset
    - Performace:
      - Use float32array for faster feature distance calculation
    - Fix:
      - Center login page
    - Refactors:
      - Better default arguments for datacard container
      - Record hover state in datacard container
  
  1.0.5:
    - Deploy:
      - Use docker-compose
    - Refactor:
      - Isolate qt gui configuration file
      - Move bibtex templates into qt module
      - Set name for each access key

  1.1.0:
    - Module Removal:
      - Remove lires_qt
  
  1.1.1:
    - User account udpate:
      - New user system with username, password and avatar
      - User can change name, password and avatar
      - Allocate dashboard page for user to manage their data
    - UI update:
      - Banner stick on top, hide on scroll down
      - Return home button on none-home page
      - Query dialog window style update
      - Improve summary window size
    - Fix:
      - AI summary none-english regex match error
  
  1.1.2:
    - New Features:
      - Dashboard user data management
      - Not auto complete on login
      - Update user settings via commandline
      - Save hash password instead of plain text
    - Developments and refactors:
      - "Rename: lrs-keyman -> lrs-user"
      - "Rename: setDefaultHeader -> allowCORS"
      - "Remove: Deprecate FileManipulatorVirtual class and Lires.api"
      - "Remove: Remove all configration entries"
    - Fix:
      - Check tag permission on data deletion
  
  1.2.0:
    - Release!:
      - Code release
    - Features:
      - Not reload backend database on reload
      - Close dialog on starting to collect arxiv daily
      - Add collected paper with tags
    - UI:
      - More compact layout
      - Tag panel style update
      - Color theme minor update
      - Update dashboard layout
    - Fix:
      - Allow revise empty password
  1.2.1:
    - Features:
      - Allow login page set backend via url parameters
      - Configuration eligibility check
      - Set tiny_vectordb compile configuration via configure file
      - Set maintainer information in environment variables during build process
    - Refactors:
      - Authenticated check at app page loading
    - UI:
      - Update about page, add link to github and not show version history by default
      - Update dashboard layout to flex
      - Use fade-in animation for home and reader page
  1.2.2:
    - Features:
      - Use websocket to synchronize data modification events
      - Feed page refresh button
      - Optionally cache text feature
    - UI:
      - Responsive page margin
      - Style recently read documents
    - Fix:
      - Fetch article number and type
  1.2.3:
    - Features:
      - Collect bibtex from various sources
      - Bibtex template
      - Default author and year for incomplete entry
      - Citation with APA and markdown formats
      - Login and logout events
      - Set backend url via url parameters
    - UI:
      - Update citation layout
      - Highlight add button on entering new tag
    - Fix:
      - Remove closed websocket connections on broadcasting
  1.2.4:
    - Features:
      - Add default backend handler
      - Collect arxiv paper information from client
      - Reset websocket on database reload
      - Server websocket connection check to close idle connections
    - UI: 
      - Change datacard cursor shape and expand animation
    - Fix:
      - Fetch from source popup hint
    - Refactors:
      - Use put and delete for doc modification
    - Deprecation:
      - Drop support for webpage archive
      - Remove backend deprecated code
  1.3.0:
    - Breaking changes:
      - API change - use /api/ prefix for all api endpoints
      - Remove lires web entry
      - Remove tauri GUI
    - Features:
      - Lires server serve frontend files
      - Allow citation input from endnote and nbib
      - Drag and drop to input citation
      - Keep login token if authenication failed
    - Refactor & Performance:
      - Use put and delete methods for avatar and image
      - Remove some unused handlers
      - Improve file adding performance
  1.3.1:
    - Features:
      - Prompt reload page on reach failed connection limit
      - Add user manual
    - Fix:
      - Space shortcut for open data editor window
    - Development chores:
      - Update dependencies
      - Auto pdf.js download
  1.3.2:
    - Features:
      - Set credentials via url parameters
      - Only two layout on reader page
      - Webpage bibtex template
    - UI:
      - Datapoint button style update
      - Add manual link when no data available
      - Store theme mode to localstorage
      - Theme mode change will affact reader, and trigger relevant events
    - Development:
      - Update pdf.js downloading script to inject url parameter hook
    - Fix:
      - Favicon.ico
  1.3.3:
    - Features:
      - Split entry cards to multiple pages for optimized rendering performance
      - Support refer to doc section id in markdown note
    - Perf:
      - Cache feature visualization request
    - Development:
      - PyPi package
      - Move tiny_vectordb to dependency
  1.3.4:
    - Perf:
      - Database commit transaction periodically
    - Development & Refactor:
      - Standalone lires-server module
      - Log files of each levels
      - Server stopping hooks
      - lires.utils module
    - Fix:
      - Rename hierarchical tag with whitespace
      - Broswer token saving
  1.3.5:
    - Fix:
      - User manage
  1.3.6:
    - Features:
      - Better logging
      - lrs-clear command
      - LRS_LOG_LEVEL environment variable
    - Performance:
      - Use aiohttp and aiofiles to imporve io
    - Development:
      - Test cases
    - Refactor:
      - lires.confReader -> lires.config
      - Remove lires.core.globalVar module
    - Fix:
      - Iserver connection error
      - Tiny_vectordb not flush to disk
  1.3.7:
    - Chore:
      - Update tiny_vectordb to 0.1.7
    - Fix:
      - Async add and remove entry
  1.3.8:
    - Performance:
      - Use memroy handler in front of file handler for logging
    - Chore:
      - LRS_FILE_LOG_LEVEL environment variable
    - Fix:
      - Concurrent featurize may cause resource conflict
  1.3.9:
    - Features:
      - Log checking TUI
      - Click tag bubble to toggle tag selection
      - Muted tag bubble for tag selection with no active data
    - Development:
      - Test case starting by watching iserver status
      - Bibtex test case
      - Remove datalist class
      - Remove leftover code
    - Fix:
      - Log file naming
  1.4.0:
    - Breaking changes:
      - Archetecture change - use micro-service
      - Rename lrs-resetconf -> lrs-reset
      - lrs-log and lrs-status commands
      - Include port range and database name in configuration file
    - Performance:
      - Async logging with log server
      - Async document database
      - Async image io
      - Limit torch max thread number
    - Fix:
      - Upload user avatar
  1.4.1:
    - Performace:
      - Async user database
      - Offload dimension reduction to iserver
    - Chore:
      - Colorize log server output
      - Bump tiny_vectordb version
    - Fix:
      - Server shutdown gracefully
      - User avatar update emit event
      - Database operations use dedicated cursor
  1.4.2:
    - UI:
      - Clickble reload button on connection lost
    - Rename:
      - lires iserver -> lires ai
      - lires lserver -> lires log
    - Performace:
      - Logging without waiting
    - Features:
      - Check registry status
      - Registry auto cleanup and re-register
      - Terminal log level environment variable
    - Improvement:
      - Cluster graceful shutdown
      - Better format for log server output
    - Fix:
      - Filename conflict if start multiple log servers simultaneously
      - Allow cross-cite websocket connection
      - Log server concurrent log timestamp
  1.4.3:
    - Features:
      - Drag and drop at home page to add entry
      - Add document on entry creation
      - Obsidian plugin
      - Cite as uuid
      - Misc template for bibtex
      - Use toml as cluster configuration file
      - Use data editor to add data on feed page
    - UI:
      - Bibtex editor not resizable
    - Refactors:
      - Lires web api fetcher object
      - Lires web utils
    - Fix:
      - Correctly handle websocket connection close
      - Client token not save on password change
      - Datapoint not reload on tag change
      - lrs-log check line count
  1.5.0:
    - Breaking changes:
      - Change database storage format
    - Features:
      - Support html and image document
    - UI:
      - Show credential on dashboard
  1.6.0:
    - Breaking changes:
      - Data-info API change
      - Frontend asynchrnous data loading
      - All search to server-side
      - Remove general search
    - Features:
      - Settings
      - Set page capacity
      - Paste to abstract without format
    - UI:
      - Larger bibtex text size
    - Refactors:
      - Frontend global connection store
      - Bump openai version
    - Perf:
      - Database reverse index
    - Fix:
      - Floating window use flex box for nested content
      - Async build vector index
      - Obsidian plugin
  1.6.1:
    - Features:
      - Remove user card from dashboard
      - Scatter plot toggle to settings
    - Improvements:
      - File type detection
      - Loading spinner on long-time data update
    - Fix:
      - Entry order
      - Search by feature&tag
      - Catch data not found error on datapoint creation
      - Update feature visualization and tag bubble on data change
  1.7.0:
    - Breaking changes:
      - Database file structure change, every user has their own database
      - Need a key or specify user on data request
    - UI:
      - New home page layout
      - User management to about page
      - Add link button to datacard
      - Reader use compact layout
    - Fix:
      - Query year range
  1.7.1:
    - Features:
      - Disk limit for each user
      - Search by year
      - No entry delete backup
    - Fix:
      - Entry delete tag update
  1.7.2:
    - Features:
      - Manage data attachments
      - Synchronize note update
      - Unsaved change hint on note editor
      - Reader show upload hint on empty document
    - UI:
      - Note preview button to editor
      - Show user storage in user management
    - Development:
      - Include session id in each request
      - Update lires-web dependencies
      - Store user token in cookie
    - Fix:
      - Search sort
      - Clean data on user logout
      - Possible user authentication attack
  1.7.3:
    - Features:
      - Backend feed server, with more categories and permanent storage
      - Allow user to set date and number of feed items
      - Able to merge log files
      - Javascript API
    - UI:
      - Feed page update
    - Fix:
      - Database `gets` sort
      - Database modification lock
      - Ensure websocket connection
  1.7.4:
    - Fix:
      - Failed load on empty database
      - Feed page time order
    - Documentation:
      - About page update
      - Document with VitePress
  1.7.5:
    - Features:
      - Python API
      - Invite user registration
      - Format bibtex on entry update
      - Static group id in config, depending on $LRS_HOME
      - Frontmatter for markdown note, support `links` tag
    - Chore:
      - tiny_vectordb to core dependency
    - UI:
      - Remove dashboard entry on reader's explore button
      - Change settings shortcut
    - Development:
      - Some api name change, to be more consistent
      - Tag rename and delete to `/database` endpoint
      - Not json encode datapoint update uuid parameter
      - Reserve `deploy_key` config for future use
      - API test page
    - Fix:
      - Docker doc build
      - Small document not pecepted
      - Link button wrong destination
      - Feed server deal with illegal bibtex entry