select/unselect of a chat row added
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3 Moderation features:
4   * Select row
5   * Lista righe di chat
6   * Richiesta di verifica
7   * Ban per nick/sessione/IP
8   * Filtra per tavolo e/o room
9   * Silent cancer behaviour management
10
11
12    - moderation
13      . turn off moderation when moder win is closed or if window creation fails
14      . turn off moder when logout
15      . enable moderation for certified users only
16      . create a mockup of the moder win
17      . create js to manage moderation
18
19   FEATURES |
20  ----------+
21
22    - improved S
23      . db update (add components, maybe single string)
24      . filter in index.php
25      . filter in index_wr.php
26
27    - prefs API:
28      . prefs_assign(content): assign json content as output var
29      . prefs_apply(prefs_new): apply new content to g_prefs and system
30      . prefs_load(content): load json content and apply to g_prefs and system
31
32      . prefs_update: update preferences temporarly
33      . prefs_save: save to the server the new prefs
34
35    - preferences (listen into preferences)
36         // js var, volatile server, (db server || cookie)
37         temporary: js var, volatile server
38         permanent: js var, volatile server, (db server || cookie)
39
40      . data from db OR, if missing, from cookies
41
42      . update values
43      . database change
44      . MANAGE NOT AUTH USERS
45
46    - preferences (with "modifiable S")
47      . Mod. S: new flag into database
48      . graph infrastructure
49      . new box to edit color
50
51   MAJOR |
52  -------+
53    - BUG: some connection to the named socket fails
54    - Not simultaneous more then one stream
55
56
57   MINOR |
58  -------+
59    WIP - try to be more antivirus-friendly
60    - multiple rows between games
61    - packetize and automatize php-ancillary and apache module
62    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
63
64
65   DONE |
66  ------+
67    DONE - temporarly server hung not reflected on user timeouts
68    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
69    DONE - page still opened after the server restart
70    DONE - log_legal address fix
71    DONE - manage too fast reload in xynt-streaming
72    DONE - add xhr as transport layer and manage different streams better
73    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
74    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
75    DONE - save/restore database
76    DONE - into the room local step remains -1
77    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
78    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
79           in the first tentative, the second works
80    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
81           problem was a call to a static parent method instead of the overrided child method,
82           substitute self:: with the dynamically get class::)
83    DONE - garbage management
84
85    DONE/FROZEN - problem with getpeer (HOSTADDR)
86
87    DONE - slow cards distribution
88    DONE - substr to mb_substr
89    DONE - parametrizations:
90           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
91           . parametrization of SITE_PREFIX(_LEN) define
92           . move the name of the named socket into the configuration file
93    DONE - manage and test cross forwarder between table and room
94    DONE - setcookie (for tables only and persist prefs)
95    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
96    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
97    DONE - unneeded garbage_time.expired access
98    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
99    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
100    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
101    DONE - configuration file management
102    DONE - app level keep-alive
103    DONE - index_wr other issues
104    DONE - from room to table
105    DONE - from table to room
106    DONE - chunked
107    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
108    DONE - partial write for normal page management
109    DONE - index_rd_ifra: last_clean issue
110    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
111    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
112    DONE - index_wr.php::chat
113    DONE - index_wr.php::exit
114    DONE - index_rd.php porting
115    DONE - generic var management from internet
116    DONE - index.php auth part
117    ABRT - index_wr.php::reload - reload is js-only function
118    ABRT - keepalive management - not interesting for our purposes
119
120  BRISK4 (mammuth)
121  ======
122
123  - STEP MANAGEMENT VERIFY
124  Slim Paragraph
125  DONE - move the garbage timeout on file
126  DONE - in index_rd load all data only when required
127  - briskin5 alignment
128    DONE . extern del garb_timeout
129    DONE . user_load parameters verify
130    DONE . Bin5::load_data and Bin5::save_data refactoring with
131           data split
132    . move many function into "Bin5 class"
133  - garbaging of .step files
134
135  DB: - initial usage
136      DONE - configurabilità file o db
137      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
138      DONE - travasatore file to pg
139        DONE - travaso punteggi
140        DONE - memorizzazione nuovi i punteggi nel db
141        DONE - gestione classifiche in SQL
142          DONE - produrle
143          DONE - mostrarle
144
145      STEP 1.1
146        DONE - points archiver
147
148      STEP 1.2
149        DONE - partial usability if database go down.
150
151      STEP 1.5
152      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
153
154      STEP 2
155      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
156      - modifica password   
157      - ripristino password 
158
159      STEP 3
160      - comunicazioni di aggiornamento (stato salvato sul server) 
161
162  DONE - var $G_base aggiunta per gestire include in include da path differenti
163
164  BRISK3 (trusty)
165  ======
166   DONE - donameter
167     DONE - G_donors
168     DONE (WOW!) - js object with infos
169     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
170            to prevent fast reload)
171     DONE - cookie per non assillare e visualizz.
172     DONE - graphical donameter
173     WIP content (in conf.)
174
175   DONE - numero di tavoli auth-only nel .brisk-install
176   - isolation
177     TEST - ricalcolo delle persone in piedi quando si cambia modalità
178     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
179     DONE - non leggere le chat di quelli non autenticati (in isolation)
180     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
181     DONE - treni non auth da nascondere 
182     DONE - verso gli altri ??: uguale a prima
183
184   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
185   coniglio
186   only auth strictly
187   placing limits to config file
188
189 Dunque, 
190
191 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
192
193 - cosa cambia tra le tre coppie di classifiche: 
194   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
195   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
196
197 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
198
199 Un esempio per chiarire:
200
201   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
202     -2, 1, 2, 1
203   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
204   
205   a parità di score tra utenti va più in alto chi ha giocato più partite.
206
207 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
208 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
209
210
211   
212
213
214
215
216  BUG
217  ---
218  
219   DONE - paste da demauroparavia
220   DONE - recupero partita per re-login con password
221   DONE - problema "|" nei nomi (manca enhance degli script lato server)
222   - problema col treno se mouse sopra mentre stringe (verif)
223   
224  MINOR
225  -----
226
227  NORMAL
228  ------
229
230   - win test
231   WIP - /listen 
232     DONE - skin della textarea
233     DONE - set cookie 
234     DONE - init client (read from cookie) - ALWAYS BY SERVER
235     DONE - init server
236     DONE - after cookie check auth-only when no-auth case
237     DONE - aggiungi info accanto a "Chat"
238   DONE - /mesgtoadm
239   DONE - img dei comandi
240
241   DONE - form per garantire utenti (accoda in un file nel formato corretto)
242   DONE -   process request
243   DONE -   show form
244   DONE -   close butt
245   DONE -   submit form
246   DONE -   process form js side 
247   DONE -   process form
248   DONE -   documentazione in help
249
250   DONE - user status
251
252   DONE - aggiornare help
253   DONE -   overflow management
254   DONE -   for status
255   -   for password
256
257   DONE - reload home
258   - notify for long pages
259
260   - buddy list
261   - silenziastolti vari (fino al buddy import)
262   - restrict challenge per IP
263   - restricted charset for login
264   - watchdog
265
266   - db (minimal)
267     - db admin page
268     - user db admin
269     - use db 
270     - admin db
271
272     - studiare un anti-dos
273   - login modify
274  DONE  - db (fake)
275  DONE  - display auth
276     - manage preferences 
277
278  minor
279  -----
280    - auth after login
281
282 ----- done ------
283
284  BUG
285  ---
286   DONE   righe troncate
287   DONE - questione "a monte" che:
288   DONE   - lascia fuori il bottone
289   DONE   - scrive &agrave e compagnia
290   DONE - refresh act_table when unauthorized
291   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
292
293  MINOR
294  -----
295   DONE - refactoring of the owner name (auth attr for owner name)
296   DONE   - room
297   DONE     - at chat input line 
298   DONE     - in the chat output line
299   DONE     - deauth management
300   DONE - table
301   DONE   - at chat input line
302   DONE   - in the chat output line
303   DONE   - for user area of other users
304   DONE   - deauth management
305   DONE - alart to one user
306
307
308  NORMAL
309  ------
310   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
311   DONE   - login: se auth      -  verifica solo gli expire per quel nick
312   DONE   -        se non auth  -  verifica gli expire per IP e sessione
313   DONE   - riscrivere messaggi
314
315   DONE - login 
316   DONE   - se pass:
317   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
318   DONE     - lo legge, ci hasha la password
319   DONE     - invia la pass al server hashata
320   DONE   - se non pass:
321   DONE     - check del login e return corretto
322   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
323   DONE     - rename ghost if logged
324   DONE     - onunload_cb e onbeforeunload_cb !!! 
325   DONE   - da change attrs a change class (input field)
326   DONE     - colore del bg per arrivare ad essere omogeneo
327   DONE     - cambiare path e file di config
328   DONE   - login with or without pass
329   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
330   DONE     - segnalare tavoli solo per auth
331   DONE     - rename restriction at auth table
332   DONE     - change nick (strcasecmp)
333   DONE   - refact js tables to handle flags
334   DONE - room javascript refactoring
335
336   DONE - work background
337   DONE - reserved tables
338
339
340  BRISK2 (spawn)
341  ======
342
343    
344    URGENT - tables spawn
345             DONE - link with photos
346             DONE - top banner in Etc file
347             DONE - spawn of a table
348             DONE - data to cookies (removed table_idx from xhr calls also)
349             DONE - set subst to shutdowner/shutdowned
350             DONE - return to index.php
351             DONE - game's token
352             DONE - recover of corrupted table data
353             DONE - closure of a table
354             DONE - flush of the table
355             DONE - security checks for right scope access
356             DONE - garbage collector management
357             DONE -    recursive garbage - howto ?
358             DONE - stat & subst in browser
359             DONE - laccwr setting and exit if all players are unactive for some time
360             DONE - the list of test case
361             DONE - shm dimension
362             DONE - remove unused parts
363             DONE - move images
364             DONE - optimizations
365             DONE - cambiare titolo al tavolo
366             DONE - shutdowning lock tables
367             DONE - topbanner
368             DONE - public announcements
369             DONE - 10 sec to exit from table
370
371             FAR - inheritances
372    
373    TRAIN  -  DONE - add again in reload   
374              DONE - wag_set refact
375              DONE - filtra char speciali per title
376              DONE - chatt_send refact 
377              DONE - elenco dei giocatori
378              DONE - documentazione online
379              DONE - timeout management     
380              LATER - border color a muzzo
381        
382    NORM   - testament
383    NORM   - public announcements
384    NORM   - 10 sec to exit from table
385    NORM   - moving label for tables click
386
387 ----------------- join -----------------
388    NORM   - map
389
390    NORM   - restart preload img
391    NORM   - tools dir with a main and some pages where check briscola tools.
392    NORM   - watchdog
393
394    NORM   - chat vecchie in reload (forse)
395
396  MIDDLE TODO
397  ===========
398
399    - user assistant (with button to enable disable)
400    - documentation
401
402
403  FAR TODO
404  ========
405    NORM - internationalization
406    NORM - img -> div + css
407    
408  WEB
409  ===
410
411    - link to stable/unstable
412
413 -------------------------------------------------------------------
414  DONE
415  ====
416
417    ABORTED - asta: highlight buttons (css hover) - change pointer when over
418    DONE - step proxy
419    DONE - special chars in js
420    DONE - ban temporaneo dai tavoli
421    DONE - flash player to play sound
422    DONEBUG - (aum. il timeout) - carte giocate che restano girate
423          Sembra non migliorare di molto la cosa, gestita la cache
424          correttamente, sono apposto.
425
426    DONE - one player reject a game, to less points (<= 2)
427    DONE - help page
428    DONE - test di download per la cache
429    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
430           Corretto il codice, occorre verificare se questo
431           ingenera qualche problema.
432    DONE - raddoppiato il numero di righe nella chat
433    DONE - corretto bug del /nick
434    DONE - carosello pubblicità altout
435    DONE - smammamorti
436    DONE - unload of the stream
437    DONE - standup centrati
438    DONE - current player - in info
439    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
440    DONE - welcome lines in the chats (room and table)
441    DONE - welcome lines in the chats (room and table)
442    DONE - nomi in primo piano se vai sul quadrato   
443    DONE - to pass explicit config file to INSTALL.sh
444    DONE - flag to create a config file
445    ABRT - bottoni => immagini
446    DONE - aggiungere bottone al login
447    DONE - nomi in primo piano se vai sul quadrato   
448    DONE - installer to set cookie path
449    DONE - change name
450    DONE - automatic and manual logout
451    DONE - cache problems solved via .htaccess
452    DONE - all players out of the auction
453    DONE - time to send cards
454    DONE - hide cards before sends at a new game
455    DONE - well recognization of the browser and O.S.
456    DONE - login consistency !!!!
457    DONE - functionalization of garbage
458    DONE - call garbage function into login
459    DONE - game
460    DONE - manage the reload from scratch of the table page
461    DONE - table reset
462    DONE - sendcard => card_send(idx, ....)
463    DONE - show table for game
464    DONE - points calculation
465    DONE - make-up of the chooser
466    DONE - where place the briscola on the table
467    DONE - users info
468    DONE - show current auction position
469    DONE - table with internal management of the transition between pages.
470    DONE - server side page abort management  
471    DONE - cookie problem with Ajax
472    DONE - spostare il tasto "esco"
473    DONE - to pass explicit config file to INSTALL.sh 
474    DONE - 8 tables
475    DONE - safety out management
476    DONE - info enhancement and related button (how win the last game and
477           with how much points ?)
478
479  WEB
480    DONE - homepage
481    DONE - screenshots
482
483 DOC
484    CHAPTERS
485       HTTP Streaming
486       Local serializer
487       Database on shmem
488       Page abort (reload on http streaming case)
489       Chat
490       Cookies management
491       CSS tricks
492
493 CHECK ON NEW SERVERS
494 .htaccess AllowOverwrite mode for Cache-Control directive
495
496
497
498
499 */
500