Skip to content

Be clear about the Python 3 prerequisite - #143

Closed
cclauss wants to merge 1 commit into
ActivityWatch:masterfrom
cclauss:patch-1
Closed

cclauss wants to merge 1 commit into
ActivityWatch:masterfrom
cclauss:patch-1

Conversation

@cclauss

@cclauss cclauss commented Nov 25, 2017

Copy link
Copy Markdown
Contributor

No description provided.

@johan-bjareholt

Copy link
Copy Markdown
Member

Thanks for the pull request, but we are trying to keep most of the documentation (including installation instructions) in the docs rather than in the readme file.

Python3 isn't required in the pre-packaged version either, so this is not always the case. In the instructions in the docs on how to install from source it is clearly stated that you need python 3.5 or above

Python 3.5 or later, check with python3 -V (required to build the core components)

https://activitywatch.readthedocs.io/en/latest/installing-from-source.html

@cclauss
cclauss deleted the patch-1 branch November 25, 2017 06:41
TimeToBuildBob added a commit to TimeToBuildBob/activitywatch that referenced this pull request Sep 7, 2026
Watcher ActivityWatch#143 squash-merged at abd69a6. The two ActivityWatch#138 guards now skip when
AW_RESEARCH_EDITION=true, which is what killed v0.14.0b5-research run
34155142876. Pin folded into this PR so the recut does not need a
separate bump round-trip.

