aird 0.4.23.dev0__tar.gz → 0.4.23.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/PKG-INFO +1 -1
  2. aird-0.4.23.dev2/aird/static/favicon.png +0 -0
  3. aird-0.4.23.dev2/aird/static/favicon.svg +12 -0
  4. aird-0.4.23.dev2/aird/static/img/logo-icon.png +0 -0
  5. aird-0.4.23.dev2/aird/static/img/logo-mark.svg +15 -0
  6. aird-0.4.23.dev2/aird/static/img/logo-text.png +0 -0
  7. aird-0.4.23.dev2/aird/static/img/logo.png +0 -0
  8. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/browse/app.js +12 -3
  9. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/browse.html +1 -1
  10. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird.egg-info/PKG-INFO +1 -1
  11. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird.egg-info/SOURCES.txt +6 -0
  12. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/setup.py +4 -1
  13. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/LICENSE +0 -0
  14. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/README.md +0 -0
  15. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/__init__.py +0 -0
  16. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/__main__.py +0 -0
  17. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/app_context.py +0 -0
  18. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/cloud/__init__.py +0 -0
  19. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/config.py +0 -0
  20. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/constants/__init__.py +0 -0
  21. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/constants/admin.py +0 -0
  22. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/constants/file_ops.py +0 -0
  23. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/constants/input_limits.py +0 -0
  24. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/constants/media.py +0 -0
  25. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/__init__.py +0 -0
  26. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/events.py +0 -0
  27. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/file_operations.py +0 -0
  28. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/filter_expression.py +0 -0
  29. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/input_validation.py +0 -0
  30. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/mmap_handler.py +0 -0
  31. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/security.py +0 -0
  32. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/share_root.py +0 -0
  33. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/core/websocket_manager.py +0 -0
  34. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/database/__init__.py +0 -0
  35. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/database/db.py +0 -0
  36. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/database/feature_flags.py +0 -0
  37. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/database/ldap.py +0 -0
  38. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/__init__.py +0 -0
  39. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/audit.py +0 -0
  40. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/config.py +0 -0
  41. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/favorites.py +0 -0
  42. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/network_shares.py +0 -0
  43. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/policies.py +0 -0
  44. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/policy_decisions.py +0 -0
  45. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/policy_seeds.py +0 -0
  46. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/quota.py +0 -0
  47. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/resource_tags.py +0 -0
  48. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/schema.py +0 -0
  49. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/shares.py +0 -0
  50. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/user_attributes.py +0 -0
  51. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/db/users.py +0 -0
  52. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/domain/__init__.py +0 -0
  53. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/domain/contracts.py +0 -0
  54. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/domain/models.py +0 -0
  55. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/__init__.py +0 -0
  56. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/abac_handlers.py +0 -0
  57. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/admin_handlers.py +0 -0
  58. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/api_handlers.py +0 -0
  59. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/auth_handlers.py +0 -0
  60. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/base_handler.py +0 -0
  61. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/constants.py +0 -0
  62. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/file_op_handlers.py +0 -0
  63. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/health_handler.py +0 -0
  64. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/p2p_handlers.py +0 -0
  65. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/share_handlers.py +0 -0
  66. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/handlers/view_handlers.py +0 -0
  67. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/main.py +0 -0
  68. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/network_share_manager.py +0 -0
  69. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/__init__.py +0 -0
  70. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/audit_service.py +0 -0
  71. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/config_service.py +0 -0
  72. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/event_subscribers.py +0 -0
  73. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/favorites_service.py +0 -0
  74. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/network_share_service.py +0 -0
  75. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/p2p_service.py +0 -0
  76. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/policy_service.py +0 -0
  77. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/quota_service.py +0 -0
  78. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/share_service.py +0 -0
  79. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/tag_service.py +0 -0
  80. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/services/user_service.py +0 -0
  81. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/sql_identifiers.py +0 -0
  82. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/css/app.css +0 -0
  83. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/aird-core.js +0 -0
  84. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/bg-canvas.js +0 -0
  85. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/common/command-palette.js +0 -0
  86. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/components/folder-picker.js +0 -0
  87. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/feature-flags-live.js +0 -0
  88. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/login-ui.js +0 -0
  89. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/p2p/app.js +0 -0
  90. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/p2p/mediator.js +0 -0
  91. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/p2p/qr-adapter.js +0 -0
  92. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/p2p/signaling-service.js +0 -0
  93. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/p2p/state-machine.js +0 -0
  94. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/p2p/transfer-service.js +0 -0
  95. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/pages/p2p-page.js +0 -0
  96. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/pages/super-search.js +0 -0
  97. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/share/app.js +0 -0
  98. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/theme.js +0 -0
  99. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/vendor/pdf.min.js +0 -0
  100. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/vendor/pdf.worker.min.js +0 -0
  101. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/static/js/vendor/qrcode-browser.js +0 -0
  102. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/_admin_tabs.html +0 -0
  103. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/_app_nav_header.html +0 -0
  104. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/_bg_canvas.html +0 -0
  105. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/_theme_early.html +0 -0
  106. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/_theme_login_corner.html +0 -0
  107. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin.html +0 -0
  108. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_audit.html +0 -0
  109. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_ldap.html +0 -0
  110. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_login.html +0 -0
  111. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_network_shares.html +0 -0
  112. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_policies.html +0 -0
  113. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_tags.html +0 -0
  114. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_user_attributes.html +0 -0
  115. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/admin_users.html +0 -0
  116. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/directory.html +0 -0
  117. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/edit.html +0 -0
  118. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/error.html +0 -0
  119. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/file.html +0 -0
  120. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/ldap_config_create.html +0 -0
  121. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/ldap_config_edit.html +0 -0
  122. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/login.html +0 -0
  123. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/p2p_transfer.html +0 -0
  124. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/profile.html +0 -0
  125. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/share.html +0 -0
  126. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/shared_list.html +0 -0
  127. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/super_search.html +0 -0
  128. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/tagged_files.html +0 -0
  129. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/token_verification.html +0 -0
  130. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/user_create.html +0 -0
  131. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/templates/user_edit.html +0 -0
  132. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/utils/__init__.py +0 -0
  133. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird/utils/util.py +0 -0
  134. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird.egg-info/dependency_links.txt +0 -0
  135. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird.egg-info/entry_points.txt +0 -0
  136. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird.egg-info/requires.txt +0 -0
  137. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/aird.egg-info/top_level.txt +0 -0
  138. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/setup.cfg +0 -0
  139. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/__init__.py +0 -0
  140. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/conftest.py +0 -0
  141. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/handler_helpers.py +0 -0
  142. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_admin_handlers.py +0 -0
  143. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_api_handlers.py +0 -0
  144. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_architecture_conformance.py +0 -0
  145. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_auth_handlers.py +0 -0
  146. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_auth_handlers_extended.py +0 -0
  147. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_base_handler.py +0 -0
  148. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_base_handler_pep.py +0 -0
  149. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_cloud.py +0 -0
  150. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_config.py +0 -0
  151. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_core_file_operations.py +0 -0
  152. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_database_db.py +0 -0
  153. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_database_feature_flags.py +0 -0
  154. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_database_ldap.py +0 -0
  155. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_database_shares.py +0 -0
  156. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_database_users.py +0 -0
  157. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_database_users_hashing.py +0 -0
  158. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_db.py +0 -0
  159. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_file_op_handlers.py +0 -0
  160. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_filter_expression.py +0 -0
  161. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_main.py +0 -0
  162. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_mmap_handler.py +0 -0
  163. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_multi_user.py +0 -0
  164. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_network_shares.py +0 -0
  165. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_p2p_handlers.py +0 -0
  166. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_password_hashing.py +0 -0
  167. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_policy_service.py +0 -0
  168. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_rate_limit.py +0 -0
  169. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_security.py +0 -0
  170. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_security_comprehensive.py +0 -0
  171. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_share_handlers.py +0 -0
  172. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_super_search_handler.py +0 -0
  173. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_tag_service.py +0 -0
  174. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_util.py +0 -0
  175. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_view_handlers.py +0 -0
  176. {aird-0.4.23.dev0 → aird-0.4.23.dev2}/tests/test_websocket_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aird
