81d065b9bb
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Successful in 9s
Generic: Project CI / Lint & Validate (pull_request) Successful in 32s
Generic: Standards Compliance / Secret Scanning (push) Failing after 9s
Universal: PR Check / Secret Scan (pull_request) Successful in 51s
Generic: Standards Compliance / License Header Validation (push) Successful in 9s
Generic: Standards Compliance / Repository Structure Validation (push) Successful in 8s
Generic: Standards Compliance / Coding Standards Check (push) Successful in 10s
Generic: Standards Compliance / Workflow Configuration Check (push) Failing after 9s
Generic: Standards Compliance / Documentation Quality Check (push) Successful in 8s
Generic: Standards Compliance / README Completeness Check (push) Failing after 7s
Generic: Standards Compliance / Version Consistency Check (push) Successful in 1m2s
Generic: Standards Compliance / Script Integrity Validation (push) Successful in 26s
Generic: Standards Compliance / Git Repository Hygiene (push) Successful in 1m5s
Generic: Standards Compliance / File Naming Standards (push) Successful in 10s
Generic: Standards Compliance / Line Length Check (push) Successful in 23s
Generic: Standards Compliance / Insecure Code Pattern Detection (push) Successful in 10s
Generic: Standards Compliance / Code Complexity Analysis (push) Successful in 1m2s
Generic: Standards Compliance / Code Duplication Detection (push) Successful in 1m8s
Generic: Standards Compliance / Dead Code Detection (push) Successful in 16s
Generic: Standards Compliance / File Size Limits (push) Successful in 16s
Generic: Standards Compliance / TODO/FIXME Tracking (push) Successful in 14s
Generic: Standards Compliance / Dependency Vulnerability Scanning (push) Successful in 1m3s
Deploy (Prod) / Build & Deploy to Prod (push) Successful in 5m9s
Generic: Standards Compliance / Broken Link Detection (push) Successful in 12s
Generic: Standards Compliance / API Documentation Coverage (push) Successful in 7s
Generic: Standards Compliance / Accessibility Check (push) Successful in 7s
Generic: Standards Compliance / Performance Metrics (push) Successful in 8s
Generic: Standards Compliance / Binary File Detection (push) Successful in 2m12s
Generic: Standards Compliance / Unused Dependencies Check (push) Successful in 55s
Generic: Standards Compliance / Terraform Configuration Validation (push) Successful in 12s
Generic: Standards Compliance / Enterprise Readiness Check (push) Successful in 55s
Generic: Standards Compliance / Repository Health Check (push) Successful in 54s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Standards Compliance / Compliance Summary (push) Has been cancelled
Comprehensive MokoGIT theme/branding built from the authoritative mokoconsulting.tech
design tokens (MokoOnyx *.custom.css):
- Theme: replace gitea themes entirely with theme-mokogit-{light,dark,auto} (default
mokogit-auto); brand tokens (primary #010156 / accent #3f8ff0, navy nav+footer #112855,
semantic palette); mokogit-brand.css component reskin; runtime custom-stylesheet override
hook (templates/custom/header.tmpl -> mokogit-custom.css, re-skin live with no rebuild).
- Font Awesome 7 Free 7.1.0: vendored unmodified (CSS headers intact + webfonts + verbatim
LICENSE.txt), license-compliant for distribution/white-label (Icons CC BY 4.0, Fonts SIL
OFL 1.1, Code MIT); attributed in THIRD-PARTY-NOTICES.md, README, and wiki.
- Light/dark toggle: navbar sun/moon control, server-persisted via the existing
/user/settings/appearance/theme endpoint (anonymous falls back to localStorage).
- Accessibility menu: 6 options (text resize, color invert, high contrast, link highlight,
readable font, pause animations); localStorage-persisted, applied on <html>, ARIA/keyboard.
- PWA: service worker (network-first navigation + cached offline fallback) + branded offline
page + enhanced manifest (display standalone, navy theme_color, app shortcuts); manifest
icon sourced from the site-admin branding icon if set, else the bundled MokoGIT logo.
Verified: `go build ./...` and `vite build` both green; only mokogit themes emit.
138 lines
6.9 KiB
TypeScript
138 lines
6.9 KiB
TypeScript
import {fileURLToPath} from 'node:url';
|
|
import type {Config} from 'stylelint';
|
|
|
|
const cssVarFiles = [
|
|
fileURLToPath(new URL('web_src/css/base.css', import.meta.url)),
|
|
fileURLToPath(new URL('web_src/css/themes/theme-mokogit-light.css', import.meta.url)),
|
|
fileURLToPath(new URL('web_src/css/themes/theme-mokogit-dark.css', import.meta.url)),
|
|
];
|
|
|
|
export default {
|
|
extends: 'stylelint-config-recommended',
|
|
reportUnscopedDisables: true,
|
|
reportNeedlessDisables: true,
|
|
reportInvalidScopeDisables: true,
|
|
plugins: [
|
|
'stylelint-declaration-strict-value',
|
|
'stylelint-declaration-block-no-ignored-properties',
|
|
'stylelint-value-no-unknown-custom-properties',
|
|
'@stylistic/stylelint-plugin',
|
|
],
|
|
ignoreFiles: [
|
|
'**/*.go',
|
|
'/web_src/fomantic',
|
|
],
|
|
overrides: [
|
|
{
|
|
files: ['**/*.vue'],
|
|
customSyntax: 'postcss-html',
|
|
},
|
|
],
|
|
rules: {
|
|
'@stylistic/at-rule-name-case': null,
|
|
'@stylistic/at-rule-name-newline-after': null,
|
|
'@stylistic/at-rule-name-space-after': null,
|
|
'@stylistic/at-rule-semicolon-newline-after': null,
|
|
'@stylistic/at-rule-semicolon-space-before': null,
|
|
'@stylistic/block-closing-brace-empty-line-before': null,
|
|
'@stylistic/block-closing-brace-newline-after': null,
|
|
'@stylistic/block-closing-brace-newline-before': null,
|
|
'@stylistic/block-closing-brace-space-after': null,
|
|
'@stylistic/block-closing-brace-space-before': null,
|
|
'@stylistic/block-opening-brace-newline-after': null,
|
|
'@stylistic/block-opening-brace-newline-before': null,
|
|
'@stylistic/block-opening-brace-space-after': null,
|
|
'@stylistic/block-opening-brace-space-before': 'always',
|
|
'@stylistic/color-hex-case': 'lower',
|
|
'@stylistic/declaration-bang-space-after': 'never',
|
|
'@stylistic/declaration-bang-space-before': 'always',
|
|
'@stylistic/declaration-block-semicolon-newline-after': null,
|
|
'@stylistic/declaration-block-semicolon-newline-before': null,
|
|
'@stylistic/declaration-block-semicolon-space-after': null,
|
|
'@stylistic/declaration-block-semicolon-space-before': 'never',
|
|
'@stylistic/declaration-block-trailing-semicolon': null,
|
|
'@stylistic/declaration-colon-newline-after': null,
|
|
'@stylistic/declaration-colon-space-after': 'always',
|
|
'@stylistic/declaration-colon-space-before': 'never',
|
|
'@stylistic/function-comma-newline-after': null,
|
|
'@stylistic/function-comma-newline-before': null,
|
|
'@stylistic/function-comma-space-after': null,
|
|
'@stylistic/function-comma-space-before': null,
|
|
'@stylistic/function-max-empty-lines': 0,
|
|
'@stylistic/function-parentheses-newline-inside': null,
|
|
'@stylistic/function-parentheses-space-inside': null,
|
|
'@stylistic/function-whitespace-after': null,
|
|
'@stylistic/indentation': 2,
|
|
'@stylistic/linebreaks': null,
|
|
'@stylistic/max-empty-lines': 1,
|
|
'@stylistic/max-line-length': null,
|
|
'@stylistic/media-feature-colon-space-after': null,
|
|
'@stylistic/media-feature-colon-space-before': 'never',
|
|
'@stylistic/media-feature-name-case': null,
|
|
'@stylistic/media-feature-parentheses-space-inside': null,
|
|
'@stylistic/media-feature-range-operator-space-after': 'always',
|
|
'@stylistic/media-feature-range-operator-space-before': 'always',
|
|
'@stylistic/media-query-list-comma-newline-after': null,
|
|
'@stylistic/media-query-list-comma-newline-before': null,
|
|
'@stylistic/media-query-list-comma-space-after': null,
|
|
'@stylistic/media-query-list-comma-space-before': null,
|
|
'@stylistic/named-grid-areas-alignment': null,
|
|
'@stylistic/no-empty-first-line': null,
|
|
'@stylistic/no-eol-whitespace': true,
|
|
'@stylistic/no-extra-semicolons': true,
|
|
'@stylistic/no-missing-end-of-source-newline': null,
|
|
'@stylistic/number-leading-zero': null,
|
|
'@stylistic/number-no-trailing-zeros': null,
|
|
'@stylistic/property-case': 'lower',
|
|
'@stylistic/selector-attribute-brackets-space-inside': null,
|
|
'@stylistic/selector-attribute-operator-space-after': null,
|
|
'@stylistic/selector-attribute-operator-space-before': null,
|
|
'@stylistic/selector-combinator-space-after': null,
|
|
'@stylistic/selector-combinator-space-before': null,
|
|
'@stylistic/selector-descendant-combinator-no-non-space': true,
|
|
'@stylistic/selector-list-comma-newline-after': null,
|
|
'@stylistic/selector-list-comma-newline-before': null,
|
|
'@stylistic/selector-list-comma-space-after': 'always-single-line',
|
|
'@stylistic/selector-list-comma-space-before': 'never-single-line',
|
|
'@stylistic/selector-max-empty-lines': 0,
|
|
'@stylistic/selector-pseudo-class-case': 'lower',
|
|
'@stylistic/selector-pseudo-class-parentheses-space-inside': 'never',
|
|
'@stylistic/selector-pseudo-element-case': 'lower',
|
|
'@stylistic/string-quotes': 'double',
|
|
'@stylistic/unicode-bom': null,
|
|
'@stylistic/unit-case': 'lower',
|
|
'@stylistic/value-list-comma-newline-after': null,
|
|
'@stylistic/value-list-comma-newline-before': null,
|
|
'@stylistic/value-list-comma-space-after': null,
|
|
'@stylistic/value-list-comma-space-before': null,
|
|
'@stylistic/value-list-max-empty-lines': 0,
|
|
'at-rule-no-unknown': [true, {ignoreAtRules: ['tailwind']}],
|
|
'at-rule-no-vendor-prefix': true,
|
|
'csstools/value-no-unknown-custom-properties': [true, {importFrom: cssVarFiles}],
|
|
'declaration-block-no-duplicate-properties': [true, {ignore: ['consecutive-duplicates-with-different-values']}],
|
|
'declaration-block-no-redundant-longhand-properties': [true, {ignoreShorthands: ['flex-flow', 'overflow', 'grid-template']}],
|
|
'declaration-property-unit-disallowed-list': null,
|
|
'declaration-property-value-disallowed-list': {'word-break': ['break-word']},
|
|
'font-family-name-quotes': 'always-where-recommended',
|
|
'function-name-case': 'lower',
|
|
'function-url-quotes': 'always',
|
|
'import-notation': 'string',
|
|
'length-zero-no-unit': [true, {ignore: ['custom-properties'], ignoreFunctions: ['var']}],
|
|
'media-feature-name-no-vendor-prefix': true,
|
|
'no-descending-specificity': null,
|
|
'no-invalid-position-at-import-rule': [true, {ignoreAtRules: ['tailwind']}],
|
|
'no-unknown-animations': null, // disabled until stylelint supports multi-file linting
|
|
'no-unknown-custom-media': null, // disabled until stylelint supports multi-file linting
|
|
'no-unknown-custom-properties': null, // disabled until stylelint supports multi-file linting
|
|
'plugin/declaration-block-no-ignored-properties': true,
|
|
'scale-unlimited/declaration-strict-value': [['/color$/', 'fill', 'stroke', 'font-weight'], {ignoreValues: '/^(inherit|transparent|unset|initial|currentcolor|none)$/', ignoreFunctions: true, disableFix: true, expandShorthand: true}],
|
|
'selector-attribute-quotes': 'always',
|
|
'selector-no-vendor-prefix': true,
|
|
'selector-pseudo-element-colon-notation': 'double',
|
|
'selector-type-case': 'lower',
|
|
'selector-type-no-unknown': [true, {ignore: ['custom-elements']}],
|
|
'shorthand-property-no-redundant-values': true,
|
|
'value-no-vendor-prefix': [true, {ignoreValues: ['box', 'inline-box']}],
|
|
},
|
|
} satisfies Config;
|