basic-memory 0.1.2__tar.gz → 0.2.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.

Potentially problematic release.


This version of basic-memory might be problematic. Click here for more details.

Files changed (142) hide show
  1. basic_memory-0.2.0/.github/workflows/pr-title.yml +41 -0
  2. basic_memory-0.2.0/.github/workflows/release.yml +83 -0
  3. {basic_memory-0.1.2 → basic_memory-0.2.0}/CHANGELOG.md +18 -0
  4. {basic_memory-0.1.2 → basic_memory-0.2.0}/PKG-INFO +1 -1
  5. basic_memory-0.2.0/installer/Basic.icns +0 -0
  6. basic_memory-0.2.0/installer/icon.svg +64 -0
  7. basic_memory-0.2.0/installer/make_icons.sh +27 -0
  8. {basic_memory-0.1.2 → basic_memory-0.2.0}/installer/setup.py +4 -0
  9. {basic_memory-0.1.2 → basic_memory-0.2.0}/pyproject.toml +1 -1
  10. {basic_memory-0.1.2 → basic_memory-0.2.0}/uv.lock +1 -1
  11. basic_memory-0.1.2/.github/workflows/release.yml +0 -46
  12. {basic_memory-0.1.2 → basic_memory-0.2.0}/.github/workflows/test.yml +0 -0
  13. {basic_memory-0.1.2 → basic_memory-0.2.0}/.gitignore +0 -0
  14. {basic_memory-0.1.2 → basic_memory-0.2.0}/.python-version +0 -0
  15. {basic_memory-0.1.2 → basic_memory-0.2.0}/CITATION.cff +0 -0
  16. {basic_memory-0.1.2 → basic_memory-0.2.0}/CODE_OF_CONDUCT.md +0 -0
  17. {basic_memory-0.1.2 → basic_memory-0.2.0}/CONTRIBUTING.md +0 -0
  18. {basic_memory-0.1.2 → basic_memory-0.2.0}/LICENSE +0 -0
  19. {basic_memory-0.1.2 → basic_memory-0.2.0}/Makefile +0 -0
  20. {basic_memory-0.1.2 → basic_memory-0.2.0}/README.md +0 -0
  21. {basic_memory-0.1.2 → basic_memory-0.2.0}/alembic.ini +0 -0
  22. {basic_memory-0.1.2 → basic_memory-0.2.0}/basic-memory.md +0 -0
  23. {basic_memory-0.1.2 → basic_memory-0.2.0}/installer/installer.py +0 -0
  24. {basic_memory-0.1.2 → basic_memory-0.2.0}/memory.json +0 -0
  25. {basic_memory-0.1.2 → basic_memory-0.2.0}/scripts/install.sh +0 -0
  26. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/__init__.py +0 -0
  27. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/alembic/README +0 -0
  28. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/alembic/env.py +0 -0
  29. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/alembic/migrations.py +0 -0
  30. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/alembic/script.py.mako +0 -0
  31. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  32. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/api/__init__.py +0 -0
  33. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/api/app.py +0 -0
  34. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/api/routers/__init__.py +0 -0
  35. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/api/routers/knowledge_router.py +0 -0
  36. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/api/routers/memory_router.py +0 -0
  37. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/api/routers/resource_router.py +0 -0
  38. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/api/routers/search_router.py +0 -0
  39. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/__init__.py +0 -0
  40. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/app.py +0 -0
  41. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/commands/__init__.py +0 -0
  42. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/commands/db.py +0 -0
  43. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
  44. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/commands/mcp.py +0 -0
  45. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/commands/status.py +0 -0
  46. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/commands/sync.py +0 -0
  47. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/cli/main.py +0 -0
  48. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/config.py +0 -0
  49. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/db.py +0 -0
  50. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/deps.py +0 -0
  51. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/file_utils.py +0 -0
  52. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/markdown/__init__.py +0 -0
  53. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/markdown/entity_parser.py +0 -0
  54. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/markdown/markdown_processor.py +0 -0
  55. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/markdown/plugins.py +0 -0
  56. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/markdown/schemas.py +0 -0
  57. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/markdown/utils.py +0 -0
  58. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/__init__.py +0 -0
  59. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/async_client.py +0 -0
  60. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/server.py +0 -0
  61. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/tools/__init__.py +0 -0
  62. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/tools/knowledge.py +0 -0
  63. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/tools/memory.py +0 -0
  64. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/tools/notes.py +0 -0
  65. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/tools/search.py +0 -0
  66. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/mcp/tools/utils.py +0 -0
  67. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/models/__init__.py +0 -0
  68. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/models/base.py +0 -0
  69. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/models/knowledge.py +0 -0
  70. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/models/search.py +0 -0
  71. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/repository/__init__.py +0 -0
  72. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/repository/entity_repository.py +0 -0
  73. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/repository/observation_repository.py +0 -0
  74. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/repository/relation_repository.py +0 -0
  75. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/repository/repository.py +0 -0
  76. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/repository/search_repository.py +0 -0
  77. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/__init__.py +0 -0
  78. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/base.py +0 -0
  79. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/delete.py +0 -0
  80. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/discovery.py +0 -0
  81. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/memory.py +0 -0
  82. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/request.py +0 -0
  83. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/response.py +0 -0
  84. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/schemas/search.py +0 -0
  85. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/__init__.py +0 -0
  86. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/context_service.py +0 -0
  87. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/entity_service.py +0 -0
  88. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/exceptions.py +0 -0
  89. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/file_service.py +0 -0
  90. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/link_resolver.py +0 -0
  91. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/search_service.py +0 -0
  92. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/services/service.py +0 -0
  93. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/sync/__init__.py +0 -0
  94. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/sync/file_change_scanner.py +0 -0
  95. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/sync/sync_service.py +0 -0
  96. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/sync/utils.py +0 -0
  97. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/sync/watch_service.py +0 -0
  98. {basic_memory-0.1.2 → basic_memory-0.2.0}/src/basic_memory/utils.py +0 -0
  99. {basic_memory-0.1.2 → basic_memory-0.2.0}/tasks.md +0 -0
  100. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/api/conftest.py +0 -0
  101. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/api/test_knowledge_router.py +0 -0
  102. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/api/test_memory_router.py +0 -0
  103. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/api/test_resource_router.py +0 -0
  104. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/api/test_search_router.py +0 -0
  105. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/cli/test_import_memory_json.py +0 -0
  106. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/cli/test_status.py +0 -0
  107. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/cli/test_sync.py +0 -0
  108. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/conftest.py +0 -0
  109. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/edit_file_test.py +0 -0
  110. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/__init__.py +0 -0
  111. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/test_entity_parser.py +0 -0
  112. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/test_markdown_plugins.py +0 -0
  113. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/test_markdown_processor.py +0 -0
  114. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/test_observation_edge_cases.py +0 -0
  115. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/test_parser_edge_cases.py +0 -0
  116. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/test_relation_edge_cases.py +0 -0
  117. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/markdown/test_task_detection.py +0 -0
  118. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/mcp/conftest.py +0 -0
  119. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/mcp/test_tool_get_entity.py +0 -0
  120. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/mcp/test_tool_knowledge.py +0 -0
  121. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/mcp/test_tool_memory.py +0 -0
  122. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/mcp/test_tool_notes.py +0 -0
  123. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/mcp/test_tool_search.py +0 -0
  124. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/mcp/test_tool_utils.py +0 -0
  125. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/repository/test_entity_repository.py +0 -0
  126. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/repository/test_observation_repository.py +0 -0
  127. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/repository/test_relation_repository.py +0 -0
  128. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/repository/test_repository.py +0 -0
  129. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/schemas/test_memory_url.py +0 -0
  130. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/schemas/test_schemas.py +0 -0
  131. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/schemas/test_search.py +0 -0
  132. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/services/test_context_service.py +0 -0
  133. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/services/test_entity_service.py +0 -0
  134. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/services/test_file_service.py +0 -0
  135. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/services/test_link_resolver.py +0 -0
  136. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/services/test_search_service.py +0 -0
  137. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/sync/test_file_change_scanner.py +0 -0
  138. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/sync/test_sync_service.py +0 -0
  139. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/sync/test_watch_service.py +0 -0
  140. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/test_basic_memory.py +0 -0
  141. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/utils/test_file_utils.py +0 -0
  142. {basic_memory-0.1.2 → basic_memory-0.2.0}/tests/utils/test_permalink_formatting.py +0 -0
