Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
"Bash(npm run:*)",
"Bash(mkdir:*)",
"Bash(cp:*)",
"Bash(ls:*)"
"Bash(ls:*)",
"WebFetch(domain:www.npmjs.com)",
"WebFetch(domain:github.com)"
],
"deny": []
}
Expand Down
2 changes: 1 addition & 1 deletion worklenz-backend/src/controllers/holiday-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ export default class HolidayController extends WorklenzControllerBase {
}
}
} catch (error: any) {
errors.push(`${country.name}: ${error.message}`);
errors.push(`${country.name}: ${error?.message || "Unknown error"}`);
}
}

Expand Down
42 changes: 30 additions & 12 deletions worklenz-frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link rel="icon" href="./favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#2b2b2b" />

<!-- PWA Meta Tags -->
<meta name="application-name" content="Worklenz" />
<meta name="apple-mobile-web-app-capable" content="yes" />
Expand All @@ -17,27 +17,45 @@
<meta name="msapplication-config" content="/browserconfig.xml" />
<meta name="msapplication-TileColor" content="#2b2b2b" />
<meta name="msapplication-tap-highlight" content="no" />

<!-- Apple Touch Icons -->
<link rel="apple-touch-icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="152x152" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="167x167" href="/favicon.ico" />

<!-- PWA Manifest -->
<link rel="manifest" href="/manifest.json" />

<!-- Resource hints for better loading performance -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="dns-prefetch" href="https://www.googletagmanager.com" />
<link rel="dns-prefetch" href="https://js.hs-scripts.com" />

<!-- Preload critical resources -->
<link rel="preload" href="/locales/en/common.json" as="fetch" type="application/json" crossorigin />
<link rel="preload" href="/locales/en/auth/login.json" as="fetch" type="application/json" crossorigin />
<link rel="preload" href="/locales/en/navbar.json" as="fetch" type="application/json" crossorigin />

<link
rel="preload"
href="/locales/en/common.json"
as="fetch"
type="application/json"
crossorigin
/>
<link
rel="preload"
href="/locales/en/auth/login.json"
as="fetch"
type="application/json"
crossorigin
/>
<link
rel="preload"
href="/locales/en/navbar.json"
as="fetch"
type="application/json"
crossorigin
/>

<!-- Optimized font loading with font-display: swap -->
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
Expand All @@ -51,12 +69,12 @@
rel="stylesheet"
/>
</noscript>

<title>Worklenz</title>

<!-- Environment configuration -->
<script src="/env-config.js"></script>

