Style

Naming -> kebab-case for filenames and directories, wheras types are still camelCase like in java

  // I saw it sometimes being exposed publicly.... why?
  private readonly _config = signal<AppConfig | null>(null); // could get rid of null. Its only the intialize
  readonly config = this._config.asReadonly();

Localization

We have the i18n stuff in our packages.json but I dont see any usage. How do we localize the webclient? 😮

Update

I just wanted to update all my dependencies. What the fuck, angular ?

WARN  3 deprecated subdependencies found: glob@7.2.3, inflight@1.0.6, rimraf@3.0.2
 
> pnpm why inflight
inflight@1.0.6
└─┬ glob@7.2.3
  ├─┬ karma@6.4.4
 └─┬ @angular/build@21.2.3
   └── client-app@0.0.0 (devDependencies)
  └─┬ rimraf@3.0.2
    └── karma@6.4.4 [deduped]
 
Found 1 version of inflight

Besides for karma I currently didnt have a test at all besides Id use vitest.

Then next wtf is that all my mentions in pnpm audit stem from @angular/build… Should I fix them like this ?

"pnpm": {
    "overrides": {
      "undici": ">=7.24.0"
    }
  },

Budget

My webapp is small but it already yields the budget limit. Why is that so tiny ? Is it okay to just increase it ?

"budgets": [
  {
    "type": "initial",
    "maximumWarning": "600kB",
    "maximumError": "1MB"
  }
]

Dumb questions

Do I need that fugly #stressSelect ? Babel wont work otherwise ( unless I some even uglier event.value) construction inside the callback )

    <select #stressSelect [value]="stress()" (change)="stress.set(stressSelect.value)">

Any reason to not use computed when reacting to other signals ?

  chartData = computed<ChartConfiguration<'line'>['data']>(() => ({
    labels: this.labels(),
    datasets: this.datasets().map(ds => ({
      label: ds.label,
      data: ds.data,
      borderColor: ds.color,
      backgroundColor: ds.color + '20',
      tension: 0.3,
      spanGaps: true,
      pointRadius: 3,
    })),
  }));