Add update.sh, release-channel tagging, mobile settings page
Nightly Build / build (push) Successful in 6m28s

install.sh / install-nightly.sh:
  - Write .release-channel file ('release' or 'nightly') for future updates
  - install.sh also writes .release-version (for update --check)

update.sh (new):
  - Reads .release-channel to determine which channel to pull from
  - Release: checks releases/LATEST vs .release-version, skips if current
  - Nightly: always downloads latest
  - Stops service before extraction, restarts after
  - Rebuilds Python venv on update

ci/package.sh:
  - Include update.sh in distribution tarball

Web / mobile:
  - Add settings-page component for mobile
  - Wire settings page into mobile-app navigation
  - Chat page: load current user (/api/auth/me) for sender identity
  - Full mobile.css redesign
  - i18n: add mobile settings strings (en/fr/it)
This commit is contained in:
2026-07-20 22:31:41 +01:00
parent 2ec394c17c
commit 79a62c0b93
12 changed files with 1088 additions and 295 deletions
+8 -3
View File
@@ -3,6 +3,7 @@ import { t } from '../lib/i18n.js';
import './shared/inbox-page.js';
import './shared/chat-page.js';
import './shared/projects-page.js';
import './shared/settings-page.js';
import './shared/file-viewer-mobile.js';
// Sections addressable via the URL hash — same routing style as the desktop
@@ -168,7 +169,7 @@ class MobileApp extends LitElement {
@click=${() => this._nav(id)}>
${id === 'chat'
? html`<div class="chat-fab"><i class="bi bi-chat-dots-fill"></i></div>`
: html`<i class="bi ${icon}"></i>`}
: html`<span class="nav-icon"><i class="bi ${icon}"></i></span>`}
<span>${label}</span>
</div>
`;
@@ -197,9 +198,13 @@ class MobileApp extends LitElement {
.path=${this._filePath}
style=${s === 'file_viewer' ? 'flex:1;min-height:0;overflow:hidden' : 'display:none'}
></mobile-file-viewer-page>
${['notifications', 'settings'].includes(s) ? html`
<settings-page
.visible=${s === 'settings'}
style=${s === 'settings' ? 'flex:1;min-height:0;overflow:hidden' : 'display:none'}
></settings-page>
${s === 'notifications' ? html`
<div class="mobile-coming-soon">
<i class="bi bi-tools"></i>
<i class="bi bi-bell"></i>
<p>${t('mobile.coming_soon')}</p>
</div>
` : ''}