0.45.7 — recherche fédérée : ShaarIt, 5e source de « Rechercher partout »
CI / test (push) Failing after 3s
CI / test (pull_request) Failing after 4s

- static/js/recherche.js re-vendangé depuis commons v0.2.1 : source
  ShaarIt (bases, onglet, normaliseur — lien profond
  {base}shaare/<shorturl>).
- Gabarit /recherche : data-base-shaarit (draco_urls.shaarit),
  onglet et section « ShaarIt — bookmarks ».
- app/recherche.py : origines ShaarIt prod/dev, clé sœur et
  dictionnaire résolu (urls.shaarit_url).
- Tests : recherche.test.js 83 assertions ; allowlist à 12 origines ;
  suite complète 377/377.
This commit is contained in:
Spark
2026-11-04 17:10:46 +00:00
parent d97ca399f0
commit 248c9468e1
7 changed files with 86 additions and 19 deletions
+1 -1
View File
@@ -181,7 +181,7 @@ from urllib.parse import urlparse
BASE_DIR = Path(__file__).resolve().parent.parent
APP_VERSION = "0.45.6"
APP_VERSION = "0.45.7"
def _env_bool(name: str, default: bool) -> bool:
+4 -1
View File
@@ -38,6 +38,7 @@ PROD_ORIGINS = frozenset({
"https://flowdeck.dracodev.net",
"https://tiktak.dracodev.net",
"https://kanbante.dracodev.net",
"https://shaarit.dracodev.net",
})
DEV_ORIGINS = frozenset({
@@ -45,6 +46,7 @@ DEV_ORIGINS = frozenset({
"https://flowdeck-dev.dracodev.net",
"https://tiktak-dev.dracodev.net",
"https://kanbante-dev.dracodev.net",
"https://shaarit-dev.dracodev.net",
})
AGENT_ORIGINS = frozenset({
@@ -54,7 +56,7 @@ AGENT_ORIGINS = frozenset({
# Clés du dictionnaire rendu par render() (app/main.py).
_SOEUR_KEYS = ("obsigate", "flowdeck", "tiktak", "kanbante")
_SOEUR_KEYS = ("obsigate", "flowdeck", "tiktak", "kanbante", "shaarit")
def is_dev_host(hostname: str | None) -> bool:
@@ -103,6 +105,7 @@ def sister_origins(
"flowdeck": urls.flowdeck_url,
"tiktak": urls.tiktak_url,
"kanbante": urls.public_url,
"shaarit": urls.shaarit_url,
}
except Exception:
return PROD_ORIGINS | DEV_ORIGINS
+7 -1
View File
@@ -16,9 +16,10 @@
data-base-flowdeck="{{ draco_urls.flowdeck }}"
data-base-tiktak="{{ draco_urls.tiktak }}"
data-base-kanbante="{{ draco_urls.kanbante }}"
data-base-shaarit="{{ draco_urls.shaarit }}"
data-base-console="{{ agent_url }}">
<h1>Rechercher partout</h1>
<p class="rp-hint">Notes ObsiGate, pages Flowdeck, tâches TikTak, cartes Kanbante — dans l'environnement courant (dev reste dev). « / » ou Ctrl+K pour rechercher, ↑/↓ puis Entrée pour ouvrir un résultat. « Tout voir » bascule vers l'onglet de l'application, sans quitter la page.</p>
<p class="rp-hint">Notes ObsiGate, pages Flowdeck, tâches TikTak, cartes Kanbante, bookmarks ShaarIt — dans l'environnement courant (dev reste dev). « / » ou Ctrl+K pour rechercher, ↑/↓ puis Entrée pour ouvrir un résultat. « Tout voir » bascule vers l'onglet de l'application, sans quitter la page.</p>
<div class="rp-form">
<input id="rp-q" class="rp-input" type="search" name="q" value="{{ q }}"
placeholder="Rechercher partout…" autocomplete="off" autofocus>
@@ -29,6 +30,7 @@
<button type="button" class="rp-tab" role="tab" aria-selected="false" tabindex="-1" data-rp-tab="flowdeck">Flowdeck <span class="rp-tab-count"></span></button>
<button type="button" class="rp-tab" role="tab" aria-selected="false" tabindex="-1" data-rp-tab="tiktak">TikTak <span class="rp-tab-count"></span></button>
<button type="button" class="rp-tab" role="tab" aria-selected="false" tabindex="-1" data-rp-tab="kanbante">Kanbante <span class="rp-tab-count"></span></button>
<button type="button" class="rp-tab" role="tab" aria-selected="false" tabindex="-1" data-rp-tab="shaarit">ShaarIt <span class="rp-tab-count"></span></button>
<button type="button" class="rp-tab" role="tab" aria-selected="false" tabindex="-1" data-rp-tab="console">Console Spark <span class="rp-tab-count"></span></button>
</nav>
<section class="rp-section" data-rp-section="obsigate">
@@ -47,6 +49,10 @@
<div class="rp-head"><h2>Kanbante — cartes</h2><span class="rp-count"></span><a class="rp-all" href="#">Tout voir</a></div>
<div class="rp-body"><p class="rp-state">Tapez une recherche ci-dessus.</p></div>
</section>
<section class="rp-section" data-rp-section="shaarit">
<div class="rp-head"><h2>ShaarIt — bookmarks</h2><span class="rp-count"></span><a class="rp-all" href="#">Tout voir</a></div>
<div class="rp-body"><p class="rp-state">Tapez une recherche ci-dessus.</p></div>
</section>
<section class="rp-section" data-rp-section="console">
<div class="rp-head"><h2>Console Spark — discussions</h2><span class="rp-count"></span><a class="rp-all" href="#">Tout voir</a></div>
<div class="rp-body"><p class="rp-state">Tapez une recherche ci-dessus.</p></div>