<!-- Analytics Module -->
<script src="/js/analytics.js"></script>
</head>
Expand Down
6 changes: 3 additions & 3 deletions worklenz-frontend/public/js/analytics.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class AnalyticsManager {

// Add event listener to button
const btn = notice.querySelector('#analytics-notice-btn');
btn.addEventListener('click', (e) => {
btn.addEventListener('click', e => {
e.preventDefault();
localStorage.setItem('privacyNoticeShown', 'true');
notice.remove();
Expand All @@ -77,7 +77,7 @@ class AnalyticsManager {
* Check if privacy notice should be shown
*/
checkPrivacyNotice() {
const isProduction =
const isProduction =
window.location.hostname === 'worklenz.com' ||
window.location.hostname === 'app.worklenz.com';
const noticeShown = localStorage.getItem('privacyNoticeShown') === 'true';
Expand All @@ -94,4 +94,4 @@ document.addEventListener('DOMContentLoaded', () => {
const analytics = new AnalyticsManager();
analytics.init();
analytics.checkPrivacyNotice();
});
});
20 changes: 10 additions & 10 deletions worklenz-frontend/public/js/hubspot.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ class HubSpotManager {
script.async = true;
script.defer = true;
script.src = this.scriptSrc;

// Configure dark mode after script loads
script.onload = () => this.setupDarkModeSupport();

document.body.appendChild(script);
};

Expand All @@ -45,26 +45,26 @@ class HubSpotManager {
setupDarkModeSupport() {
const applyTheme = () => {
const isDark = document.documentElement.classList.contains('dark');

// Remove existing theme styles
const existingStyle = document.getElementById(this.styleId);
if (existingStyle) {
existingStyle.remove();
}

if (isDark) {
this.injectDarkModeCSS();
}
};

// Apply initial theme after delay to ensure widget is loaded
setTimeout(applyTheme, 1000);

// Watch for theme changes
const observer = new MutationObserver(applyTheme);
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ['class']
attributeFilter: ['class'],
});
}

Expand Down Expand Up @@ -121,7 +121,7 @@ class HubSpotManager {
cleanup() {
const script = document.getElementById(this.scriptId);
const style = document.getElementById(this.styleId);

if (script) script.remove();
if (style) style.remove();
}
Expand All @@ -131,7 +131,7 @@ class HubSpotManager {
document.addEventListener('DOMContentLoaded', () => {
const hubspot = new HubSpotManager();
hubspot.init();

// Make available globally for potential cleanup
window.HubSpotManager = hubspot;
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
"saveButton": "Ruaj",
"saved": "Cilësimet u ruajtën me sukses",
"errorSaving": "Gabim gjatë ruajtjes së cilësimeve"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/alb/project-view.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
"pinTab": "Fikso si tab i parazgjedhur",
"unpinTab": "Hiqe fiksimin e tab-it të parazgjedhur",
"finance": "Finance"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@
"jobTitleCreateError": "Dështoi të krijohet titulli i punës",
"createButton": "Krijo",
"cancelButton": "Anulo"
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/alb/settings/teams.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
"namePlaceholder": "Emri",
"nameRequired": "Ju lutem shkruani një Emër",
"updateFailed": "Ndryshimi i emrit të ekipit dështoi!"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@
"intervalWeeks": "Intervali (javë)",
"intervalMonths": "Intervali (muaj)",
"saveChanges": "Ruaj ndryshimet"
}
}
4 changes: 2 additions & 2 deletions worklenz-frontend/public/locales/alb/task-list-table.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
"peopleField": "Fusha e njerëzve",
"noDate": "Asnjë datë",
"unsupportedField": "Lloj fushe i pambështetur",

"modal": {
"addFieldTitle": "Shto fushë",
"editFieldTitle": "Redakto fushën",
Expand All @@ -108,7 +108,7 @@
"createErrorMessage": "Dështoi në krijimin e kolonës së personalizuar",
"updateErrorMessage": "Dështoi në përditësimin e kolonës së personalizuar"
},

"fieldTypes": {
"people": "Njerëz",
"number": "Numër",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
"saveButton": "Speichern",
"saved": "Einstellungen erfolgreich gespeichert",
"errorSaving": "Fehler beim Speichern der Einstellungen"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/de/project-view.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
"pinTab": "Als Standard-Registerkarte festsetzen",
"unpinTab": "Standard-Registerkarte lösen",
"finance": "Finance"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@
"jobTitleCreateError": "Berufsbezeichnung konnte nicht erstellt werden",
"createButton": "Erstellen",
"cancelButton": "Abbrechen"
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/de/settings/teams.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
"namePlaceholder": "Name",
"nameRequired": "Bitte geben Sie einen Namen ein",
"updateFailed": "Änderung des Team-Namens fehlgeschlagen!"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@
"intervalWeeks": "Intervall (Wochen)",
"intervalMonths": "Intervall (Monate)",
"saveChanges": "Änderungen speichern"
}
}
4 changes: 2 additions & 2 deletions worklenz-frontend/public/locales/de/task-list-table.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
"peopleField": "Personenfeld",
"noDate": "Kein Datum",
"unsupportedField": "Nicht unterstützter Feldtyp",

"modal": {
"addFieldTitle": "Feld hinzufügen",
"editFieldTitle": "Feld bearbeiten",
Expand All @@ -108,7 +108,7 @@
"createErrorMessage": "Fehler beim Erstellen der benutzerdefinierten Spalte",
"updateErrorMessage": "Fehler beim Aktualisieren der benutzerdefinierten Spalte"
},

"fieldTypes": {
"people": "Personen",
"number": "Zahl",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
"saveButton": "Save",
"saved": "Settings saved successfully",
"errorSaving": "Error saving settings"
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/en/project-view.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
"pinTab": "Pin as default tab",
"unpinTab": "Unpin default tab",
"finance": "Finance"
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/en/settings/teams.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
"namePlaceholder": "Name",
"nameRequired": "Please enter a Name",
"updateFailed": "Team name change failed!"
}
}
4 changes: 2 additions & 2 deletions worklenz-frontend/public/locales/en/task-list-table.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
"peopleField": "People field",
"noDate": "No date",
"unsupportedField": "Unsupported field type",

"modal": {
"addFieldTitle": "Add field",
"editFieldTitle": "Edit field",
Expand All @@ -108,7 +108,7 @@
"createErrorMessage": "Failed to create custom column",
"updateErrorMessage": "Failed to update custom column"
},

"fieldTypes": {
"people": "People",
"number": "Number",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
"saveButton": "Guardar",
"saved": "Configuración guardada exitosamente",
"errorSaving": "Error al guardar la configuración"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/es/project-view.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
"pinTab": "Fijar como pestaña predeterminada",
"unpinTab": "Desfijar pestaña predeterminada",
"finance": "Finance"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@
"jobTitleCreateError": "No se pudo crear el título de trabajo",
"createButton": "Crear",
"cancelButton": "Cancelar"
}
}
2 changes: 1 addition & 1 deletion worklenz-frontend/public/locales/es/settings/teams.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
"namePlaceholder": "Nombre",
"nameRequired": "Por favor ingresa un Nombre",
"updateFailed": "¡Falló el cambio de nombre del equipo!"
}
}
Loading