wintermeyer/vutuv
47.2
Weak · 18 September 2026
227.8k
lines of production code
Elixir
primary language
1
measurement over time
What this system is
This system is a federated social networking platform built on Elixir and Phoenix LiveView, supporting ActivityPub federation and Mastodon API compatibility. It provides a comprehensive suite of social features including microblogging, direct messaging, job posting management, and mutual connection handling. The platform also offers specialized professional tools such as a CV builder, LinkedIn import, and AI-powered employment reference analysis, alongside robust administrative and moderation capabilities.
Features
Add live Messages and Notifications pages
Introduces a new Messages page (MessageLive.Index) that provides a sidebar for browsing conversations and message requests, alongside a thread view for 1:1 chats. The feature supports real-time updates via PubSub, displays online presence and typing indicators, and allows users to send messages with file and image attachments. It includes authorization checks to ensure users can only access their own conversations and handles both member-to-member and member-to-page messaging.
_lib/vutuv\_web/live/message\live · high confidence
Add profile section for managing online messengers
Users can now add, edit, and reorder online messengers (such as Signal, WhatsApp, and Threema) in their profile settings. The new /settings/messengers interface allows selecting a provider and entering a contact value (phone number, username, ID, or Signal contact link), with the public profile page displaying these messengers as a dedicated section.
_lib/vutuv\web/templates/messenger · high confidence
Added ISBN hyphenation range data
The application now includes a new data file, priv/isbn\_ranges.txt, containing ISBN hyphenation rules generated from the International ISBN Agency's RangeMessage. This data supports the system's ability to correctly parse and format ISBNs by defining the lengths of registration groups and registrants for various prefixes.
priv · high confidence
Added one-time code list login backup
Users can now generate, view, and manage a list of printed one-time codes for signing in. This new page under Settings \> Sign-in & security allows users to generate a fresh list of codes, which are displayed with usage status (used/unused), and provides options to regenerate the list (invalidating all previous codes) or delete the list entirely. The interface includes clear instructions on keeping the list safe and replacing it if compromised.
_lib/vutuv\_web/templates/login\code · high confidence
Added reference skill for German employment certificate analysis
Added a new reference skill in priv/reference\_skill that provides a comprehensive workflow for analyzing German employment certificates (Arbeitszeugnisse) using an 'traffic light' system. This includes legal anchors, case law references, and structured output formats for evaluating certificate quality, potential legal issues, and recommended actions.
priv/gettext · high confidence
Admin interface overhaul: new moderation, federation, and newsletter tools with unified design
The admin area has been significantly expanded and redesigned with a unified card-based layout. New capabilities include freezing and unfreezing accounts, reviewing and approving ads, managing honor tags, editing legal pages, and sending newsletters with click tracking. Operators can now block remote Fediverse servers, view inbound volume statistics, and monitor takedown logs. Reporter trust levels are tracked, and installation-wide preference defaults are configurable. Legacy coupon management templates have been removed.
_lib/vutuv\web/templates/admin · high confidence
Agent-readable document formats for public pages
Public pages are now available in Markdown, plain text, JSON, and XML alongside HTML, allowing external agents and machines to consume structured data directly. This system ensures that the non-HTML representations stay in sync with the HTML views, providing a consistent data source for integrations and automated readers.
_lib/vutuv\_web/agent\docs · high confidence
Employment reference management and AI review interface
Members can now upload, edit, and manage employment references (Arbeitszeugnisse) within Settings, including a drag-and-drop upload zone and a required owner-confirmation checkbox for new entries. The system provides an AI-powered review of the reference text, displaying the verdict, a detailed report, and the specific model version used, while clearly stating that the analysis is not legal advice. Users can view their own references with an embedded PDF viewer or image preview, and optionally publish specific references to their public profile page for others to see.
_lib/vutuv\_web/templates/job\reference · high confidence
Expanded configuration for AI moderation, federation, and developer tooling
The application now supports Italian alongside English and German, and configures the system to use UUID v7 identifiers for database records. It introduces a comprehensive AI image moderation pipeline using Ollama, including a pixelated preview for pending checks and a blocklist to prevent link previews of sites with consent walls. The configuration also enables ActivityPub federation support, adds a dev-only secret key for local booting, and relaxes the Content-Security-Policy in development to allow unsafe-eval for the Tidewave debugging toolbar.
config · high confidence
Introduce API v2.0 with comprehensive endpoints and unified error handling
The platform now offers a new \/api/2.0\ interface that replaces the legacy v1 API, providing a unified set of controllers for managing posts, jobs, direct messages, notifications, profile sections, and social graph interactions. This release introduces dedicated endpoints for uploading post images and videos (with asynchronous processing for videos), creating and managing job postings, and handling direct message conversations. It also standardizes error responses across all endpoints using RFC 9457 \application/problem+json\ and implements secure, tamper-proof keyset cursor pagination for all list-based endpoints to ensure consistent and performant data retrieval.
_lib/vutuv\_web/controllers/api\v2 · high confidence
Introduce daily text ad booking with preview and approval workflow
Users can now book a single daily text ad via a new multi-step flow: the booking form includes a calendar to select an available day and collect billing details, followed by a preview page that renders the ad exactly as it will appear on the site. After confirming the booking, the ad enters a review state where it is held for admin approval before going live, and users can track the status of their bookings on a dedicated 'My ad bookings' page.
_lib/vutuv\web/templates/ad · high confidence
Introduces ActivityPub document generation for follow-only federation
Adds the \VutuvWeb.Fediverse.Docs\ module to generate the machine-readable ActivityPub JSON documents (Actor, Note, and activity envelopes) required for follow-only federation. This enables members to be discovered and followed on the Fediverse by exposing their actor identity, pinned posts, and public posts via specific URL paths (e.g., \/:username/actor\), while also implementing a shared inbox for efficient incoming message delivery.
_lib/vutuv\web/fediverse · high confidence
Italian language support added to the application
The application now includes Italian translations for user-facing text, error messages, and interface elements. This change adds the \default.po\ and \errors.po\ localization files for the Italian locale (\it\), enabling the UI to display in Italian for users with that language preference.
priv/gettext/it · high confidence
Mastodon-compatible API endpoints for client integration
This change introduces a comprehensive set of new controllers under the Mastodon API adapter, enabling third-party clients to interact with the platform using the standard Mastodon API protocol. The new implementation includes account management (profile verification, lookup, and status lists), application registration and OAuth metadata discovery, media handling for images and videos with asynchronous processing support, and full read/write capabilities for lists such as bookmarks, favorites, followers, and blocks. It also adds support for grouped notifications, search functionality, push notification subscriptions, and profile editing, ensuring that clients can perform core social actions like posting, liking, bookmarking, and following without relying on the native web interface.
_lib/vutuv\_web/controllers/mastodon\api · high confidence
New 'Blocked members' settings page with direct blocking by handle
Users can now manage their block list from a dedicated page integrated into the Settings shell, accessible via the Privacy menu. This page allows users to block other members directly by entering their @handle without needing to visit their profile first. It displays a list of currently blocked members, showing their full name and handle, and provides an option to unblock them. The page clarifies that blocking prevents all interactions (following, connecting, messaging, replying) and removes existing connections, which are not restored upon unblocking.
_lib/vutuv\web/templates/block · high confidence
New CV export and builder feature
Members can now generate and download their profile as a formatted CV (Lebenslauf) in multiple formats: HTML (print-ready PDF), Word (.docx), OpenDocument (.odt), LaTeX (.tex), and JSON Resume. The system includes an interactive builder that allows users to customize which sections to include or exclude, and offers an 'Anonymize' preset to hide identifying fields like name, photo, and contact details for blind recruitment. The CV aggregates profile data including work experience, education, skills, languages, and social profiles, with support for Markdown descriptions in work entries.
_lib/vutuv\web/cv · high confidence
New Certificates & Licenses profile section with proof uploads
Users can now manage a dedicated 'Certificates & licenses' section on their profile. This includes a new editor to add, edit, or delete credentials (such as AWS certifications or professional licenses), specifying details like issuer, issue/expiry dates, and verification links. A key feature is the ability to upload proof documents (PDFs or images) for verification, which are gated by explicit public consent before appearing on the public profile. The public-facing view displays these credentials in a card list, showing an 'Expired' badge for outdated items, and links to any jobs associated with the qualification.
_lib/vutuv\web/templates/qualification · high confidence
New Education section with CV categorization and profile pinning
Users can now manage their education history through a dedicated section accessible via /settings/educations. This update introduces CV-style categorization (Studium, Berufsausbildung, Schulbildung) to organize entries, supports Markdown formatting in education descriptions, and allows users to pin a specific degree or school to appear as the headline on their public profile instead of a job title. The interface includes a new form for adding or editing entries, with options to notify followers of new entries, and displays the education list in a timeline format on both the public profile and the management hub.
_lib/vutuv\web/templates/education · high confidence
New HTML view modules for access tokens, account activity, ads, company pages, and more
This change introduces a suite of new HTML view modules in the \lib/vutuv\_web/views\ directory to support recent product features. \AccessTokenHTML\ renders access token details including expiry and last-used dates. \AccountEventText\ provides the localized text for the new account activity log, covering events like sign-ins, passkey changes, and profile updates. \AdHTML\ handles the ad booking calendar and approval status badges. \CompanyHTML\ renders the investor and media kit pages, including a growth curve chart. Other new views include \DevDocHTML\ for developer documentation, \DirectoryHTML\ for the member directory, \EducationHTML\ for profile education sections, \EmailComponents\ for the shared HTML email framework, \ImportHTML\ for LinkedIn import previews, \JobReferenceHTML\ for employment reference documents, and \JsonLd\ for structured data (ProfilePage, BlogPosting, etc.).
_lib/vutuv\web/views · high confidence
New Investor and Media Kit pages added
Two new company pages have been added to the website: an Investor page and a Media Kit page. The Investor page displays key metrics (members, Fediverse accounts), explains the arithmetic behind the top-bar figure, shows a 12-month growth curve, and provides a contact section for investors. The Media Kit page offers boilerplate text, brand assets, color/typography specs, screenshots, and tools for members to generate profile badges and snippets.
_lib/vutuv\web/templates/company · high confidence
New LinkedIn profile import flow with preview and selective application
Users can now import their LinkedIn profile data into vutuv via a new two-step process. The first step provides instructions for downloading a LinkedIn data archive and a drag-and-drop upload interface for the ZIP file. The second step presents a detailed preview of the parsed data—including work experience, education, certifications, skills, links, and social media—allowing users to review and selectively choose which entries to add. The import is non-destructive: existing profile entries are never overwritten, duplicates are filtered out, and no changes are applied until the user explicitly confirms their selection. Additionally, the import page links to a feature that identifies which LinkedIn contacts are already on vutuv.
_lib/vutuv\web/templates/import · high confidence
New account activity log and interactive CV builder
Members can now review a detailed history of changes to their account on the new /settings/activity page, which lists every modification with a precise timestamp, device, and confirmation method, including a "Not you?" link for security. Additionally, the interactive CV builder at /:slug/cv allows members and viewers to toggle individual sections and entries on or off, anonymize the document, and download the customized version in multiple formats (Word, OpenDocument, HTML, LaTeX, JSON Resume) without persisting any changes to the database.
_lib/vutuv\web/live · high confidence
New admin dashboard and operational tools
The admin area at /admin now features a live activity dashboard showing real-time online member counts, recent sign-ups, and daily post/message statistics, with follow/unfollow actions available directly from the list. A new account activity log at /admin/activity allows admins to search and filter by member, event type, or details, with access to specific member logs recorded in the admin's own activity trail. Additional tools include a moderation queue and case review interface for handling reports, a job posting oversight page with freeze/close/delete actions, a media job status log, an API application management view with suspend/reactivate controls, a deliverability dashboard for managing frozen accounts and bounced emails, and a newsletter broadcast interface for selecting audiences and sending emails.
_lib/vutuv\web/live/admin · high confidence
New administrative and maintenance CLI tasks for image and moderation backfills
The \lib/vutuv\ area now includes several new Mix tasks to support backend operations: \vutuv.admin.promote\ grants admin rights to a member; \vutuv.images.backfill\ reconciles existing pictures into the shared images table; \vutuv.images.regenerate\ re-derives served image versions from private originals; \vutuv.images.relabel\_legacy\_dirs\ renames image directories from legacy integer IDs to new UUIDs; \vutuv.images.sweep\_legacy\ deletes legacy avatar/cover files after fingerprint migration; \vutuv.moderation.backfill\ queues AI image scans for grandfathered images; \vutuv.review\_covers.refresh\ re-fetches book covers from Open Library; and \vutuv.translations.detect\_languages\ detects languages for posts and remote content. These tasks provide operators with explicit control over image data integrity, moderation queue population, and content metadata normalization.
lib/vutuv · high confidence
New community guidelines and unified legal page template
The site now includes a dedicated Community Guidelines page that outlines rules for family-friendly content, anti-harassment, and spam, while clarifying the three-strike moderation process. The previous static privacy policy and imprint templates have been replaced by a single, dynamic Legal page template that allows administrators to publish and edit these pages via the admin interface. This new template also includes a direct link to the anonymous report form on the imprint page, ensuring rights holders can report content without needing an account.
_lib/vutuv\web/templates/page · high confidence
New developer portal for OAuth apps and webhooks
Developers can now register and manage OAuth 2 applications and configure webhooks directly through the web interface. The new 'Your applications' list allows users to create, edit, and view app details (including client IDs and redirect URIs), while the app detail page provides controls to regenerate client secrets and manage webhook subscriptions for receiving signed event notifications.
_lib/vutuv\_web/templates/dev\app · high confidence
New developer tools for API access and application management
The platform now provides a self-service developer hub where members can manage OAuth applications and personal access tokens for the \/api/2.0\ interface. A new \DevAppController\ allows users to register third-party apps, view client credentials, rotate secrets, and manage redirect URIs, while a new \AccessTokenController\ enables the creation, listing, and revocation of personal access tokens with configurable expiration (30, 90, or 365 days) and scopes. These changes are accompanied by a \DevDocController\ that serves the updated API documentation and a \ConnectedAppController\ for revoking existing app grants, all supported by a new \DevWebhookController\ for managing signed webhook subscriptions.
_lib/vutuv\web/controllers · high confidence
New email templates for moderation, account, and notification events
The platform now sends detailed HTML emails for a wide range of user and admin events, including account deletion notices, ad booking confirmations, daily admin reports, email creation PINs, endorsements, AI image rejections, job posting expiry reminders, login PINs, and various moderation outcomes (warnings, suspensions, deactivations, frozen content, and case reviews). These templates are provided in German, English, and Italian, ensuring users receive clear, localized notifications about their account status, content moderation decisions, and platform activity.
_lib/vutuv\_web/templates/email\body · high confidence
New email templates for moderation, notifications, and account management
This change adds a comprehensive set of new email templates in the \lib/vutuv\_web/templates/email\ directory, covering moderation workflows (warnings, suspensions, deactivations, frozen content, and outcome notifications), user notifications (new followers, endorsements, digests), account lifecycle events (email confirmation, deletion notices, domain verification for organizations), and operational alerts (daily reports, ad bookings, job expiry reminders). These templates, provided in German, English, and Italian, enable the system to communicate these specific events to users and administrators.
_lib/vutuv\web/templates/email · high confidence
New export page with CV builder access and GDPR data download
A new export page at /:slug/export has been added, providing two main capabilities for users. First, it offers a link to the interactive CV builder at /:slug/cv, allowing users to format their profile into a CV and download it in various formats (Word, OpenDocument, HTML, LaTeX, JSON Resume) or print it; this CV is public and viewer-scoped. Second, it provides a button to download a complete GDPR data dump in JSON format, which includes the user's profile, posts, messages, and settings, with a warning that this file contains private data.
_lib/vutuv\web/templates/export · high confidence
New interactive features: image cropping, keyboard shortcuts, and photo lightbox
This update introduces several new interactive capabilities to the web interface. Users can now crop and arrange profile photos and post images using a dedicated interactive cropper with zoom and pan controls. A new set of desktop keyboard shortcuts allows for faster navigation, including jumping to the composer, moving through feed posts, and opening a help overlay. Additionally, a new photo lightbox provides a full-screen view for images in posts, supporting swipe navigation on mobile and zooming. The update also includes a new emoji picker for the composer and a progressive enhancement for the media kit to auto-fill profile links.
assets/js · high confidence
New job posting management dashboard and visibility controls
Job posters now have a dedicated dashboard at /jobs/mine to manage their postings by status (Active, Drafts, Expired, Closed), with inline actions to edit, mark as filled, or repost expired listings. A new exclusions page at /jobs/:slug/exclusions allows owners to hide specific postings from individual members, entire organizations, or email domains, narrowing visibility without affecting public access for logged-out users.
_lib/vutuv\_web/live/job\_posting\live · high confidence
New moderation case tracking for reported content
Users can now view a list of their reported content and access detailed case pages that explain the status, the reason for the report (including copyright or community guidelines), and the specific actions available to them, such as editing, deleting, or disputing the report within a 72-hour window.
_lib/vutuv\_web/templates/moderation\case · high confidence
New organization management tabs for activity, apps, domains, and more
Organization owners and editors now have access to a suite of new management tabs within the organization settings. The new Activity tab provides a shared, team-wide log of interactions such as follows, likes, reposts, mentions, and replies, with a single read marker for the entire team. The Apps tab allows owners to manage Mastodon-compatible client access, including enabling/disabling the feature and revoking specific app tokens. A new Domains tab simplifies multi-domain verification, allowing owners to add, remove, and set primary domains for the organization page. Additionally, new tabs include Exclusions for managing job-posting filters, Fediverse settings for controlling federation visibility, a dedicated Feed for viewing posts from followed accounts, and a Following list to manage subscriptions. These changes consolidate organization administration into a structured, role-gated interface.
_lib/vutuv\_web/live/organization\live · high confidence
New personal access token management interface
Users can now create, view, and revoke personal access tokens via a new web interface. The 'Create' page allows users to name a token, select specific API permissions (scopes), and set an expiration period (30, 90, or 365 days). The 'List' page displays active tokens with their names, scopes, expiry, and last-used status, providing options to revoke individual tokens or all tokens at once, with immediate effect on any scripts or third-party tools using them.
_lib/vutuv\_web/templates/access\token · high confidence
New post archive, reach analytics, and permalink pages
This change introduces three new template pages for the post system. The post archive (index) now displays paginated posts by author with filter tabs for All, Own, Reposts, and Replies, and includes a feed button. The post permalink (show) renders the full conversation thread and exposes the post in machine-readable formats (Markdown, JSON, XML) via an 'other formats' card. Additionally, a new 'Reach analysis' page (analytics) provides beta-level insights into potential distribution from reposts, a server network map, and a momentum-over-time chart, while a teaser page handles access-denied states for restricted posts.
_lib/vutuv\web/templates/post · high confidence
New remote actor card template for profile previews
Added a new HEEx template for the remote actor card, which displays a popover or sheet preview of a remote account's profile. This component shows the account's network origin, avatar, handle, local post count, and last activity. It includes an expandable self-description (bio) that clamps to three lines and reveals the full text on click, displays the user's personal notes for that account, and highlights the account's most recent local post to help users decide whether to follow.
_lib/vutuv\_web/templates/remote\_actor\card · high confidence
New shared UI components for browse tables, Fediverse interactions, job postings, and pending posts
This change introduces five new shared component modules in the web layer to standardize and DRY up recurring UI patterns. BrowseTable provides a unified interface for paginated, sortable, and filterable lists (used for Fediverse followers/following and admin browsers). FediverseComponents centralizes the UI for following remote accounts, including address input forms and status pills. JobComponents and JobExclusionComponents standardize the job board card layout and the exclusion list editor for job postings. PendingPostComponents handles the user-facing status display for posts waiting on media processing or AI checks. These components ensure consistent behavior and styling across their respective features.
_lib/vutuv\web/components · high confidence
New web plugs for agent formats, API v2, ads, and security policies
The application introduces a suite of new web plugs to handle specialized request processing. Agent document support is expanded with \AgentFormat\ to parse URL extensions and Accept headers for .md, .txt, .json, .xml, and .vcf formats, while \AgentExportOptOut\ enforces user opt-outs by returning 404s for blocked formats. A new \ContentSecurityPolicy\ plug enforces strict security headers, including dynamic \form-action\ handling for OAuth redirects and a dev-only \unsafe-eval\ escape hatch. API v2 access is secured via \ApiV2Auth\ with bearer tokens, scope enforcement, and rate limiting, alongside \ApiCors\ for cross-origin requests. The \MastodonApiGate\ and \MastodonApiAuth\ plugs manage the Mastodon-compatible API, including public read access and token validation. User experience improvements include \AdBanner\ for frequency-capped ad display, \NewsletterClick\ for tracking link clicks, and \PendingFlash\ to preserve flash messages across non-redirect JSON responses. Security and visibility are further refined by \EnsureActivated\ (returning 404/403/410 for withheld accounts), \NoIndex\ to prevent search indexing of sensitive pages, and \HtmlOnly\ to prevent 500 errors on LiveView pages with non-HTML requests.
_lib/vutuv\web/plugs · high confidence
New welcome page for handling onboarding errors and direct access
A dedicated welcome page has been added to display the onboarding form when accessed directly via URL or when the modal submission fails. This page reuses the existing authentication layout and form components to ensure visual consistency with the sign-up flow, while providing a fallback location for rendering validation errors and handling the one-time window for new member questions.
_lib/vutuv\web/templates/welcome · high confidence
OAuth 2.0 authorization page for third-party app access
Users now see a dedicated authorization page when connecting third-party applications (including Mastodon-compatible clients) to their vutuv account. This page displays the requested permissions (scopes), allows the user to select a specific identity if multiple are available, and provides clear Allow or Deny actions. If Mastodon client access is disabled for the account, the page offers a direct link to enable it in settings. An error page is also provided to inform users if authorization fails, ensuring no account changes are made in that case.
_lib/vutuv\web/templates/oauth · high confidence
Public member directory with A-Z browsing and search
A new public member directory is now available at /system/members, allowing users to browse members alphabetically via an A-Z strip or search by name. The directory displays members filed by last name, includes pagination for large sets, and provides a search interface that shares state via URL parameters. The main index page intentionally omits total membership counts to avoid exposing aggregate statistics, while individual letter pages show the count of members for that specific initial. The layout supports dark mode and includes breadcrumbs for navigation.
_lib/vutuv\web/templates/directory · high confidence
Public press kit page with photos, logos, and bios
A new public-facing press kit page is now available for members and pages, allowing journalists to view and download press assets directly. The page displays written biographies, a gallery of press photos, and available logo variants, accompanied by editorial usage rights and credit requirements. It also includes structured data (schema.org ImageObject) to improve search engine indexing for public profiles.
_lib/vutuv\_web/templates/press\kit · high confidence
Server-side code highlighting and structured Markdown rendering
The platform now renders fenced code blocks with syntax highlighting and language/file labels directly on the server, eliminating the need for client-side JavaScript and ensuring code blocks are correctly formatted in RSS feeds, emails, and Fediverse federation. A new Markdown pipeline provides context-aware rendering: posts use a sanitizing renderer with shortened URL display and inline image support, while invitation and direct message emails use a fuller Markdown set with full URL display and strict image stripping to prevent tracking. Additionally, developer documentation now features GitHub-style heading anchors for reliable in-page linking.
_lib/vutuv\web · high confidence
Server-side syntax highlighting and structured diff rendering for code blocks
Code blocks are now highlighted and structured on the server, improving readability and accessibility. Users can name the file source of a code snippet (e.g., \ \\\php:config/app.php \) and specify the programming language inside a diff block (e.g., \ \\\diff:php \). The system now renders diffs as structured rows with added/removed markers in a gutter, ensuring the content remains valid and accessible even without CSS or in RSS feeds. This change replaces client-side processing with a robust server-side pipeline that handles fence parsing, language detection, and safe HTML generation.
_lib/vutuv\_web/code\highlight · high confidence
Tag page now displays and manages Fediverse posts with full interaction controls
The tag page now integrates a new timeline component that lists posts from the Fediverse alongside local content, allowing users to sort, filter, and search across all sources without reloading the page. This update introduces a source chip and panel for managing which servers contribute to a followed tag, and adds comprehensive action bars on remote post cards, enabling users to like, repost, mute accounts, and report posts directly from the tag view.
_lib/vutuv\_web/live/tag\live · high confidence
Removals
Removal of legacy API v1.0 controllers
The API v1.0 endpoint has been removed, resulting in the deletion of all associated controllers in the \lib/vutuv\_web/controllers/api\ directory. This includes the \UserController\ (which served as a namespace for nested resources) and specific resource controllers for addresses, emails, followees, followers, groups, phone numbers, social media accounts, URLs, vCards, and work experiences. Users relying on the \/api/1.0/\ endpoints will no longer have access to these read-only profile sub-resources.
_lib/vutuv\web/controllers/api · high confidence
Removal of legacy group management templates
The legacy group management interface has been removed from the application. All associated view templates—including those for listing, creating, editing, and viewing group details—have been deleted from the codebase. This change eliminates the user-facing ability to manage groups through these specific pages, aligning with the removal of the orphaned audience-Groups feature while keeping the underlying database schema intact for potential future use.
_lib/vutuv\_web/templates/group, lib/vutuv\web/templates/slug · high confidence
Removal of legacy membership management views
The legacy membership management interface has been removed, deleting the templates for listing, creating, editing, and viewing individual memberships. Users can no longer access the previous membership CRUD pages, which previously displayed connection and group IDs in a table format and allowed manual editing of group associations via a dedicated form.
_lib/vutuv\web/templates/membership · high confidence
Removal of the Search Terms listing and detail pages
The user-facing templates for the Search Terms feature have been removed. Specifically, the index page (which previously listed search terms with their values and scores) and the show page (which displayed individual search term details) are no longer available. This change eliminates the ability to view or navigate to search term records through the web interface.
_lib/vutuv\_web/templates/search\term · high confidence
Search query history and detail views removed
The user-facing search history list and individual search result detail pages have been removed. Users can no longer view a table of past search terms, requesters, or results, nor can they access a dedicated page showing the specific metadata (such as whether a query was an email) and user results for a single saved search query. The search functionality now focuses on the immediate search form and results display without persisting or displaying historical query data.
_lib/vutuv\_web/templates/search\query · high confidence
Behavioural changes
Addresses section: unified layout, localized forms, and settings-based editing
The address management interface has been redesigned to use shared UI components, providing a consistent look and feel across the application. Editing and deleting addresses now occurs under the user-agnostic /settings/ URLs, separating owner actions from public profile views. Address forms have been improved with proper accessibility (correct label associations), localized country names for German users, and browser autocomplete hints. The public address list now displays addresses in the viewer's locale and includes a 'Manage' link for owners to access the settings page.
_lib/vutuv\web/templates/address · high confidence
Admin area refactored with new dedicated controllers and removed legacy features
The admin interface has been reorganized into a set of new, dedicated controllers for specific operational tasks—including account freezing, ad review, Fediverse server blocking, honor tag management, legal page editing, moderation rulings, newsletter composition, preference defaults, daily activity reporting, and username management—while removing the legacy coupon, exonym, locale, and recruiter package controllers. The main admin dashboard now provides a consolidated overview with live counts for members, moderation queues, image scans, ads, API apps, tags, organizations, jobs, and Fediverse stats, and the tag catalog now supports search and pagination.
_lib/vutuv\web/controllers/admin · high confidence
Admin dashboard redesign and new moderation/account management views
The admin interface has been significantly updated with a new dashboard layout featuring attention-driven tiles that highlight pending work, alongside new views for managing account freezes and statuses, reviewing advertisements with source code, handling moderation cases with audit logs, and managing newsletters. The system also introduces honor tags (replacing coupons) and username management (replacing exonyms), while removing the recruiter package feature.
_lib/vutuv\web/views/admin · high confidence
Blue/green zero-downtime deploys with pre-compressed static assets
The deployment process now uses a blue/green strategy to ensure zero downtime: a new release is built and started on an idle slot (blue or green), a /health readiness gate confirms it is live, and only then is traffic switched via nginx. This prevents users from hitting a dead port during updates. Additionally, static assets are now published with pre-computed brotli and gzip variants to reduce server CPU load and improve delivery speed, and a new cleanup script automatically drops orphaned development and test databases when their associated git worktrees are removed.
scripts · high confidence
Connections page redesigned to show mutual follows with simplified management
The Connections interface has been completely overhauled to reflect a shift from one-directional follows to mutual connections. The legacy form and detail views for creating or viewing individual connections have been removed, as the system no longer supports separate follow requests or accept flows. The main Connections listing now displays only mutual connections (people the user mutually follows), presenting them in a modern card-based layout with avatars and work info. Users can now remove a connection simply by unfollowing, which drops the mutual status, rather than managing complex request states.
_lib/vutuv\web/templates/connection · high confidence
Custom offline error page with operator contact details
The application now displays a custom offline error page instead of the browser's default error message when the service worker intercepts a failed navigation. This page, which uses an inline stylesheet to ensure it loads without external dependencies, clearly explains that the connection failure could be due to either the user's network or the server, and provides a link to the operator's contact information to facilitate support requests.
_lib/vutuv\_web/templates/service\worker · high confidence
Database overhaul: new post system, UUID v7 migration, and moderation infrastructure
This deployment introduces a comprehensive database restructuring. A new post system is added, including tables for posts, replies, images, and engagement (likes, bookmarks, reposts), alongside a new mutual 'connections' model (replacing the legacy 'connections' table with 'follows' for one-directional follows). The entire database is migrated from integer IDs to UUID v7, and legacy tables for job postings, skills, and OAuth providers are dropped. Moderation capabilities are expanded with tables for cases, reports, and strikes, plus fields to freeze content and accounts. Additional changes include renaming magic links to login pins, adding a cover photo field to users, and creating a new conversations/messages schema for private messaging.
priv/repo/migrations · high confidence
Enhanced TOTP setup experience with multiple enrollment options
The TOTP setup page now provides users with three distinct ways to configure their authenticator app: scanning the QR code, using a direct link for same-device enrollment (which opens the authenticator app directly on mobile), and copying the setup URI or the raw Base32 key. This change simplifies the setup process for users who cannot scan a QR code with the device they are currently using, such as when setting up an authenticator on a phone while viewing the setup page on that same phone.
_lib/vutuv\web/templates/totp · high confidence
German localization refresh and validation error translations
The German translation catalog has been updated to reflect recent interface changes, including new labels for addresses, avatars, and user settings. Additionally, validation error messages for form inputs—such as username rules, tag limits, and file upload constraints—are now fully translated into German, ensuring users see clear, localized feedback when submitting invalid data.
priv/gettext/de · high confidence
List connected apps with device and timestamp details
The Connected apps page now displays a list of authorized applications, showing the connection time and specific devices for each grant. This update helps users distinguish between multiple installations of the same app (such as Mastodon clients on different devices) and provides a clear 'Withdraw access' button to immediately revoke permissions.
_lib/vutuv\_web/templates/connected\app · high confidence
Markdown rendering performance and footnote support
Post body rendering is now cached via an ETS-backed memoization layer, significantly reducing latency for repeated views of the same content. Additionally, user-written posts can now include footnotes using standard Markdown syntax, with a custom implementation ensuring compatibility with the HTML sanitization pipeline and preventing ID collisions across feed cards.
_lib/vutuv\web/markdown · high confidence
New dedicated settings pages for apps, bandwidth, and account deletion
The settings hub now includes dedicated pages for managing third-party app access and Mastodon-compatible client authentication, configuring low-bandwidth mode to reduce data usage, and a protected flow for deleting an account that requires username confirmation. These changes split functionality from the main account hub to provide clearer, focused controls for developers, mobile users, and security-sensitive actions.
_lib/vutuv\web/templates/settings · high confidence
New dedicated username management page with rename confirmation
A new settings hub at /settings/username consolidates profile address management, replacing the previous scattered placement under Sign-in & security. Users can now view their current handle, generate a permanent profile link that survives renames, and initiate a username change with a clear confirmation step that explicitly states the change has not yet occurred. The interface displays the current and pending handles side-by-side, warns that mentions will be rewritten, and enforces a usage quota, ensuring users understand the impact before finalizing the change.
_lib/vutuv\web/templates/username · high confidence
New report form with copyright-specific fields and severance warnings
The report submission interface has been updated to include a dedicated copyright reporting category. When users select this category, the form reveals required fields for work details and a good-faith declaration, while the optional note field becomes mandatory. Additionally, if the report targets a user whose connection is being severed, a prominent warning explains that the report will immediately pause all interactions and may reveal the reporter's identity to the reported user.
_lib/vutuv\web/templates/report · high confidence
Notifications page redesign: grouped cards and static mount
The notifications interface has been redesigned to group related events into subject-based cards (e.g., one card per post containing all likes, replies, and mentions) rather than listing every event as a separate row. This new layout, driven by the \VutuvWeb.NotificationLive.Groups\ module, organizes notifications by the reader's calendar day and includes filter chips to sort by type. Additionally, the page now renders on the initial static mount, providing a faster first paint and improving perceived load performance.
_lib/vutuv\_web/live/notification\live · high confidence
Phone number management moves to unified settings and adopts consistent UI components
The phone number section has been refactored to align with the new user-agnostic settings structure: the owner-facing management interface is now accessed via /settings/phone\_numbers, while public profile pages at /:slug/phone\_numbers display the numbers without edit controls. The templates now use shared VutuvWeb.UI components (such as .settings\_shell, .card\_section, .form\_page, and .row\_actions) to replace legacy Bootstrap markup and custom breadcrumbs, resulting in a consistent design language across the app. Additionally, phone numbers are displayed with international formatting via display\_number, and the edit form includes an autocomplete attribute and a hint about including country codes.
_lib/vutuv\_web/templates/phone\number · high confidence
Postfix bounce notifications now feed back into the application
A new Postfix pipe script (vutuv-bounce) has been added to handle email bounce notifications. When Postfix detects a bounce, it pipes the full DSN message to this script, which securely sends the data via a webhook to the application's /webhooks/bounces endpoint. The application then parses the DSN and marks the corresponding email address as undeliverable, ensuring that future sending attempts to that address are avoided.
scripts/postfix · high confidence
Pre-push gate enforces precommit checks and skips unnecessary runs
A new precommit-before-push hook now blocks git pushes if the project's precommit checks (compilation, formatting, linting, and tests) fail, ensuring code quality before production deployment. The gate correctly identifies the worktree origin and command shape to avoid false positives, and skips the expensive test suite for pushes that only modify documentation or configuration files that precommit cannot validate.
.claude/hooks · high confidence
Profile verification and unified settings navigation for social accounts
Users can now verify ownership of their social media accounts (such as Mastodon and Bluesky) by linking back to their vutuv profile, with a verified mark displayed on profile cards and detail pages. The social media management interface has been consolidated into the unified /settings hub under the 'Profiles' section, replacing the previous per-user URL structure, and the provider selection list has been updated to remove Google+.
_lib/vutuv\_web/templates/social\_media\account · high confidence
Project documentation and development environment updates
The repository now includes dedicated documentation files for AI coding agents (AGENTS.md), security reporting (SECURITY.md), and third-party license attribution (NOTICE), alongside a refreshed CONTRIBUTING guide. The development environment has been upgraded to Erlang/OTP 28.5.0.1 and Elixir 1.20.0 stable, with Node.js 24.1.0 added to the toolchain. The .gitignore has been expanded to exclude new local storage trees for avatars, covers, post images, videos, and moderation evidence, as well as transient files like local seeds and precommit logs.
(repo-wide) · high confidence
Public reporting flow now requires email confirmation
The public reporting interface has been updated to require email confirmation before a report is finalized. Users submitting a report via the new public form (which no longer requires an account) will receive an email with a confirmation link; the reported content is flagged for admins immediately, but no changes are made until the reporter clicks the link. The templates now include pages for the initial submission, the confirmation request, the successful confirmation, and link expiration, ensuring users are informed that their report is pending verification.
_lib/vutuv\_web/templates/public\report · high confidence
Redesigned developer documentation layout with mobile-friendly grid and quick-access sidebar
The developer documentation page now uses a responsive four-column grid layout that provides more space for content on desktop while preventing horizontal scrolling on mobile devices. A new right-hand sidebar offers logged-in users one-click access to their access tokens, apps, and connected apps, alongside project links for the GitHub repository and bug reports, improving the ease of starting with the developer tools.
_lib/vutuv\_web/templates/dev\doc · high confidence
Redesigned error pages and unified root layout with PWA and SEO enhancements
The application now features a fully styled, self-contained error page layout that renders inline CSS to ensure visibility even when assets fail, supporting dark mode and providing clear contact information for operators. The root layout has been consolidated to centralize critical metadata, including dynamic Open Graph link previews, explicit canonical URLs for SEO, and crawler directives for both search engines and AI agents. Additionally, the site now supports installation as a Progressive Web App (PWA) on mobile devices, with proper viewport handling for safe areas and site icons for rich link previews in messaging apps. The previous flash notification template has been removed in favor of a new toast-based system that auto-dismisses after a few seconds.
_lib/vutuv\web/templates/layout · high confidence
Redesigned following list with organization separation and updated navigation
The following list page now displays a dedicated section for followed organizations (pages) above the list of followed users, allowing users to unfollow pages directly from this view. The page header and breadcrumbs have been extracted into a reusable component, and the title now dynamically shows "Following" for the current user or "Follows" when viewing another user's profile. Empty states have been refined to provide clearer guidance for the current user, while other users see a simpler "Not following anyone yet" message. The legacy pagination helper has been replaced with a new \.pager\ component.
_lib/vutuv\web/templates/followee · high confidence
Redesigned login page with passkey support and modern layout
The login interface has been completely overhauled to replace the previous 'imagebox' design with a clean, component-based layout. The new page prominently features a passkey (WebAuthn/FIDO2) login button as an alternative first factor, which is conditionally displayed only if the browser supports WebAuthn. The email-based login flow has been updated to use a one-time PIN instead of magic links, accompanied by updated messaging. The visual style has shifted from custom inline CSS to a utility-first approach using Tailwind CSS classes, and the legacy Twitter link has been removed.
_lib/vutuv\web/templates/session · high confidence
Redesigned profile editing and language management with new account deletion flow
Profile editing has been restructured into focused settings pages, replacing the previous single-page form with a new 'Basics & photos' section that supports interactive cropping for avatars and cover photos, alongside a new dedicated 'Languages' section for managing spoken languages and proficiency levels. The old monolithic user form and admin-style user index have been removed. Additionally, a new account deletion confirmation page has been added, requiring a PIN entry to permanently delete an account.
_lib/vutuv\web/templates/user · high confidence
Refactored followers page with component-based header and organization section
The followers page now uses a dedicated page header component for breadcrumbs and displays a new section listing organizations that follow the user, mirroring the following page's structure. The user list rendering has been updated to include additional context data (work info, tags, following status) and uses a new pager component, while empty-state messages are now differentiated based on whether the viewer is the profile owner.
_lib/vutuv\web/templates/follower · high confidence
Refreshed English localization strings and error messages
The English translation catalog (default.po and errors.po) has been updated to reflect recent interface changes. The file paths in the translation sources have been migrated from the legacy .eex templates to the new .heex templates and Elixir components. New error messages have been added for username validation rules (character limits, change frequency), ad booking constraints, tag restrictions (no spaces, no punctuation, no URLs), and file upload limits (PDF unavailability, size, consent). Several obsolete strings from removed features (such as the 'Avater' typo and cookie-consent notices) have been removed.
priv/gettext/en · high confidence
Stabilize release console commands and redirect crash dumps
The release boot script now changes the working directory to the release root before executing one-off console commands (eval, rpc, remote), preventing crashes when invoked from unreadable directories. Additionally, Erlang crash dumps are redirected to a stable location in /tmp by default, keeping the release directory clean of large dump files.
rel · high confidence
Standardized ID generation and unified LiveView component imports
The system now uses UUID v7 for all primary and foreign keys, ensuring consistent, time-sortable identifiers across all Ecto schemas. Additionally, the web layer's LiveView and LiveComponent helpers now automatically import the new UI component library (providing design-system elements like cards and chips) and JSON-LD aliases, simplifying template development and enabling structured data injection without manual imports in individual views.
lib · high confidence
Tag management and endorsement visibility restructured
The tag interface has been split into distinct public and private views. The public tag list now displays each tag as a row featuring a vote chip and a proportional bar chart of endorser avatars, with a direct link to a new paginated, sortable endorser list page. For tag owners, a new dedicated management page at /settings/tags replaces the previous inline editing, allowing users to add or delete tags via a simple list. The legacy card-based list and inline form templates have been removed in favor of these new, component-driven layouts.
_lib/vutuv\_web/templates/user\tag · high confidence
Tag pages redesigned with follow controls, aliases, and live timelines
The tag listing page now displays tags as clickable chips instead of a table, and individual tag pages have been completely restructured: they feature a new header with a follow button for signed-in users, display tag aliases (alternative names) and descriptions in a front-matter card, and render post content via a live-updating timeline component. The old 'Add This Tag' button has been removed from public views, and the layout now constrains content width for better readability on desktop.
_lib/vutuv\web/templates/tag · high confidence
Unified identity resolution and access control for the Mastodon API
The Mastodon API adapter now centralizes how accounts and statuses are resolved and gated, fixing inconsistencies where different endpoints handled visibility checks differently. A new \AccountIds\ module ensures that account lookups (by ID or handle) consistently apply moderation rules, preventing scenarios where a hidden or suspended account's follower list was exposed while the profile page returned 403. Similarly, \Statuses\ now provides a single entry point for resolving status IDs—including reshare and remote post variants—ensuring that visibility checks are applied uniformly across timelines, favorites, and direct status lookups. This change also standardizes error responses via a new \Errors\ module, ensuring clients receive consistent Mastodon-compatible error messages and status codes regardless of which controller handles the request.
_lib/vutuv\_web/mastodon\api · high confidence
Unified legacy styling with improved mobile form usability
The previous \legacy.css\ file has been removed and its styles consolidated into a new \components.css\ file, which now serves as the single source for shared class names like \.card\, \.button\, and \.editform\ across the application. This change introduces a new "Direction A" design system with updated brand colors and ensures that form fields on touch devices are at least 16px to prevent iOS from automatically zooming the page when a user taps an input. The new stylesheet is integrated into the Tailwind cascade layer system, allowing legacy classes to coexist with modern utility classes while maintaining visual consistency.
assets/css · high confidence
Unified link management and verification interface
The links section now uses a consistent settings-based layout for editing, moving creation and management to /settings/links while the public showcase remains at the profile root. A new verification workflow allows members to prove ownership of their linked webpages via rel=me back-links, DNS TXT records, or a well-known file, with verified links displaying a mark on their profile. The interface also supports reordering links and uses shared UI components for forms and actions.
_lib/vutuv\web/templates/url · high confidence
Unified post action bar and feed filtering system
The post interaction controls (like, bookmark, repost) are now managed by a shared \VutuvWeb.PostLive.ActionBar\ module, rendered as an in-process LiveComponent on list pages (feed, profile) for better performance and as a standalone LiveView on static pages (permalink). The feed's source tabs have been replaced by a \FilterBand\ component, allowing users to toggle visibility of specific accounts, servers, and sources within a single timeline rather than switching between separate views.
_lib/vutuv\_web/live/post\live · high confidence
Work experience editor and list view modernized with timeline layout, categories, and profile pinning
The work experience section has been redesigned to improve usability and visual consistency. The management list now uses a timeline layout that groups consecutive roles by employer and allows users to pin a specific role to display as the primary job title on their public profile. The editor form has been simplified, replacing the previous four-field date ladder with a cleaner 'From' and 'Until' layout, and now supports Markdown for descriptions, linking to verified organization pages, and selecting a qualification (certificate or license) associated with the role. Additionally, users can now choose to notify their followers when adding a new work experience entry.
_lib/vutuv\_web/templates/work\experience · high confidence
Test coverage
Added comprehensive test coverage for the Mastodon API adapter; Added comprehensive test coverage for the email notification system; Added comprehensive tests for view helpers, error pages, and layout rendering; Added regression tests for database migrations and schema integrity; Added test coverage for AI image moderation and visibility indexing; Added test coverage for Mastodon API access identities, notifications, scopes, and status content; Added test coverage for new admin LiveView interfaces; Added test coverage for tag assistant, external feed sources, and tag merging; Added test coverage for the employment reference analysis feature; Added test coverage for the translation subsystem; Added tests for CV HTML link absolutization and Markdown block conversion; Added tests for Fediverse ActivityPub document generation; Added tests for Fediverse signature verification and remote follow resolution; Added tests for HTTP Link headers, Content-Security-Policy, account status handling, locale resolution, newsletter tracking, and legacy URL redirects; Added tests for LinkedIn import and connection matching; Added tests for OAuth app token oversight and sweep housekeeping; Added tests for UI components and layout logic; Added tests for account activity, composer attachments, and UI behaviors; Added tests for chat unread notification email behavior; Added tests for job posting exclusions, language validation, search grammar, and lifecycle sweeping; Added tests for post publishing, moderation, and media handling; Added tests for profile data validation and verification logic; Added tests for the 12-month investor page reach analytics; Added tests for the image upload and processing pipeline; Added tests for the organization homepage screenshot subsystem; Added tests for the web push dispatcher and badge count logic; Expanded test coverage for account management and profile features; Expanded test coverage for admin moderation and federation controls; Expanded test coverage for controller logic; Expanded test coverage for web-layer features and UI consistency; New test support modules for attachments, Fediverse, and UI assertions; Removal of model test files; Removed VCard controller regression tests; Removed view-level unit tests; Test coverage for API v2 endpoints; Test coverage for agent document formats and headers; Tests added for user blocking functionality; Tests for account deletion, activity logging, and avatar uploads; Tests for the followed-tags rail in the feed; Updated tests for the new AVIF-based image upload pipeline.
Dependencies
Versioning and development environment improvements
The application now derives its version number from the git commit date (YYYY.M.D format) instead of a static number, ensuring releases are identified by their commit hash. Additionally, the build system has been updated to support parallel development worktrees by automatically assigning unique database names and ports to each worktree, and the code reloader is now configured to coordinate with concurrent mix invocations to prevent hot-reload conflicts.
(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
Baseline
- First survey — no prior run to compare against. CAI 47.
Lenses
- Code Health 48
- Architecture 93
- Maturity 62
- Readiness 40
- Security 75
- Accessibility 46
Changes since last survey
- 300 commits — 264 feature/other, 36 fixes
By area
- lib/vutuv_web — 108 commits
- lib/vutuv — 64 commits
- priv/gettext — 39 commits
- test/vutuv_web — 23 commits
- (root) — 18 commits
- .claude/rules — 9 commits
- assets/js — 9 commits
- .claude/commands — 6 commits
- docs/architecture — 6 commits
- test/vutuv — 6 commits
- assets/css — 3 commits
- .claude/hooks — 2 commits
- docs/ADMINS.md — 2 commits
- priv/repo — 2 commits
- docs/DEVELOPERS.md — 1 commit
- priv/static — 1 commit
- test/support — 1 commit
Notable commits
- fix: Revert "Reporting a foreign post takes every copy of it (#2169)" (#2173)
- fix: fix(agents): /fix-bugs liest nur noch Issues, nie die PR-Liste (#1837)
- fix: fix(agents): ein Bug bricht ein Versprechen, das die App schon gibt (#1838)
- fix: fix(agents): eine Endungs-URL entscheidet das Format, nicht der Accept-Header (#1830)
- fix: fix(beitrag): die Tag-Chips stehen unter dem Foto, auf der Dauerseite wie im Feed (#1884)
- fix: fix(design): ein Organisationslogo wird nicht mehr beschnitten (v7.596.3) (#1815)
- fix: fix(editor): das Slash-Menü folgt dem Text, unter dem es hängt (#1898) (#1922)
- fix: fix(editor): die Sprachauswahl steht in der Zeile, nicht hinter einem ⋯ (#1929)
- fix: fix(fediverse): "Diesem Konto folgen" folgt beim ersten Klick (#1860)
- fix: fix(fediverse): Mastodon zeichnet unsere Zeilenumbrüche, also schicken wir keine (#1861)
- fix: fix(fediverse): a LiveView page answers an ActivityPub Accept header with 406 [5m] (#1811)
- fix: fix(fediverse): eine Antwort sagt immer, worauf sie antwortet (#1841)
- fix: fix(fediverse): scrub a NUL byte at the write, not at each ingest door [15m] (#1813)
- fix: fix(fediverse): the entity table, the clamp, and a NUL that reached Postgres [5m] (#1798)
- fix: fix(fediverse): the host rule answers before the endpoint starts [2m] (#1778)
- fix: fix(feed): Kalender und Filter teilen sich auf dem Handy eine Zeile (v7.600.1) (#1816)
- fix: fix(feed): der Kalender nimmt den Tageswechsel mit, statt ihn zu verschlafen (#1833)
- fix: fix(feed): die Handy-Leiste steht auf einer Höhe (#1824)
- fix: fix(feed): die Neu-Leiste gibt dem Anriss die Zeile (#1829)
- fix: fix(filter): die Wörter-Karte bekommt ihren Speichern-Knopf zurück (#1888)
- …and 280 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
wintermeyer/vutuv 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 18 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 c6101bbb55abed82593dde93a3a216e6942f6bb2 — 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-5d04157a340d.