Skip to content

✨ feat(context-preview): in-context review panel with segment-aware highlighting#4429

Open
riccio82 wants to merge 134 commits intodevelopfrom
context-review
Open

✨ feat(context-preview): in-context review panel with segment-aware highlighting#4429
riccio82 wants to merge 134 commits intodevelopfrom
context-review

Conversation

@riccio82
Copy link
Copy Markdown
Collaborator

@riccio82 riccio82 commented Mar 16, 2026

Summary

Adds a context-preview panel to the CAT tool that displays the source document with segment-aware highlighting, screenshot support, and keyboard shortcuts. Also includes significant backend refactoring: typed event dispatch for FeatureSet hooks, superglobal replacement with Klein abstractions, parameterized queries replacing escape(), and PHPStan level 8 compliance.

Type

  • feat — new user-facing feature
  • fix — bug fix
  • refactor — restructure without behavior change
  • chore — build, deps, config, docs
  • perf — performance improvement
  • test — test coverage

Changes

File Change
lib/Controller/API/App/ContextUrlController.php New controller for context-preview URL routing
public/js/components/context-preview/ Frontend panel with segment highlighting, tab animation, zoom
lib/Model/FeatureSet.php Typed Event DTO dispatch for all 44 hooks
lib/Controller/API/App/SetTranslationController.php Decompose translate() god method, extract db commit
lib/Controller/API/ (multiple) Replace $_POST/$_GET/$_REQUEST/$_SERVER with Klein abstractions
lib/Model/Search/SearchModel.php Replace escape() with parameterized queries
lib/Model/DataAccess/Database.php Fix ON DUPLICATE KEY bind values from buildInsertStatement()
plugins/airbnb/, plugins/translated/ PHPStan level 8 fixes
phpstan.neon Add plugins path, exception checking rules
docs/ Codebase review, hook changelog, context-review spec, xfetch docs
tests/unit/TestDatabase/ New tests for buildInsertStatement and ON DUPLICATE KEY
tests/unit/Search/SearchModelTest.php New parameterized query tests

Migration Notes

  • Migration file added in migrations/ directory
  • Backward-compatible with current production schema
  • NOT backward-compatible — breaking changes documented in Notes section
  • Tested on a fresh database and on an existing one

migrations/20260326190000_alter_table_segment_metadata_add_unique_index.php — replaces the non-unique index on segment_metadata(id_segment, meta_key) with a unique index. No data loss; duplicate rows must not exist (enforced by application logic). Rollback safe via sql_down.

Testing

  • vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage passes
  • ./vendor/bin/phpstan passes (0 errors, with baseline)
  • Manual testing performed (describe below)
  • New tests added for changed behavior
  • Regression tests added for bug fixes

Manual testing of context-preview panel: segment navigation, highlight sync, tab collapse/expand animation, screenshot zoom, keyboard shortcut. New unit tests for Database buildInsertStatement and SearchModel parameterized queries.

AI Disclosure

  • No AI tools were used in this PR
  • AI tools were used — details below

Claude Code (claude-opus-4-6) — refactoring (controllers, hooks, FeatureSet typing), documentation, tests, PR description

Notes

  • Large PR combining context-preview feature with backend modernization
  • FeatureSet hooks: 20 unused hooks removed, 5 renamed from snake_case to camelCase (see docs/featureset-hooks-changelog.md)
  • filter()/run() removed from FeatureSet in favor of typed pipeline customization
  • 328 files changed across frontend and backend
  • PHPStan progress: 435 pre-existing errors eliminated by the refactoring. Scan scope expanded from lib/ to lib/ + plugins, and treatPhpDocTypesAsCertain set to false for stricter analysis

riccio82 and others added 24 commits March 17, 2026 14:24
… and collection

Introduce SegmentMetadataMarshaller enum as single source of truth for
valid metadata keys with marshall/unmarshall type conversion.

Add SegmentMetadataMapper to map XLIFF trans-unit attributes to DB-ready
SegmentMetadataStruct entries, and SegmentMetadataCollection as a
purpose-built read-only collection with typed find() lookup.

Refactor all consumers (SegmentExtractor, SegmentStorageService,
SizeRestrictionChecker, QA, controllers) to use the centralized
components instead of scattered constants and inline logic.
…Type enum

Add resname and restype attributes to the segment metadata pipeline, enabling XLIFF context mapping storage with validated lookup strategies.
GetSegmentsController now calls jsonSerialize() on SegmentMetadataCollection,
returning typed values (int, string) instead of raw DB strings.
- Add proper error reporting: check isValid() and throw with aggregated
  exception messages instead of silently accepting invalid metadata
- Remove unused imports (InjectableFiltersTags, HandlersSorter,
  JobsMetadataDao, MetadataDao)
…nstraints

- XLIFF 2.0 test fixture: use matecat: namespace prefix (matecat:resname,
  matecat:restype) with proper xmlns:matecat declaration per spec
