Tags

Tags give the ability to mark specific points in history as being important
  • stable-v1.0.46

    Stability checkpoint — root hygiene + SONAR doc + batch CI rule (MR !114)
    
    Three batched fixes (per new CLAUDE.md rule "Réduire les vagues CI") :
    
    1. Root hygiene : run.sh moved to bin/run.sh (executable + blame
       preserved). 10 doc references updated for UI-context callers ;
       5 backend-context refs preserved (deployment-{gcp,kubernetes},
       technology-stack, infrastructure, testing — those describe
       commands in the sibling mirador-service repo).
       UI root file count : 17 → 16 (cap = 15 ; CHANGELOG.md move
       deferred to next sweep, requires release-please script update).
    
    2. SONAR_TOKEN UI doc improvement : sonarcloud silent-failing >8d
       on a 'Project not found' error. Updated the allow_failure: true
       comment with the 3 likely root causes (project deleted, token
       rotated, user-access lost) and a dated TODO 2026-05-24 so the
       shield can be removed once one of the 3 is ruled out. No code
       change : actual fix needs SonarCloud UI + CI vars edit (user
       action only).
    
    3. CLAUDE.md rule 'Réduire les vagues CI' : codifies the
       batch-instead-of-micro-MR pattern with explicit justification
       that local build/lint catches 80% of fails ; the remaining CI
       fails are recognisable patterns easily debugged from N-commit
       batches. Saves (N-1) × 10-15 min per CI cycle batched.
  • stable-v1.0.45

    Stability checkpoint — About 3-widget extraction (B-7-5 P1B, MR !113)
    
    Phase B-7-5 P1B finalises the About-page split started in P1A. 3
    substantive tabs extracted as widgets :
    - AboutOverviewTabComponent  (217 LOC — hero SVG + tech badges)
    - AboutInfraTabComponent     (155 LOC — port map + run.sh + ext svcs)
    - AboutTechTabComponent      (52 LOC — A→Z technologies table)
    
    11 small doc-pane shells stay inline in the parent template (each
    ~20 LOC of pure static link-out — extraction adds friction with no
    behavioural isolation gain).
    
    Counts :
    - about.component.html : 613 → 251 LOC (-59 %)
    - about.component.ts   : 92 → 77 LOC (post-P1A baseline)
    
    Data imports :
    - overview widget : docsBase passed as required input (parent owns URL)
    - infra + tech widgets : import from sibling about-data.ts directly,
      no parent prop drill
  • stable-v1.0.44

    Stability checkpoint — security tabs batch + about data extraction (MR !112)
    
    5 security tabs extracted as widgets in one batch (SqliTab + XssTab +
    IdorTab + JwtTab + AuditTab) — finishes Phase B-7-4 wave :
    - security.component.html : 542 → 135 LOC (-77%)
    - security.component.ts   : 547 → 430 LOC (-21%)
    - 8 widgets total live in widgets/ (Mechanisms + CORS + Headers + 5 new)
    
    Phase B-7-5 Phase 1A piggybacked on the same MR : about.component.ts
    data extraction → about-data.ts (TECHNOLOGIES + PORT_MAP + RUN_COMMANDS
    + QUICK_START hoisted, ~570 LOC of pure data moved out) :
    - about.component.ts : 652 → 92 LOC (-86%)
    
    Bug fix : SqliTab + XssTab presets hoisted to TS constants because
    Angular template parser chokes on escaped backticks (\`) inside an
    inline template literal. Same fix pattern documented for future
    widgets that need quote-laden HTML attribute values.
    
    Build : 0 warnings, security-component lazy chunk 183 KB raw / 13.7 KB
    gzipped (unchanged — pure code reorg, no bundle size delta).
  • stable-v1.0.42

    Release: stable-v1.0.42
    Stability checkpoint — Security MechanismsTab widget + spec
    
    Single MR landed since stable-v1.0.41 (UI !110 → 7e67418) :
    
    ♻️  Refactoring (Phase B-7-4 follow-up)
    - Mechanisms tab catalogue (9 categories, 12 production security
      mechanisms) becomes 2 self-contained files :
      - security-mechanisms-data.ts (165 LOC) — typed static data
      - widgets/security-mechanisms-tab.component.ts (68 LOC) — pure
        presentational widget, zero inputs, just renders the catalogue
    
    🧪 Tests
    - widgets/security-mechanisms-tab.component.spec.ts — 4 tests :
      class export, mechanisms field reference, expected categories
      present, every entry has non-empty fields + valid status
    - 312 tests passing across 46 spec files (was 308/45 in 1.0.41)
    
    Wins :
    - security.component.ts : 566 → 426 LOC (-140, -25%)
    - security.component.html : 626 → 586 LOC (-40)
    
    7 remaining tabs (SQL/XSS/CORS/IDOR/JWT/Headers/Audit) untouched —
    each requires more parent-state coupling, can be split incrementally
    in future sessions.
    
    Post-merge main pipeline #413 green on SHA 7cd059f.
  • stable-v1.0.41

    Release: stable-v1.0.41
    Stability checkpoint — Customer widgets + ConfirmModal + 5 specs
    
    Single MR landed since stable-v1.0.40 (UI !109 → 87568f2) :
    
    ♻️  Refactoring
    - B-7-2b extension : CustomerDetailPanel + CustomerCreateForm widgets.
      customers.component.html : 494 → 252 LOC (-49%) net of all extractions.
      Each widget self-contained with signal inputs + event outputs.
    - B-7-2c : new ConfirmModal generic widget (shared/) replaces 2 near-
      identical confirmation modals in customers (Delete + Batch Delete).
      Reusable for any "are you sure?" UX across the app.
    
    🧪 Tests
    - 5 widget spec files added :
      - dashboard-health-probes (statusClass + statusLabel logic tests)
      - dashboard-quality-summary (smoke)
      - dashboard-architecture-map (6 topology helpers tested)
      - customer-detail-panel (smoke)
      - customer-create-form (form state lifecycle + submit guard tests)
      - confirm-modal (smoke + variant/defaults)
    - Total : 308 tests passing across 45 spec files (was 297/42 in 1.0.39
      baseline = +11 tests, +3 spec files).
    
    🐛 Bug fix
    - ConfirmModal outputs renamed cancel/confirm → cancelled/confirmed
      (eslint @angular-eslint/no-output-native flagged the DOM-event
      shadowing). Past-tense form keeps semantics + lints clean.
    
    Post-merge main pipeline #411 green on SHA a1c731c (final commit
    of the MR).
  • stable-v1.0.40

    Release: stable-v1.0.40
    Stability checkpoint — Dashboard B-6b complete (3 widgets extracted)
    
    Single MR landed since stable-v1.0.39 (UI !108 → 0f0192f) :
    
    ♻️  Refactoring
    - B-6b dashboard widget split (1 widget per file pattern). Parent
      dashboard.component shrinks 745→670 .ts and 505→179 .html (-65%
      template). 3 standalone widgets extracted :
      - DashboardHealthProbes (130 LOC) — 3 cards health/readiness/liveness
      - DashboardQualitySummary (151 LOC) — 4 cards /actuator/quality
      - DashboardArchitectureMap (149 ts + 175 html) — topology + Docker controls
      Each widget < 175 LOC, fully self-contained with signal inputs +
      event outputs.
    
    📚 Type cleanup
    - New shared interfaces in dashboard-types.ts so widgets reuse parent
      signal types without duplication : QualitySummary, EnrichedDockerContainer.
    
    Post-merge main pipeline #407 green on SHA 0f0192f.
  • stable-v1.0.39

    Release: stable-v1.0.39
    Stability checkpoint — release-please removal + CI hardening
    
    Waves landed since stable-v1.0.38 (2026-04-23) :
    
    - release-please removed entirely (MR !102) — replaced by bin/ship/
      shell scripts (changelog.sh + gitlab-release.sh). Zero node_modules
      added, zero CI runner burn per tag. Mirror of svc !169.
    - grype bumped v0.87.0 → v0.111.0-debug (MR !103) — multi-arch +
      ships /bin/sh (the non-debug variant broke with "exec: sh not found").
    - e2e:kind /actuator/health wait bumped 120s → 10min (MR !104) —
      cold mvn compile + Spring Boot startup takes 2-5 min under runner
      pressure ; old ceiling aborted before compilation finished.
    - workflow:rules allowlist covers `.gitlab-ci/**/*` (MR !105) — Phase
      B-4 include files now trigger CI.
    - bin/ship/changelog.sh bug fix (MR !106) — mirror of svc !171 :
      set -e + `[ 0 -eq 1 ]` was killing the script on chore/ci/build/
      style commits when --include-chore was off.
    
    Post-merge main pipeline #405 green on SHA 322dc5b (MR !105 merge).
    MR !106 merged after (bin/ is out of UI workflow allowlist by design)
    — changelog.sh fix is local tooling, not production code.
  • stable-v1.0.32

    Stability checkpoint — post-!101 (demo.gif regenerated 2.5MB + e2e record-demo fixes : tour overlay dismiss, mobile spec viewportSize, healthcheck path)
  • stable-v1.0.31

    Stability checkpoint — post-!100 (test wave: find-the-bug 16 + incident-anatomy 9 + routes 24 = 49 UI tests)
  • stable-v1.0.30

    Stability checkpoint — post-!99 (test wave: tour-overlay 14 + auth.interceptor 12 + app-error-handler 11 + 500 LOC floor)
  • stable-v1.0.29

    Stability checkpoint — post-!98 (test wave: AppShellComponent 19 tests)
  • stable-v1.0.28

    Stability checkpoint stable-v1.0.28 (UI) — Phase 4.2 wave continued: 11 TelemetryService tests covering all 4 log methods (debug/info/warn/error), Activity timeline integration on errors only, 500-event history cap, clear() scope, append-only chronological ordering. Cumulative UI Phase 4.2 across v1.0.23-28: 100 new UI tests across 8 specs. All 7 untested core UI services from start of session now covered: ActivityService, DeepLinkService, FeatureFlagService, PipelinesService, KeyboardService, Auth0BridgeService, TelemetryService. Post-merge main pipeline #390 SUCCESS.
  • stable-v1.0.27

    Stability checkpoint stable-v1.0.27 (UI) — Phase 4.2 wave continued: 6 Auth0BridgeService tests covering the SDK→AuthService translation lifecycle (login token storage, error absorption keeping outer stream alive, logout clearing, no spurious actions). Cumulative UI Phase 4.2 across v1.0.23-27: 89 new UI tests across 7 specs. Post-merge main pipeline #388 SUCCESS.
  • stable-v1.0.26

    Stability checkpoint stable-v1.0.26 (UI) — Phase 4.2 wave continued: 18 KeyboardService tests covering all global shortcuts (Ctrl+K search, ?/Esc, G then X navigation 5x, D/R single keys, focus guards) + 1 ESLint regression fix (no-empty-function caught by Phase C flip on mockImplementation(() => {}) — 2nd flip catch this session). Cumulative UI Phase 4.2: 83 new UI tests across 6 specs. Post-merge main pipeline #386 SUCCESS.
  • stable-v1.0.25

    Stability checkpoint stable-v1.0.25 (UI) — Phase 4.2 wave continued: 11 PipelinesService unit tests covering URL shape (per_page/order_by/sort), proxyBase signal flexibility, both list() + jobs() endpoints. PROJECTS slug URL-encoding pinned. Cumulative UI Phase 4.2 across v1.0.23-25: 65 new UI tests across 5 specs. Post-merge main pipeline #382 SUCCESS.
  • stable-v1.0.24

    Stability checkpoint stable-v1.0.24 (UI) — Phase 4.2 wave continued: 33 new UI tests across 3 core services (ActivityService 12, DeepLinkService 13, FeatureFlagService 8). Activity timeline contract pinned (newest-first ordering, 200-event cap, monotonic ids). DeepLink URI builders tested (vscode/idea/docker-desktop). FeatureFlag hidden-by-default contract pinned + isAvailable reactivity. Cumulative UI Phase 4.2 across v1.0.23-24: 54 new UI tests. Post-merge main pipeline #380 SUCCESS.
  • stable-v1.0.23

    Stability checkpoint stable-v1.0.23 (UI) — Phase 4.2 partial: 21 unit tests for quality-helpers.ts (severityColor / priorityLabel / nvdUrl / entriesOf / coverageColor / gitWebUrl / commitUrl). Plus first Phase C ESLint regression caught + fixed: max-lines-per-function on outer describe wrapper in spec files (added eslint-disable comment, regression gate working as designed). Post-merge main pipeline #377 SUCCESS on 54796a3.
  • stable-v1.0.22

    Stability checkpoint stable-v1.0.22 (UI) — Phase 4.1 subscribe-leak cleanup: 76 RxJS .subscribe() calls now properly tied to a DestroyRef via takeUntilDestroyed(). 14 components migrated (quality, dashboard, security, chaos, customers, diagnostic, database, activity, settings, login, request-builder, pipelines, audit, maven-site-full) + 1 service (FeatureFlagService). Post-merge main pipeline #374 SUCCESS.
  • stable-v1.0.21

    Stability checkpoint stable-v1.0.21 (UI) — Phase B-6 + Phase C combined wave: dashboard.component split (1022→713 ts via dashboard-types + dashboard-topology-data extraction; 1291→59 scss via 8 Sass partials). Phase C ESLint flip warn→error on 6 size/complexity rules (max-lines 700, max-lines-per-function 100, complexity 15, max-params 6, max-depth 4, max-nested-callbacks 4) — regressions now red CI errors. Two legitimate complexity violations (KeyboardService.onKeyDown, TelemetryService.push) carry inline disables with documented reason. Mobile @media safety-net added to 6 components missing one (settings/audit/pipelines/activity/database/incident-anatomy). File-length hygiene wave fully self-enforcing. Post-merge main pipeline #371 SUCCESS on 0892ca2.
  • stable-v1.0.20

    Stability checkpoint stable-v1.0.20 (UI) — post-v1.0.19 wave: security+db+chaos types extracted to sibling files (~210 LOC moved out of components: security 681→547, database 644→599, chaos 632→600). CLAUDE.md updated with B-7 wave landing table (14 file splits, 12 visible). Post-merge main pipelines #359 (security+db) + #361 (chaos) both SUCCESS.