Skip to content
CAI
Software that uses CAICheck a score

mirego/accent

41.2

Weak · 23 September 2026

36k

lines of production code

TypeScript

with Elixir

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is a comprehensive translation management platform that enables teams to manage, translate, and localize content across multiple formats and platforms. It provides a CLI tool and web application for importing, exporting, and syncing translation files, with support for various formats including JSON, XML, and code-specific files. The system integrates with external machine translation services like Google Translate and DeepL, offers AI-assisted translation via OpenAI, and includes automated linting for quality control. It also supports real-time collaboration, versioning, and integration with cloud storage services like AWS S3 and Azure.

How it got here

2018 — Modernization and feature expansion

92 changes.

This period focused on modernizing the application's architecture by migrating the webapp to TypeScript, upgrading the CI pipeline, and refactoring the authentication and event processing systems. It also introduced significant new capabilities, including machine translation, AI-assisted translation, and support for various new file formats and integration types.

2019–2023 — CLI expansion and AI integration

38 changes.

This period focused on significantly expanding the command-line interface with new commands for export, linting, and synchronization, alongside the introduction of a Just-In-Place Translation kit. Concurrently, the codebase adopted TypeScript for the webapp and integrated AI-driven features, including machine translation providers and an AI prompt system, while also adding robust automated linting and notification hooks.

2024–2026 — Webapp UI and integration expansion

16 changes.

The project significantly expanded its web application interface by introducing new routes, controllers, and UI components to support project management, translation workflows, and user authentication states. Concurrently, the backend was enhanced with new storage integrations for AWS S3 and Azure, alongside expanded hook events and outbound processing capabilities.

Features

Add AWS S3 and Azure Storage Container integrations for document uploads

Users can now upload translation documents to AWS S3 and Azure Storage Container storage services. The new \UploadDocuments\ module provides a unified execution pattern for these integrations, handling the rendering and uploading of translation files. The AWS S3 implementation includes a fix for the us-east-1 region subdomain to ensure correct URL generation. Both integrations trigger outbound hooks upon completion.

lib/accent/integrations/execute · high confidence

Add DeepL and Google Translate machine translation providers

Users can now use DeepL and Google Translate for automatic translation of project content. The update introduces new provider implementations for both services, enabling integration with their respective APIs. This adds new capabilities for machine translation within the application.

_lib/machine\translations/provider · high confidence

Add ES6 module formatter with placeholder support

A new ES6 module formatter has been added to the Langue system, enabling the processing of JavaScript (\.js\) files. The implementation includes a parser that extracts translation entries and a serializer for output. Notably, the parser is configured to recognize and parse placeholders using the regex pattern \{{\[^}\]\*}}\, allowing for dynamic content within ES6 module translations.

_lib/langue/formatter/es6\module · high confidence

Add GitLab OAuth2 authentication strategy

Introduces a new Ueberauth strategy for authenticating users via GitLab. The change adds the core strategy module (\Ueberauth.Strategy.Gitlab\) and its associated OAuth2 client module (\Ueberauth.Strategy.Gitlab.OAuth\), enabling users to log in to the application using their GitLab accounts.

_vendor/ueberauth\_gitlab\strategy · high confidence

Add Phoenix CLI example with translation configuration

A new example for the Phoenix CLI tool has been added, demonstrating how to configure translation files. This includes an accent.json file that defines the API endpoint and API key, alongside .po files for English and French translations, enabling users to see how the CLI handles localization in a Phoenix application.

cli/examples/phoenix · high confidence

Add RESX 2.0 format support

Users can now import and export localization files in the RESX 2.0 format. This change introduces a new formatter implementation that parses RESX 2.0 XML structures into internal entries and serializes them back to the corresponding XML format, enabling compatibility with tools and workflows relying on this specific resource file standard.

_lib/langue/formatter/resx\_2\0 · high confidence

Add TypeScript definitions for application configuration

The webapp's configuration file now includes a new \environment.d.ts\ type declaration file. This provides TypeScript type definitions for the application's configuration object, including API host paths, Sentry DSN, and flash message defaults, improving type safety and developer experience for the configuration module.

webapp/app/config · high confidence

Add TypeScript definitions for ember-cli-flash

Added TypeScript declaration files for the ember-cli-flash library, including the Flash class, the FlashMessages service, and the @ember/service registry, enabling type checking and autocompletion for flash message handling in the application.

webapp/types/ember-cli-flash · high confidence

Add automated linting and auto-fix capabilities for translation entries

The application now includes a new linting system that automatically checks translation entries for common issues such as capitalization, spacing, ellipsis usage, and spelling. The system supports auto-correction of certain errors, allowing users to fix multiple issues across their translations in a single action. This feature is configurable, enabling administrators to enable or disable specific checks and control which entries are subject to linting rules.

lib/lint · high confidence

Add core translation merge/unmerge utilities and example files

The CLI now includes a Ruby script (core.rb) and supporting JSON files (accent.json, translations.json) in the examples/core directory. The script provides 'merge' and 'unmerge' operations to convert between flat language-specific JSON files and a combined structure containing all translations, enabling users to manage core translation workflows directly via the CLI.

cli/examples/core · high confidence

Add iOS CLI example with localization and accent configuration

A new iOS CLI example has been added to the project, providing a reference implementation that includes localization support (English and French string files) and an accent configuration file that maps source resources to target localization directories.

cli/examples/ios · high confidence

Add lint translations and translations routes

Added new route handlers for the project revision page: a lint-translations route that fetches and manages lint checks and translations via GraphQL subscriptions, and a translations route that handles the main translations list with various filter parameters (e.g., isTranslated, isConflicted). These routes enable users to view and filter translation data and linting results within the project revision context.

webapp/app/routes/logged-in/project/revision · high confidence

Add new project hook events for review, conflicts, and sync

The application now supports three new project hook events—complete\_review, new\_conflicts, and sync—each implementing the Accent.Hook.Event behaviour. These hooks trigger based on specific project state changes: the complete\_review event fires when the reviewed count matches the translations count; the new\_conflicts event triggers when the number of conflicts increases; and the sync event activates during batch operations. Each event provides relevant payload data such as translation counts, conflict counts, and batch operation statistics.

lib/hook/events · high confidence

Add support for CSV formatter

Users can now import and export translations using the CSV format. This new capability allows for easier data interchange with spreadsheet applications and other tools that support CSV. The implementation includes a parser to read CSV files into the application's internal entry format and a serializer to convert internal entries back into CSV format.

_lib/langue/formatter/csv, lib/langue/formatter/go\_i18n\json · high confidence

Add support for Simple PHP and Laravel PHP translation formats

Users can now format translation files as simple PHP arrays or Laravel-style PHP arrays. The system introduces two new formatters: 'Simple PHP', which parses and serializes basic PHP array structures, and 'Laravel PHP', which handles Laravel's specific array format. The Laravel PHP parser has been refactored to use a generic PHP associative map for parsing, replacing the previous YAML-based parsing logic.

_lib/langue/formatter/laravel\php · high confidence

Added CLI entry points for development and production execution

The CLI now includes dedicated entry-point scripts (dev.js, run.js, and their Windows .cmd equivalents) that invoke the oclif framework to execute commands. This change establishes the executable interface for the CLI, supporting both development mode (using ts-node for hot-reloading) and standard production execution.

cli/bin · medium confidence

Added Just-In-Place Translation (JIPT) kit for in-app translation

A new JIPT module has been introduced to enable direct in-app translation. This includes an HTML entry point, a TypeScript codebase (including components for state management, DOM mutation, UI, and frame listening), and a configuration file. The kit allows users to translate content directly within the project's app by interacting with an embedded interface.

jipt · high confidence

Added configuration manager for machine translations

Users can now manage machine translation settings for a project. The new \Accent.MachineTranslationsConfigManager\ provides \save\ and \delete\ methods to persist or remove machine translation configurations, including provider, enabled actions, and API keys, directly on the project entity.

_lib/accent/machine\_translations\config · high confidence

Added new helper modules for outbound hook processing

Introduced two new helper modules in the outbound hooks system: \PostURL\ handles HTTP POST requests to configured integration endpoints, capturing execution state and duration, while \StringTemplate\ provides a macro for generating EEx-based string templates. These additions support the broader integration execution tracking and history features.

lib/hook/outbounds/helpers · high confidence

Added placeholder for native code

A new directory 'priv/native' was created with a .gitkeep file, likely to reserve space for future native code integration.

priv/native · high confidence

CLI base command now supports custom config file and working directory flags

The CLI's base command class has been updated to accept a --config (or -c) flag, allowing users to specify a custom configuration file path instead of the default 'accent.json'. Additionally, a --path flag has been introduced to set the working directory from which the CLI operates. These changes enable more flexible configuration management and directory handling in the CLI tool.

cli/src · high confidence

Enable machine translation for project sync operations

The system now supports automatic machine translation during project sync. A new \Movement.MachineTranslations\ module handles the translation logic, which is enabled via project configuration. The \Movement.Operation\ struct now includes fields for \machine\_translations\_enabled\, \machine\_translated\, \placeholders\, \versioned\_translation\_ids\, and \source\_translation\_id\ to support this feature. The \EntriesCommitProcessor\ integrates this by checking if machine translation is enabled for an operation and applying translations before persisting changes.

lib/movement · high confidence

Expanded GraphQL API with new integrations, linting, and translation features

The GraphQL API has been significantly expanded to support new capabilities. Users can now configure and execute integrations with Slack, Discord, Azure Storage, and AWS S3, with execution history exposed via the new \IntegrationExecution\ type. A comprehensive linting system has been added, allowing users to check translations for spelling, placeholders, and other rules, with results exposed through \Lint\ and \ProjectLintEntry\ types. Translation workflows are enhanced with machine translation support (including Google Translate and OpenAI prompts), allowing users to translate text directly via the API. The schema also introduces new fields for documents and revisions, such as \translated\_count\ and \rtl\ (right-to-left) support, and adds pagination arguments (\page\_size\) to various list queries. Additionally, new types like \Prompt\ and \APIToken\ are introduced to support AI-assisted translation and API-based authentication.

lib/graphql/types · high confidence

Expanded GraphQL mutations for project management and integrations

The GraphQL API now supports creating and revoking API tokens, managing project-level linting rules, and configuring machine translation providers. Users can also update document paths, manage AI assistant prompts, and fix lint issues directly via the API. Additionally, the API exposes mutations for managing project colors and logos, updating translation settings, and handling version lifecycle including deletion and mirroring updates to the latest version.

lib/graphql/mutations · high confidence

Expanded TelemetryUI metrics for HTTP, Oban, and PSQL extras

The TelemetryUI module now exposes a broader set of performance metrics for users to monitor. This includes detailed HTTP request tracking (count, duration, and distribution), background job execution metrics from Oban (including queue and worker-level stats), and new database performance metrics for PostgreSQL via EctoPSQLExtras (tracking bloat, cache hits, index usage, and table sizes). Additionally, language tool spellcheck metrics are now available. These additions provide deeper visibility into application performance and database health directly within the TelemetryUI dashboard.

_lib/accent/telemetry\ui · high confidence

Expanded automated linting for text formatting and content consistency

The linting system now includes several new automated checks to improve translation quality and consistency. These include correcting apostrophes in French, fixing double spaces, ensuring correct capitalization of the first letter, trimming leading and trailing spaces, replacing three dots with an ellipsis character, and validating placeholder and URL counts between master and translated strings. Additionally, a spelling check powered by LanguageTool has been added to catch grammatical and spelling errors, with support for ignoring specific terms or rule IDs via project lint entries.

lib/lint/checks · high confidence

Introduce AI prompt configuration and provider abstraction

Added a new module, Accent.Prompts, which manages AI assistant prompts and abstracts the underlying provider. This introduces support for an alternate OpenAI provider, allows configuration via a 'use\_platform' flag, and provides telemetry for completions.

lib/prompts · high confidence

Introduce API token management and usage tracking

Added new capabilities to create, list, and revoke API tokens for projects, including a background GenServer that buffers and periodically flushes token usage timestamps to the database to minimize write load.

_lib/accent/api\tokens · high confidence

Introduce LanguageTool integration for spelling and grammar checking

Added a new LanguageTool integration that provides spelling and grammar checking capabilities. The change introduces a new Elixir module (LanguageTool) that communicates with a bundled Java/Kotlin application via a GenServer, supporting features like language selection, rule disabling, and caching of results. The underlying implementation uses a port-based communication with the LanguageTool Java application, handling text annotation and error cases gracefully.

_vendor/language\tool · high confidence

Introduce line-by-line parsing and serialization for translations

Added new Elixir modules for parsing and serializing translation files line-by-line. The \Langue.Utils.LineByLineHelper.Parser\ extracts key-value pairs and comments from text, while \Langue.Utils.LineByLineHelper.Serializer\ reconstructs the text with proper comment handling. This enables more granular control over translation file formats.

_lib/langue/utils/line\_by\_line\helper · high confidence

Introduce machine translation and authentication refactoring

Added a new MachineTranslationsController to support Google Translate integration, enabling automatic translation of documents and files. Refactored the authentication flow by introducing a new AuthController that leverages Ueberauth for handling multiple login providers (Google, GitHub, Slack), replacing the previous AuthenticationController. Additionally, updated the ExportController to support advanced filtering (text empty, conflicted, added last sync) and added telemetry metrics for export operations.

lib/web/controllers · high confidence

Introduce machine translation support with Google Translate and DeepL providers

Adds a new machine translation feature that allows users to automatically translate text entries using external providers like Google Translate or DeepL. The implementation includes a core translation module that handles batching, language mapping, and error handling, alongside a dedicated module for translated text structures. This enables the platform to integrate with translation services to provide automatic translations for project content.

_lib/machine\translations · high confidence

Introduce modular AI prompt provider architecture

The application now supports pluggable AI prompt providers through a new modular architecture. A \Provider\ protocol defines the interface for prompt services, with a default \NotImplemented\ fallback and a concrete \OpenAI\ implementation that handles chat completions via the OpenAI API. This change enables the system to integrate with different AI services in the future while maintaining a consistent interface for prompt generation.

lib/prompts/provider · high confidence

Introduce prompt configuration and management modules

Added two new Elixir modules to handle AI assistant interactions: Accent.PromptConfigManager for saving and deleting project-level prompt configurations (including provider, key, and platform usage), and Accent.PromptManager for creating, updating, and deleting individual prompt records. These modules implement the data persistence layer for the new prompt feature.

_lib/accent/prompt\config · high confidence

Introduce structured translation entry model with type safety and new format support

The translation entry model has been refactored to enforce required fields (key, value, value\_type) and introduce new attributes including master\_value, locked, plural, and placeholders. This change supports plural states and placeholder detection for all translation formats, including the newly added Rails YAML, Go i18n JSON, XLIFF 1.2, RESX 2.0, and CSV formats. Additionally, a new ValueType module is introduced to automatically detect and parse data types (boolean, integer, float, string, empty, null) for translation values.

lib/langue · high confidence

New CLI commands for export, format, lint, stats, and sync

The CLI now includes dedicated commands for exporting files, formatting local translations, linting for errors, displaying project statistics, and syncing with the server. Users can run \accent export\, \accent format\, \accent lint\, \accent stats\, and \accent sync\ to manage their translation workflow directly from the command line, with options to check review/translation status and handle conflicts.

cli/src/commands · high confidence

New UI components for the webapp

The webapp introduces a suite of new UI components to enhance the user interface, including an avatar image component with fallback support, a versatile badge component for status and versioning, an emoji picker with modal overlay, flash message notifications, a reusable modal dialog, a select dropdown with search and multi-select options, a page wrapper with sidebar and footer, an activity item list for tracking changes, and a file commit form. These components provide the foundational building blocks for the application's visual and interactive elements.

webapp/app/components · high confidence

New error, logged-in, login, and not-found controllers for the Ember app

The application now includes dedicated controllers for handling error states, the logged-in state, the login screen, and 404 (not found) pages. The error controller manages unauthorized and internal error states, triggering a session logout when appropriate. The logged-in controller integrates with flash messages, while the login controller manages loading states and initializes a JIPT service. The not-found controller also provides a logout action tied to the session service.

webapp/app/controllers · high confidence

New project management and translation workflow templates

The application now includes a comprehensive set of Handlebars templates for the logged-in user experience, covering project dashboards, file operations (export, sync, merge, machine translation), translation editing, conflict resolution, and project settings (collaborators, API tokens, linting, prompts). This introduces the full UI for managing project content, including versioning, activity logs, and integration execution tracking.

webapp/app/templates · high confidence

New routes for JIPT, project, and projects pages

The application now includes dedicated route handlers for the JIPT integration, a single project view, and the projects listing page. These routes manage data fetching via Apollo subscriptions, handle session redirects for unauthenticated users, and update global state with permissions and project metadata. The projects route also implements logic to order recent projects based on user history.

webapp/app/routes/logged-in · high confidence

New routes for file and version management

Added route definitions for file operations (add translations, export, JIPT, machine translations, sync) and version operations (edit, export, new), enabling users to manage translations, exports, and versioning within a project.

webapp/app/routes/logged-in/project/files, webapp/app/routes/logged-in/project/versions · high confidence

New routes for project editing features

Added new route handlers for the project editing interface, including API tokens, badges, lint entries, machine translations, and prompt configurations. These routes fetch data via GraphQL subscriptions and manage their own lifecycle, enabling users to manage specific project settings and content types.

webapp/app/routes/logged-in/project/edit · high confidence

New translation sub-routes for activities, comments, editions, and settings

The translation section now has dedicated routes for viewing activity logs, managing comments, tracking edition history, and configuring settings. Each sub-route (activities, comments, editions, settings, and index) is implemented as a new Ember route file, enabling users to navigate to specific translation management features directly. This change restructures the translation area into distinct, navigable pages rather than a single monolithic view.

webapp/app/routes/logged-in/project/translation · high confidence

Outbound notification hooks for Discord, Slack, and Email

Added new worker-based hooks for Discord, Slack, and Email to handle outbound notifications. Each service is implemented as an Oban worker that processes specific events (e.g., sync, complete\_review, new\_conflicts, integration\_execute\_azure\_storage\_container, integration\_execute\_aws\_s3 for Discord/Slack; create\_collaborator, create\_comment for Email) and delivers messages via HTTP or email delivery.