Git-Session-Id: pm-aw143
ErikBjare pushed a commit that referenced this pull request Sep 8, 2026
…e id into research builds (#1434)

* feat(research): bake profile=research, port 5667 and a distinct bundle id into research builds

The Research Edition profile stack (#1399) shipped, but the research build
never consumed it: v0.14.0b5-research resolves profile=default, binds 5600
and shares activitywatch/ with a standard install. The profile is build
identity, not a launch argument: a login-item --profile would miss
double-click, Spotlight and the updater relaunch.

New fail-closed patcher scripts/patch_research_edition_profile.py {qt|tauri}
(same pattern as patch_research_edition_awqt.py), wired into all three
build jobs for AW_RESEARCH_EDITION == 'true':

- every no-flag/no-env profile fallback in aw-qt, aw-server, aw-client,
  aw-server-rust and aw-tauri resolves to BUILD_PROFILE = "research";
  DEFAULT_PROFILE itself is left alone because it means the ordinary
  install in suffix/dir/lockfile/export_profile logic
- built-in port 5600 -> 5667 in both servers, aw-client, aw-qt's tray and
  manager fallbacks, and aw-tauri's UserConfig::default
- CFBundleIdentifier net.activitywatch.ActivityWatch-research (Tauri
  identifier net.activitywatch.tauri-research) and CFBundleName
  "ActivityWatch Research" in aw.spec, build_app_tauri.sh,
  tauri.conf.json and notarize.sh

The bake runs after the module test suites (which assert the ordinary
defaults) and before Package; Python modules are editable installs, the
Rust binaries get an explicit rebuild step.

Git-Session-Id: cb3d

* fix(research): emit ActivityWatch-Research.app and run patcher tests in CI

The research macOS bundle still installed as ActivityWatch.app, so dragging
it into Applications replaced a standard install. Bake the on-disk stem
(ActivityWatch-Research.app / .dmg) through aw.spec, APP_NAME, Makefile,
and notarize.sh, and parameterize the dmg job on APP_BUNDLE.

Also run the fail-closed patcher tests on every release/PR job before
patching, so table drift fails at PR time instead of tag time.

* build(deps): bump aw-watcher-window for research-edition guard skips

Watcher #143 squash-merged at abd69a6. The two #138 guards now skip when
AW_RESEARCH_EDITION=true, which is what killed v0.14.0b5-research run
34155142876. Pin folded into this PR so the recut does not need a
separate bump round-trip.

Git-Session-Id: pm-aw143

* feat(research): give the research edition its own Windows install identity

Both Inno Setup scripts describe a single product each. A research build made
from them would share the standard AppId, so Windows treats it as the *same*
product: the research setup upgrades over an existing install and its
uninstaller removes both. That defeats the dual-run the research edition
exists for.

Patch, fail-closed, at release time:

- activitywatch-setup.iss (qt): AppId -> 32024B9B-..., MyAppName ->
  "ActivityWatch Research", OutputBaseFilename -> activitywatch-research-setup
- aw-tauri.iss (tauri): AppId -> 70E2D4AB-..., MyAppName ->
  "ActivityWatch Research (Tauri)", DefaultDirName ->
  ActivityWatch-Research-Tauri, OutputBaseFilename ->
  activitywatch-research-tauri-setup
- tauri.conf.json: pin bundle.windows.wix.upgradeCode

AppName, DefaultDirName (qt), the Start-Menu / desktop / {userstartup}
shortcuts and UninstallDisplayName all derive from `#define MyAppName`, so one
patched token cascades to every user-visible identity. The tests assert that
cascade against the *real* .iss files rather than a synthetic fixture, so
upstream hardcoding a shortcut name fails the research build instead of
silently shipping a colliding Start-Menu entry.

WixConfig exposes no product-code field (Tauri generates one per build); the
upgrade code is what defines the MSI product family, so that is the one pinned.
It was already distinct via the patched identifier, but only as a side effect
of an unrelated string.

Note both .iss files ship OutputBaseFilename=activitywatch-setup on master, so
the qt and tauri setups already overwrite each other in dist/. The research
names are distinct from each other as well as from standard.

Refs #1434

Git-Session-Id: 26d3

* feat(research): split Linux package and first-run autostart identity

The research edition already had its own profile, port, macOS bundle and
Windows installer identity. Linux was still a single product: the deb is
`Package: activitywatch` installing `/opt/activitywatch`, and it drops
`aw-qt.desktop` into both /etc/xdg/autostart and /usr/share/applications.
Installing a research deb next to a standard one therefore replaces it --
dpkg treats a same-named package as an upgrade -- and its autostart entry
overwrites the standard one.

Bake a distinct Linux identity at release time: package
`activitywatch-research`, `/opt/activitywatch-research`,
`activitywatch-research.desktop` in both shared namespaces, a rebranded
`Name=`, and a matching AppImage icon id / desktop-entry filename.

Also split what aw-qt registers for itself on first run (config
`autostart_on_first_run`): the Linux autostart filename, the macOS
LaunchAgent label, and APP_NAME (which the Windows Run value and Startup
shortcut derive from). Installer identity does not cover these -- without
them the two editions still overwrite each other's autostart.

The Linux autostart patch targets `_linux_desktop_path()` rather than
`DESKTOP_FILENAME`, which also names the shipped resource the build reads
out of the bundle; flipping the constant would send `_bundled_desktop_file()`
looking for a file that is not there.

Tauri's Linux bundles come from Tauri's own bundler, keyed on `productName`,
which is coupled to the cargo binary name -- left for a change that can be
verified against a real Tauri build.

Tests patch the real packaging scripts, not a synthetic fixture, so upstream
adding another /opt/activitywatch reference or a fourth desktop-entry copy
fails the research build instead of shipping a collision.

Git-Session-Id: e26e

* ci: add research-edition-checks job — fire patch guards at PR time

Adds a dedicated `research-edition-checks` job that runs on every PR and
push to master.  It checks out with submodules and verifies that every
patch target in the Qt and Tauri tables still exists exactly once in the
real source files (`--check` mode).  This is the fail-closed guard that
previously only fired when Erik pushed the annotated release tag.

The job is stdlib-only (no poetry/build step) so it completes in ~30s.
It also runs the fixture-based profile patcher unit tests.

Closes task step 6.2 of the research-edition-profile-wiring checklist.

Git-Session-Id: f8ff

* feat(research): 5.4 Tauri autostart — AUTOSTART_PATCHES_TAURI for distinct app_name

tauri_plugin_autostart uses productName ("aw-tauri") as the OS autostart entry
name by default. Standard and research Tauri builds sharing that name means
enabling autostart in one edition overwrites the other's entry on Windows
(registry Run key) and Linux (~/.config/autostart/).

Add AUTOSTART_PATCHES_TAURI that replaces tauri_plugin_autostart::init() with
a Builder::new() call. After the profile patches have also run, BUILD_PROFILE
is defined in profile.rs. When BUILD_PROFILE != DEFAULT_PROFILE the Builder
sets app_name("aw-tauri-research"), giving the research binary its own entry
name. MacosLauncher selection (AppleScript vs LaunchAgent) is preserved.

Tauri's Linux bundler derives package/desktop names from productName, so a
full Linux package identity split needs a separate investigation; the collision
that is fixed here is the runtime autostart entry written by the plugin itself.

Add test asserting the patcher inserts BUILD_PROFILE and that the lib.rs patch
produces Builder code with the conditional app_name override.

Git-Session-Id: 49c9

* ci: research-edition build leg on PR/branch CI (6.2)

The --check smoke test (706ba75) only catches patch-target drift on the
unpatched tree. A patched-tree compile/test/package failure -- the class
that killed the first v0.14.0b5-research run -- still only surfaced at
tag time. Add a `research` matrix dimension with one Linux include row
per build job (Qt on ubuntu-22.04, Tauri on ubuntu-24.04) that sets
AW_RESEARCH_EDITION=true, so every PR and branch push applies the full
research patch set and builds, tests and packages the patched tree.

On tag pushes and workflow dispatches the include row's `research` value
resolves to false, so it merges into the existing Linux row instead of
adding a duplicate leg: research tags already build the research edition
in every row, and standard tags must not upload research artifacts to the
standard release. Artifact names carry a -research suffix so the leg
cannot collide with the standard row on the same runner.

Git-Session-Id: 0283
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants