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