- Feature spec Section 8: clean constraints from 16 → 13 active items,
  remove implemented/outdated entries, add new architecture decisions
- Section 7.2: context-url pipeline task list (7 items) — FilesMetadataMarshaller,
  CONTEXT_URL cases, fallback resolver, 3 APIs, GetSegmentsController
- Section 11: full architecture — three-level storage, dual ingestion paths,
  read-time fallback resolution, FilesMetadataMarshaller Pattern B design
- Section 8: three new constraints (naming convention, dual ingestion, fallback order)
…lers

Add 'context-url' as a new metadata key recognized at both segment
level (SegmentMetadataMarshaller, 9th case) and project level
(ProjectsMetadataMarshaller, 31st case). Both use simple string
pass-through for marshall/unMarshall. TDD: +8 tests.
Copilot AI review requested due to automatic review settings April 29, 2026 15:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@matecat matecat deleted a comment from github-actions Bot Apr 29, 2026
@matecat matecat deleted a comment from github-actions Bot Apr 29, 2026
Copilot AI review requested due to automatic review settings April 29, 2026 16:09
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@matecat matecat deleted a comment from github-actions Bot Apr 29, 2026
@matecat matecat deleted a comment from github-actions Bot Apr 29, 2026
@matecat matecat deleted a comment from github-actions Bot Apr 29, 2026
@matecat matecat deleted a comment from github-actions Bot Apr 29, 2026
…sisFile, BasicFeatureStruct

Cover 4 uncovered areas from PR #4429:
- 15 RunEvent subclasses (hookName + constructor properties)
- XFetchEnvelope value object (readonly, final, properties)
- AnalysisFile JSON rendering (matches, metadata, accumulators)
- BasicFeatureStruct (property types, PluginsLoader fallback)

64 new tests, 112 assertions.
Copilot AI review requested due to automatic review settings April 29, 2026 16:38
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Add setCacheConnection() static setter to DaoCacheTrait for testability.
23 tests covering XFetch probabilistic early expiration algorithm:
- _shouldRecompute boundary conditions (delta=0, expired, fresh)
- _getFromCacheMap (miss, raw hit, envelope unwrap, xFetch bypass)
- _setInCacheMap (envelope wrapping, raw storage, fallback delta)
- Round-trip set→get integration
- TTL management and serialization

Uses in-memory FakeRedisClient — no real Redis dependency.
@matecat matecat deleted a comment from github-actions Bot Apr 29, 2026
@github-actions
Copy link
Copy Markdown

🧪 Test-Guard Report

✅ PASS — All changed source files have adequate test coverage.

Coverage Analysis: ❌ FAIL

No changed source files found in coverage report (threshold: 80%)

