difflicious 0.12.0__tar.gz → 0.13.0__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 (184) hide show
  1. difflicious-0.13.0/.github/workflows/check-version-bump.yml +75 -0
  2. {difflicious-0.12.0 → difflicious-0.13.0}/CHANGELOG.md +22 -0
  3. {difflicious-0.12.0 → difflicious-0.13.0}/PKG-INFO +1 -1
  4. {difflicious-0.12.0 → difflicious-0.13.0}/package.json +0 -1
  5. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/__init__.py +1 -1
  6. {difflicious-0.12.0 → difflicious-0.13.0}/.dockerignore +0 -0
  7. {difflicious-0.12.0 → difflicious-0.13.0}/.github/workflows/auto-release.yml +0 -0
  8. {difflicious-0.12.0 → difflicious-0.13.0}/.github/workflows/ci.yml +0 -0
  9. {difflicious-0.12.0 → difflicious-0.13.0}/.github/workflows/docker-publish.yml +0 -0
  10. {difflicious-0.12.0 → difflicious-0.13.0}/.github/workflows/pages.yml +0 -0
  11. {difflicious-0.12.0 → difflicious-0.13.0}/.github/workflows/pypi-publish.yml +0 -0
  12. {difflicious-0.12.0 → difflicious-0.13.0}/.gitignore +0 -0
  13. {difflicious-0.12.0 → difflicious-0.13.0}/AGENTS.md +0 -0
  14. {difflicious-0.12.0 → difflicious-0.13.0}/CLAUDE.md +0 -0
  15. {difflicious-0.12.0 → difflicious-0.13.0}/CONTRIBUTING.md +0 -0
  16. {difflicious-0.12.0 → difflicious-0.13.0}/DEVELOPING.md +0 -0
  17. {difflicious-0.12.0 → difflicious-0.13.0}/Dockerfile +0 -0
  18. {difflicious-0.12.0 → difflicious-0.13.0}/INSTALLATION.md +0 -0
  19. {difflicious-0.12.0 → difflicious-0.13.0}/LICENSE +0 -0
  20. {difflicious-0.12.0 → difflicious-0.13.0}/PLAN.md +0 -0
  21. {difflicious-0.12.0 → difflicious-0.13.0}/README.md +0 -0
  22. {difflicious-0.12.0 → difflicious-0.13.0}/cilicious.sh +0 -0
  23. {difflicious-0.12.0 → difflicious-0.13.0}/docs/2025-11-18-alpine-component-architecture.md +0 -0
  24. {difflicious-0.12.0 → difflicious-0.13.0}/docs/CSS-STYLE-GUIDE.md +0 -0
  25. {difflicious-0.12.0 → difflicious-0.13.0}/docs/TROUBLESHOOTING.md +0 -0
  26. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/notes/2025-08-03-1009-claude-fixing-uncommon-off-by-one-error.md +0 -0
  27. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/notes/2025-08-19-1925-expandable-context.md +0 -0
  28. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/notes/2025-08-19-1925-troubleshooting-context-expansion-2025-07-29.md +0 -0
  29. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/notes/2025-11-18-alpine-js-migration-progress.md +0 -0
  30. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/notes/2025-11-18-alpine-js-migration-status.md +0 -0
  31. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/prompts/2025-08-19-1934-phase-1-css-foundation-dark-theme.md +0 -0
  32. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-07-29-1916-code-structure-refactoring-recommendations.md +0 -0
  33. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-07-29-1917-extract-context-expansion-module.md +0 -0
  34. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-07-29-1918-extract-business-logic-service-layer.md +0 -0
  35. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-07-30-1701-jinja2-server-side-diff-rendering.md +0 -0
  36. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-07-30-1730-virtual-scrolling-lazy-rendering.md +0 -0
  37. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-08-03-2106-typescript-migration-plan.md +0 -0
  38. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-08-04-2130-simplify-diff-logic-and-ui.md +0 -0
  39. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-08-18-1954-font-configuration-proposal.md +0 -0
  40. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-08-18-1954-font-implementation-plan.md +0 -0
  41. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-08-18-1954-font-implementation-summary.md +0 -0
  42. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-08-19-1430-dark-light-mode-implementation.md +0 -0
  43. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/proposals/2025-11-18-0130-alpine-js-dom-manipulation.md +0 -0
  44. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-07-29-2100-context-expansion-extraction-report.md +0 -0
  45. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-07-30-1647-diff-rendering-performance-analysis.md +0 -0
  46. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-07-30-1655-backend-migration-performance-analysis.md +0 -0
  47. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-08-18-1200-dead-code-analysis-report.md +0 -0
  48. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-09-22-1857-production-readiness-analysis.md +0 -0
  49. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-09-22-1949-ui-css-cleanup-analysis.md +0 -0
  50. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-10-30-2201-production-readiness-update.md +0 -0
  51. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-10-31-1253-test-coverage-analysis.md +0 -0
  52. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-10-31-1718-test-coverage-improvement-summary.md +0 -0
  53. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-10-31-1720-0.9-release-plan.md +0 -0
  54. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-11-05-1857-css-rationalization-analysis.md +0 -0
  55. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-11-05-2019-color-audit.md +0 -0
  56. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-11-05-2019-phase2-implementation-plan.md +0 -0
  57. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2025-11-17-1730-codebase-improvements-analysis.md +0 -0
  58. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/reports/2026-02-05-v1.0-release-readiness-audit.md +0 -0
  59. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-07-27-1256-project-setup-and-modern-python-packaging.md +0 -0
  60. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-07-27-1415-git-integration-and-security-implementation.md +0 -0
  61. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-07-27-1820-diff-parser-and-side-by-side-ui.md +0 -0
  62. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-07-28-0953-syntax-highlighting-implementation.md +0 -0
  63. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-07-28-1500-commit-comparison-and-ui-enhancements.md +0 -0
  64. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-07-28-1805-untracked-files-implementation-and-bugfix.md +0 -0
  65. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-07-31-1730-pygments-syntax-highlighting.compacted.md +0 -0
  66. {difflicious-0.12.0 → difflicious-0.13.0}/docs/internal/sessions/2025-11-18-0130-alpine-js-migration-implementation.md +0 -0
  67. {difflicious-0.12.0 → difflicious-0.13.0}/docs/javascript-modularization-plan.md +0 -0
  68. {difflicious-0.12.0 → difflicious-0.13.0}/docs/plans/2025-07-29-1015-expandable-context-feature.md +0 -0
  69. {difflicious-0.12.0 → difflicious-0.13.0}/docs/plans/2025-11-04-2318-gitpython-migration-plan.md +0 -0
  70. {difflicious-0.12.0 → difflicious-0.13.0}/docs/plans/2025-11-22-1.0-release-execution-plan.md +0 -0
  71. {difflicious-0.12.0 → difflicious-0.13.0}/docs/plans/2026-04-12-presentation-layer-separation.md +0 -0
  72. {difflicious-0.12.0 → difflicious-0.13.0}/docs/presentation-layer-separation.md +0 -0
  73. {difflicious-0.12.0 → difflicious-0.13.0}/docs/reference/app.js.reference +0 -0
  74. {difflicious-0.12.0 → difflicious-0.13.0}/docs/reference/diff-interactions.js.reference +0 -0
  75. {difflicious-0.12.0 → difflicious-0.13.0}/docs/screenshots/.gitkeep +0 -0
  76. {difflicious-0.12.0 → difflicious-0.13.0}/docs/screenshots/dark.png +0 -0
  77. {difflicious-0.12.0 → difflicious-0.13.0}/docs/screenshots/light.png +0 -0
  78. {difflicious-0.12.0 → difflicious-0.13.0}/docs/site/_config.yml +0 -0
  79. {difflicious-0.12.0 → difflicious-0.13.0}/docs/site/assets/logo.png +0 -0
  80. {difflicious-0.12.0 → difflicious-0.13.0}/docs/site/index.md +0 -0
  81. {difflicious-0.12.0 → difflicious-0.13.0}/docs/tailwind-design-system.md +0 -0
  82. {difflicious-0.12.0 → difflicious-0.13.0}/package-lock.json +0 -0
  83. {difflicious-0.12.0 → difflicious-0.13.0}/pnpm-lock.yaml +0 -0
  84. {difflicious-0.12.0 → difflicious-0.13.0}/postcss.config.cjs +0 -0
  85. {difflicious-0.12.0 → difflicious-0.13.0}/pyproject.toml +0 -0
  86. {difflicious-0.12.0 → difflicious-0.13.0}/scripts/screenshot.py +0 -0
  87. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/app.py +0 -0
  88. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/blueprints/__init__.py +0 -0
  89. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/blueprints/auto_reload_routes.py +0 -0
  90. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/blueprints/context_routes.py +0 -0
  91. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/blueprints/diff_routes.py +0 -0
  92. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/blueprints/git_routes.py +0 -0
  93. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/blueprints/helpers.py +0 -0
  94. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/blueprints/views.py +0 -0
  95. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/cli.py +0 -0
  96. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/config.py +0 -0
  97. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/diff_parser.py +0 -0
  98. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/dummy_data.json +0 -0
  99. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/git_operations.py +0 -0
  100. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/__init__.py +0 -0
  101. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/base_service.py +0 -0
  102. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/diff_service.py +0 -0
  103. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/dtos.py +0 -0
  104. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/exceptions.py +0 -0
  105. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/file_watcher.py +0 -0
  106. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/git_service.py +0 -0
  107. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/syntax_service.py +0 -0
  108. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/services/template_service.py +0 -0
  109. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/css/styles.css +0 -0
  110. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/css/tailwind.css +0 -0
  111. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/css/tailwind.input.css +0 -0
  112. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/data/language_map.json +0 -0
  113. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/alpine-init.js +0 -0
  114. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/components/fileComponent.js +0 -0
  115. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/components/groupComponent.js +0 -0
  116. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/components/hunkComponent.js +0 -0
  117. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/components/searchComponent.js +0 -0
  118. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/main.js +0 -0
  119. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/auto-reload.js +0 -0
  120. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/context-expansion-ui.js +0 -0
  121. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/context-expansion.js +0 -0
  122. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/design-system.js +0 -0
  123. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/dom-utils.js +0 -0
  124. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/full-diff.js +0 -0
  125. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/hunk-operations.js +0 -0
  126. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/navigation.js +0 -0
  127. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/search.js +0 -0
  128. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/theme.js +0 -0
  129. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/modules/toolbar.js +0 -0
  130. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/stores/diffStore.js +0 -0
  131. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/stores/searchStore.js +0 -0
  132. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/static/js/stores/themeStore.js +0 -0
  133. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/base.html +0 -0
  134. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/diff_file.html +0 -0
  135. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/diff_groups.html +0 -0
  136. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/diff_hunk.html +0 -0
  137. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/index.html +0 -0
  138. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/partials/empty_state.html +0 -0
  139. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/partials/global_controls.html +0 -0
  140. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/partials/loading_state.html +0 -0
  141. {difflicious-0.12.0 → difflicious-0.13.0}/src/difflicious/templates/partials/toolbar.html +0 -0
  142. {difflicious-0.12.0 → difflicious-0.13.0}/tailwind.config.cjs +0 -0
  143. {difflicious-0.12.0 → difflicious-0.13.0}/tests/__init__.py +0 -0
  144. {difflicious-0.12.0 → difflicious-0.13.0}/tests/conftest.py +0 -0
  145. {difflicious-0.12.0 → difflicious-0.13.0}/tests/integration/conftest.py +0 -0
  146. {difflicious-0.12.0 → difflicious-0.13.0}/tests/integration/test_api.py +0 -0
  147. {difflicious-0.12.0 → difflicious-0.13.0}/tests/integration/test_api_detailed.py +0 -0
  148. {difflicious-0.12.0 → difflicious-0.13.0}/tests/integration/test_frontend.py +0 -0
  149. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/auto-reload.test.js +0 -0
  150. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/components/fileComponent.test.js +0 -0
  151. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/components/groupComponent.test.js +0 -0
  152. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/components/hunkComponent.test.js +0 -0
  153. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/context-expansion-ui.test.js +0 -0
  154. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/context-expansion.test.js +0 -0
  155. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/design-system.test.js +0 -0
  156. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/diff-state-persistence.test.js.old +0 -0
  157. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/diffStore-actions.test.js +0 -0
  158. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/dom-utils.test.js +0 -0
  159. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/full-diff.test.js +0 -0
  160. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/navigation.test.js +0 -0
  161. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/search.test.js +0 -0
  162. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/setup.js +0 -0
  163. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/stores/diffStore.test.js +0 -0
  164. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/stores/searchStore.test.js +0 -0
  165. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/stores/themeStore.test.js +0 -0
  166. {difflicious-0.12.0 → difflicious-0.13.0}/tests/js/toolbar.test.js +0 -0
  167. {difflicious-0.12.0 → difflicious-0.13.0}/tests/sample_01.diff +0 -0
  168. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/__init__.py +0 -0
  169. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/test_base_service.py +0 -0
  170. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/test_diff_service.py +0 -0
  171. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/test_exceptions.py +0 -0
  172. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/test_file_watcher.py +0 -0
  173. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/test_git_service.py +0 -0
  174. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/test_syntax_service.py +0 -0
  175. {difflicious-0.12.0 → difflicious-0.13.0}/tests/services/test_template_service.py +0 -0
  176. {difflicious-0.12.0 → difflicious-0.13.0}/tests/test_app.py +0 -0
  177. {difflicious-0.12.0 → difflicious-0.13.0}/tests/test_auto_reload_routes.py +0 -0
  178. {difflicious-0.12.0 → difflicious-0.13.0}/tests/test_cli.py +0 -0
  179. {difflicious-0.12.0 → difflicious-0.13.0}/tests/test_git_operations.py +0 -0
  180. {difflicious-0.12.0 → difflicious-0.13.0}/tests/unit/test_diff_parser_line_count.py +0 -0
  181. {difflicious-0.12.0 → difflicious-0.13.0}/tests/unit/test_diff_parser_side_by_side.py +0 -0
  182. {difflicious-0.12.0 → difflicious-0.13.0}/tests/unit/test_diff_rendering.py +0 -0
  183. {difflicious-0.12.0 → difflicious-0.13.0}/tests/unit/test_parser.py +0 -0
  184. {difflicious-0.12.0 → difflicious-0.13.0}/uv.lock +0 -0