lib/hook/outbounds · high confidence

Refactored project controllers to use TypeScript classes

The controllers in the logged-in project and JIPT sections have been converted from JavaScript to TypeScript classes. This includes the main project controller, as well as sub-controllers for activities, comments, conflicts, API tokens, badges, editing (project, JIPT, lint entries, machine translations, prompts), and file management. The refactoring adds static typing for service injections, tracked state, and action handlers, improving code reliability and developer experience without changing the underlying business logic.

webapp/app/controllers/logged-in · high confidence

Support for Android plural translations

The Android XML formatter now parses and serializes plural string resources. The parser extracts plural items by quantity (e.g., 'one', 'two') and marks them with a 'plural' flag, while the serializer groups these items under a 'plurals' XML element. This enables users to manage plural forms in Android localization workflows.

lib/langue/formatter/android · high confidence

Architecture

Migrate webapp to TypeScript and modernize build configuration

The webapp codebase has been converted to TypeScript, introducing new route and utility files (e.g., \parsed-key.ts\, \index.ts\ for JIPT and translation routes) while removing corresponding JavaScript files. This migration is accompanied by the addition of a \tsconfig.json\ and the removal of legacy configuration files (\.eslintrc\, \.editorconfig\, \.scss-lint.yml\, \.travis.yml\). The \ember-cli-build.js\ has been updated to enable the TypeScript transform and configure Sass, while the test runner (\testem.js\) has been updated to use Chrome instead of PhantomJS. These changes reflect a significant architectural shift in how the webapp is built and tested.

webapp · high confidence

Behavioural changes

Add TypeScript types for the in-viewport service

The webapp now includes TypeScript type definitions for the 'in-viewport' service, enabling type-safe usage of viewport detection features such as watching elements for enter/exit events. This supports the implementation of large list handling in conflict items by providing proper type checking for the service's API.

webapp/types/ember-in-viewport · medium confidence

Add dot-in-slug-directory example for localized string processing

An example demonstrating how to process localized string files (English and French) using a slug-based output path. The configuration shows how to map source strings to a target directory structure that includes a slug placeholder, illustrating a specific pattern for handling internationalization in CLI tools.

cli/examples/dot-in-slug-directory · medium confidence

Add execution tracking and new integration support

The system now records every integration execution, storing the state, user, and results in a new \IntegrationExecution\ model. This enables users to view execution history and status for their integrations. Additionally, the codebase has been refactored to support new integration types, specifically AWS S3 and Azure Storage Container, alongside existing Slack and Discord services. The \IntegrationManager\ now handles execution logic and data validation specific to each service type.

lib/accent/integrations · high confidence

Added TypeScript type declarations for Ember and external modules

New TypeScript declaration files have been added to the webapp's types directory to support the migration to TypeScript and the latest version of Ember. These changes provide type definitions for Ember-specific modules (such as ember-concurrency, @ember/runloop, and @ember/template) as well as external dependencies like color and simple-fmt, enabling type checking and improved development experience for these libraries.

webapp/types · medium confidence

Added dummy authentication strategy for Ueberauth

A new Ueberauth strategy named 'DummyStrategy' has been added to the authentication module. This strategy allows the system to handle authentication requests by extracting the user's email from the request parameters, enabling support for multiple login providers such as Google, GitHub, and Slack.

lib/accent/auth/uberauth · medium confidence

Centralized runtime configuration and modernized auth infrastructure

Configuration has been consolidated into a new \config/runtime.exs\ file, moving away from the previous \config/mailer.exs\ and \config/config.exs\ structure. This change introduces environment-driven setup for the web server (Bandit), database connection (including SSL and IPv6 support), and authentication providers (Google, Slack, GitHub, GitLab, Discord, Microsoft, Auth0, and generic OIDC). It also adds configuration for machine translations (Google Translate, DeepL), AI prompts (OpenAI), Sentry, New Relic, and OpenTelemetry, while removing the legacy mailer configuration.

config · high confidence

Database schema and performance optimizations

The database schema has been updated to support new features and improve performance. New columns and tables were added to support machine translation configuration, project prompts, integration execution tracking, and spelling dictionaries. Key changes include adding \machine\_translations\_config\ to projects, creating a \prompts\ table for AI assistant features, and introducing an \integration\_executions\ table to track integration history. Additionally, numerous database indexes were added to optimize query performance for translations, operations, and revisions, and foreign key constraints were updated to allow cascading deletes for better data management.

priv/repo/migrations · high confidence

Enforce authorization on GraphQL queries and add security middleware

The GraphQL layer now enforces viewer authorization on several existing queries (languages, roles, document formats) and introduces new types and mutations for API tokens, machine translation configuration, prompts, and linting. Additionally, the GraphQL pipeline is updated with AbsintheSecurity phases (max depth, aliases, directives) and a new error reporting middleware, improving security posture and error visibility.

lib/graphql · medium confidence

Enforce email-based access restrictions and add rate limiting for collaborator creation

The system now restricts certain actions (like creating projects) based on the user's email domain, controlled by a RESTRICTED\_DOMAIN environment variable. Additionally, a rate limit of 5 collaborator additions per minute is enforced during the creation process to prevent abuse. These changes modify the core authorization logic and user authentication flow.

lib/accent/auth · high confidence

Enhanced Gettext and XLIFF 1.2 formatters with context, plural, and header improvements

The Gettext formatter now supports translation contexts (msgctxt) by appending them to the translation key, and correctly serializes plural forms with proper index mapping. The serializer also preserves newlines in translation values and headers, and includes plural form headers. Additionally, XLIFF 1.2 support was added with new parser and serializer modules, and the internal parser/serializer result structs were updated to use a \document\ field instead of separate comment/header fields.

lib/langue/formatter/gettext · high confidence

Enhanced translation model with placeholders, plural/locked states, and versioned links

The translation model now supports plural forms and locked states, and stores placeholder values for each translation. New operations handle batched SQL updates for insertions and corrections, and versioned translations are explicitly linked to their source translations during sync. The rollback mechanism was also updated to clear the source translation ID when rolling back a new translation.

lib/movement/migration · medium confidence

Expanded schema support for translations, integrations, and project configuration

The data model for translations is extended with new boolean and array fields to support plural forms, locked states, and placeholders. Projects now support machine translation configurations, custom prompts, and linting rules, while integrations track execution history and store specific cloud provider credentials. Additionally, the system introduces new schemas for managing user access tokens, comment subscriptions, and document formats, alongside updates to user and revision structures to support these new capabilities.

lib/accent/schemas · high confidence

Improved language data and seed script refactoring

The system now supports plural forms for gettext serialization, enabling more accurate pluralization in translations. The language data has been updated to include specific script variants for Chinese (Simplified and Traditional) and a generic Spanish slug, ensuring consistent naming across languages. Additionally, the database seeding process has been refactored to use a dedicated module, simplifying the seed script and removing direct file parsing in favor of a structured approach.

priv/repo · high confidence

Introduce passive sync comparer and refactor existing comparers

A new passive sync comparer (SyncPassive) has been added to handle sync operations, introducing logic to determine actions like 'new', 'renew', 'remove', and 'noop' based on translation comparisons. Additionally, the existing sync comparer has been renamed to SyncSmart, and all comparers (MergeForce, MergePassive, MergeSmart, and SyncSmart) have been refactored to include the 'text' field in their 'noop' operation results, ensuring consistent data structure across different comparison outcomes.

lib/movement/comparers · high confidence

Introduce structured formatters for CLI output

The CLI now uses a set of dedicated formatter classes (e.g., \CommitOperationFormatter\, \DocumentExportFormatter\, \ProjectLintFormatter\) to handle all console output. This refactors the previous ad-hoc \console.log\ calls into a consistent, typed interface for displaying sync, export, lint, and stats information to the user.

cli/src/services/formatters · high confidence

Migrate CI from Travis to GitHub Actions and update tooling configuration

The project has replaced the Travis CI configuration with a new GitHub Actions CI workflow, removing the \.travis.yml\ file and associated build scripts. This change is accompanied by the introduction of new configuration files for code quality and formatting tools, including \.eslintrc.js\, \.prettierrc\, and \.dialyzer\_ignore.exs\, which standardize linting, formatting, and type-checking across the Elixir and TypeScript/JavaScript codebases.

(repo-wide) · high confidence

Migrate GraphiQL to React 19 and add machine translation endpoints

The GraphiQL interface has been refactored to use React 19 and the standalone GraphiQL package, replacing the previous inline HTML template with a new EEx template that loads React, ReactDOM, and GraphiQL via ESM. The router has been updated to serve this new template at /graphiql. Additionally, new API endpoints have been added for machine translation: POST /machine-translations/translate-file and POST /machine-translations/translate-document, which route to the MachineTranslationsController. The router also introduces a /metrics route protected by basic auth and a /metrics-public route for shared metrics, alongside a new /auth scope for logout and OAuth callbacks.

lib/web · medium confidence

Migrate component-helpers to TypeScript

The codebase has been migrated to TypeScript, starting with the component-helpers. The \percentage\ helper now uses explicit TypeScript type annotations for its parameters and return values, and a new type definition file (\file-saver.d.ts\) has been added to provide type information for the file-saver utility. This change improves type safety and developer experience within the webapp.

webapp/app/component-helpers, webapp/types/accent-webapp · medium confidence

Migrate helper and initializer files to TypeScript

The application's helper functions and instance initializers have been converted from JavaScript to TypeScript. This includes new or updated implementations for array-includes, field-error, integration-logo, repeat, string-diff, time-ago-in-words, and truncate, alongside a migration of the raven-setup initializer. These changes improve type safety and developer experience within the webapp's UI logic.

webapp/app/helpers · high confidence

Migrate hook event processing from GenStage to Oban

The internal mechanism for processing hook events has been refactored from a custom GenStage-based producer/consumer pipeline to use Oban for asynchronous task execution. This change removes the \EventProducer\, \EventConsumer\, and \Broadcaster\ modules, replacing them with a new \Accent.Hook\ module that enqueues jobs via Oban. This allows the system to handle event processing more reliably and scale independently of the main application processes.

lib/hook · high confidence

Migrate project sub-routes to Apollo subscriptions

The project sub-routes (activities, activity, collaborators, comments, conflicts, files, index, integration-executions, manage-languages, revision, service-integrations, translation, and versions) have been refactored to use Apollo subscriptions for data fetching. This change updates how each route loads its respective data—such as project activities, comments, conflicts, and versions—by replacing previous data-fetching mechanisms with GraphQL-based subscriptions, ensuring real-time updates and consistent data loading across the project dashboard and related pages.

webapp/app/routes/logged-in/project · high confidence

Migrate to OpenTelemetry and add LanguageTool integration

The application's telemetry infrastructure has been upgraded from a custom TelemetryUI implementation to OpenTelemetry, with new setup calls for Bandit, Phoenix, Absinthe, Ecto, Oban, and Dataloader. Additionally, a LanguageTool server has been added to the supervision tree to provide a performant and accurate spelling lint check, with configurable languages and disabled rule IDs. The GraphQL authorization plugin was also updated to use a \target\ parameter for authorization checks.

lib · high confidence

Migrate webapp GraphQL queries to TypeScript

The webapp's GraphQL query and mutation definitions have been converted from JavaScript to TypeScript. This change introduces strict typing for query variables and response structures across the application's data layer, improving type safety and developer experience for all queries and mutations defined in this directory.

webapp/app/queries · high confidence

Migrate webapp services from JavaScript to TypeScript and modernize architecture

The webapp services have been rewritten in TypeScript, replacing the previous JavaScript implementations. This includes a complete overhaul of the session management, which now uses a server-side session creator instead of local storage persistence, and a modernized Apollo client integration that returns errors as data rather than throwing runtime errors. Additionally, the codebase adopts modern Ember patterns, such as using the \@service\ decorator and class-based services, and updates the \raven-js\ import path.

webapp/app/services · high confidence

Modernized Ember app structure and expanded navigation for new features

The application's core structure has been modernized by converting the Ember app to use ES6 classes and native class syntax, replacing the older prototype-based initialization. This refactor includes updating the router to support new routes for machine translations, JIPT (Just In Place Translation), and integration execution tracking, while also removing the legacy resolver file. Additionally, the app's HTML template was updated to include a script that applies a user's saved theme preference from local storage, and security headers were added to asset links.

webapp/app · medium confidence

Modernized webapp configuration for Ember.js and TypeScript migration

The webapp configuration has been updated to support the migration to TypeScript and the latest version of Ember.js. This includes adding new configuration files for Ember Intl, optional features (disabling jQuery integration and application template wrappers), and browser targets. The main environment configuration now uses history-based routing, removes legacy i18n settings in favor of the new intl setup, and updates API endpoint paths to include machine translation and JIPT export routes.

webapp/config · high confidence

Modernized webapp styling with CSS variables and new syntax support

The webapp's stylesheet was refactored to use CSS custom properties (variables) for theming, replacing hardcoded color and font values. This includes updating input fields to use variables for borders, backgrounds, and focus states, and applying the modern \color-mix()\ function for selection highlights. Additionally, a new \highlight-theme.scss\ file was added to provide syntax highlighting for code blocks, supporting both light and dark themes. The legacy \base\, \modal\, and \reset-select\ stylesheets were removed as their functionality was integrated or replaced.

webapp/app/styles · high confidence

Optimize GraphQL query performance with field projection

The system now skips expensive statistics computations in GraphQL resolvers when the corresponding count fields are not requested by the client. A new \FieldProjection\ helper inspects the incoming GraphQL query to determine which fields are needed, allowing the backend to avoid unnecessary database queries for translation counts, conflicts, and other aggregated data. This optimization is applied across multiple resolvers, including \Document\, \Project\, and \Revision\, significantly reducing the load on the database for queries that do not require these specific metrics.

lib/graphql/resolvers · high confidence

Optimizes database write performance and introduces background hook processing

The movement persisters now batch-insert operations in chunks of 500 to prevent database parameter overflow, and use dynamic SQL fragments for efficient bulk updates. A new background worker (ProjectHookWorker) processes project state changes asynchronously via Oban, decoupling hook execution from the main persistence flow. Additionally, the base persister now tracks telemetry metadata for all operations and uses optimistic locking on the project sync to prevent race conditions.

lib/movement/persisters · high confidence

Project creation and deletion now handle additional fields and associated operations

Project creation now accepts 'main\_color' and 'logo' as optional fields, and the project deleter has been updated to explicitly delete associated operations and revisions in a transaction, ensuring that project deletion also cleans up related data. Additionally, the project updater now supports updating 'main\_color' and 'logo' fields, and the cast logic for locked file operations has been refactored.

lib/accent/projects · medium confidence

Propagate translation updates to source translations when versioned

When a versioned translation is updated, corrected, or uncorrected, the system now optionally copies the change to the corresponding source (latest) translation. This new behavior is controlled by the \copy\_on\_update\_translation\ flag on the version. If enabled, the \VersionCopyOnUpdate\ module generates an additional operation to update the source translation, ensuring that changes to a specific version can be mirrored to the main translation.

lib/movement/builders · high confidence

Redesigns button, filters, and power-select components with modern CSS variables and layout improvements

The UI styling for buttons, filters, and power-select dropdowns has been updated to use CSS custom properties (e.g., --button-background-color, --color-primary) instead of hardcoded values or legacy SCSS variables. The button component now supports multiple semantic variants (blue, grey, success, red, green) with distinct hover and loading states. The filters component has been restructured with a flexbox layout and new modifier classes (e.g., --jipt, --transparent). The power-select component now supports multi-select with styled tags, improved focus states, and consistent border-radius. These changes provide a more consistent and themeable visual experience across the application.

webapp/app/styles/html-components · high confidence

Refactor CLI configuration and document handling into dedicated services

The CLI's internal architecture has been refactored to use dedicated service classes for managing configuration, document paths, and project data. The \ConfigFetcher\ now handles environment variable overrides and validates required fields, while \DocumentPathsFetcher\ and \DocumentJiptPathsFetcher\ manage document path resolution. The \Document\ class now encapsulates API interactions for sync, export, and linting, and the \ProjectFetcher\ retrieves project details via GraphQL. These changes streamline how the CLI processes documents and interacts with the backend.

cli/src/services · high confidence

Refactor and expand database query scopes for improved filtering and statistics

The \lib/accent/scopes\ module has been refactored to improve database query handling. New scope files (\Integration\, \PopularLanguagesFragment\, \ProjectLintEntry\, \Search\, \TranslationsCount\) have been added to handle specific filtering and ordering logic, such as sorting languages by usage frequency and performing efficient stats aggregation. Existing scopes (\Comment\, \Document\, \Language\, \Operation\, \Project\, \Revision\, \Translation\, \Version\) have been updated to use the new \Accent.Scopes.Search\ module for search functionality, and many have been simplified by removing redundant \from/2\ calls in favor of direct query construction. The \Language\ scope now supports user-specific ordering based on collaboration, and the \Version\ scope now supports version requirement matching. These changes streamline how the application queries and orders data, particularly for translations, projects, and versions.

lib/accent/scopes · high confidence

Refactor authentication and session handling in web plugs

The session plug now uses a configurable signing salt for cookie security. Authentication has been strengthened by allowing fallback to the 'authorization' query parameter and session cookies, ensuring users remain logged in via webhooks or services without HTTP header access. Additionally, a new 'AssignRevisionLanguage' plug centralizes revision and language assignment, while the 'AssignCurrentUser' plug now logs the current user's email or ID for better observability.

lib/web/plugs · high confidence

Refactor configuration, release tasks, and endpoint plumbing

The application now uses a centralized config module to parse environment variables into typed values (string, integer, boolean, URI, CORS, and comma-separated lists). New release tasks handle database migrations, seeding, and rollbacks. The endpoint is updated to serve static files, enforce SSL, handle canonical hosts, and include a /ping health-check. The Sentry integration groups database connection errors, and the Vault module uses a configurable machine translations key. Badge generation now queries a new translated\_count and uses a dedicated scope for stats.

lib/accent · high confidence

Refactor email view helpers and add lint view

The email view templates now use a corrected spelling in the 500 error message ('occurred'/'notified'). The email view config helper was updated to use \Routes.static\_url\ for the webapp URL, and style helpers were refactored. A new \LintView\ was added to render linting data as JSON, and the \WebappView\ was introduced to handle subresource integrity removal via a new configuration setting. Additionally, the \PeekView\ was refactored to use \Enum.reduce\ and a new \previous\_text\ helper.

lib/web/views · medium confidence

Refactor remote user authentication flow and token management

The remote user authentication flow has been restructured to accept a standardized info map from providers rather than raw provider/uid pairs, simplifying the \Authenticator\ logic. The \Fetcher\ module, which previously handled provider-specific fetching, has been removed in favor of direct mapping within the \Authenticator\. Additionally, the \TokenGiver\ has been updated to support global access tokens and explicitly revoke private access tokens upon authentication, ensuring that previous sessions are invalidated securely.

_lib/accent/auth/user\remote · medium confidence

Refactor translation parsing and serialization with new formatter interface

The translation system now uses a new \Langue.Formatter\ behaviour to standardize how different file formats are parsed and serialized. This change introduces a generic formatter interface with \parse\ and \serialize\ callbacks, replacing the previous \LineByLineHelper\ and ad-hoc parsing logic. The \NestedParserHelper\ and \NestedSerializerHelper\ have been updated to use this new structure, including support for float value types and plural state detection. Users will see a more consistent and extensible foundation for adding new translation file formats.

lib/langue/utils · high confidence

Refactor translation rendering and remove obsolete counter module

The \Accent.TranslationsCounter\ module, which previously computed active and conflicted translation counts, has been removed as the system now counts translations directly in the database. In \lib/accent/translations/translations\_renderer.ex\, the rendering logic was refactored to use the \Langue\ library's serializer interface, enabling support for additional translation formats and metadata fields such as plural forms, placeholders, and locked states.

lib/accent/translations · high confidence

Refactored Java Properties and Apple .strings formatters to use shared parsing utilities

The Java Properties, Java Properties XML, and Apple .strings formatters have been refactored to use the shared \LineByLineHelper\ and \Placeholders\ utilities. This change standardizes how these formatters parse and serialize translation files, ensuring consistent handling of placeholders and line-by-line processing across all three formats.

_lib/langue/formatter/java\_properties, lib/langue/formatter/java\_properties\xml, lib/langue/formatter/strings · medium confidence

Refactored revision deletion and promotion logic

The system now handles revision deletion through a new background worker (DeleteWorker) that uses an infinite transaction timeout, replacing the previous synchronous deletion process. Additionally, revision promotion logic has been consolidated into the RevisionManager, which now manages both deletion and promotion states, removing the separate RevisionMasterPromoter and RevisionDeleter modules.

lib/accent/revisions · medium confidence

Refine batch operation grouping logic

The batcher now groups operations by a broader set of actions (correct\_conflict, update, sync, merge) and explicitly matches on project\_id, ensuring that batched operations are correctly associated with their respective projects. This change improves the accuracy of batched operation processing by preventing incorrect grouping across different projects.

lib/accent/operations · medium confidence

Removal of Rails YAML serializer

The Rails YAML serializer module has been removed from the codebase. This change eliminates the specific formatting logic for Rails-style YAML output, meaning that locale data will no longer be serialized using the previous Rails-specific structure.

lib/langue/formatter/rails · high confidence

Removal of global SCSS variable files and update to power-select styling

The global SCSS variable files for colors, dimensions, fonts, and transitions have been removed from the application's style variables directory. Additionally, the background color for the highlighted state in the power-select component has been updated to use a named color-green variable instead of the previously used $color-primary.

webapp/app/styles/variables · high confidence

Removal of legacy form button and label styles

The SCSS files defining the \.button\ and \.label\ components within the form HTML components have been deleted. This removes the legacy styling for form buttons (including variants like bordered, filled, and color-specific styles) and the label component, indicating a shift away from these specific CSS-based UI implementations.

webapp/app/styles/html-components/form · high confidence

Removed English locale configuration and translation files

The English locale configuration file (config.js) and the main translations file (translations.js) have been deleted from the webapp. This removes the hardcoded English text and pluralization rules that were previously used for the application's user interface.

webapp/app/locales/en · high confidence

Removed Phoenix WebSocket and channel infrastructure

The application's real-time communication layer has been removed. Specifically, the \Accent.ProjectChannel\ and \Accent.UserSocket\ modules, which handled WebSocket connections and channel subscriptions, have been deleted from the codebase.

lib/web/channels · high confidence

Removed dummy and Google authentication adapters

The dummy and Google authentication adapters have been removed from the user remote fetching system. This eliminates the ability to use the dummy provider for testing and removes the Google OAuth2 token info endpoint integration, reducing the supported authentication providers.

_lib/accent/auth/user\remote/adapters · high confidence

Removed legacy Ember components and mixins

The webapp removed a large number of legacy Ember components and mixins, including \apollo-route\, \authenticated-route\, \reset-scroll\, and various UI components like \acc-badge\, \acc-flash-message\, \acc-modal\, \activity-item\, \commit-file\, \conflict-item\, and others. This change reflects a migration away from the older Ember component structure, likely as part of a broader refactoring to modernize the codebase.

webapp/app/pods · high confidence

Removed legacy event consumer implementations

The custom event consumer modules for email, Slack, and WebSocket have been removed from the codebase. These files previously handled asynchronous processing and broadcasting of hook events, and their removal indicates a shift away from this specific implementation pattern.

lib/hook/consumers · medium confidence

Replace in-app Phoenix client with a file-saver utility

The in-app Phoenix WebSocket client and channel listener have been removed from the webapp, eliminating the bundled Phoenix.js implementation. In its place, a new file-saver utility has been added to handle file downloads, providing a more robust solution for saving files via the Blob API and object URLs.

webapp/app/utils · high confidence

Rewrote CI check script with parallel task execution and live progress

The CI check script was rewritten to run checks in two phases: first, sequential API tests and compilation checks; then, parallel formatting, linting, and type-checking tasks. The script now uses bash with colorized, live-updating progress indicators for each task, replacing the previous shell-based implementation.

priv/scripts · high confidence

Simplified JSON formatter now processes placeholders

The Simple JSON formatter has been updated to parse and handle placeholders within JSON data. Previously, the parser simply delegated to the standard JSON parser; now it explicitly processes placeholders using a dedicated regex, allowing the system to correctly identify and manage placeholder tokens in JSON-formatted translation files.

_lib/langue/formatter/simple\json · medium confidence

Simplified SecureRandom and PrettyFloat utilities

The SecureRandom module was refactored to remove the public base64 and random\_bytes functions, leaving only the urlsafe\_base64 function which now uses :crypto.strong\_rand\_bytes directly. Additionally, the PrettyFloat module was updated to explicitly handle integer inputs by returning them as-is, ensuring consistent behavior for both integer and float types.

lib/utils · medium confidence

Update JSON formatter to use jsone and support placeholders

The JSON formatter now uses the jsone library instead of jiffy for parsing and serializing JSON. This change introduces support for parsing placeholders in translation strings, allowing for more dynamic content in translations. Additionally, the serializer now handles null values and formats JSON output with specific encoding options, improving compatibility and readability.

lib/langue/formatter/json · medium confidence

Update email layout templates to use inner content and URL helpers

The email layout templates (HTML and text) were updated to replace the explicit render call with the @inner\_content variable, allowing the email body to be injected more flexibly. Additionally, the templates were updated to use the webapp\_url() helper instead of webapp\_host(), ensuring the email links use the full URL rather than just the hostname.

_lib/web/templates/email\layout · high confidence

Update email templates to use user display names and new URL helpers

Email templates for comments and project invitations now display the user's display name instead of their email address, providing a more personalized experience. Additionally, all email links have been updated to use the new \webapp\_url()\ helper instead of \webapp\_host()\, ensuring consistent URL generation across the application.

lib/web/templates/email · medium confidence

Updated Slack authentication strategy to support Slack V2 OAuth API

The Slack authentication strategy has been updated to use the Slack V2 OAuth API, which now returns both a bot token and a user token. This change allows the application to authenticate users and access Slack data using the newer API endpoints, ensuring compatibility with current Slack authentication flows.

_vendor/ueberauth\slack · high confidence

Fixes

Added LanguageTool integration and fixed SMTP TLS configuration

A new LanguageTool integration has been added to the vendor directory, including the native build scripts (gradlew, gradlew.bat, and gradle wrapper properties) required to build the tool. Additionally, the Bamboo SMTP adapter has been updated to forward TLS options, resolving network errors caused by missing TLS configuration parameters.

vendor · high confidence

Test coverage

Add placeholder value tests for SimpleJson formatter; Add test coverage for JSON formatting and parsing edge cases; Add tests for CSV formatter; Add tests for XLIFF 1.2 formatting; Add tests for machine translation providers; Add tests for translation sync and conflict resolution logic; Added GraphQL request and response tests for projects and integrations; Added and expanded tests for language, translation, and version scopes; Added and refactored tests for the Gettext formatter; Added and updated tests for movement operations; Added and updated tests for movement persisters; Added and updated tests for translation and role abilities; Added tests for Laravel PHP formatter and expectations; Added tests for RESX 2.0 format support; Added tests for Simple PHP formatter; Added tests for email-based permission restrictions; Added tests for outbounds hook integrations; Added tests for the ErrorView module; Added tests for the Hook module; Added tests for the Rails YAML formatter; Added unit tests for the linting module; Expanded test coverage for core service layer components; Expanded test coverage for web controllers; Refactor and expand Android and Java Properties test suites; Refactor and expand Java Properties XML formatter tests; Refactor test suite with factory pattern and updated helpers; Refactored authentication tests to use factory helpers and update test assertions; Refactored test suite to use factory pattern and modernize test setup; Removed obsolete Slack hook tests; Removed obsolete session service tests; Removed obsolete test helper files; Removed obsolete test infrastructure and acceptance tests; Updated Es6Module formatter tests to include plural and placeholder scenarios; Updated GraphQL authorization and field helper tests; Updated email template assertions to match new link formats; Updated string formatter tests to include placeholder support and explicit value types; Updated test infrastructure with Factori and Oban testing support; Updated test suite for GraphQL resolvers.

Dependencies

Update CLI, Elixir, and Ruby dependencies

The CLI tooling has been upgraded to version 0.19.0, and the Elixir project has been updated to use Elixir 1.19 and OTP 27, alongside a major refresh of Elixir dependencies including Phoenix 1.4, Ecto 3.14, and Absinthe 1.4. Additionally, the Ruby Gemfile has been updated to use the 'aigu' gem instead of 'hanzo', and the Language Tool native build configuration has been added.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 45 → 41 (-3.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 61 → 65 (+4.4)
  • Architecture 90 → 87 (-2.6)
  • Maturity 65 → 69 (+4.2)
  • Readiness 22 → 24 (+2.3)
  • Security 60 → 59 (-1.1)
  • Accessibility 46 (new)

Resolved (107)

  • Change coupling: accent.ex ↔ mix.exs (lib/accent.ex)
  • Change coupling: endpoint.ex ↔ mix.exs (lib/accent/endpoint.ex)
  • Change coupling: langue.ex ↔ mix.exs (lib/langue/langue.ex)
  • Change coupling: router.ex ↔ mix.exs (lib/web/router.ex)
  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (webapp/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (webapp/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (cli/package-lock.json)
  • Critical CVE: [GHSA redacted] (webapp/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical vulnerability: [GHSA redacted] (jipt/package-lock.json)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • …and 87 more

New (1275)

  • Change-coupling hub: mix.exs → accent.ex, endpoint.ex, langue.ex, router.ex (mix.exs)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (webapp/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (webapp/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical CVE: [GHSA redacted] (cli/package-lock.json)
  • Critical CVE: [GHSA redacted] (webapp/package-lock.json)
  • Critical CVE: [GHSA redacted] (jipt/package-lock.json)
  • Critical vulnerability: [GHSA redacted] (jipt/package-lock.json)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (lib/web/controllers/export_controller.ex)
  • Duplicated block (10 lines × 5) (lib/accent/telemetry_ui/telemetry_ui.ex)
  • Duplicated block (11 lines × 2) (lib/accent/telemetry_ui/telemetry_ui.ex)
  • …and 1255 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

mirego/accent was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 43872af8578df4121e39ea17c679b5eebb08f3f4 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.