File Verdict Reason
lib/Bootstrap.php ❌ fail not in coverage report
lib/Controller/API/App/ChangeJobsStatusController.php ❌ fail not in coverage report
lib/Controller/API/App/CompletionEventController.php ❌ fail not in coverage report
lib/Controller/API/App/ContextUrlController.php ❌ fail not in coverage report
lib/Controller/API/App/CreateProjectController.php ❌ fail not in coverage report
lib/Controller/API/App/FilesController.php ❌ fail not in coverage report
lib/Controller/API/App/GetContributionController.php ❌ fail not in coverage report
lib/Controller/API/App/GetSearchController.php ❌ fail not in coverage report
lib/Controller/API/App/GetSegmentsController.php ❌ fail not in coverage report
lib/Controller/API/App/GetTagProjectionController.php ❌ fail not in coverage report
lib/Controller/API/App/GetWarningController.php ❌ fail not in coverage report
lib/Controller/API/App/SetTranslationController.php ❌ fail not in coverage report
lib/Controller/API/App/TMXFileController.php ❌ fail not in coverage report
lib/Controller/API/App/XliffToTargetConverterController.php ❌ fail not in coverage report
lib/Controller/API/Commons/Validators/InternalUserValidator.php ❌ fail not in coverage report
lib/Controller/API/Commons/Validators/IsOwnerInternalUserValidator.php ❌ fail not in coverage report
lib/Controller/API/V1/NewController.php ❌ fail not in coverage report
lib/Controller/API/V2/ChangePasswordController.php ❌ fail not in coverage report
lib/Controller/API/V2/ChangeProjectNameController.php ❌ fail not in coverage report
lib/Controller/API/V2/DownloadController.php ❌ fail not in coverage report
lib/Controller/API/V2/DownloadOriginalController.php ❌ fail not in coverage report
lib/Controller/API/V2/GlossaryFilesController.php ❌ fail not in coverage report
lib/Controller/API/V2/ProjectCreationStatusController.php ❌ fail not in coverage report
lib/Controller/API/V2/SplitJobController.php ❌ fail not in coverage report
lib/Controller/API/V2/UrlsController.php ❌ fail not in coverage report
lib/Controller/API/V3/DeepLGlossaryController.php ❌ fail not in coverage report
lib/Controller/API/V3/FileInfoController.php ❌ fail not in coverage report
lib/Controller/API/V3/ModernMTController.php ❌ fail not in coverage report
lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php ❌ fail not in coverage report
lib/Controller/Abstracts/BaseKleinViewController.php ❌ fail not in coverage report
lib/Controller/Traits/SegmentDisabledTrait.php ❌ fail not in coverage report
lib/Controller/Views/AnalyzeController.php ❌ fail not in coverage report
lib/Controller/Views/CattoolController.php ❌ fail not in coverage report
lib/Controller/Views/ContextReviewController.php ❌ fail not in coverage report
lib/Controller/Views/OutsourceTo/AbstractController.php ❌ fail not in coverage report
lib/Model/Analysis/AbstractStatus.php ❌ fail not in coverage report
lib/Model/Conversion/Upload.php ❌ fail not in coverage report
lib/Model/DataAccess/AbstractDao.php ❌ fail not in coverage report
lib/Model/DataAccess/DaoCacheTrait.php ❌ fail not in coverage report
lib/Model/DataAccess/Database.php ❌ fail not in coverage report
lib/Model/DataAccess/IDatabase.php ❌ fail not in coverage report
lib/Model/DataAccess/XFetchEnvelope.php ❌ fail not in coverage report
lib/Model/FeaturesBase/BasicFeatureStruct.php ❌ fail not in coverage report
lib/Model/FeaturesBase/FeatureSet.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/AnalysisBeforeMTGetContributionEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/AppendFieldToAnalysisObjectEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/AppendInitialTemplateVarsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/CharacterLengthCountEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/CheckTagMismatchEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/CheckTagPositionsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/CorrectTagErrorsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/DecodeInstructionsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/EncodeInstructionsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterActivityLogEntryEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterContributionStructOnMTSetEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterContributionStructOnSetTranslationEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterCreateProjectFeaturesEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterGetSegmentsResultEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterJobPasswordToReviewPasswordEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterMyMemoryGetParametersEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterPayableRatesEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FilterRevisionChangeNotificationListEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/FromLayer0ToLayer1Event.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/HandleJsonNotesBeforeInsertEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/InjectExcludedTagsInQaEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/IsAnInternalUserEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/OutsourceAvailableInfoEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/PopulatePreTranslationsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/PrepareNotesForRenderingEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/ProjectUrlsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/RewriteContributionContextsEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/SanitizeOriginalDataMapEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Filter/WordCountEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/AlterChunkReviewStructEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/BeforeProjectCreationEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/ChunkReviewUpdatedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/FilterProjectNameModifiedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/JobPasswordChangedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/PostAddSegmentTranslationEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/PostJobMergedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/PostJobSplittedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/PostProjectCreateEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/ProjectCompletionEventSavedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/ReviewPasswordChangedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/SetTranslationCommittedEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/TmAnalysisDisabledEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/ValidateJobCreationEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/Event/Run/ValidateProjectCreationEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/FilterEvent.php ❌ fail not in coverage report
lib/Model/FeaturesBase/Hook/RunEvent.php ❌ fail not in coverage report
lib/Model/Files/FilesMetadataMarshaller.php ❌ fail not in coverage report
lib/Model/Files/MetadataDao.php ❌ fail not in coverage report
lib/Model/Files/MetadataStruct.php ❌ fail not in coverage report
lib/Model/JobSplitMerge/JobSplitMergeService.php ❌ fail not in coverage report
lib/Model/OwnerFeatures/OwnerFeatureDao.php ❌ fail not in coverage report
lib/Model/ProjectCreation/JobCreationService.php ❌ fail not in coverage report
lib/Model/ProjectCreation/ProjectManager.php ❌ fail not in coverage report
lib/Model/ProjectCreation/ProjectManagerModel.php ❌ fail not in coverage report
lib/Model/ProjectCreation/SegmentExtractor.php ❌ fail not in coverage report
lib/Model/ProjectCreation/SegmentStorageService.php ❌ fail not in coverage report
lib/Model/Projects/ProjectsMetadataMarshaller.php ❌ fail not in coverage report
lib/Model/Search/SearchModel.php ❌ fail not in coverage report
lib/Model/Segments/ContextResType.php ❌ fail not in coverage report
lib/Model/Segments/ContextUrlResolver.php ❌ fail not in coverage report
lib/Model/Segments/SegmentMetadataCollection.php ❌ fail not in coverage report
lib/Model/Segments/SegmentMetadataDao.php ❌ fail not in coverage report
lib/Model/Segments/SegmentMetadataMapper.php ❌ fail not in coverage report
lib/Model/Segments/SegmentMetadataMarshaller.php ❌ fail not in coverage report
lib/Model/Segments/SegmentUIStruct.php ❌ fail not in coverage report
lib/Model/Translators/TranslatorsModel.php ❌ fail not in coverage report
lib/Model/Users/UserDao.php ❌ fail not in coverage report
lib/Plugins/Features/AbstractRevisionFeature.php ❌ fail not in coverage report
lib/Plugins/Features/ProjectCompletion.php ❌ fail not in coverage report
lib/Plugins/Features/ProjectCompletion/Model/EventModel.php ❌ fail not in coverage report
lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php ❌ fail not in coverage report
lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php ❌ fail not in coverage report
lib/Plugins/Features/ReviewExtended/ReviewedWordCountModel.php ❌ fail not in coverage report
lib/Plugins/Features/TranslationVersions/VersionHandlerInterface.php ❌ fail not in coverage report
lib/Routes/api_v3_routes.php ❌ fail not in coverage report
lib/Routes/view_routes.php ❌ fail not in coverage report
lib/Utils/AIAssistant/GeminiClient.php ❌ fail not in coverage report
lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php ❌ fail not in coverage report
lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php ❌ fail not in coverage report
lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php ❌ fail not in coverage report
lib/Utils/Engines/MyMemory.php ❌ fail not in coverage report
lib/Utils/LQA/QA.php ❌ fail not in coverage report
lib/Utils/LQA/QA/DomHandler.php ❌ fail not in coverage report
lib/Utils/LQA/QA/SizeRestrictionChecker.php ❌ fail not in coverage report
lib/Utils/LQA/QA/TagChecker.php ❌ fail not in coverage report
lib/Utils/LQA/SizeRestriction/SizeRestriction.php ❌ fail not in coverage report
lib/Utils/TMS/TMSService.php ❌ fail not in coverage report
lib/View/API/App/Json/Analysis/AnalysisFile.php ❌ fail not in coverage report
lib/View/API/V2/Json/Activity.php ❌ fail not in coverage report
lib/View/API/V2/Json/Job.php ❌ fail not in coverage report
lib/View/fileupload/UploadHandler.php ❌ fail not in coverage report
lib/View/fileupload/index.php ❌ fail not in coverage report
migrations/20260326190000_alter_table_segment_metadata_add_unique_index.php ❌ fail not in coverage report
old_tests/support/functions.php ❌ fail not in coverage report
old_tests/support/lib/Factory/ApiKey.php ❌ fail not in coverage report
old_tests/support/lib/Factory/Base.php ❌ fail not in coverage report
old_tests/support/lib/Factory/OwnerFeature.php ❌ fail not in coverage report
old_tests/support/lib/Factory/User.php ❌ fail not in coverage report
old_tests/support/lib/FixturesLoader.php ❌ fail not in coverage report
old_tests/support/lib/UnitTestInitializer.php ❌ fail not in coverage report
public/img/icons/EyeIcon.js ❌ fail not in coverage report
public/js/components/contextPreview/LivePreviewPanel.js ❌ fail not in coverage report
public/js/components/contextPreview/ScreenshotContextPanel.js ❌ fail not in coverage report
public/js/components/contextPreview/index.js ❌ fail not in coverage report
public/js/components/segments/Editarea.js ❌ fail not in coverage report
public/js/components/segments/Segment.js ❌ fail not in coverage report
public/js/components/segments/SegmentsContainer.js ❌ fail not in coverage report
public/js/components/segments/utils/DraftMatecatUtils/tagUtils.js ❌ fail not in coverage report
public/js/hooks/useContextDocument.js ❌ fail not in coverage report
public/js/hooks/useContextHighlight.js ❌ fail not in coverage report
public/js/hooks/useContextPreviewMessages.js ❌ fail not in coverage report
public/js/hooks/useResizable.js ❌ fail not in coverage report
public/js/hooks/useSegmentsLoader.js ❌ fail not in coverage report
public/js/pages/CatTool.js ❌ fail not in coverage report
public/js/pages/ContextPreview.js ❌ fail not in coverage report
public/js/utils/contextPreviewChannel.js ❌ fail not in coverage report
public/js/utils/contextPreviewLookup.js ❌ fail not in coverage report
public/js/utils/contextPreviewUtils.js ❌ fail not in coverage report
public/js/utils/shortcuts.js ❌ fail not in coverage report

Test File Matching: ❌ FAIL

File matching: 21 pass, 9 warning, 134 fail

File Verdict Reason
lib/Bootstrap.php ❌ fail No matching test file found
lib/Controller/API/App/ChangeJobsStatusController.php ❌ fail No matching test file found
lib/Controller/API/App/CompletionEventController.php ❌ fail No matching test file found
lib/Controller/API/App/ContextUrlController.php ❌ fail No matching test file found
lib/Controller/API/App/CreateProjectController.php ❌ fail No matching test file found
lib/Controller/API/App/FilesController.php ❌ fail No matching test file found
lib/Controller/API/App/GetContributionController.php ❌ fail No matching test file found
lib/Controller/API/App/GetSearchController.php ❌ fail No matching test file found
lib/Controller/API/App/GetSegmentsController.php ❌ fail No matching test file found
lib/Controller/API/App/GetTagProjectionController.php ❌ fail No matching test file found
lib/Controller/API/App/GetWarningController.php ❌ fail No matching test file found
lib/Controller/API/App/SetTranslationController.php ✅ pass Test file modified in PR: tests/unit/Controllers/SetTranslationControllerTest.php
lib/Controller/API/App/TMXFileController.php ❌ fail No matching test file found
lib/Controller/API/App/XliffToTargetConverterController.php ❌ fail No matching test file found
lib/Controller/API/Commons/Validators/InternalUserValidator.php ❌ fail No matching test file found
lib/Controller/API/Commons/Validators/IsOwnerInternalUserValidator.php ❌ fail No matching test file found
lib/Controller/API/V1/NewController.php ⚠️ warning Test file exists (tests/unit/Controllers/NewControllerTest.php) but was not modified in this PR
lib/Controller/API/V2/ChangePasswordController.php ❌ fail No matching test file found
lib/Controller/API/V2/ChangeProjectNameController.php ❌ fail No matching test file found
lib/Controller/API/V2/DownloadController.php ❌ fail No matching test file found
lib/Controller/API/V2/DownloadOriginalController.php ❌ fail No matching test file found
lib/Controller/API/V2/GlossaryFilesController.php ❌ fail No matching test file found
lib/Controller/API/V2/ProjectCreationStatusController.php ❌ fail No matching test file found
lib/Controller/API/V2/SplitJobController.php ❌ fail No matching test file found
lib/Controller/API/V2/UrlsController.php ❌ fail No matching test file found
lib/Controller/API/V3/DeepLGlossaryController.php ❌ fail No matching test file found
lib/Controller/API/V3/FileInfoController.php ❌ fail No matching test file found
lib/Controller/API/V3/ModernMTController.php ❌ fail No matching test file found
lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php ❌ fail No matching test file found
lib/Controller/Abstracts/BaseKleinViewController.php ❌ fail No matching test file found
lib/Controller/Traits/SegmentDisabledTrait.php ⚠️ warning Test file exists (tests/unit/Traits/SegmentDisabledTraitTest.php) but was not modified in this PR
lib/Controller/Views/AnalyzeController.php ❌ fail No matching test file found
lib/Controller/Views/CattoolController.php ❌ fail No matching test file found
lib/Controller/Views/ContextReviewController.php ❌ fail No matching test file found
lib/Controller/Views/OutsourceTo/AbstractController.php ❌ fail No matching test file found
lib/Model/Analysis/AbstractStatus.php ❌ fail No matching test file found
lib/Model/Conversion/Upload.php ⚠️ warning Test file exists (tests/unit/Model/Conversion/UploadTest.php) but was not modified in this PR
lib/Model/DataAccess/AbstractDao.php ❌ fail No matching test file found
lib/Model/DataAccess/DaoCacheTrait.php ✅ pass Test file modified in PR: tests/unit/DataAccess/DaoCacheTraitTest.php
lib/Model/DataAccess/Database.php ❌ fail No matching test file found
lib/Model/DataAccess/IDatabase.php ❌ fail No matching test file found
lib/Model/DataAccess/XFetchEnvelope.php ✅ pass Test file modified in PR: tests/unit/DataAccess/XFetchEnvelopeTest.php
lib/Model/FeaturesBase/BasicFeatureStruct.php ✅ pass Test file modified in PR: tests/unit/FeaturesBase/BasicFeatureStructTest.php
lib/Model/FeaturesBase/FeatureSet.php ⚠️ warning Test file exists (tests/unit/Model/FeatureSetTest.php) but was not modified in this PR
lib/Model/FeaturesBase/Hook/Event/Filter/AnalysisBeforeMTGetContributionEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/AppendFieldToAnalysisObjectEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/AppendInitialTemplateVarsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/CharacterLengthCountEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/CheckTagMismatchEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/CheckTagPositionsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/CorrectTagErrorsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/DecodeInstructionsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/EncodeInstructionsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterActivityLogEntryEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterContributionStructOnMTSetEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterContributionStructOnSetTranslationEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterCreateProjectFeaturesEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterGetSegmentsResultEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterJobPasswordToReviewPasswordEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterMyMemoryGetParametersEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterPayableRatesEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FilterRevisionChangeNotificationListEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/FromLayer0ToLayer1Event.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/HandleJsonNotesBeforeInsertEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/InjectExcludedTagsInQaEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/IsAnInternalUserEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/OutsourceAvailableInfoEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/PopulatePreTranslationsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/PrepareNotesForRenderingEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/ProjectUrlsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/RewriteContributionContextsEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/SanitizeOriginalDataMapEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Filter/WordCountEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/AlterChunkReviewStructEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/BeforeProjectCreationEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/ChunkReviewUpdatedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/FilterProjectNameModifiedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/JobPasswordChangedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/PostAddSegmentTranslationEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/PostJobMergedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/PostJobSplittedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/PostProjectCreateEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/ProjectCompletionEventSavedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/ReviewPasswordChangedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/SetTranslationCommittedEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/TmAnalysisDisabledEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/ValidateJobCreationEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/Event/Run/ValidateProjectCreationEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/FilterEvent.php ❌ fail No matching test file found
lib/Model/FeaturesBase/Hook/RunEvent.php ❌ fail No matching test file found
lib/Model/Files/FilesMetadataMarshaller.php ✅ pass Test file modified in PR: tests/unit/Model/Files/FilesMetadataMarshallerTest.php
lib/Model/Files/MetadataDao.php ❌ fail No matching test file found
lib/Model/Files/MetadataStruct.php ❌ fail No matching test file found
lib/Model/JobSplitMerge/JobSplitMergeService.php ❌ fail No matching test file found
lib/Model/OwnerFeatures/OwnerFeatureDao.php ❌ fail No matching test file found
lib/Model/ProjectCreation/JobCreationService.php ✅ pass Test file modified in PR: tests/unit/Model/ProjectCreation/JobCreationServiceTest.php
lib/Model/ProjectCreation/ProjectManager.php ❌ fail No matching test file found
lib/Model/ProjectCreation/ProjectManagerModel.php ⚠️ warning Test file exists (tests/unit/Model/ProjectCreation/ProjectManagerModelTest.php) but was not modified in this PR
lib/Model/ProjectCreation/SegmentExtractor.php ❌ fail No matching test file found
lib/Model/ProjectCreation/SegmentStorageService.php ✅ pass Test file modified in PR: tests/unit/Model/ProjectCreation/SegmentStorageServiceTest.php
lib/Model/Projects/ProjectsMetadataMarshaller.php ✅ pass Test file modified in PR: tests/unit/Model/Projects/ProjectsMetadataMarshallerTest.php
lib/Model/Search/SearchModel.php ✅ pass Test file modified in PR: tests/unit/Search/SearchModelTest.php
lib/Model/Segments/ContextResType.php ✅ pass Test file modified in PR: tests/unit/Model/Segments/ContextResTypeTest.php
lib/Model/Segments/ContextUrlResolver.php ✅ pass Test file modified in PR: tests/unit/Model/Segments/ContextUrlResolverTest.php
lib/Model/Segments/SegmentMetadataCollection.php ✅ pass Test file modified in PR: tests/unit/Model/Segments/SegmentMetadataCollectionTest.php
lib/Model/Segments/SegmentMetadataDao.php ❌ fail No matching test file found
lib/Model/Segments/SegmentMetadataMapper.php ✅ pass Test file modified in PR: tests/unit/Model/Segments/SegmentMetadataMapperTest.php
lib/Model/Segments/SegmentMetadataMarshaller.php ✅ pass Test file modified in PR: tests/unit/Model/Segments/SegmentMetadataMarshallerTest.php
lib/Model/Segments/SegmentUIStruct.php ❌ fail No matching test file found
lib/Model/Translators/TranslatorsModel.php ❌ fail No matching test file found
lib/Model/Users/UserDao.php ❌ fail No matching test file found
lib/Plugins/Features/AbstractRevisionFeature.php ❌ fail No matching test file found
lib/Plugins/Features/ProjectCompletion.php ❌ fail No matching test file found
lib/Plugins/Features/ProjectCompletion/Model/EventModel.php ❌ fail No matching test file found
lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php ❌ fail No matching test file found
lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php ❌ fail No matching test file found
lib/Plugins/Features/ReviewExtended/ReviewedWordCountModel.php ❌ fail No matching test file found
lib/Plugins/Features/TranslationVersions/VersionHandlerInterface.php ❌ fail No matching test file found
lib/Routes/api_v3_routes.php ❌ fail No matching test file found
lib/Routes/view_routes.php ❌ fail No matching test file found
lib/Utils/AIAssistant/GeminiClient.php ❌ fail No matching test file found
lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php ❌ fail No matching test file found
lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php ⚠️ warning Test file exists (tests/unit/TestMyMemory/FastAnalysisTest.php) but was not modified in this PR
lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php ❌ fail No matching test file found
lib/Utils/Engines/MyMemory.php ❌ fail No matching test file found
lib/Utils/LQA/QA.php ✅ pass Test file modified in PR: tests/unit/LQA/QATest.php
lib/Utils/LQA/QA/DomHandler.php ✅ pass Test file modified in PR: tests/unit/LQA/DomHandlerTest.php
lib/Utils/LQA/QA/SizeRestrictionChecker.php ✅ pass Test file modified in PR: tests/unit/LQA/SizeRestrictionCheckerTest.php
lib/Utils/LQA/QA/TagChecker.php ⚠️ warning Test file exists (tests/unit/LQA/TagCheckerTest.php) but was not modified in this PR
lib/Utils/LQA/SizeRestriction/SizeRestriction.php ⚠️ warning Test file exists (tests/unit/SizeRestrictionTest.php) but was not modified in this PR
lib/Utils/TMS/TMSService.php ❌ fail No matching test file found
lib/View/API/App/Json/Analysis/AnalysisFile.php ✅ pass Test file modified in PR: tests/unit/View/Analysis/AnalysisFileTest.php
lib/View/API/V2/Json/Activity.php ❌ fail No matching test file found
lib/View/API/V2/Json/Job.php ❌ fail No matching test file found
lib/View/fileupload/UploadHandler.php ❌ fail No matching test file found
lib/View/fileupload/index.php ❌ fail No matching test file found
migrations/20260326190000_alter_table_segment_metadata_add_unique_index.php ❌ fail No matching test file found
old_tests/support/functions.php ❌ fail No matching test file found
old_tests/support/lib/Factory/ApiKey.php ❌ fail No matching test file found
old_tests/support/lib/Factory/Base.php ❌ fail No matching test file found
old_tests/support/lib/Factory/OwnerFeature.php ❌ fail No matching test file found
old_tests/support/lib/Factory/User.php ❌ fail No matching test file found
old_tests/support/lib/FixturesLoader.php ❌ fail No matching test file found
old_tests/support/lib/UnitTestInitializer.php ❌ fail No matching test file found
public/img/icons/EyeIcon.js ❌ fail No matching test file found
public/js/components/contextPreview/LivePreviewPanel.js ❌ fail No matching test file found
public/js/components/contextPreview/ScreenshotContextPanel.js ❌ fail No matching test file found
public/js/components/contextPreview/index.js ❌ fail No matching test file found
public/js/components/segments/Editarea.js ❌ fail No matching test file found
public/js/components/segments/Segment.js ✅ pass Test file modified in PR: public/js/components/segments/Segment.test.js
public/js/components/segments/SegmentsContainer.js ❌ fail No matching test file found
public/js/components/segments/utils/DraftMatecatUtils/tagUtils.js ⚠️ warning Test file exists (public/js/components/segments/utils/DraftMatecatUtils/tagUtils.test.js) but was not modified in this PR
public/js/hooks/useContextDocument.js ❌ fail No matching test file found
public/js/hooks/useContextHighlight.js ❌ fail No matching test file found
public/js/hooks/useContextPreviewMessages.js ❌ fail No matching test file found
public/js/hooks/useResizable.js ❌ fail No matching test file found
public/js/hooks/useSegmentsLoader.js ❌ fail No matching test file found
public/js/pages/CatTool.js ❌ fail No matching test file found
public/js/pages/ContextPreview.js ❌ fail No matching test file found
public/js/utils/contextPreviewChannel.js ❌ fail No matching test file found
public/js/utils/contextPreviewLookup.js ✅ pass Test file modified in PR: public/js/utils/contextPreviewLookup.test.js
public/js/utils/contextPreviewUtils.js ✅ pass Test file modified in PR: public/js/utils/contextPreviewUtils.test.js
public/js/utils/shortcuts.js ❌ fail No matching test file found
tests/unit/Model/ProjectCreation/TestableSegmentExtractor.php ❌ fail No matching test file found

Per-File Evaluation: ✅ PASS

AI analysis failed (Error code: 413 - {'error': {'code': 'tokens_limit_reached', 'message': 'Request body too large for gpt-4.1-nano model. Max size: 8000 tokens.', 'details': 'Request body too large for gpt-4.1-nano model. Max size: 8000 tokens.'}}) — shortcuts resolved; remaining files deferred to L1+L2.

File Verdict Reason
lib/Model/Conversion/Upload.php ⏭️ skip shortcut → trivial change (whitespace/comments only)
lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php ⏭️ skip shortcut → trivial change (whitespace/comments only)
old_tests/support/functions.php ⏭️ skip shortcut → deleted file
old_tests/support/lib/Factory/ApiKey.php ⏭️ skip shortcut → deleted file
old_tests/support/lib/Factory/Base.php ⏭️ skip shortcut → deleted file
old_tests/support/lib/Factory/OwnerFeature.php ⏭️ skip shortcut → deleted file
old_tests/support/lib/Factory/User.php ⏭️ skip shortcut → deleted file
old_tests/support/lib/FixturesLoader.php ⏭️ skip shortcut → deleted file
old_tests/support/lib/UnitTestInitializer.php ⏭️ skip shortcut → deleted file
lib/Bootstrap.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/ChangeJobsStatusController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/CompletionEventController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/ContextUrlController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/CreateProjectController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/FilesController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/GetContributionController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/GetSearchController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/GetSegmentsController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/GetTagProjectionController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/GetWarningController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/SetTranslationController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/TMXFileController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/App/XliffToTargetConverterController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/Commons/Validators/InternalUserValidator.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/Commons/Validators/IsOwnerInternalUserValidator.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V1/NewController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/ChangePasswordController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/ChangeProjectNameController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/DownloadController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/DownloadOriginalController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/GlossaryFilesController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/ProjectCreationStatusController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/SplitJobController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V2/UrlsController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V3/DeepLGlossaryController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V3/FileInfoController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/API/V3/ModernMTController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/Abstracts/BaseKleinViewController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/Traits/SegmentDisabledTrait.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/Views/AnalyzeController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/Views/CattoolController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/Views/ContextReviewController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Controller/Views/OutsourceTo/AbstractController.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Analysis/AbstractStatus.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/DataAccess/AbstractDao.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/DataAccess/DaoCacheTrait.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/DataAccess/Database.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/DataAccess/IDatabase.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/DataAccess/XFetchEnvelope.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/BasicFeatureStruct.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/FeatureSet.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/AnalysisBeforeMTGetContributionEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/AppendFieldToAnalysisObjectEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/AppendInitialTemplateVarsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/CharacterLengthCountEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/CheckTagMismatchEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/CheckTagPositionsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/CorrectTagErrorsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/DecodeInstructionsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/EncodeInstructionsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterActivityLogEntryEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterContributionStructOnMTSetEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterContributionStructOnSetTranslationEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterCreateProjectFeaturesEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterGetSegmentsResultEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterJobPasswordToReviewPasswordEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterMyMemoryGetParametersEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterPayableRatesEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FilterRevisionChangeNotificationListEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/FromLayer0ToLayer1Event.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/HandleJsonNotesBeforeInsertEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/InjectExcludedTagsInQaEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/IsAnInternalUserEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/OutsourceAvailableInfoEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/PopulatePreTranslationsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/PrepareNotesForRenderingEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/ProjectUrlsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/RewriteContributionContextsEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/SanitizeOriginalDataMapEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Filter/WordCountEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/AlterChunkReviewStructEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/BeforeProjectCreationEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/ChunkReviewUpdatedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/FilterProjectNameModifiedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/JobPasswordChangedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/PostAddSegmentTranslationEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/PostJobMergedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/PostJobSplittedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/PostProjectCreateEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/ProjectCompletionEventSavedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/ReviewPasswordChangedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/SetTranslationCommittedEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/TmAnalysisDisabledEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/ValidateJobCreationEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/Event/Run/ValidateProjectCreationEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/FilterEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/FeaturesBase/Hook/RunEvent.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Files/FilesMetadataMarshaller.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Files/MetadataDao.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Files/MetadataStruct.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/JobSplitMerge/JobSplitMergeService.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/OwnerFeatures/OwnerFeatureDao.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/ProjectCreation/JobCreationService.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/ProjectCreation/ProjectManager.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/ProjectCreation/ProjectManagerModel.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/ProjectCreation/SegmentExtractor.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/ProjectCreation/SegmentStorageService.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Projects/ProjectsMetadataMarshaller.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Search/SearchModel.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Segments/ContextResType.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Segments/ContextUrlResolver.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Segments/SegmentMetadataCollection.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Segments/SegmentMetadataDao.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Segments/SegmentMetadataMapper.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Segments/SegmentMetadataMarshaller.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Segments/SegmentUIStruct.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Translators/TranslatorsModel.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Model/Users/UserDao.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Plugins/Features/AbstractRevisionFeature.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Plugins/Features/ProjectCompletion.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Plugins/Features/ProjectCompletion/Model/EventModel.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Plugins/Features/ReviewExtended/ReviewedWordCountModel.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Plugins/Features/TranslationVersions/VersionHandlerInterface.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Routes/api_v3_routes.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Routes/view_routes.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/AIAssistant/GeminiClient.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/Engines/MyMemory.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/LQA/QA.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/LQA/QA/DomHandler.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/LQA/QA/SizeRestrictionChecker.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/LQA/QA/TagChecker.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/LQA/SizeRestriction/SizeRestriction.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/Utils/TMS/TMSService.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/View/API/App/Json/Analysis/AnalysisFile.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/View/API/V2/Json/Activity.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/View/API/V2/Json/Job.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/View/fileupload/UploadHandler.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
lib/View/fileupload/index.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
migrations/20260326190000_alter_table_segment_metadata_add_unique_index.php ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/img/icons/EyeIcon.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/components/contextPreview/LivePreviewPanel.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/components/contextPreview/ScreenshotContextPanel.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/components/contextPreview/index.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/components/segments/Editarea.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/components/segments/Segment.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/components/segments/SegmentsContainer.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/components/segments/utils/DraftMatecatUtils/tagUtils.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/hooks/useContextDocument.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/hooks/useContextHighlight.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/hooks/useContextPreviewMessages.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/hooks/useResizable.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/hooks/useSegmentsLoader.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/pages/CatTool.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/pages/ContextPreview.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/utils/contextPreviewChannel.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/utils/contextPreviewLookup.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/utils/contextPreviewUtils.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
public/js/utils/shortcuts.js ⏭️ skip AI analysis unavailable — deferred to Layer 2
tests/unit/Model/ProjectCreation/TestableSegmentExtractor.php ⏭️ skip AI analysis unavailable — deferred to Layer 2

Result: ✅ PASS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants