Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
282 commits
Select commit Hold shift + click to select a range
2f07859
resolve bug with removing identifier from searchengine leading to bre…
marc-vdm Sep 5, 2025
6e5d1cb
add functionality for adding, changing and removing identifiers (exce…
marc-vdm Sep 5, 2025
0bd672c
add functionality for adding and removing full databases
marc-vdm Sep 6, 2025
4791c56
improve matching speed after metadata conversion to ProductModel
marc-vdm Sep 7, 2025
532cac2
make autocomplete suggestions aware of context of other words in quer…
marc-vdm Sep 7, 2025
42c3593
ProductModel suggestions now include literal matches better
marc-vdm Sep 7, 2025
4ec98fb
Update line-edit autocompleter base class
marc-vdm Sep 8, 2025
72e01d1
Add marking of unknown words to search
marc-vdm Sep 9, 2025
fbeb455
drop literal search results
marc-vdm Sep 9, 2025
59e8e18
marginal speed increases for initializing/updating for base class
marc-vdm Sep 9, 2025
e04c20e
marginal speed increases for initializing/updating for base class
marc-vdm Sep 9, 2025
1bedc53
Implement multiprocessing to increase speed for text cleaning during …
marc-vdm Sep 9, 2025
169a7cb
Fix bug with incorrect text length settings
marc-vdm Sep 9, 2025
fe10a1d
Merge branch 'major' into major_search
marc-vdm Sep 9, 2025
7efab02
Fix to allow testing of metadatastore
marc-vdm Sep 9, 2025
06747b8
Refactor textedit to proper location
marc-vdm Sep 12, 2025
90583c6
Refactor textedit to proper location
marc-vdm Sep 12, 2025
fecbcf2
Implement search caching for faster results
marc-vdm Sep 16, 2025
3c3bc6d
Merge branch 'major' into major_search
marc-vdm Sep 16, 2025
9734ad2
bold only current word, not all search suggested words
marc-vdm Sep 16, 2025
e342f22
enable dealing with empty metadata in tests
marc-vdm Sep 16, 2025
8d3c05c
Moving stuff around
mrvisscher Oct 26, 2025
e46fe3e
Refactor import statement for SimpleDistributionPlot to improve modul…
mrvisscher Oct 26, 2025
6a78fea
Refactor plotting classes to inherit from ABPlot and remove deprecate…
mrvisscher Oct 26, 2025
ca25ea1
Refactor import statements to replace references to UncertaintyWizard…
mrvisscher Oct 26, 2025
5a64991
First iteration of uncertainty dialog
mrvisscher Oct 26, 2025
acf2382
Second iteration of uncertainty dialog
mrvisscher Oct 28, 2025
e003f28
Moving stuff around
mrvisscher Oct 26, 2025
8baaf27
Refactor import statement for SimpleDistributionPlot to improve modul…
mrvisscher Oct 26, 2025
324db64
Refactor plotting classes to inherit from ABPlot and remove deprecate…
mrvisscher Oct 26, 2025
d5418aa
Refactor import statements to replace references to UncertaintyWizard…
mrvisscher Oct 26, 2025
61f7d2b
First iteration of uncertainty dialog
mrvisscher Oct 26, 2025
f07e9f7
Second iteration of uncertainty dialog
mrvisscher Oct 28, 2025
23250a4
Merge branch 'major-ui-refactor' of https://github.com/mrvisscher/act…
mrvisscher Oct 28, 2025
94b67c7
Refactor UncertaintyDialog to add get_uncertainty_dict method and upd…
mrvisscher Oct 28, 2025
61c958c
Refactor CFUncertaintyModify to replace UncertaintyWizard with Uncert…
mrvisscher Oct 28, 2025
6d5fa5c
Fix import statement in MethodNew to use dialogs module instead of wi…
mrvisscher Oct 28, 2025
8f5624d
Enhance uncertainty modification handling in ParameterUncertaintyModi…
mrvisscher Oct 28, 2025
1c38ddc
Add MainWindow and MenuBar classes for improved UI structure and navi…
mrvisscher Oct 28, 2025
9dc5595
Refactor imports to use dialogs module and update MainWindow referenc…
mrvisscher Oct 28, 2025
d0a18d9
Fix qicons acting up in pydev debugger
mrvisscher Oct 28, 2025
b506ec9
Replace standard logging with Loguru for improved logging functionali…
mrvisscher Oct 29, 2025
1b7159b
Remove unused actions
mrvisscher Oct 29, 2025
1ab7375
Fix painter resource management by ensuring painter.end() is called a…
mrvisscher Oct 29, 2025
006afa3
Refactor parameters handling by renaming ParametersPage import and up…
mrvisscher Nov 3, 2025
73fdb46
Implement ABTreeModel for hierarchical data representation with lazy …
mrvisscher Nov 3, 2025
c42432c
Enhance DatabaseProductsPane and ABTreeModel with improved data handl…
mrvisscher Nov 3, 2025
0d7d679
Refactor ABTreeModel to use a dictionary for query management and upd…
mrvisscher Nov 3, 2025
7b64580
Comment out filtered_columns updates in setColumnFilter method to pre…
mrvisscher Nov 3, 2025
5db4510
Add chunk_size parameter to ProductModel initialization in DatabasePr…
mrvisscher Nov 4, 2025
afcebbd
Enhance group method in ABTreeModel to unpack iterables into separate…
mrvisscher Nov 4, 2025
7c09dd1
Refactor parent_path method in ABTreeModel to filter out NaN values a…
mrvisscher Nov 4, 2025
48b9835
Update displayData method in ABTreeModel to handle branch nodes corre…
mrvisscher Nov 4, 2025
beb4ccf
Refactor DatabasesPane and DatabasesView to improve model initializat…
mrvisscher Nov 4, 2025
f12bd8e
Optimize row index lookups in ABTreeModel by implementing a pre-compu…
mrvisscher Nov 5, 2025
5466005
Refactor ImpactCategoriesPane and ImpactCategoriesView for improved l…
mrvisscher Nov 5, 2025
0e19771
Refactor index method in ABTreeModel to remove redundant index check …
mrvisscher Nov 5, 2025
6ff359f
Refactor load and sync methods in ImpactCategoriesPane to ensure cons…
mrvisscher Nov 5, 2025
210ab00
Enhance ABTreeModel and ABNewTreeView with branch node handling. Impl…
mrvisscher Nov 5, 2025
a9742c4
Remove event handling for deferred delete in DatabaseProductsPane to …
mrvisscher Nov 5, 2025
e6abca7
Refactor set_dataframe method in ABTreeModel to ensure a default inte…
mrvisscher Nov 5, 2025
b381f9e
Add StringDelegate to ABNewTreeView for improved item rendering
mrvisscher Nov 5, 2025
fe7db55
Fix index creation in ABTreeModel and improve sort method handling fo…
mrvisscher Nov 5, 2025
bdb4912
Fix column name handling in sorting logic for empty DataFrame in ABTr…
mrvisscher Nov 5, 2025
7888df1
app rework
mrvisscher Nov 6, 2025
ec6506d
Refactor metadata handling across the application
mrvisscher Nov 6, 2025
2d614d3
Refactor import statements to use commontasks module for better organ…
mrvisscher Nov 6, 2025
dd0e1a7
Refactor import statements for bw2data and sqlite3_lci_db to improve …
mrvisscher Nov 6, 2025
15c36a9
Refactor import statements to use commontasks module for improved org…
mrvisscher Nov 6, 2025
8d6bfb7
Refactor application imports and enhance singleton pattern in MainWin…
mrvisscher Nov 6, 2025
6516612
Refactored actions module into app module
mrvisscher Nov 6, 2025
256fed2
commenting out unused signals to prepare for deletion
mrvisscher Nov 7, 2025
d424a50
Fixing the new model and view framework for the exchanges tab
mrvisscher Nov 7, 2025
0347db9
Add GraphBackend class for improved communication between Python and …
mrvisscher Nov 9, 2025
911ff62
Fixed the data tab to the new table
mrvisscher Nov 9, 2025
882e75a
Move activity details parameters tab
mrvisscher Nov 9, 2025
7bbf0bc
Optimizations
mrvisscher Nov 10, 2025
acf0930
Add multiprocessing support for worker sub-process flow
mrvisscher Nov 10, 2025
5c25fbf
Move calculation setups to new TableView paradigm
mrvisscher Nov 10, 2025
1997bb3
Add a simple tooltip to the ProductModel
mrvisscher Nov 10, 2025
8c976ca
Move new parameters page to new table
mrvisscher Nov 11, 2025
be53a3f
Update the formula editors
mrvisscher Nov 11, 2025
ced3357
Settings stuff
mrvisscher Nov 12, 2025
ea7486b
Settings stuff 2
mrvisscher Nov 12, 2025
2af81e3
Settings stuff 3
mrvisscher Nov 12, 2025
8a0abdc
Settings stuff 4
mrvisscher Nov 12, 2025
ad4834a
Working bw dir switching
mrvisscher Nov 12, 2025
b4bc910
Switch to dark mode on settings change
mrvisscher Nov 12, 2025
4be0424
Integrate projects into settings
mrvisscher Nov 12, 2025
1bc1b8b
Refactor main window and settings management to support dynamic pane …
mrvisscher Nov 12, 2025
2781de1
Tabs stuff
mrvisscher Nov 12, 2025
fe35918
Better tab widgets
mrvisscher Nov 13, 2025
c14cda6
Set tab position in settings
mrvisscher Nov 13, 2025
668f5b8
Merge pull request #1608 from mrvisscher/major-ui-refactor
mrvisscher Nov 17, 2025
033d49c
Reimplement uncertainty for the parameter table
mrvisscher Nov 17, 2025
d05e8f8
Reimplement uncertainty for the parameter tab in the activity details
mrvisscher Nov 17, 2025
0905cca
Reimplement uncertainty for the characterization factors
mrvisscher Nov 17, 2025
e6a2c10
New Tree View header fixes
mrvisscher Nov 17, 2025
fd0e0ef
Apply parameter template button to scenario section
mrvisscher Nov 17, 2025
4cd75d2
Column search fixes
mrvisscher Nov 18, 2025
fa627a5
Group parameter page by parameter type
mrvisscher Nov 18, 2025
dc75fc6
Move ABTreeView to be main solution
mrvisscher Nov 18, 2025
3072b3c
Split up the parameter page for maintainability
mrvisscher Nov 18, 2025
f0b1d9c
Merge branch 'fork/marc-vdm/major_search' into major-search
mrvisscher Nov 18, 2025
ed48dfc
Initial reimplementation of Marc's search
mrvisscher Nov 18, 2025
89d3e68
Skip linking page when nothing to link
mrvisscher Nov 21, 2025
d467c0d
Updates to the ABWizard
mrvisscher Nov 21, 2025
8a7a0a7
Updates to EI and excel importer for better flow
mrvisscher Nov 21, 2025
5539943
First iteration on the import preview dialog
mrvisscher Nov 21, 2025
02ea3d9
Changes to the wizard setup
mrvisscher Nov 24, 2025
9434e10
Update searcher to work with no database
mrvisscher Nov 24, 2025
9a42dba
Full project search dialog
mrvisscher Nov 24, 2025
9803481
Showing unlinked exchanges
mrvisscher Nov 24, 2025
c569115
Simple view for the database_products table
mrvisscher Nov 25, 2025
73353c9
UI changes for the table_view
mrvisscher Nov 25, 2025
fbd8f2c
Update to node selection tool
mrvisscher Nov 25, 2025
9d7d9a7
Search to return dataframes
mrvisscher Nov 25, 2025
40bce35
Parameters for search
mrvisscher Nov 25, 2025
95a3210
Drag and drop to ProductViews
mrvisscher Nov 25, 2025
2cf0ea3
Keyboard actions
mrvisscher Nov 25, 2025
5c3da84
Move from node to card delegate
mrvisscher Nov 27, 2025
cb0b561
Updated node_tab info
mrvisscher Nov 27, 2025
d61f523
Edge tab for import
mrvisscher Nov 27, 2025
3b58700
Add exchange link icons
mrvisscher Nov 27, 2025
d4a18c4
Card font sizing fix
mrvisscher Nov 27, 2025
8abc88d
Stuff
mrvisscher Dec 1, 2025
fc9cb77
Keeping tree state when linking
mrvisscher Dec 1, 2025
b0cc5ff
Fix column filtering in grouped model
mrvisscher Dec 1, 2025
b1c8a3b
Fix sorting and filtering on grouped columns
mrvisscher Dec 1, 2025
f1c2eea
Fixed overlay error in dragdrop
mrvisscher Dec 1, 2025
e2b15ba
Fixed sorting on full search
mrvisscher Dec 1, 2025
362e05d
Fix branch spanning for inserted rows
mrvisscher Dec 1, 2025
b9ea70f
Add nodes_to_excel function for exporting nodes as HTML table
mrvisscher Dec 1, 2025
8d5aa7f
Fixed quick search being out of order
mrvisscher Dec 1, 2025
dfd61c3
Fixed some card display bugs
mrvisscher Dec 1, 2025
3658bbe
Fixed broken exchange context menu
mrvisscher Dec 1, 2025
a5bc384
Fixed broken exchange context menu
mrvisscher Dec 2, 2025
0999733
Caching the MDS
mrvisscher Dec 2, 2025
569a375
node updates now register in searchindex
marc-vdm Dec 2, 2025
3a9cb2d
Merge branch 'major-search+importers' into major-search+importers_mm
marc-vdm Dec 2, 2025
b99d923
Quicker tables
mrvisscher Dec 2, 2025
568face
Merge pull request #4 from marc-vdm/major-search+importers_mm
mrvisscher Dec 2, 2025
7bebb33
Fix print statement
mrvisscher Dec 2, 2025
542bfa9
Setting excel data threaded because loading exchanges takes time
mrvisscher Dec 2, 2025
b21adb4
Stop updater breaking the mds when an activity is emited as changed w…
mrvisscher Dec 2, 2025
15d3158
Set a new logs folder
mrvisscher Dec 2, 2025
1252c62
dataframe sync fix
mrvisscher Dec 2, 2025
2242ab1
dataframe sync fix
mrvisscher Dec 2, 2025
9eb3dfa
ID column to Int64 instead of int64
mrvisscher Dec 4, 2025
af19851
Cached metadata checks
mrvisscher Dec 4, 2025
198bf9a
Make expensive model sorting opt-in
mrvisscher Dec 4, 2025
05118c0
Table optimizations
mrvisscher Dec 4, 2025
5faaf90
Sorting in the CF model
mrvisscher Dec 4, 2025
e830ba2
Updating the search index on mds changes (Adding DBS doesn't work yet)
mrvisscher Dec 4, 2025
947aab8
MDS model with a chunk_size
mrvisscher Dec 5, 2025
2d89944
Showing and deleting broken parameter groups
mrvisscher Dec 5, 2025
cc91571
MDS searcher signal fix
mrvisscher Dec 5, 2025
772b6d9
Excel linking using MDS
mrvisscher Dec 5, 2025
3404f74
Enable database relinking
mrvisscher Dec 5, 2025
29a5b63
Hide allocation factor of non-production exchanges
mrvisscher Dec 5, 2025
5f4caff
Node select to ctrl+shift+F
mrvisscher Dec 5, 2025
8fde7a2
Better search dialog and button
mrvisscher Dec 5, 2025
8c970d3
logging syncs
mrvisscher Dec 6, 2025
d1440f0
Fix formula edit import bug
mrvisscher Dec 6, 2025
7bed7f4
Fix search test import bug
mrvisscher Dec 6, 2025
6eb104e
Fix windows seg fault in testing
mrvisscher Dec 6, 2025
2b79254
Changed widget debug log
mrvisscher Dec 6, 2025
601a68a
No mp in base searchengine
mrvisscher Dec 8, 2025
4ddbcc2
Fix tabwidget init signature
mrvisscher Dec 8, 2025
1a124f0
CTW is part of the main_window
mrvisscher Dec 8, 2025
82f2d10
Deleting initiated pages on MainWindow delete
mrvisscher Dec 8, 2025
3d63030
Don't double-sync CS pane
mrvisscher Dec 8, 2025
8453181
Trying to fix segfault during tests
mrvisscher Dec 8, 2025
008c736
Trying to fix segfault during tests
mrvisscher Dec 8, 2025
fad76cb
Trying to fix segfault during tests
mrvisscher Dec 8, 2025
57b3161
Don't write empty on database duplicate
mrvisscher Dec 8, 2025
6457b95
Wait for full database load during test config
mrvisscher Dec 8, 2025
a457374
Fix CS actions using deprecated signals
mrvisscher Dec 8, 2025
fd843ff
Delete redundant tests
mrvisscher Dec 8, 2025
2683d99
Fixing tests
mrvisscher Dec 8, 2025
1c245ac
Fixing tests
mrvisscher Dec 8, 2025
412ae1f
Fixing tests - copy mdf
mrvisscher Dec 9, 2025
929007d
Fixing tests - thread-lock mdf
mrvisscher Dec 9, 2025
dc59f1f
Fixing tests - set-default on ABWizard
mrvisscher Dec 9, 2025
ec2ff4a
Fixing tests - waiting for threads
mrvisscher Dec 9, 2025
896cd75
Fixing tests
mrvisscher Dec 9, 2025
11effce
Fixing tests
mrvisscher Dec 9, 2025
8696ca1
Fixing tests
mrvisscher Dec 9, 2025
bbcb029
Fixing tests
mrvisscher Dec 9, 2025
e92588c
Fixing tests
mrvisscher Dec 9, 2025
ea8e45c
Fixing tests
mrvisscher Dec 9, 2025
225b13e
Fixing tests
mrvisscher Dec 9, 2025
42182d9
Fixing tests
mrvisscher Dec 9, 2025
5943f6f
Fixing tests
mrvisscher Dec 9, 2025
9805a26
Fixing tests
mrvisscher Dec 9, 2025
f25ef8b
Fixing tests
mrvisscher Dec 9, 2025
9dbc23f
Application documentation
mrvisscher Dec 10, 2025
32c17a5
Merge branch 'major-search+importers' of https://github.com/mrvissche…
mrvisscher Dec 10, 2025
15b59cc
Fixing tests
mrvisscher Dec 10, 2025
aa398c1
Fixing tests
mrvisscher Dec 10, 2025
6f0d725
Merge remote-tracking branch 'origin/major-search+importers' into maj…
mrvisscher Dec 10, 2025
6c2f4a0
Cleaning up the mds
mrvisscher Dec 10, 2025
24842ac
Add SYNC log level
mrvisscher Dec 10, 2025
8a9bdfc
Some logging changes
mrvisscher Dec 10, 2025
8c6ae46
Remove old settings
mrvisscher Dec 10, 2025
9d04b4a
Remove deprecated docs
mrvisscher Dec 10, 2025
e2e5347
Updates to top level modules
mrvisscher Dec 10, 2025
f025498
UI refactoring
mrvisscher Dec 10, 2025
7c43c07
Clean up workflows
mrvisscher Dec 10, 2025
d4dc736
Workflow readme
mrvisscher Dec 10, 2025
d62ca0b
fixed setup.py
mrvisscher Dec 10, 2025
cb35f0a
Merge pull request #1615 from mrvisscher/major-search+importers
mrvisscher Dec 10, 2025
f6eb603
First go at redoing readme's
mrvisscher Dec 10, 2025
1422c92
Exchange icons push
mrvisscher Dec 10, 2025
9b727ed
Readmes
mrvisscher Dec 10, 2025
19d6b51
Deferred syncing
mrvisscher Dec 11, 2025
baf9d61
Readme update
mrvisscher Dec 11, 2025
53ad743
Signal logging
mrvisscher Dec 11, 2025
b16ed48
Fix project param bug on empty project
mrvisscher Dec 11, 2025
1ec9624
Parameter menu fixes
mrvisscher Dec 11, 2025
2159e24
Fix activity parameter section
mrvisscher Dec 11, 2025
636245f
Fix sorting errors
mrvisscher Dec 11, 2025
2f5b8ee
Fixed substitution
mrvisscher Dec 11, 2025
8dedec2
MDS settings and living without a searcher
mrvisscher Dec 11, 2025
e044d01
Clear metadatastore cache from settings
mrvisscher Dec 11, 2025
3d74fa8
Reloading project using F5
mrvisscher Dec 11, 2025
fd8472d
Bump bw_functional
mrvisscher Dec 11, 2025
9c948b5
Plugin settings and loading
mrvisscher Dec 12, 2025
7a586cb
Building executable action
mrvisscher Dec 12, 2025
96f4ba4
Building executable action
mrvisscher Dec 12, 2025
b2e31f1
Building executable action
mrvisscher Dec 12, 2025
d574b28
Building executable action
mrvisscher Dec 12, 2025
ed22cb5
Building executable action
mrvisscher Dec 12, 2025
9dccdb6
Building executable action
mrvisscher Dec 12, 2025
0b343a3
Building executable action
mrvisscher Dec 12, 2025
6bef201
Building executable action
mrvisscher Dec 12, 2025
bd40077
Building executable action
mrvisscher Dec 12, 2025
164e05b
Building executable action
mrvisscher Dec 12, 2025
6bea3a2
Try adding pypardiso dlls
mrvisscher Dec 12, 2025
cfdaab3
Try adding pypardiso dlls
mrvisscher Dec 12, 2025
63cf54b
Fix setup IC deletion
mrvisscher Dec 12, 2025
241cd22
Fix executable building
mrvisscher Dec 12, 2025
d6c396f
Reenable tests
mrvisscher Dec 12, 2025
6cb2034
Fast calculations on executable
mrvisscher Dec 16, 2025
9927406
Update of the installation documentation to warn users of vens with A…
bsteubing Mar 19, 2026
ec44bdb
Merge branch 'major' into beta
bsteubing Mar 20, 2026
0d544d2
Update dependency versions and replace np.NaN with np.nan for consist…
bsteubing Mar 22, 2026
7d12283
Beta reduce pins (#1645)
bsteubing Mar 22, 2026
a44086f
Revert commit to version 547cbd32442a485b5e6b87f1c0b49bb69427ffb5. Ac…
bsteubing Mar 22, 2026
997daac
Restore commit for 6cb20346dbeb74fbd2ced7feb27e8b1cd7f544c8
bsteubing Mar 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
192 changes: 192 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
# GitHub Actions Workflows

This document describes the GitHub Actions workflows used in the Activity Browser project.

## Overview

The Activity Browser project uses five GitHub Actions workflows to automate testing, deployment, and project management tasks:

1. **Automated Testing** - Runs tests on every push and PR
2. **Canary Installation** - Daily installation checks to catch dependency issues
3. **Beta Deployment** - Publishes beta releases to PyPI and Anaconda
4. **Stable Release** - Creates releases and publishes to Anaconda
5. **Milestone Comments** - Automatically notifies users when issues are resolved in releases

---

## 1. Automated Testing (`testing.yaml`)

**Trigger:** Push or pull request to the `major` branch

**Purpose:** Ensures code quality by running the test suite across multiple operating systems and Python versions.

### Matrix Strategy
- **Operating Systems:** Ubuntu (latest), Windows (latest), macOS 15, macOS (latest)
- **Python Versions:** 3.10, 3.11, 3.12
- **Total combinations:** 12 test runs per trigger

### Steps
1. Checkout code
2. Set up Python for the specified version
3. Install Qt libraries (Linux only)
4. Update pip, setuptools, and wheel
5. Install package with testing dependencies: `pip install .[testing]`
6. Run pytest with minimal output: `pytest -s --no-header --no-summary -q`

### Environment
- Sets `QT_QPA_PLATFORM=offscreen` for headless GUI testing
- Uses `fail-fast: false` to run all combinations even if some fail

---

## 2. Canary Installation (`install-canary.yaml`)

**Trigger:** Scheduled daily at 7:00 AM UTC (cron: `0 7 * * *`)

**Purpose:** Proactively detects dependency issues by performing fresh installations of Activity Browser from PyPI daily.

### Matrix Strategy
- **Operating Systems:** Ubuntu (latest), Windows (latest), macOS 15, macOS (latest)
- **Python Versions:** 3.10, 3.11, 3.12
- **Timeout:** 12 minutes per job

### Steps
1. Checkout code
2. Set up Python
3. Install activity-browser from PyPI (not from source)
4. Generate environment info with `pip freeze`
5. Upload frozen requirements as artifact for each OS/Python combination

### Notes
- Uses `bash -e {0}` shell to exit on error
- Helps catch breaking changes in dependencies before users encounter them
- Artifacts show exact dependency versions that successfully installed

---

## 3. Beta Deployment (`python-package-deploy.yml`)

**Trigger:** Push to `beta` branch or any tag

**Purpose:** Publishes beta versions to PyPI (test and production) and Anaconda Cloud.

### Version Scheme
- Beta version format: `3.0.0b<N>` where N is the commit count since commit `199b6c3`
- Calculated dynamically: `git rev-list 199b6c3..HEAD --count`

### Steps
1. Checkout with full git history (`fetch-depth: "0"`)
2. Calculate and set version number
3. Set up Python 3.11
4. Install `build` package
5. Build wheel and source distribution
6. **PyPI Publishing:**
- Publish to Test PyPI (with `skip-existing: true`)
- Publish to production PyPI
7. **Conda Publishing:**
- Set up Conda environment from `.github/conda-envs/build.yml`
- Build Conda package: `conda build -c conda-forge -c cmutel ./recipe/`
- Upload to Anaconda Cloud using `CONDA_LCA` secret token

### Permissions
- Requires `id-token: write` for PyPI trusted publishing

---

## 4. Stable Release (`release.yaml`)

**Trigger:** Push of any git tag

**Purpose:** Creates GitHub releases with auto-generated changelogs and publishes stable versions to Anaconda.

### Steps
1. Checkout code
2. **Generate Changelog:**
- Uses `mikepenz/release-changelog-builder-action@v4`
- Configuration from `.github/changelog-configuration.json`
- Builds changelog from PRs with labels
3. **Create GitHub Release:**
- Uses `ncipollo/release-action@v1`
- Includes generated changelog as release notes
- Targets `main` branch commit
4. **Build and Upload Conda Package:**
- Set up Conda environment (Python 3.11)
- Build with `conda build recipe/`
- Upload to Anaconda using `CONDA_UPLOAD_TOKEN` secret
5. **Update Wiki:**
- Runs `.github/scripts/update_wiki.sh` to automatically update documentation

### Notes
- Only runs on tagged commits (version releases)
- Creates public GitHub releases visible to users
- Updates project wiki documentation automatically

---

## 5. Milestone Comments (`comment-milestoned-issues.yaml`)

**Trigger:** When a milestone is closed

**Purpose:** Automatically notifies users on closed issues when their issue has been implemented in a release.

### Steps
1. Uses `actions/github-script@v5` to run JavaScript automation
2. Gets milestone number and title from the event
3. Lists all issues associated with the milestone
4. For each closed issue (not PRs):
- Posts a comment with:
- Link to the new release
- Instructions to update Activity Browser
- Link to subscribe to the updates mailing list
- Bot disclaimer

### Comment Template
The bot posts a formatted note:
- Informs that the issue is implemented in version X
- Provides update instructions
- Offers subscription to updates mailing list (brightway.groups.io)
- Includes bot identification

---

## Workflow Dependencies

### Secrets Required
- `GITHUB_TOKEN` - Automatically provided by GitHub Actions
- `CONDA_LCA` - Anaconda upload token for beta releases
- `CONDA_UPLOAD_TOKEN` - Anaconda upload token for stable releases

### Configuration Files
- `.github/conda-envs/build.yml` - Conda environment for building packages
- `.github/changelog-configuration.json` - Changelog generation configuration
- `.github/scripts/update_wiki.sh` - Wiki update script
- `recipe/meta.yaml` - Conda package recipe
- `pyproject.toml` - Python package configuration

---

## Development Notes

### Running Tests Locally
To run the same tests that CI runs:
```bash
pip install .[testing]
pytest -s --no-header --no-summary -q
```

### Testing Matrix Changes
When modifying the test matrix (OS or Python versions):
- Update both `testing.yaml` and `install-canary.yaml` to keep them in sync
- Consider the maintenance burden of additional combinations
- Current support: Python 3.10-3.12, Ubuntu/Windows/macOS

### Release Process
1. **Beta release:** Push to `beta` branch → Auto-publishes beta version
2. **Stable release:** Create and push a tag → Creates GitHub release and publishes to Anaconda
3. **Close milestone:** When closing a milestone → Users get notified automatically

### Monitoring
- Check daily canary runs to catch dependency issues
- Review failed test runs in PR checks before merging
- Monitor PyPI and Anaconda Cloud for successful uploads

45 changes: 45 additions & 0 deletions .github/workflows/build-executable.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Build Executable
on:
push:
branches: [ major ]
tags: '*'

jobs:
build:
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest, macos-15]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install system dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libegl1 libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 libxcb-shape0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12

- name: Install UV
uses: astral-sh/setup-uv@v2

- name: Sync dependencies
shell: bash
run: |
uv add pyinstaller
uv sync --prerelease=allow

- name: Build executable with PyInstaller
shell: bash
run: |
uv run pyinstaller pyinstaller.spec

- uses: actions/upload-artifact@v4
with:
name: activity-browser-${{ matrix.os }}
path: dist/*
101 changes: 2 additions & 99 deletions .github/workflows/install-canary.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,113 +3,16 @@ on:
schedule:
# Run the tests once every 24 hours to catch dependency problems early
- cron: '0 7 * * *'
push:
branches:
- install-canary

jobs:
canary-installs:
timeout-minutes: 12
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-13]
python-version: ["3.10", "3.11"]
defaults:
run:
shell: bash -l {0}
steps:
- name: Setup python ${{ matrix.python-version }} conda environment
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
miniconda-version: "latest"
- name: Install activity-browser
run: |
conda create -y -n ab -c conda-forge --solver libmamba activity-browser python=${{ matrix.python-version }}
- name: Environment info
run: |
conda activate ab
conda list
conda env export
conda env export -f env.yaml
- name: Upload final environment as artifact
uses: actions/upload-artifact@v4
with:
name: env-${{ matrix.os }}-${{ matrix.python-version }}
path: env.yaml

# also run install with micromamba instead of conda to have a timing comparison
canary-installs-mamba:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.11']
defaults:
run:
shell: bash -l {0}
steps:
- name: Setup python ${{ matrix.python-version }} conda environment
uses: mamba-org/setup-micromamba@v1
with:
micromamba-version: '1.5.9-1'
environment-name: ab
create-args: >-
python=${{ matrix.python-version }}
activity-browser
- name: Environment info
run: |
micromamba list
micromamba env export
micromamba env export > env.yaml
- name: Upload final environment as artifact
uses: actions/upload-artifact@v4
with:
name: env-${{ matrix.os }}-${{ matrix.python-version }}-mamba
path: env.yaml

conda-micromamba-comparison:
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
needs:
- canary-installs
- canary-installs-mamba
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
- name: show files
run: |
ls -la
- name: correct yaml formatting
# add correct indentation to make diffing possible
uses: mikefarah/yq@master
with:
cmd: |
ls | grep mamba | while read d; do yq -i $d/env.yaml; done
- name: diff ubuntu
run: |
diff -u env-ubuntu-latest-3.11* || :
- name: diff windows
run: |
diff -u env-windows-latest-3.11* || :
- name: diff macos
run: |
diff -u env-macos-latest-3.11* || :

canary-installs-pip:
timeout-minutes: 12
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-13 ]
python-version: [ '3.10' ]
os: [ubuntu-latest, windows-latest, macos-15, macos-latest]
py-version: ["3.10", "3.11", "3.12"]
defaults:
run:
shell: bash -e {0}
Expand Down
28 changes: 0 additions & 28 deletions .github/workflows/just-release.yaml

This file was deleted.

Loading
Loading