@@ -0,0 +1,41 @@
1
+ name: "Pull Request Title"
2
+
3
+ on:
4
+ pull_request:
5
+ types:
6
+ - opened
7
+ - edited
8
+ - synchronize
9
+
10
+ jobs:
11
+ main:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: amannn/action-semantic-pull-request@v5
15
+ env:
16
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17
+ with:
18
+ # Configure allowed types based on what we want in our changelog
19
+ types: |
20
+ feat
21
+ fix
22
+ chore
23
+ docs
24
+ style
25
+ refactor
26
+ perf
27
+ test
28
+ build
29
+ ci
30
+ # Require at least one from scope list (optional)
31
+ scopes: |
32
+ core
33
+ cli
34
+ api
35
+ mcp
36
+ sync
37
+ ui
38
+ deps
39
+ installer
40
+ # Allow breaking changes (needs "!" after type/scope)
41
+ requireScopeForBreakingChange: true
@@ -0,0 +1,83 @@
1
+ name: Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version_type:
7
+ description: 'Type of version bump (major, minor, patch)'
8
+ required: true
9
+ default: 'patch'
10
+ type: choice
11
+ options:
12
+ - patch
13
+ - minor
14
+ - major
15
+
16
+ jobs:
17
+ release:
18
+ runs-on: ubuntu-latest
19
+ concurrency: release
20
+ permissions:
21
+ id-token: write
22
+ contents: write
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ with:
27
+ fetch-depth: 0
28
+
29
+ - name: Python Semantic Release
30
+ id: release
31
+ uses: python-semantic-release/python-semantic-release@master
32
+ with:
33
+ github_token: ${{ secrets.GITHUB_TOKEN }}
34
+
35
+ - name: Publish to PyPI
36
+ uses: pypa/gh-action-pypi-publish@release/v1
37
+ if: steps.release.outputs.released == 'true'
38
+ with:
39
+ password: ${{ secrets.PYPI_TOKEN }}
40
+
41
+ - name: Publish to GitHub Release Assets
42
+ uses: python-semantic-release/publish-action@v9.8.9
43
+ if: steps.release.outputs.released == 'true'
44
+ with:
45
+ github_token: ${{ secrets.GITHUB_TOKEN }}
46
+ tag: ${{ steps.release.outputs.tag }}
47
+
48
+ build-macos:
49
+ needs: release
50
+ if: needs.release.outputs.released == 'true'
51
+ runs-on: macos-latest
52
+ steps:
53
+ - uses: actions/checkout@v4
54
+ with:
55
+ ref: ${{ needs.release.outputs.tag }}
56
+
57
+ - name: Set up Python
58
+ uses: actions/setup-python@v5
59
+ with:
60
+ python-version: '3.12'
61
+
62
+ - name: Install uv
63
+ run: |
64
+ curl -LsSf https://astral.sh/uv/install.sh | sh
65
+ echo "$HOME/.cargo/bin" >> $GITHUB_PATH
66
+
67
+ - name: Build macOS installer
68
+ run: |
69
+ uv pip install -e ".[dev]"
70
+ cd installer
71
+ uv run python setup.py bdist_mac
72
+
73
+ - name: Zip macOS installer
74
+ run: |
75
+ cd installer/dist
76
+ zip -r "Basic-Memory-Installer-${{ needs.release.outputs.tag }}.zip" "Basic Memory Installer.app"
77
+
78
+ - name: Upload macOS installer
79
+ uses: softprops/action-gh-release@v1
80
+ with:
81
+ files: installer/dist/Basic-Memory-Installer-${{ needs.release.outputs.tag }}.zip
82
+ tag_name: ${{ needs.release.outputs.tag }}
83
+ token: ${{ secrets.GITHUB_TOKEN }}
@@ -1,6 +1,24 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v0.2.0 (2025-02-14)
5
+
6
+ ### Features
7
+
8
+ - Build installer via github action ([#7](https://github.com/basicmachines-co/basic-memory/pull/7),
9
+ [`7c381a5`](https://github.com/basicmachines-co/basic-memory/commit/7c381a59c962053c78da096172e484f28ab47e96))
10
+
11
+ * feat(ci): build installer via github action
12
+
13
+ * enforce conventional commits in PR titles
14
+
15
+ * feat: add icon to installer
16
+
17
+ ---------
18
+
19
+ Co-authored-by: phernandez <phernandez@basicmachines.co>
20
+
21
+
4
22
  ## v0.1.2 (2025-02-14)
5
23
 
6
24
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.1.2
3
+ Version: 0.2.0
4
4
  Summary: Local-first knowledge management combining Zettelkasten with knowledge graphs
5
5
  Project-URL: Homepage, https://github.com/basicmachines-co/basic-memory
6
6
  Project-URL: Repository, https://github.com/basicmachines-co/basic-memory
Binary file
@@ -0,0 +1,64 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
3
+ <!-- Background -->
4
+ <rect x="0" y="0" width="512" height="512" rx="64" fill="#111111"/>
5
+
6
+ <!-- Define arrowhead marker -->
7
+ <defs>
8
+ <marker id="arrowhead"
9
+ markerWidth="10"
10
+ markerHeight="10"
11
+ refX="8"
12
+ refY="5"
13
+ orient="auto">
14
+ <path d="M 0 0 L 10 5 L 0 10 Z"
15
+ fill="#00cc00"/>
16
+ </marker>
17
+ </defs>
18
+
19
+ <!-- State 1 (initial) -->
20
+ <circle cx="156" cy="256" r="30" fill="none" stroke="#00cc00" stroke-width="3"/>
21
+
22
+ <!-- State 2 (accept) -->
23
+ <circle cx="356" cy="176" r="34" fill="none" stroke="#00cc00" stroke-width="3"/>
24
+ <circle cx="356" cy="176" r="28" fill="none" stroke="#00cc00" stroke-width="3"/>
25
+
26
+ <!-- State 3 (accept) -->
27
+ <circle cx="356" cy="336" r="34" fill="none" stroke="#00cc00" stroke-width="3"/>
28
+ <circle cx="356" cy="336" r="28" fill="none" stroke="#00cc00" stroke-width="3"/>
29
+
30
+ <!-- Initial arrow -->
31
+ <path d="M 96 256 L 126 256"
32
+ stroke="#00cc00" stroke-width="3" fill="none"
33
+ marker-end="url(#arrowhead)"/>
34
+
35
+ <!-- State transitions -->
36
+ <!-- 1 -> 2 -->
37
+ <path d="M 180 240
38
+ Q 260 200, 320 176"
39
+ stroke="#00cc00" stroke-width="3" fill="none"
40
+ marker-end="url(#arrowhead)"/>
41
+
42
+ <!-- 1 -> 3 -->
43
+ <path d="M 180 272
44
+ Q 260 312, 320 336"
45
+ stroke="#00cc00" stroke-width="3" fill="none"
46
+ marker-end="url(#arrowhead)"/>
47
+
48
+ <!-- Self loops -->
49
+ <path d="M 356 142
50
+ Q 396 142, 396 176
51
+ Q 396 210, 356 210
52
+ Q 316 210, 316 176
53
+ Q 316 142, 356 142"
54
+ stroke="#00cc00" stroke-width="2" fill="none"
55
+ marker-end="url(#arrowhead)"/>
56
+
57
+ <path d="M 356 302
58
+ Q 396 302, 396 336
59
+ Q 396 370, 356 370
60
+ Q 316 370, 316 336
61
+ Q 316 302, 356 302"
62
+ stroke="#00cc00" stroke-width="2" fill="none"
63
+ marker-end="url(#arrowhead)"/>
64
+ </svg>
@@ -0,0 +1,27 @@
1
+ #!/bin/bash
2
+
3
+ # Convert SVG to PNG at various required sizes
4
+ rsvg-convert -h 16 -w 16 icon.svg > icon_16x16.png
5
+ rsvg-convert -h 32 -w 32 icon.svg > icon_32x32.png
6
+ rsvg-convert -h 128 -w 128 icon.svg > icon_128x128.png
7
+ rsvg-convert -h 256 -w 256 icon.svg > icon_256x256.png
8
+ rsvg-convert -h 512 -w 512 icon.svg > icon_512x512.png
9
+
10
+ # Create iconset directory
11
+ mkdir -p Basic.iconset
12
+
13
+ # Move files into iconset with Mac-specific names
14
+ cp icon_16x16.png Basic.iconset/icon_16x16.png
15
+ cp icon_32x32.png Basic.iconset/icon_16x16@2x.png
16
+ cp icon_32x32.png Basic.iconset/icon_32x32.png
17
+ cp icon_128x128.png Basic.iconset/icon_32x32@2x.png
18
+ cp icon_256x256.png Basic.iconset/icon_128x128.png
19
+ cp icon_512x512.png Basic.iconset/icon_256x256.png
20
+ cp icon_512x512.png Basic.iconset/icon_512x512.png
21
+
22
+ # Convert iconset to icns
23
+ iconutil -c icns Basic.iconset
24
+
25
+ # Clean up
26
+ rm -rf Basic.iconset
27
+ rm icon_*.png
@@ -14,15 +14,18 @@ if sys.platform == "win32":
14
14
  "include_msvcr": True, # Include Visual C++ runtime
15
15
  })
16
16
  target_name = "Basic Memory Installer.exe"
17
+ icon = None # We'll add Windows icon later
17
18
  else: # darwin
18
19
  base = None # Don't use GUI base for macOS
19
20
  target_name = "Basic Memory Installer"
21
+ icon = "Basic.icns"
20
22
 
21
23
  executables = [
22
24
  Executable(
23
25
  script="installer.py",
24
26
  target_name=target_name,
25
27
  base=base,
28
+ icon=icon
26
29
  )
27
30
  ]
28
31
 
@@ -34,6 +37,7 @@ setup(
34
37
  "build_exe": build_exe_options,
35
38
  "bdist_mac": {
36
39
  "bundle_name": "Basic Memory Installer",
40
+ "iconfile": icon if sys.platform == "darwin" else None
37
41
  }
38
42
  },
39
43
  executables=executables,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "basic-memory"
3
- version = "0.1.2"
3
+ version = "0.2.0"
4
4
  description = "Local-first knowledge management combining Zettelkasten with knowledge graphs"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12.1"
@@ -70,7 +70,7 @@ wheels = [
70
70
 
71
71
  [[package]]
72
72
  name = "basic-memory"
73
- version = "0.1.1"
73
+ version = "0.1.2"
74
74
  source = { editable = "." }
75
75
  dependencies = [
76
76
  { name = "aiosqlite" },
@@ -1,46 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- workflow_dispatch:
5
- inputs:
6
- version_type:
7
- description: 'Type of version bump (major, minor, patch)'
8
- required: true
9
- default: 'patch'
10
- type: choice
11
- options:
12
- - patch
13
- - minor
14
- - major
15
-
16
- jobs:
17
- release:
18
- runs-on: ubuntu-latest
19
- concurrency: release
20
- permissions:
21
- id-token: write
22
- contents: write
23
-
24
- steps:
25
- - uses: actions/checkout@v4
26
- with:
27
- fetch-depth: 0
28
-
29
- - name: Python Semantic Release
30
- id: release
31
- uses: python-semantic-release/python-semantic-release@master
32
- with:
33
- github_token: ${{ secrets.GITHUB_TOKEN }}
34
-
35
- - name: Publish to PyPI
36
- uses: pypa/gh-action-pypi-publish@release/v1
37
- if: steps.release.outputs.released == 'true'
38
- with:
39
- password: ${{ secrets.PYPI_TOKEN }}
40
-
41
- - name: Publish to GitHub Release Assets
42
- uses: python-semantic-release/publish-action@v9.8.9
43
- if: steps.release.outputs.released == 'true'
44
- with:
45
- github_token: ${{ secrets.GITHUB_TOKEN }}
46
- tag: ${{ steps.release.outputs.tag }}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes