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