3
- Version: 0.4.23.dev0
3
+ Version: 0.4.23.dev2
4
4
  Summary: Aird - A lightweight web-based file browser, editor, and streamer with real-time capabilities
5
5
  Home-page: https://github.com/blinkerbit/aird
6
6
  Author: Viswantha Srinivas P
Binary file
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none">
2
+ <defs>
3
+ <linearGradient id="doc" x1="4" y1="4" x2="30" y2="36" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0%" stop-color="#818cf8"/>
5
+ <stop offset="100%" stop-color="#6366f1"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <path d="M6 8a4 4 0 0 1 4-4h14l10 10v18a4 4 0 0 1-4 4H10a4 4 0 0 1-4-4V8z" fill="url(#doc)"/>
9
+ <path d="M24 4v10h10" fill="#a5b4fc" fill-opacity="0.5"/>
10
+ <path d="M13 30 Q10 26 12 22 Q14 18 18 16" stroke="white" stroke-width="2.5" stroke-linecap="round" fill="none"/>
11
+ <path d="M15 13l3 3 3-3" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none" transform="translate(0.5,-0.5)"/>
12
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none">
2
+ <defs>
3
+ <linearGradient id="doc" x1="4" y1="4" x2="30" y2="36" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0%" stop-color="#818cf8"/>
5
+ <stop offset="100%" stop-color="#6366f1"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <!-- Document body with rounded corners -->
9
+ <path d="M6 8a4 4 0 0 1 4-4h14l10 10v18a4 4 0 0 1-4 4H10a4 4 0 0 1-4-4V8z" fill="url(#doc)"/>
10
+ <!-- Folded corner -->
11
+ <path d="M24 4v10h10" fill="#a5b4fc" fill-opacity="0.5"/>
12
+ <!-- Upward swoosh arrow -->
13
+ <path d="M13 30 Q10 26 12 22 Q14 18 18 16" stroke="white" stroke-width="2.5" stroke-linecap="round" fill="none"/>
14
+ <path d="M15 13l3 3 3-3" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none" transform="translate(0.5,-0.5)"/>
15
+ </svg>
@@ -168,7 +168,9 @@
168
168
  const info = document.createElement("span");
169
169
  info.style.display = "block"; info.style.fontSize = "12px";
170
170
  const cancelBtn = document.createElement("button");
171
- cancelBtn.textContent = "Cancel"; cancelBtn.style.marginTop = "2px";
171
+ cancelBtn.type = "button";
172
+ cancelBtn.className = "btn btn-ghost btn-xs mt-1";
173
+ cancelBtn.textContent = "Cancel";
172
174
  item.appendChild(nameEl); item.appendChild(bar); item.appendChild(info); item.appendChild(cancelBtn);
173
175
  progressContainer.appendChild(item);
174
176
 
@@ -231,8 +233,9 @@
231
233
  info.style.display = "block";
232
234
  info.style.fontSize = "12px";
233
235
  const cancelBtn = document.createElement("button");
236
+ cancelBtn.type = "button";
237
+ cancelBtn.className = "btn btn-ghost btn-xs mt-1";
234
238
  cancelBtn.textContent = "Cancel";
235
- cancelBtn.style.marginTop = "2px";
236
239
 
237
240
  item.appendChild(nameEl);
238
241
  item.appendChild(bar);
@@ -347,18 +350,24 @@
347
350
  const elapsed = (Date.now() - item.start) / 1000;
348
351
  const speed = loaded / (elapsed || 1);
349
352
  const remaining = Math.max(0, totalSize - loaded);
353
+ const chunkNote = item.chunkProgress
354
+ ? ` · ${item.chunksDone || 0}/${item.chunkProgress.size} chunks`
355
+ : "";
350
356
  item.bar.value = percent;
351
- item.info.textContent = `${Math.round(percent)}% - ${formatBytes(loaded)} of ${formatBytes(totalSize)} (${formatBytes(remaining)} left) @ ${formatBytes(speed)}/s`;
357
+ item.info.textContent = `${Math.round(percent)}% - ${formatBytes(loaded)} of ${formatBytes(totalSize)} (${formatBytes(remaining)} left) @ ${formatBytes(speed)}/s${chunkNote}`;
352
358
  }
353
359
 
354
360
  function syncUploadProgress(item, totalSize) {
355
361
  let loaded = 0;
362
+ let chunksDone = 0;
356
363
  if (item.chunkProgress) {
357
364
  for (const part of item.chunkProgress.values()) {
358
365
  loaded += Math.min(part.loaded, part.size);
366
+ if (part.loaded >= part.size) chunksDone += 1;
359
367
  }
360
368
  }
361
369
  item.bytesUploaded = loaded;
370
+ item.chunksDone = chunksDone;
362
371
  updateUploadProgress(item, totalSize);
363
372
  }
364
373
 
@@ -379,7 +379,7 @@
379
379
  canTag: {{ 'true' if current_user and current_user.get('role') == 'admin' else 'false' }}
380
380
  };
381
381
  </script>
382
- <script src="/static/js/browse/app.js?v=17"></script>
382
+ <script src="/static/js/browse/app.js?v=18"></script>
383
383
 
384
384
  <!-- Inline tag popover (per-row + button) -->
385
385
  <div id="rowTagPopoverBackdrop" class="row-tag-popover-backdrop" hidden></div>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aird
3
- Version: 0.4.23.dev0
3
+ Version: 0.4.23.dev2
4
4
  Summary: Aird - A lightweight web-based file browser, editor, and streamer with real-time capabilities
5
5
  Home-page: https://github.com/blinkerbit/aird
6
6
  Author: Viswantha Srinivas P
@@ -74,7 +74,13 @@ aird/services/quota_service.py
74
74
  aird/services/share_service.py
75
75
  aird/services/tag_service.py
76
76
  aird/services/user_service.py
77
+ aird/static/favicon.png
78
+ aird/static/favicon.svg
77
79
  aird/static/css/app.css
80
+ aird/static/img/logo-icon.png
81
+ aird/static/img/logo-mark.svg
82
+ aird/static/img/logo-text.png
83
+ aird/static/img/logo.png
78
84
  aird/static/js/aird-core.js
79
85
  aird/static/js/bg-canvas.js
80
86
  aird/static/js/feature-flags-live.js
@@ -15,13 +15,16 @@ install_requires = [
15
15
 
16
16
  setup(
17
17
  name="aird",
18
- version="0.4.23.dev0",
18
+ version="0.4.23.dev2",
19
19
  packages=find_packages(),
20
20
  package_data={"aird": [
21
21
  "templates/*.html",
22
22
  "static/css/*.css",
23
+ "static/css/**/*.css",
23
24
  "static/js/*.js",
24
25
  "static/js/**/*.js",
26
+ "static/img/*",
27
+ "static/favicon.*",
25
28
  ]},
26
29
  entry_points={
27
30
  "console_scripts": [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes