Skip to content

chore: complete Loupe to Loop product rename - #383

Merged
mberrys merged 16 commits into
stablefrom
cdx/loupe-to-loop-rebrand
Aug 31, 2026
Merged

chore: complete Loupe to Loop product rename#383
mberrys merged 16 commits into
stablefrom
cdx/loupe-to-loop-rebrand

Conversation

@mberrys

@mberrys mberrys commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Completes the Loupe → Loop product rename across the repository and establishes Loop as the canonical product, build, package, and runtime identity.

This goes beyond UI/string replacement: it updates source/module names, CMake targets and configuration, CI/release infrastructure, packaging identifiers, application identity, settings, scripts, documentation, and agent/development tooling so the repository no longer depends on the previous Loupe naming.

What changed

  • Renamed core project/module identities:
    • LoupeLibCoreLoopLibCore
    • LoupeLibInteractionLoopLibInteraction
    • LoupeEditorPluginsLoopEditorPlugins
    • associated CMake targets, export macros, include paths, generated headers, and references
  • Renamed build configuration from LOUPE_* to LOOP_*, including version, install, feature, build, and environment variables.
  • Added canonical product identity configuration:
    • product: Loop
    • organization: Loop
    • package ID: io.github.mberrys.Loop-pdf
  • Updated application/runtime identities to consistently use Loop rather than legacy Loupe/MelkaJ identifiers.
  • Added centralized application identity initialization for the different executable surfaces.
  • Added one-time migration of legacy QSettings data so existing user preferences can move to the new Loop identity rather than being silently lost.
  • Updated Linux/Windows packaging and release infrastructure, including:
    • Flatpak IDs and manifests
    • release artifact names
    • package-boundary evidence artifacts
    • release version variables
    • repository/workspace paths
  • Updated CI workflows, fuzzing configuration, scripts, tests, generated architecture/policy artifacts, developer environment configuration, and repository guards.
  • Updated documentation and developer/agent policy references from Loupe to Loop.
  • Updated repository references from studio-berry/loupe to studio-berry/loop.

Compatibility / review notes

This PR intentionally changes developer- and package-facing identifiers as part of completing the rename. The large diff is primarily caused by repository-wide path, target, macro, and identity changes rather than a similarly large expansion in product functionality.

The settings migration is specifically intended to preserve existing configuration where possible across the application identity change.

Reviewers should use rename-aware diff views where possible; raw line-count statistics substantially overstate the amount of logically new code.

Validation

The rename is covered by the existing repository policy/validation infrastructure, including checks around canonical product identity, version configuration, application identity, packaging, documentation consistency, and CI references.

Current CI has already passed:

  • Documentation truth
  • Supply Chain Policy
  • CodeQL Advanced

Fuzz and Release Gate validation are also running against the renamed tree.

cursor Bot pushed a commit that referenced this pull request Aug 27, 2026
Merge the Loupe-to-Loop rename onto current dev while keeping Phase 5
Widgets deletions. Restore pdftoolenvelopeutils and preflightsidecarutils
headers for UnitTestsOperatorAcceptance after the plugin pack removal.

Resolves merge conflicts between #383 and dev for the 0.2.0 stack.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cdx/loupe-to-loop-rebrand branch from e425fa5 to 3751188 Compare August 27, 2026 17:36
cursor Bot pushed a commit that referenced this pull request Aug 27, 2026
Merge the Loupe-to-Loop rename onto current dev while keeping Phase 5
Widgets deletions. Restore pdftoolenvelopeutils and preflightsidecarutils
headers for UnitTestsOperatorAcceptance after the plugin pack removal.

Resolves merge conflicts between #383 and dev for the 0.2.0 stack.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cdx/loupe-to-loop-rebrand branch from 3751188 to f126616 Compare August 27, 2026 22:56
@mberrys

mberrys commented Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

@codex

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 565ea6875e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Base automatically changed from dev to stable August 31, 2026 19:18
cursoragent and others added 13 commits August 31, 2026 19:23
Merge the Loupe-to-Loop rename onto current dev while keeping Phase 5
Widgets deletions. Restore pdftoolenvelopeutils and preflightsidecarutils
headers for UnitTestsOperatorAcceptance after the plugin pack removal.

Resolves merge conflicts between #383 and dev for the 0.2.0 stack.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
After rebasing onto dev (#386), Release Gate failed because Session 05
closeout scripts still referenced Loupe targets, loupe-release profile,
and docs/loupe-shell.json. Update evidence generators, verifiers, and
CI regression tests to use Loop naming and regenerate JSON artifacts.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
UnitTestsPageSurfaceBudget and UnitTestsDocumentViewSession still linked
LoupeLibInteraction, LoupeLibCore, and LoupeEditorQuick after the product
rename, so Release Gate linux/windows builds could not resolve
pagesurfacecoordinator.h and documentviewsession.h.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Linux Release Gate configures with LOOP_LOOP_DISTRIBUTION=ON, which installs
only the consolidated desktop entry. The verify step was still checking the
developer profile and would fail on the missing LoopEditor.desktop file.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
The bundled profile id and name changed from loupe-default/Loupe Default
to loop-default/Loop Default but kept the old digest, causing
profile-digest-mismatch failures in UnitTestsProfileIdentity,
UnitTestsPreflightCorpus, and operator acceptance tests on Release Gate.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Use QGuiApplication::setApplicationDisplayName only when the running
instance is a QGuiApplication so core-only builds (fuzz, PdfTool) compile.
Pass VCPKG_INSTALLED_DIR to Widgets-absent configure probes so temp
build directories reuse the preinstalled vcpkg tree.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
- Restore CMake product identity defines and project(LOOP)
- Fix remaining LOUPE tokens in WiX, Windows CI, smoke scripts, and docs
- Regenerate architecture and phase5-widgets evidence catalogs
- Align loop-release profile naming in contract scripts

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Link LoopLibCore from QuickShellSmoke and CanvasBenchmark so
initializeApplicationIdentity() resolves during Widgets-free CI builds.

Extract _truncate_command_output() for the release-profile verifier so
the regression test matches the configure diagnostic truncation behavior.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Co-authored-by: michael berry <mberrys@users.noreply.github.com>
QCoreApplication has no applicationDisplayName(); the display name is
set via initializeApplicationIdentity on QGuiApplication.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Widgets-free CI runs QuickShellSmoke from the build tree without install.
LoopLibCore.dll lives under usr/bin/Release while the smoke exe defaulted to
build/Release, so Windows failed with STATUS_DLL_NOT_FOUND (0xC0000135).
Align output directories with ProductQuickAccessibilitySmoke.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Rebase conflict resolution pulled stable sources with incomplete Loupe→Loop
renames in headers, product-surface scripts, and CMake. Restore the Loop
identity contract across the affected files.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cdx/loupe-to-loop-rebrand branch from 02f5008 to 0340ca2 Compare August 31, 2026 19:26
cursoragent and others added 3 commits August 31, 2026 19:27
Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Co-authored-by: michael berry <mberrys@users.noreply.github.com>
After setSettingsPath redirects UserScope IniFormat settings into a temp
directory, corruptLegacySettingsDoNotBlockStartup must create the parent
path before writing a broken legacy file.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
@mberrys
mberrys merged commit 8955a7e into stable Aug 31, 2026
17 checks passed
@mberrys
mberrys deleted the cdx/loupe-to-loop-rebrand branch August 31, 2026 21:37
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