@@ -0,0 +1,75 @@
1
+ name: Check Version Bump
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - 'src/difflicious/__init__.py'
7
+ - 'CHANGELOG.md'
8
+ pull_request_target:
9
+ paths:
10
+ - 'src/difflicious/__init__.py'
11
+ - 'CHANGELOG.md'
12
+
13
+ permissions:
14
+ pull-requests: write
15
+ contents: read
16
+
17
+ jobs:
18
+ check-version-bump:
19
+ runs-on: ubuntu-latest
20
+ name: Verify version was bumped
21
+
22
+ steps:
23
+ - name: Checkout base (main)
24
+ uses: actions/checkout@v4
25
+ with:
26
+ ref: main
27
+ path: base
28
+
29
+ - name: Checkout PR head
30
+ uses: actions/checkout@v4
31
+ with:
32
+ path: head
33
+
34
+ - name: Extract version from main
35
+ id: main_version
36
+ run: |
37
+ version=$(grep '__version__' base/src/difflicious/__init__.py | sed -E 's/.*"([^"]+)".*/\1/')
38
+ echo "version=$version" >> $GITHUB_OUTPUT
39
+ echo "Main version: $version"
40
+
41
+ - name: Extract version from PR
42
+ id: pr_version
43
+ run: |
44
+ version=$(grep '__version__' head/src/difflicious/__init__.py | sed -E 's/.*"([^"]+)".*/\1/')
45
+ echo "version=$version" >> $GITHUB_OUTPUT
46
+ echo "PR version: $version"
47
+
48
+ - name: Compare versions
49
+ id: compare
50
+ run: |
51
+ main_version="${{ steps.main_version.outputs.version }}"
52
+ pr_version="${{ steps.pr_version.outputs.version }}"
53
+
54
+ if [ "$main_version" = "$pr_version" ]; then
55
+ echo "❌ Version was not bumped"
56
+ echo "Main: $main_version"
57
+ echo "PR: $pr_version"
58
+ exit 1
59
+ fi
60
+
61
+ echo "✅ Version was bumped"
62
+ echo "Main: $main_version → PR: $pr_version"
63
+
64
+ - name: Comment on PR if version not bumped
65
+ if: failure()
66
+ uses: actions/github-script@v7
67
+ with:
68
+ github-token: ${{ secrets.GITHUB_TOKEN }}
69
+ script: |
70
+ github.rest.issues.createComment({
71
+ issue_number: context.issue.number,
72
+ owner: context.repo.owner,
73
+ repo: context.repo.repo,
74
+ body: '❌ **Version Check Failed**\n\nThis PR does not have a version bump in `src/difflicious/__init__.py`. Please update the version to proceed.\n\nIf this is an intentional release without version changes, a maintainer can override this check.'
75
+ })
@@ -5,6 +5,28 @@ All notable changes to difflicious will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.13.0] - 2026-04-14
9
+
10
+ ### Release Automation & Infrastructure
11
+
12
+ Automated version management and release processes to streamline development workflows.
13
+
14
+ ### Added
15
+ - **Automated version bump enforcement** - GitHub Action that requires version updates on main branch merges
16
+ - **Branch protection integration** - Enforces changelog discipline with override capability
17
+
18
+ ### Improved
19
+ - **Frontend animations** - Smoother transitions and reduced visual flashing during state changes
20
+ - **CSS architecture** - Consolidated theme styling and improved dark mode consistency
21
+ - **Signal handling** - Better graceful shutdown for SIGINT/SIGTERM
22
+ - **JavaScript selectors** - Standardized hooks with `js-` prefix for maintainability
23
+
24
+ ### Fixed
25
+ - **CSS x-cloak** - Added missing rule to prevent FOUC (flash of unstyled content)
26
+ - **Expansion state** - Eliminated flash of incorrect state on page load
27
+ - **Dark mode backgrounds** - Consistent file header styling across themes
28
+ - **Queue warnings** - Resolved Waitress concurrency warnings
29
+
8
30
  ## [0.12.0] - 2026-04-14
9
31
 
10
32
  ### Presentation Layer Separation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: difflicious
3
- Version: 0.12.0
3
+ Version: 0.13.0
4
4
  Summary: A sleek web-based git diff visualization tool for developers
5
5
  Project-URL: Homepage, https://github.com/insipid/difflicious
6
6
  Project-URL: Repository, https://github.com/insipid/difflicious
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "difflicious",
3
- "version": "1.0.0",
4
3
  "description": "A sleek web-based git diff visualization tool",
5
4
  "scripts": {
6
5
  "lint:js": "eslint src/difflicious/static/js/**/*.js",
@@ -1,5 +1,5 @@
1
1
  """Difflicious - A sleek web-based git diff visualization tool."""
2
2
 
3
- __version__ = "0.12.0"
3
+ __version__ = "0.13.0"
4
4
  __author__ = "Drew"
5
5
  __description__ = "A sleek web-based git diff visualization tool for developers"
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